local l_CorePackages_0 = game:GetService("CorePackages");
local _ = game:GetService("CoreGui").RobloxGui;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(script.Parent.Parent.Constants);
local l_UtilBar_0 = v3.Font.UtilBar;
local l_UtilBar_1 = v3.DefaultFontSize.UtilBar;
local l_DropDownArrowHeight_0 = v3.GeneralFormatting.DropDownArrowHeight;
local v7 = l_DropDownArrowHeight_0 / 2;
local l_DownArrow_0 = v3.Image.DownArrow;
local v9 = v2.Component:extend("DropDown");
v9.init = function(v10)
    v10.onMainButtonPressed = function(_, _)
        v10:setState({
            showDropDown = true
        });
    end;
    v10.nonDropDownSelection = function(_, v14)
        if not (v14.UserInputType ~= Enum.UserInputType.MouseButton1) or v14.UserInputType == Enum.UserInputType.Touch and v14.UserInputState == Enum.UserInputState.End then
            v10:setState({
                showDropDown = false
            });
        end;
    end;
    v10.state = {
        showDropDown = false
    };
    v10.ref = v2.createRef();
end;
v9.render = function(v15)
    local l_buttonSize_0 = v15.props.buttonSize;
    local l_dropDownList_0 = v15.props.dropDownList;
    local l_selectedIndex_0 = v15.props.selectedIndex;
    local l_onSelection_0 = v15.props.onSelection;
    local l_layoutOrder_0 = v15.props.layoutOrder;
    local l_dropDownTargetParent_0 = v15.props.dropDownTargetParent;
    local v22 = v15.ref.current and v15.state.showDropDown;
    local v23 = {};
    local v24 = nil;
    local v25 = nil;
    local v26 = 0;
    local v27 = 0;
    if not (not v15.ref.current or not v22) then
        local l_AbsolutePosition_0 = v15.ref.current.AbsolutePosition;
        local l_AbsoluteSize_0 = v15.ref.current.AbsoluteSize;
        v27 = l_AbsoluteSize_0.X;
        v23.UIListLayout = v2.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Top
        });
        for v30, v31 in pairs(l_dropDownList_0) do
            v23[v31] = v2.createElement("TextButton", {
                Size = l_buttonSize_0,
                Text = v31,
                TextColor3 = v3.Color.Text,
                TextSize = l_UtilBar_1,
                Font = l_UtilBar_0,
                AutoButtonColor = false,
                BackgroundColor3 = v30 == l_selectedIndex_0 and v3.Color.SelectedGray or v3.Color.UnselectedGray,
                BackgroundTransparency = 0,
                BorderSizePixel = 0,
                LayoutOrder = v30,
                [v2.Event.Activated] = function()
                    l_onSelection_0(v30);
                    v15:setState({
                        showDropDown = false
                    });
                end
            });
            v26 = v26 + l_AbsoluteSize_0.Y;
        end;
        v25 = UDim2.new(0, v27 + 24, 0, v26 + 24);
        v24 = UDim2.new(0, l_AbsolutePosition_0.X, 0, l_AbsolutePosition_0.Y + l_AbsoluteSize_0.Y);
    end;
    return v2.createElement("TextButton", {
        Size = l_buttonSize_0,
        Text = l_dropDownList_0[l_selectedIndex_0],
        TextColor3 = v3.Color.Text,
        TextSize = l_UtilBar_1,
        Font = l_UtilBar_0,
        AutoButtonColor = false,
        BackgroundColor3 = v3.Color.UnselectedGray,
        BackgroundTransparency = 0,
        LayoutOrder = l_layoutOrder_0,
        [v2.Event.Activated] = v15.onMainButtonPressed,
        [v2.Ref] = v15.ref
    }, {
        arrow = v2.createElement("ImageLabel", {
            Image = l_DownArrow_0,
            BackgroundTransparency = 1,
            Size = UDim2.new(0, l_DropDownArrowHeight_0, 0, l_DropDownArrowHeight_0),
            Position = UDim2.new(1, -l_DropDownArrowHeight_0 - v7, 0.5, -v7)
        }),
        DropDown = v22 and v2.createElement(v2.Portal, {
            target = l_dropDownTargetParent_0 ~= nil and l_dropDownTargetParent_0 or game:GetService("CoreGui").DevConsoleMaster
        }, {
            InputCatcher = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                Position = UDim2.new(0, 0, 0, 0),
                BackgroundTransparency = 1,
                [v2.Event.InputEnded] = v15.nonDropDownSelection
            }, {
                OuterFrame = v2.createElement("ImageButton", {
                    Size = v25,
                    AutoButtonColor = false,
                    Position = v24,
                    BackgroundColor3 = v3.Color.TextBoxGray,
                    BackgroundTransparency = 0
                }, {
                    innerFrame = v2.createElement("Frame", {
                        Position = UDim2.new(0, 12, 0, 12),
                        Size = UDim2.new(0, v27, 0, v26),
                        BackgroundTransparency = 1
                    }, v23)
                })
            })
        })
    });
end;
return v9;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = game:GetService("CoreGui").RobloxGui;
local v2 = require(l_CorePackages_0.Roact);
local l_ExternalEventConnection_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).ExternalEventConnection;
local v4 = require(script.Parent.Parent.Constants);
local l_DropDownEntryHeight_0 = v4.GeneralFormatting.DropDownEntryHeight;
local l_DropDownArrowHeight_0 = v4.GeneralFormatting.DropDownArrowHeight;
local v7 = l_DropDownArrowHeight_0 / 2;
local l_DownArrow_0 = v4.Image.DownArrow;
local v9 = game:DefineFastFlag("DevConsoleFullScreenDropDownScrollFix", false);
local v10 = v2.Component:extend("FullScreenDropDownButton");
v10.init = function(v11)
    v11.startDropDownView = function()
        v11:setState({
            selectionScreenExpanded = true
        });
    end;
    v11.noSelection = function(_, v13)
        if not (v13.UserInputType ~= Enum.UserInputType.MouseButton1) or v13.UserInputType == Enum.UserInputType.Touch and v13.UserInputState == Enum.UserInputState.End then
            v11:setState({
                selectionScreenExpanded = false
            });
        end;
    end;
    v11.state = {
        selectionScreenExpanded = false,
        guiSizeY = l_RobloxGui_0.AbsoluteSize.Y
    };
end;
v10.render = function(v14)
    local l_buttonSize_0 = v14.props.buttonSize;
    local l_dropDownList_0 = v14.props.dropDownList;
    local l_selectedIndex_0 = v14.props.selectedIndex;
    local l_onSelection_0 = v14.props.onSelection;
    local l_layoutOrder_0 = v14.props.layoutOrder;
    local l_selectionScreenExpanded_0 = v14.state.selectionScreenExpanded;
    local l_portalTarget_0 = v14.props.portalTarget;
    local v22 = {};
    local v23 = 16;
    if l_selectionScreenExpanded_0 then
        v22.UIListLayout = v2.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            FillDirection = Enum.FillDirection.Vertical
        });
        if l_dropDownList_0 then
            for v24, v25 in ipairs(l_dropDownList_0) do
                v22[v24] = v2.createElement("TextButton", {
                    Text = v25,
                    Font = v4.Font.TabBar,
                    TextSize = v4.DefaultFontSize.DropDownTabBar,
                    TextColor3 = v4.Color.Text,
                    AutoButtonColor = false,
                    Size = UDim2.new(1, 0, 0, l_DropDownEntryHeight_0),
                    BackgroundColor3 = v24 == l_selectedIndex_0 and v4.Color.SelectedGray or v4.Color.UnselectedGray,
                    LayoutOrder = v24,
                    BorderSizePixel = 0,
                    [v2.Event.Activated] = function(_)
                        v14:setState({
                            selectionScreenExpanded = false
                        });
                        l_onSelection_0(v24);
                    end
                });
                v23 = v23 + l_DropDownEntryHeight_0;
            end;
        end;
    end;
    return v2.createElement("TextButton", {
        Size = l_buttonSize_0,
        BackgroundColor3 = v4.Color.UnselectedGray,
        Text = "",
        AutoButtonColor = false,
        LayoutOrder = l_layoutOrder_0,
        [v2.Event.Activated] = v14.startDropDownView
    }, {
        SizeChangeEvent = if v9 then v2.createElement(l_ExternalEventConnection_0, {
            event = l_RobloxGui_0:GetPropertyChangedSignal("AbsoluteSize"),
            callback = function()
                v14:setState({
                    guiSizeY = l_RobloxGui_0.AbsoluteSize.Y
                });
            end
        }) else nil,
        text = v2.createElement("TextLabel", {
            Size = UDim2.new(1, -l_DropDownArrowHeight_0 - v7, 1, 0),
            Text = l_dropDownList_0[l_selectedIndex_0],
            Font = v4.Font.TabBar,
            TextSize = v4.DefaultFontSize.DropDownTabBar,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextColor3 = v4.Color.Text,
            BackgroundTransparency = 1
        }),
        arrow = v2.createElement("ImageLabel", {
            Image = l_DownArrow_0,
            BackgroundTransparency = 1,
            Size = UDim2.new(0, l_DropDownArrowHeight_0, 0, l_DropDownArrowHeight_0),
            Position = UDim2.new(1, -l_DropDownArrowHeight_0 - v7, 0.5, -v7)
        }),
        selectionView = l_selectionScreenExpanded_0 and v2.createElement(v2.Portal, {
            target = l_portalTarget_0 ~= nil and l_portalTarget_0 or game:GetService("CoreGui").DevConsoleMaster
        }, {
            GreyOutFrame = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundColor3 = v4.Color.Black,
                BackgroundTransparency = 0.36,
                Active = true,
                [v2.Event.InputEnded] = v14.noSelection
            }, {
                BorderFrame = v2.createElement("Frame", {
                    Size = UDim2.new(0, 375, 0, v23),
                    Position = UDim2.new(0.5, -187.5, 0, 0),
                    BackgroundColor3 = v4.Color.UnselectedGray,
                    BorderSizePixel = 0
                }, {
                    SelectionFrame = v2.createElement("ScrollingFrame", {
                        Size = UDim2.new(1, -30, 1, -16),
                        Position = UDim2.new(0, 15, 0, 8),
                        BackgroundTransparency = 1,
                        CanvasSize = UDim2.new(1, -30, 1, if not v9 then l_DropDownEntryHeight_0 else (v23 - 16) - v14.state.guiSizeY),
                        BorderSizePixel = 0,
                        ScrollBarThickness = 0
                    }, v22)
                })
            })
        })
    });
end;
return v10;


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.Parent.Constants);
local l_MainWindowHeader_0 = v1.Font.MainWindowHeader;
local l_MainWindowHeader_1 = v1.DefaultFontSize.MainWindowHeader;
local l_Text_0 = v1.Color.Text;
return function(v5)
    local l_text_0 = v5.text;
    local l_size_0 = v5.size;
    local l_pos_0 = v5.pos;
    local l_sortfunction_0 = v5.sortfunction;
    return v0.createElement("TextButton", {
        Text = l_text_0,
        TextSize = l_MainWindowHeader_1,
        TextColor3 = l_Text_0,
        Font = l_MainWindowHeader_0,
        TextXAlignment = Enum.TextXAlignment.Left,
        Size = l_size_0,
        Position = l_pos_0,
        BackgroundTransparency = 1,
        [v0.Event.Activated] = function()
            if l_sortfunction_0 then
                l_sortfunction_0(l_text_0);
            end;
        end
    });
end;


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.LineGraphHoverDisplay);
local v2 = require(script.Parent.Parent.Constants);
local l_Text_0 = v2.Color.Text;
local l_HighlightBlue_0 = v2.Color.HighlightBlue;
local l_LineWidth_0 = v2.GeneralFormatting.LineWidth;
local l_LineColor_0 = v2.GeneralFormatting.LineColor;
local l_PointWidth_0 = v2.Graph.PointWidth;
local l_PointOffset_0 = v2.Graph.PointOffset;
local l_Padding_0 = v2.Graph.Padding;
local l_Scale_0 = v2.Graph.Scale;
local l_InnerPaddingY_0 = v2.Graph.InnerPaddingY;
local l_InnerScaleY_0 = v2.Graph.InnerScaleY;
local l_TextPadding_0 = v2.Graph.TextPadding;
local v14 = v0.Component:extend("LineGraph");
v14.init = function(v15)
    v15.onGraphInputChanged = function(_, v17)
        if not (not (v17.UserInputType == Enum.UserInputType.MouseMovement) or v15.state.holdPos) then
            v15:setState({
                inputPosition = v17.Position
            });
        end;
    end;
    v15.onGraphInputEnded = function(_, v19)
        if v19.UserInputType == Enum.UserInputType.MouseMovement then
            if not v15.state.holdPos then
                v15:setState({
                    inputPosition = false
                });
                return ;
            end;
        elseif v19.UserInputType == Enum.UserInputType.MouseButton1 then
            v15:setState({
                holdPos = not v15.state.holdPos
            });
        end;
    end;
    v15.graphRef = v0.createRef();
    v15.state = {
        selectedTimeStamps = {}
    };
end;
v14.didUpdate = function(v20)
    if v20.state.absGraphSize ~= v20.graphRef.current.AbsoluteSize then
        v20:setState({
            absGraphSize = v20.graphRef.current.AbsoluteSize,
            absGraphPos = v20.graphRef.current.AbsolutePosition
        });
    end;
end;
v14.didMount = function(v21)
    v21:setState({
        absGraphSize = v21.graphRef.current.AbsoluteSize,
        absGraphPos = v21.graphRef.current.AbsolutePosition
    });
end;
v14.render = function(v22)
    local l_size_0 = v22.props.size;
    local l_pos_0 = v22.props.pos;
    local l_graphData_0 = v22.props.graphData;
    local l_getX_0 = v22.props.getX;
    local l_getY_0 = v22.props.getY;
    local l_stringFormatX_0 = v22.props.stringFormatX;
    local l_stringFormatY_0 = v22.props.stringFormatY;
    local l_axisLabelX_0 = v22.props.axisLabelX;
    local l_axisLabelY_0 = v22.props.axisLabelY;
    local l_layoutOrder_0 = v22.props.layoutOrder;
    local l_inputPosition_0 = v22.state.inputPosition;
    local l_absGraphSize_0 = v22.state.absGraphSize;
    local l_absGraphPos_0 = v22.state.absGraphPos;
    local v36 = l_getX_0(l_graphData_0:back());
    local v37 = l_getX_0(l_graphData_0:front());
    local l_maxY_0 = v22.props.maxY;
    local l_minY_0 = v22.props.minY;
    local v40 = nil;
    local v41 = {};
    if l_absGraphSize_0 then
        local v42 = {};
        local v43 = l_graphData_0:iterator();
        local v44 = v43:next();
        while v44 do
            local v45 = l_getY_0(v44);
            local v46 = l_getX_0(v44);
            local v47 = v36 - v37;
            local v48 = v47 > 0 and (v46 - v37) / v47 or 0;
            local v49 = l_maxY_0 - l_minY_0;
            table.insert(v42, {
                X = v48,
                Y = v49 > 0 and (v45 - l_minY_0) / v49 or 1,
                data = v44
            });
            v44 = v43:next();
        end;
        for v50 = 2, #v42 do
            local v51 = v42[v50].X * l_absGraphSize_0.X;
            local v52 = (v42[v50].Y * l_absGraphSize_0.Y) * l_InnerScaleY_0;
            local v53 = v42[v50 - 1].X * l_absGraphSize_0.X;
            local v54 = (v42[v50 - 1].Y * l_absGraphSize_0.Y) * l_InnerScaleY_0;
            if v51 ~= v53 then
                local v55 = (v51 + v53) / 2;
                local v56 = (v52 + v54) / 2;
                local v57 = v51 - v53;
                local v58 = v52 - v54;
                local v59 = math.sqrt(v57 * v57 + v58 * v58);
                table.insert(v41, v0.createElement("Frame", {
                    Size = UDim2.new(0, v59, 0, l_LineWidth_0),
                    Position = UDim2.new(0, v55 - v59 / 2, 1 - l_InnerPaddingY_0, -v56),
                    BackgroundColor3 = l_HighlightBlue_0,
                    BorderSizePixel = 0,
                    Rotation = -math.deg((math.atan2(v58, v57)))
                }));
                table.insert(v41, v0.createElement("Frame", {
                    Size = UDim2.new(0, l_PointWidth_0, 0, l_PointWidth_0),
                    Position = UDim2.new(0, v51, 1 - l_InnerPaddingY_0, -v52 - l_PointOffset_0),
                    BackgroundColor3 = l_HighlightBlue_0,
                    BorderSizePixel = 0
                }));
                if l_inputPosition_0 then
                    local v60 = l_inputPosition_0.X - l_absGraphPos_0.X;
                    if v60 < v51 and v53 < v60 then
                        local v61 = l_getX_0(v42[v50].data);
                        local v62 = l_getX_0(v42[v50 - 1].data);
                        local v63 = l_getY_0(v42[v50].data);
                        local v64 = l_getY_0(v42[v50 - 1].data);
                        local v65 = (v60 - v53) / v57;
                        v40 = v54 + v58 * v65;
                        v41.HoverDetails = v0.createElement(v1, {
                            hoverLineX = v60,
                            hoverLineY = v40,
                            hoverValX = (v61 - v62) * v65 + v62,
                            hoverValY = (v63 - v64) * v65 + v64,
                            stringFormatX = l_stringFormatX_0,
                            stringFormatY = l_stringFormatY_0
                        });
                    end;
                end;
            end;
        end;
        if #v42 > 0 then
            local v66 = (v42[#v42].Y * l_absGraphSize_0.Y) * l_InnerScaleY_0;
            local v67 = l_getY_0(v42[#v42].data);
            local v68 = not (v40 and math.abs(v66 - v40) < 10);
            local v69 = not (v40 and math.abs(v40) < 10 or math.abs(v66) < 10);
            if v68 then
                v41.LatestEntryLine = v0.createElement("Frame", {
                    Size = UDim2.new(1, l_TextPadding_0, 0, l_LineWidth_0),
                    Position = UDim2.new(0, -l_TextPadding_0, 1 - l_InnerPaddingY_0, -v66),
                    BackgroundColor3 = l_LineColor_0,
                    BackgroundTransparency = 0.5,
                    BorderSizePixel = 0
                });
                v41.LatestEntryText = v0.createElement("TextLabel", {
                    Text = not not l_stringFormatY_0 and l_stringFormatY_0(v67) or v67,
                    TextColor3 = l_Text_0,
                    TextXAlignment = Enum.TextXAlignment.Right,
                    Position = UDim2.new(0, -l_TextPadding_0 - 2, 1 - l_InnerPaddingY_0, -v66),
                    BackgroundTransparency = 1
                });
            end;
            if v69 then
                v41.AxisTextY0 = v0.createElement("TextLabel", {
                    Text = not not l_stringFormatY_0 and l_stringFormatY_0(l_minY_0) or l_minY_0,
                    TextColor3 = l_Text_0,
                    TextXAlignment = Enum.TextXAlignment.Right,
                    Position = UDim2.new(0, -l_TextPadding_0 - 2, 1 - l_InnerPaddingY_0, 0),
                    BackgroundTransparency = 1
                });
            end;
            v41.AxisX = 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
            });
            v41.AxisY = v0.createElement("Frame", {
                Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            });
        end;
    end;
    local v70 = 2 * l_TextPadding_0 + 2;
    return v0.createElement("Frame", {
        Size = l_size_0,
        Position = l_pos_0,
        BackgroundTransparency = 1,
        LayoutOrder = l_layoutOrder_0
    }, {
        name = v0.createElement("TextLabel", {
            Text = l_axisLabelY_0,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Left,
            Position = UDim2.new(l_Padding_0, 0, l_Padding_0, -l_TextPadding_0),
            BackgroundTransparency = 1
        }),
        minX = v0.createElement("TextLabel", {
            Text = not not l_stringFormatX_0 and l_stringFormatX_0(v37) or v37,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Center,
            Position = UDim2.new(l_Padding_0, 0, l_Padding_0 + l_Scale_0, v70),
            BackgroundTransparency = 1
        }),
        maxX = v0.createElement("TextLabel", {
            Text = not not l_stringFormatX_0 and l_stringFormatX_0(v36) or v36,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Center,
            Position = UDim2.new(l_Padding_0 + l_Scale_0, 0, l_Padding_0 + l_Scale_0, v70),
            BackgroundTransparency = 1
        }),
        axisLabelX = v0.createElement("TextLabel", {
            Text = l_axisLabelX_0,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Center,
            Position = UDim2.new(0.5, 0, l_Padding_0 + l_Scale_0, v70),
            BackgroundTransparency = 1
        }),
        graph = v0.createElement("Frame", {
            Position = UDim2.new(l_Padding_0, 0, l_Padding_0, 0),
            Size = UDim2.new(l_Scale_0, 0, l_Scale_0, 0),
            BackgroundTransparency = 1,
            [v0.Ref] = v22.graphRef,
            [v0.Event.InputChanged] = v22.onGraphInputChanged,
            [v0.Event.InputEnded] = v22.onGraphInputEnded
        }, v41)
    });
end;
return v14;


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.Parent.Constants);
local l_HoverGreen_0 = v1.Color.HoverGreen;
local l_LineWidth_0 = v1.GeneralFormatting.LineWidth;
local l_TextPadding_0 = v1.Graph.TextPadding;
local l_InnerPaddingY_0 = v1.Graph.InnerPaddingY;
return function(v6)
    local l_hoverLineX_0 = v6.hoverLineX;
    local l_hoverLineY_0 = v6.hoverLineY;
    local l_hoverValX_0 = v6.hoverValX;
    local l_hoverValY_0 = v6.hoverValY;
    local l_stringFormatX_0 = v6.stringFormatX;
    local l_stringFormatY_0 = v6.stringFormatY;
    return v0.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundTransparency = 1
    }, {
        hoverLine = v0.createElement("Frame", {
            Size = UDim2.new(0, l_LineWidth_0, 1, 0),
            Position = UDim2.new(0, l_hoverLineX_0, 0, 0),
            BackgroundColor3 = l_HoverGreen_0,
            BorderSizePixel = 0
        }),
        HoverHorizontal = v0.createElement("Frame", {
            Size = UDim2.new(0, l_hoverLineX_0 + l_TextPadding_0, 0, l_LineWidth_0),
            Position = UDim2.new(0, -l_TextPadding_0, 1 - l_InnerPaddingY_0, -l_hoverLineY_0),
            BackgroundColor3 = l_HoverGreen_0,
            BorderSizePixel = 0
        }),
        HoverTextY = v0.createElement("TextLabel", {
            Text = not not l_stringFormatY_0 and l_stringFormatY_0(l_hoverValY_0) or l_hoverValY_0,
            TextColor3 = l_HoverGreen_0,
            TextXAlignment = Enum.TextXAlignment.Right,
            Position = UDim2.new(0, -l_TextPadding_0 - 2, 1 - l_InnerPaddingY_0, -l_hoverLineY_0),
            BackgroundTransparency = 1
        }),
        HoverTextX = v0.createElement("TextLabel", {
            Text = not not l_stringFormatX_0 and l_stringFormatX_0(l_hoverValX_0) or l_hoverValX_0,
            TextColor3 = l_HoverGreen_0,
            TextXAlignment = Enum.TextXAlignment.Center,
            Position = UDim2.new(0, l_hoverLineX_0, 1, l_TextPadding_0),
            BackgroundTransparency = 1
        })
    });
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(l_CorePackages_0.RoactRodux);
local v4 = require(script.Parent.Parent.Components.DataConsumer);
local v5 = require(script.Parent.Parent.Actions.SetActiveTab);
local v6 = require(script.Parent.Parent.Constants);
local l_MsgTypeNamesOrdered_0 = v6.MsgTypeNamesOrdered;
local l_TopBar_0 = v6.DefaultFontSize.TopBar;
local l_Text_0 = v6.Color.Text;
local l_TopBar_1 = v6.Font.TopBar;
local v11 = UDim2.new(0, l_TopBar_0, 0, l_TopBar_0);
local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize("Client Mem:", l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
local l_l_TextService_0_TextSize_1 = l_TextService_0:GetTextSize("Client Memory Usage:", l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
local l_l_TextService_0_TextSize_2 = l_TextService_0:GetTextSize("Avg. Ping:", l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
local v15 = v2.PureComponent:extend("LiveUpdateElement");
v15.didMount = function(v16)
    v16.totalMemConnector = v16.props.ClientMemoryData:totalMemSignal():Connect(function(v17)
        v16:setState({
            totalClientMemory = v17
        });
    end);
    v16.avgPingConnector = v16.props.ServerStatsData:avgPing():Connect(function(v18)
        v16:setState({
            averagePing = v18
        });
    end);
    v16.logWarningErrorConnector = v16.props.ClientLogData:errorWarningSignal():Connect(function(v19, v20)
        v16:setState({
            numErrors = v19,
            numWarnings = v20
        });
    end);
    v16:doSizeCheck();
end;
v15.didUpdate = function(v21)
    v21:doSizeCheck();
end;
v15.doSizeCheck = function(v22)
    if v22.ref.current then
        local v23 = v22.ref.current.AbsoluteSize.X < v22.state.formFactorThreshold;
        if v23 ~= v22.state.isSmallerThanFormFactorThreshold then
            v22:setState({
                isSmallerThanFormFactorThreshold = v23
            });
        end;
    end;
end;
v15.willUnmount = function(v24)
    v24.totalMemConnector:Disconnect();
    v24.totalMemConnector = nil;
    v24.avgPingConnector:Disconnect();
    v24.avgPingConnector = nil;
    v24.logWarningErrorConnector:Disconnect();
    v24.logWarningErrorConnector = nil;
end;
v15.init = function(v25)
    local v26, v27 = v25.props.ClientLogData:getErrorWarningCount();
    v25.onLogWarningButton = function()
        local v28 = {};
        for _, v30 in pairs(l_MsgTypeNamesOrdered_0) do
            v28[v30] = false;
        end;
        v28.Warning = true;
        v25.props.ClientLogData:setFilters(v28);
        v25.props.dispatchChangeTabClientLog();
    end;
    v25.onLogErrorButton = function()
        local v31 = {};
        for _, v33 in pairs(l_MsgTypeNamesOrdered_0) do
            v31[v33] = false;
        end;
        v31.Error = true;
        v25.props.ClientLogData:setFilters(v31);
        v25.props.dispatchChangeTabClientLog();
    end;
    v25.ref = v2.createRef();
    v25.state = {
        numErrors = v26,
        numWarnings = v27,
        totalClientMemory = 0,
        averagePing = 0,
        formFactorThreshold = 380,
        isSmallerThanFormFactorThreshold = false
    };
end;
v15.render = function(v34)
    local l_size_0 = v34.props.size;
    local l_position_0 = v34.props.position;
    local l_formFactor_0 = v34.props.formFactor;
    local l_numErrors_0 = v34.state.numErrors;
    local l_numWarnings_0 = v34.state.numWarnings;
    local l_totalClientMemory_0 = v34.state.totalClientMemory;
    local l_averagePing_0 = v34.state.averagePing;
    local l_isSmallerThanFormFactorThreshold_0 = v34.state.isSmallerThanFormFactorThreshold;
    local v43 = false;
    local l_X_0 = l_l_TextService_0_TextSize_1.X;
    local l_Center_0 = Enum.HorizontalAlignment.Center;
    if not (l_formFactor_0 ~= v6.FormFactor.Small and not l_isSmallerThanFormFactorThreshold_0) then
        l_position_0 = l_position_0 + UDim2.new(0, 12, 0, 0);
        l_X_0 = l_l_TextService_0_TextSize_0.X;
        v43 = true;
        l_Center_0 = Enum.HorizontalAlignment.Left;
    end;
    local v46 = string.format("%d", l_numErrors_0);
    local l_l_TextService_0_TextSize_3 = l_TextService_0:GetTextSize(v46, l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
    local v48 = string.format("%d", l_numWarnings_0);
    local l_l_TextService_0_TextSize_4 = l_TextService_0:GetTextSize(v48, l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
    local v50 = string.format("%d MB", l_totalClientMemory_0);
    local l_l_TextService_0_TextSize_5 = l_TextService_0:GetTextSize(v50, l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
    local v52 = string.format("%d ms", l_averagePing_0);
    local l_l_TextService_0_TextSize_6 = l_TextService_0:GetTextSize(v52, l_TopBar_0, l_TopBar_1, Vector2.new(0, 0));
    if not (l_formFactor_0 ~= v6.FormFactor.Small and not l_isSmallerThanFormFactorThreshold_0) then
        l_position_0 = l_position_0 + UDim2.new(0, 12, 0, 0);
        l_X_0 = l_l_TextService_0_TextSize_0.X;
        v43 = true;
        l_Center_0 = Enum.HorizontalAlignment.Left;
    end;
    local v54 = l_averagePing_0 > 0;
    return v2.createElement("Frame", {
        Position = l_position_0,
        Size = l_size_0,
        BackgroundTransparency = 1,
        [v2.Ref] = v34.ref
    }, {
        UIListLayout = v2.createElement("UIListLayout", {
            Padding = UDim.new(0, 6),
            HorizontalAlignment = l_Center_0,
            FillDirection = Enum.FillDirection.Horizontal,
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        LogErrorIcon = v2.createElement("ImageButton", {
            Image = v6.Image.Error,
            Size = v11,
            BackgroundTransparency = 1,
            LayoutOrder = 1,
            [v2.Event.Activated] = v34.onLogErrorButton
        }),
        LogErrorCount = v2.createElement("TextButton", {
            Text = v46,
            TextSize = l_TopBar_0,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Left,
            Font = l_TopBar_1,
            Size = UDim2.new(0, l_l_TextService_0_TextSize_3.X, 1, 0),
            BackgroundTransparency = 1,
            LayoutOrder = 2,
            [v2.Event.Activated] = v34.onLogErrorButton
        }),
        ErrorWarningPad = v2.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = 3
        }),
        LogWarningIcon = v2.createElement("ImageButton", {
            Image = v6.Image.Warning,
            Size = v11,
            BackgroundTransparency = 1,
            LayoutOrder = 4,
            [v2.Event.Activated] = v34.onLogWarningButton
        }),
        LogWarningCount = v2.createElement("TextButton", {
            Text = v48,
            TextSize = l_TopBar_0,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Left,
            Font = l_TopBar_1,
            Size = UDim2.new(0, l_l_TextService_0_TextSize_4.X, 1, 0),
            BackgroundTransparency = 9,
            LayoutOrder = 5,
            [v2.Event.Activated] = v34.onLogWarningButton
        }),
        WarningMemoryPad = v2.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = 6
        }),
        MemoryUsage = v2.createElement("TextButton", {
            Text = not v43 and "Client Memory Usage:" or "Client Mem:",
            TextSize = l_TopBar_0,
            TextColor3 = v6.Color.WarningYellow,
            TextXAlignment = Enum.TextXAlignment.Right,
            Font = l_TopBar_1,
            Size = UDim2.new(0, l_X_0, 1, 0),
            BackgroundTransparency = 1,
            LayoutOrder = 7,
            [v2.Event.Activated] = v34.props.dispatchChangeTabClientMemory
        }),
        MemoryUsage_MB = v2.createElement("TextButton", {
            Text = v50,
            TextSize = l_TopBar_0,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Left,
            Font = l_TopBar_1,
            Size = UDim2.new(0, l_l_TextService_0_TextSize_5.X, 1, 0),
            BackgroundTransparency = 1,
            LayoutOrder = 8,
            [v2.Event.Activated] = v34.props.dispatchChangeTabClientMemory
        }),
        MemoryPingPad = v2.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = 9
        }),
        AvgPing = (not v43 and v54) and v2.createElement("TextButton", {
            Text = "Avg. Ping:",
            TextSize = l_TopBar_0,
            TextColor3 = v6.Color.WarningYellow,
            TextXAlignment = Enum.TextXAlignment.Right,
            Font = l_TopBar_1,
            Size = UDim2.new(0, l_l_TextService_0_TextSize_2.X, 1, 0),
            BackgroundTransparency = 1,
            LayoutOrder = 10,
            [v2.Event.Activated] = v34.props.dispatchChangeTabNetworkPing
        }),
        AvgPing_ms = (not v43 and v54) and v2.createElement("TextButton", {
            Text = v52,
            TextSize = l_TopBar_0,
            TextColor3 = l_Text_0,
            TextXAlignment = Enum.TextXAlignment.Left,
            Font = l_TopBar_1,
            Size = UDim2.new(0, l_l_TextService_0_TextSize_6.X, 1, 0),
            BackgroundTransparency = 1,
            LayoutOrder = 11,
            [v2.Event.Activated] = v34.props.dispatchChangeTabNetworkPing
        })
    });
end;
return v3.UNSTABLE_connect2(nil, function(v55)
    return {
        dispatchChangeTabClientLog = function()
            v55(v5("Log", true));
        end,
        dispatchChangeTabClientMemory = function()
            v55(v5("Memory", true));
        end,
        dispatchChangeTabNetworkPing = function()
            v55(v5("ServerStats", true));
        end
    };
end)(v4(v15, "ServerStatsData", "ClientMemoryData", "ClientLogData"));


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.Parent.DataConsumer);
local v2 = require(script.Parent.LogOutput);
local v3 = v0.Component:extend("ClientLog");
v3.init = function(v4)
    v4.initClientLogData = function()
        return v4.props.ClientLogData:getLogData();
    end;
end;
v3.render = function(v5)
    return v0.createElement(v2, {
        layoutOrder = v5.props.layoutOrder,
        size = v5.props.size,
        initLogOutput = v5.initClientLogData,
        targetSignal = v5.props.ClientLogData:Signal()
    });
end;
return v1(v3, "ClientLogData");


local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_LogService_0 = game:GetService("LogService");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(script.Parent.Parent.DataConsumer);
local v5 = require(script.Parent.Parent.ScrollingTextBox);
local v6 = require(script.Parent.Parent.Parent.Constants);
local l_CommandLineIndent_0 = v6.LogFormatting.CommandLineIndent;
local l_CommandLine_0 = v6.DefaultFontSize.CommandLine;
local l_Log_0 = v6.Font.Log;
local v10 = v3.PureComponent:extend("DevConsoleCommandLine");
v10.init = function(v11)
    v11.onFocusLost = function(v12, v13, _)
        if v13 then
            l_LogService_0:ExecuteScript(v12.Text);
            v12:CaptureFocus();
        end;
    end;
    v11.textbox = v3.createRef();
end;
v10.didMount = function(v15)
    if not v15.onFocusConnection then
        v15.onFocusConnection = l_UserInputService_0.InputBegan:Connect(function(v16)
            if not (not v15.textbox.current or not v15.textbox.current:IsFocused()) then
                local l_current_0 = v15.textbox.current;
                local l_ServerLogData_0 = v15.props.ServerLogData;
                local v19 = l_ServerLogData_0:getCommandLineHistory();
                local v20 = l_ServerLogData_0:getCommandLineIndex();
                if v16.KeyCode == Enum.KeyCode.Up then
                    local v21 = math.min(v19:getSize(), v20 + 1);
                    v20 = v21;
                    l_current_0.Text = v19:reverseAt(v21) or "";
                elseif v16.KeyCode == Enum.KeyCode.Down then
                    local v22 = math.max(0, v20 - 1);
                    v20 = v22;
                    l_current_0.Text = v19:reverseAt(v22) or "";
                elseif v16.KeyCode == Enum.KeyCode.Return then
                    if #l_current_0.Text:gsub("%s+", "") > 0 and v19:reverseAt(1) ~= l_current_0.Text then
                        v19:push_back(l_current_0.Text);
                    end;
                    v20 = 0;
                elseif v20 ~= 0 then
                    v20 = 0;
                end;
                l_ServerLogData_0:setCommandLineIndex(v20);
            end;
        end);
    end;
    if not v15.fixUnwantedReturnCapture then
        v15.fixUnwantedReturnCapture = l_UserInputService_0.InputEnded:Connect(function(v23)
            if not (not v15.textbox.current or not v15.textbox.current:IsFocused()) and v23.KeyCode == Enum.KeyCode.Return then
                v15.textbox.current.Text = "";
            end;
        end);
    end;
end;
v10.willUnmount = function(v24)
    if v24.onFocusConnection then
        v24.onFocusConnection:Disconnect();
        v24.onFocusConnection = nil;
    end;
    if v24.fixUnwantedReturnCapture then
        v24.fixUnwantedReturnCapture:Disconnect();
        v24.fixUnwantedReturnCapture = nil;
    end;
end;
v10.render = function(v25)
    local l_height_0 = v25.props.height;
    local l_pos_0 = v25.props.pos;
    local v28 = "";
    local v29 = v25.props.ServerLogData:getCommandLineIndex();
    if v29 ~= 0 then
        v28 = v25.props.ServerLogData:getCommandLineHistory():reverseAt(v29) or "";
    end;
    return v3.createElement("Frame", {
        Position = l_pos_0,
        Size = UDim2.new(1, 0, 0, l_height_0),
        BackgroundTransparency = 0,
        BackgroundColor3 = v6.Color.TextBoxGray,
        BorderColor3 = v6.Color.BorderGray,
        BorderSizePixel = 1
    }, {
        Arrow = v3.createElement("TextLabel", {
            Size = UDim2.new(0, l_CommandLineIndent_0, 1, 0),
            BackgroundTransparency = 1,
            TextSize = l_CommandLine_0,
            Font = l_Log_0,
            Text = "> ",
            TextColor3 = v6.Color.Text,
            TextXAlignment = Enum.TextXAlignment.Right
        }),
        InputField = v3.createElement(v5, {
            Position = UDim2.new(0, l_CommandLineIndent_0, 0, 0),
            Size = UDim2.new(1, -l_CommandLineIndent_0, 0, l_height_0),
            ShowNativeInput = true,
            ClearTextOnFocus = false,
            TextColor3 = v6.Color.Text,
            TextXAlignment = 0,
            TextSize = l_CommandLine_0,
            Text = v28,
            Font = l_Log_0,
            PlaceholderText = "command line",
            [v3.Ref] = v25.textbox,
            TextBoxFocusLost = v25.onFocusLost
        })
    });
end;
return v4(v10, "ServerLogData");


local l_LogService_0 = game:GetService("LogService");
local l_TextService_0 = game:GetService("TextService");
local v2 = require(script.Parent.Parent.Parent.Constants);
local l_MainWindow_0 = v2.DefaultFontSize.MainWindow;
local l_Log_0 = v2.Font.Log;
local l_MaxStringSize_0 = v2.LogFormatting.MaxStringSize;
local l_EnumToMsgTypeName_0 = v2.EnumToMsgTypeName;
local v7 = require(script.Parent.Parent.Parent.CircularBuffer);
local v8 = require(script.Parent.Parent.Parent.Signal);
local v9 = tonumber(settings():GetFVariable("NewDevConsoleMaxLogCount"));
local v10 = {
    "ClassDescriptor failed to learn",
    "EventDescriptor failed to learn",
    "Type failed to learn"
};
local v11 = require(script.Parent.Parent.Parent.Util.convertTimeStamp);
local v12 = {};
v12.__index = v12;
local function v18(v13, v14, v15)
    local v16 = nil;
    local v17 = #v13;
    v16 = if v17 < l_MaxStringSize_0 then string.format("%s -- %s", v14, v13) else string.format("%s -- %s", v14, (string.sub(v13, 1, l_MaxStringSize_0)));
    return {
        Message = v16,
        CharCount = v17,
        Type = v15,
        Dims = l_TextService_0:GetTextSize(v16, l_MainWindow_0, l_Log_0, Vector2.new())
    };
end;
local function v23(v19)
    if v19.Type ~= Enum.MessageType.MessageWarning.Value then
        return false;
    else
        local v20 = false;
        for _, v22 in ipairs(v10) do
            if string.find(v19.Message, v22) ~= nil then
                return true;
            end;
        end;
        return v20;
    end;
end;
local function v27(v24, v25, v26)
    if not (#v26 == 0) or next(v25) then
        if not next(v25) or v25[l_EnumToMsgTypeName_0[v24.Type]] then
            if #v26 > 0 and string.find(v24.Message:lower(), v26:lower()) == nil then
                return false;
            else
                return true;
            end;
        else
            return false;
        end;
    else
        return false;
    end;
end;
local _ = function(v28)
    local v29 = false;
    for _, v31 in pairs(v28) do
        v29 = v29 or v31;
    end;
    return v29;
end;
local function v42(v33, v34, v35, v36)
    v33:reset();
    local v37 = false;
    for _, v39 in pairs(v35) do
        v37 = v37 or v39;
    end;
    local l_v37_0 = v37;
    if not (#v36 == 0) or l_v37_0 then
        v37 = 0;
        local v41 = v34:next();
        while v41 do
            if v27(v41, v35, v36) then
                v37 = v37 + 1;
                v33:push_back(v41);
            end;
            v41 = v34:next();
        end;
        if v37 == 0 then
            if #v36 > 0 then
                v33:push_back((v18(string.format("\"%s\" was not found", v36), "", 0)));
                return ;
            else
                v33:push_back((v18("No Messages were found", "", 0)));
            end;
        end;
        return ;
    else
        return ;
    end;
end;
v12.checkErrorWarningCounter = function(v43, v44)
    if v44 == Enum.MessageType.MessageWarning.Value then
        v43._warningCount = v43._warningCount + 1;
        v43._errorWarningSignal:Fire(v43._errorCount, v43._warningCount);
        return ;
    else
        if v44 == Enum.MessageType.MessageError.Value then
            v43._errorCount = v43._errorCount + 1;
            v43._errorWarningSignal:Fire(v43._errorCount, v43._warningCount);
        end;
        return ;
    end;
end;
v12.new = function(v45)
    local v46 = {};
    setmetatable(v46, v12);
    v46._initialized = false;
    v46._isRunning = false;
    v46._isClient = v45;
    v46._logData = v7.new(v9);
    v46._logDataSearched = v7.new(v9);
    v46._searchTerm = "";
    v46._commandLineHistory = v7.new(100);
    v46._commandLineIndex = 0;
    v46._filters = {};
    for _, v48 in pairs(l_EnumToMsgTypeName_0) do
        v46._filters[v48] = true;
    end;
    v46._errorCount = v45 and 0;
    v46._warningCount = v45 and 0;
    v46._logDataUpdate = v8.new();
    v46._errorWarningSignal = v45 and v8.new();
    v46._filterUpdated = v8.new();
    return v46;
end;
v12.Signal = function(v49)
    return v49._logDataUpdate;
end;
v12.errorWarningSignal = function(v50)
    return v50._errorWarningSignal;
end;
v12.filterUpdatedSignal = function(v51)
    return v51._filterUpdated;
end;
v12.setSearchTerm = function(v52, v53)
    if v52._searchTerm ~= v53 then
        v52._searchTerm = v53;
        if v52._searchTerm == "" then
            v52._logDataSearched:reset();
            v52._logDataUpdate:Fire(v52._logData);
            return ;
        else
            v42(v52._logDataSearched, v52._logData:iterator(), v52._filters, v52._searchTerm);
            v52._logDataUpdate:Fire(v52._logDataSearched);
        end;
    end;
end;
v12.getSearchTerm = function(v54)
    return v54._searchTerm;
end;
v12.getCommandLineHistory = function(v55)
    return v55._commandLineHistory;
end;
v12.getCommandLineIndex = function(v56)
    return v56._commandLineIndex;
end;
v12.setCommandLineIndex = function(v57, v58)
    v57._commandLineIndex = v58;
end;
v12.getFilters = function(v59)
    return v59._filters;
end;
v12.setFilter = function(v60, v61, v62)
    local v63 = v60._filters[v61];
    v60._filters[v61] = v62;
    local l__filters_0 = v60._filters;
    local v65 = false;
    for _, v67 in pairs(l__filters_0) do
        v65 = v65 or v67;
    end;
    if v65 then
        v42(v60._logDataSearched, v60._logData:iterator(), v60._filters, v60._searchTerm);
        v60._logDataUpdate:Fire(v60._logDataSearched);
        v60._filterUpdated:Fire();
        return ;
    else
        v60._filters[v61] = v63;
        return ;
    end;
end;
v12.setFilters = function(v68, v69)
    v68._filters = v69;
    local v70 = false;
    for _, v72 in pairs(v69) do
        v70 = v70 or v72;
    end;
    if v70 then
        v42(v68._logDataSearched, v68._logData:iterator(), v68._filters, v68._searchTerm);
        v68._logDataUpdate:Fire(v68._logDataSearched);
        v68._filterUpdated:Fire();
        return ;
    else
        v68._logDataSearched:reset();
        v68._logDataUpdate:Fire(v68._logData);
        return ;
    end;
end;
v12.getLogData = function(v73)
    if #v73._logDataSearched:getData() > 0 then
        return v73._logDataSearched;
    else
        return v73._logData;
    end;
end;
v12.getErrorWarningCount = function(v74)
    return v74._errorCount, v74._warningCount;
end;
v12.isRunning = function(v75)
    return v75._initialized;
end;
v12.start = function(v76)
    if not v76._isClient then
        v76._connection = l_LogService_0.ServerMessageOut:connect(function(v77, v78, v79)
            local v80 = v18(v77 or "[DevConsole Error 3]", v11(v79), v78.Value);
            if not v23(v80) then
                v76._logData:push_back(v80);
                if #v76._logDataSearched:getData() > 0 then
                    if v27(v80, v76._filters, v76._searchTerm) then
                        v76._logDataSearched:push_back(v80);
                        v76._logDataUpdate:Fire(v76._logDataSearched);
                        return ;
                    end;
                else
                    v76._logDataUpdate:Fire(v76._logData);
                end;
            end;
        end);
        l_LogService_0:RequestServerOutput();
    else
        if not v76._initialized then
            v76._initialized = true;
            if #{} == 0 then
                for _, v82 in ipairs((l_LogService_0:GetLogHistory())) do
                    local v83 = v18(v82.message or "[DevConsole Error 1]", v11(v82.timestamp), v82.messageType.Value);
                    if not v23(v83) then
                        v76:checkErrorWarningCounter(v82.messageType.Value);
                        v76._logData:push_back(v83);
                    end;
                end;
            end;
        end;
        v76._connection = l_LogService_0.MessageOut:connect(function(v84, v85)
            local v86 = v18(v84 or "[DevConsole Error 2]", v11(os.time()), v85.Value);
            if not v23(v86) then
                v76:checkErrorWarningCounter(v85.Value);
                v76._logData:push_back(v86);
                if #v76._logDataSearched:getData() > 0 then
                    if v27(v86, v76._filters, v76._searchTerm) then
                        v76._logDataSearched:push_back(v86);
                        v76._logDataUpdate:Fire(v76._logDataSearched);
                        return ;
                    end;
                else
                    v76._logDataUpdate:Fire(v76._logData);
                end;
            end;
        end);
    end;
    v76._isRunning = true;
end;
v12.stop = function(v87)
    v87._initialized = false;
    v87._isRunning = false;
    if v87._connection then
        v87._connection:Disconnect();
    end;
end;
return v12;


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.Parent.Constants);
local l_MainWindow_0 = v3.DefaultFontSize.MainWindow;
local l_Log_0 = v3.Font.Log;
local l_IconHeight_0 = v3.LogFormatting.IconHeight;
local l_TextFrameHeight_0 = v3.LogFormatting.TextFrameHeight;
local l_TextFramePadding_0 = v3.LogFormatting.TextFramePadding;
local l_MaxStringSize_0 = v3.LogFormatting.MaxStringSize;
local v10 = game:DefineFastFlag("DevConsoleLogTextLabelSizingFix", false);
local v11 = v2.Component:extend("LogOutput");
v11.init = function(v12, v13)
    local v14 = v13.initLogOutput and v13.initLogOutput();
    v12.onCanvasChange = function()
        local l_current_0 = v12.ref.current;
        if l_current_0 then
            local l_CanvasPosition_0 = l_current_0.CanvasPosition;
            local l_AbsoluteSize_0 = l_current_0.AbsoluteSize;
            if not (v12.state.canvasPos == l_CanvasPosition_0) or v12.state.absSize ~= l_AbsoluteSize_0 then
                v12:setState({
                    canvasPos = l_CanvasPosition_0,
                    absSize = l_AbsoluteSize_0,
                    autoScroll = l_current_0.CanvasPosition.Y + l_current_0.AbsoluteSize.Y == l_current_0.CanvasSize.Y.Offset
                });
            end;
        end;
    end;
    v12.ref = v2.createRef();
    v12.state = {
        logData = v14,
        absSize = Vector2.new(),
        canvasPos = Vector2.new(),
        autoScroll = true,
        wordWrap = true
    };
end;
v11.willUpdate = function(v18, _, _)
    v18._canvasSignal:Disconnect();
    v18._absSizeSignal:Disconnect();
end;
v11.didUpdate = function(v21)
    v21._canvasSignal = v21.ref.current:GetPropertyChangedSignal("CanvasPosition"):Connect(v21.onCanvasChange);
    v21._absSizeSignal = v21.ref.current:GetPropertyChangedSignal("AbsoluteSize"):Connect(v21.onCanvasChange);
    if v21.state.autoScroll then
        local l_current_1 = v21.ref.current;
        if l_current_1 then
            l_current_1.CanvasPosition = Vector2.new(l_current_1.CanvasPosition.X, v21.ref.current.CanvasSize.Y.Offset + v21.ref.current.AbsoluteSize.Y);
        end;
    end;
end;
v11.didMount = function(v23)
    v23.logConnector = v23.props.targetSignal:Connect(function(v24)
        if not v23.state.autoScroll and v24:getSize() == v24:getMaxSize() then
            local l_canvasPos_0 = v23.state.canvasPos;
            local l_Y_0 = l_canvasPos_0.Y;
            local v27 = v24:back();
            if v27 then
                local l_Y_1 = v27.Dims.Y;
                local v29 = v23.state.absSize.X - l_TextFrameHeight_0;
                if v23.state.wordWrap and v29 > 0 then
                    l_Y_1 = if not v10 then v27.Dims.Y * math.ceil(v27.Dims.X / v29) else math.ceil(v27.Dims.Y * math.ceil(v27.Dims.X / v29));
                end;
                l_Y_0 = math.max(0, (l_Y_0 - l_Y_1) - l_TextFramePadding_0);
            end;
            v23:setState({
                logData = v24,
                canvasPos = Vector2.new(l_canvasPos_0.X, l_Y_0)
            });
            return ;
        else
            v23:setState({
                logData = v24
            });
            return ;
        end;
    end);
    v23._canvasSignal = v23.ref.current:GetPropertyChangedSignal("CanvasPosition"):Connect(v23.onCanvasChange);
    v23._absSizeSignal = v23.ref.current:GetPropertyChangedSignal("AbsoluteSize"):Connect(v23.onCanvasChange);
    if v23.ref.current.AbsoluteSize.Magnitude > 0 then
        v23:setState({
            absSize = v23.ref.current.AbsoluteSize
        });
    end;
end;
v11.willUnmount = function(v30)
    v30.logConnector:Disconnect();
    v30.logConnector = nil;
end;
v11.render = function(v31)
    local l_layoutOrder_0 = v31.props.layoutOrder;
    local l_size_0 = v31.props.size;
    local l_logData_0 = v31.state.logData;
    local l_absSize_0 = v31.state.absSize;
    local l_canvasPos_1 = v31.state.canvasPos;
    local l_wordWrap_0 = v31.state.wordWrap;
    local v38 = {};
    local v39 = 1;
    local v40 = 0;
    if not (not v31.ref.current or not l_logData_0) then
        local v41 = l_absSize_0.X - l_TextFrameHeight_0;
        local v42 = -1;
        local v43 = 0;
        local v44 = l_logData_0:iterator();
        local v45 = v44:next();
        while v45 do
            local l_Message_0 = v45.Message;
            local l_CharCount_0 = v45.CharCount;
            local l_Y_2 = v45.Dims.Y;
            if l_wordWrap_0 and v41 > 0 then
                l_Y_2 = if not v10 then v45.Dims.Y * math.ceil(v45.Dims.X / v41) else math.ceil(v45.Dims.Y * math.ceil(v45.Dims.X / v41));
            end;
            v39 = v39 + 1;
            if l_canvasPos_1.Y <= v40 + l_Y_2 then
                if v43 < l_absSize_0.Y then
                    local l_Text_0 = v3.Color.Text;
                    local v50 = "";
                    if v45.Type == Enum.MessageType.MessageOutput.Value then
                        l_Text_0 = v3.Color.Text;
                    elseif v45.Type == Enum.MessageType.MessageInfo.Value then
                        l_Text_0 = v3.Color.HighlightBlue;
                        v50 = v3.Image.Info;
                    elseif v45.Type == Enum.MessageType.MessageWarning.Value then
                        l_Text_0 = v3.Color.WarningYellow;
                        v50 = v3.Image.Warning;
                    elseif v45.Type == Enum.MessageType.MessageError.Value then
                        l_Text_0 = v3.Color.ErrorRed;
                        v50 = v3.Image.Error;
                    end;
                    v38[v39] = v2.createElement("Frame", {
                        Size = UDim2.new(1, 0, 0, l_Y_2),
                        BackgroundTransparency = 1,
                        LayoutOrder = v39
                    }, {
                        image = v2.createElement("ImageLabel", {
                            Image = v50,
                            Size = UDim2.new(0, l_IconHeight_0, 0, l_IconHeight_0),
                            Position = UDim2.new(0, l_IconHeight_0 / 4, 0.5, -l_IconHeight_0 / 2),
                            BackgroundTransparency = 1
                        }),
                        msg = v2.createElement("TextLabel", {
                            Text = l_Message_0,
                            TextColor3 = l_Text_0,
                            TextSize = l_MainWindow_0,
                            Font = l_Log_0,
                            TextXAlignment = Enum.TextXAlignment.Left,
                            TextWrapped = l_wordWrap_0,
                            Size = UDim2.new(1, 0, 0, l_Y_2),
                            Position = UDim2.new(0, l_TextFrameHeight_0, 0, 0),
                            BackgroundTransparency = 1
                        })
                    });
                end;
                if v42 < 0 then
                    v42 = v40;
                else
                    v43 = (v43 + l_Y_2) + l_TextFramePadding_0;
                end;
            end;
            v40 = (v40 + l_Y_2) + l_TextFramePadding_0;
            if l_CharCount_0 < l_MaxStringSize_0 then
                v45 = v44:next();
            else
                local v51 = string.format(" -- Could not display entire %d character message because message exceeds max displayable length of %d", l_CharCount_0, l_MaxStringSize_0);
                v45 = {
                    Message = v51,
                    CharCount = #v51,
                    Type = v45.Type,
                    Dims = l_TextService_0:GetTextSize(v51, l_MainWindow_0, l_Log_0, Vector2.new())
                };
            end;
        end;
        v38.UIListLayout = v2.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, l_TextFramePadding_0)
        });
        v38.WindowingPadding = v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, v42),
            BackgroundTransparency = 1,
            LayoutOrder = 1
        });
    end;
    return v2.createElement("ScrollingFrame", {
        Size = l_size_0,
        BackgroundTransparency = 1,
        VerticalScrollBarInset = 1,
        ScrollBarThickness = 6,
        CanvasSize = UDim2.new(0, 0, 0, v40),
        CanvasPosition = l_canvasPos_1,
        LayoutOrder = l_layoutOrder_0,
        [v2.Ref] = v31.ref
    }, v38);
end;
return v11;


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.Log.ClientLog);
local v5 = require(l_Components_0.Log.ServerLog);
local v6 = require(l_Components_0.UtilAndTab);
local v7 = require(l_Components_0.DataConsumer);
local v8 = require(script.Parent.Parent.Parent.Actions.SetActiveTab);
local v9 = require(script.Parent.Parent.Parent.Constants);
local l_MainRowPadding_0 = v9.GeneralFormatting.MainRowPadding;
local l_MsgTypeNamesOrdered_0 = v9.MsgTypeNamesOrdered;
local v12 = v1.PureComponent:extend("MainViewLog");
v12.init = function(v13)
    v13.onUtilTabHeightChanged = function(v14)
        v13:setState({
            utilTabHeight = v14
        });
    end;
    v13.onClientButton = function()
        v13.props.dispatchSetActiveTab("Log", true);
    end;
    v13.onServerButton = function()
        v13.props.dispatchSetActiveTab("Log", false);
    end;
    v13.onCheckBoxChanged = function(v15, v16)
        if not v13.props.isClientView then
            v13.props.ServerLogData:setFilter(v15, v16);
            return ;
        else
            v13.props.ClientLogData:setFilter(v15, v16);
            return ;
        end;
    end;
    v13.filterUpdated = function()
        if not v13.forceUpdate then
            v13:setState({});
            return ;
        else
            v13:forceUpdate();
            return ;
        end;
    end;
    v13.onSearchTermChanged = function(v17)
        if not v13.props.isClientView then
            v13.props.ServerLogData:setSearchTerm(v17);
            return ;
        else
            v13.props.ClientLogData:setSearchTerm(v17);
            return ;
        end;
    end;
    v13.clientFilterConnection = v13.props.ClientLogData:filterUpdatedSignal():Connect(v13.filterUpdated);
    v13.serverFilterConnection = v13.props.ServerLogData:filterUpdatedSignal():Connect(v13.filterUpdated);
    v13.utilRef = v1.createRef();
    v13.state = {
        utilTabHeight = 0
    };
end;
v12.didMount = function(v18)
    v18:setState({
        utilTabHeight = v18.utilRef.current.Size.Y.Offset
    });
end;
v12.didUpdate = function(v19)
    local l_Size_0 = v19.utilRef.current.Size;
    if l_Size_0.Y.Offset ~= v19.state.utilTabHeight then
        v19:setState({
            utilTabHeight = l_Size_0.Y.Offset
        });
    end;
end;
v12.willUnmount = function(v21)
    if v21.clientFilterConnection then
        v21.clientFilterConnection:Disconnect();
        v21.clientFilterConnection = nil;
    end;
    if v21.serverFilterConnection then
        v21.serverFilterConnection:Disconnect();
        v21.serverFilterConnection = nil;
    end;
end;
v12.render = function(v22)
    local l_size_0 = v22.props.size;
    local l_formFactor_0 = v22.props.formFactor;
    local l_isDeveloperView_0 = v22.props.isDeveloperView;
    local l_tabList_0 = v22.props.tabList;
    local l_isClientView_0 = v22.props.isClientView;
    local l_utilTabHeight_0 = v22.state.utilTabHeight;
    local v29 = nil;
    v29 = if not l_isClientView_0 then v22.props.ServerLogData:getSearchTerm() else v22.props.ClientLogData:getSearchTerm();
    local v30 = {
        UIListLayout = v1.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, l_MainRowPadding_0)
        })
    };
    local v31 = nil;
    v31 = if not l_isClientView_0 then v22.props.ServerLogData:getFilters() else v22.props.ClientLogData:getFilters();
    local v32 = {};
    for v33, v34 in ipairs(l_MsgTypeNamesOrdered_0) do
        v32[v33] = {
            name = v34,
            state = v31[v34]
        };
    end;
    v30.UtilAndTab = v1.createElement(v6, {
        windowWidth = l_size_0.X.Offset,
        formFactor = l_formFactor_0,
        tabList = l_tabList_0,
        orderedCheckBoxState = v32,
        isClientView = l_isClientView_0,
        searchTerm = v29,
        layoutOrder = 1,
        refForParent = v22.utilRef,
        onClientButton = l_isDeveloperView_0 and v22.onClientButton,
        onServerButton = l_isDeveloperView_0 and v22.onServerButton,
        onCheckBoxChanged = v22.onCheckBoxChanged,
        onSearchTermChanged = v22.onSearchTermChanged
    });
    if l_utilTabHeight_0 > 0 then
        if not l_isClientView_0 then
            v30.ServerLog = v1.createElement(v5, {
                size = UDim2.new(1, 0, 1, -l_utilTabHeight_0),
                layoutOrder = 2
            });
        else
            v30.ClientLog = v1.createElement(v4, {
                size = UDim2.new(1, 0, 1, -l_utilTabHeight_0),
                layoutOrder = 2
            });
        end;
    end;
    return v1.createElement("Frame", {
        Size = l_size_0,
        BackgroundColor3 = v9.Color.BaseGray,
        BackgroundTransparency = 1,
        LayoutOrder = 3
    }, v30);
end;
return v2.UNSTABLE_connect2(function(v35, _)
    return {
        isClientView = v35.MainView.isClientView
    };
end, function(v37)
    return {
        dispatchSetActiveTab = function(v38, v39)
            v37(v8(v38, v39));
        end
    };
end)(v7(v12, "ClientLogData", "ServerLogData"));


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.Parent.DataConsumer);
local l_CommandLineHeight_0 = require(script.Parent.Parent.Parent.Constants).LogFormatting.CommandLineHeight;
local v3 = require(script.Parent.DevConsoleCommandLine);
local v4 = require(script.Parent.LogOutput);
local v5 = v0.Component:extend("ServerLog");
v5.init = function(v6)
    v6.initServerLogData = function()
        return v6.props.ServerLogData:getLogData();
    end;
end;
v5.render = function(v7)
    return v0.createElement("Frame", {
        Size = v7.props.size,
        BackgroundTransparency = 1,
        LayoutOrder = v7.props.layoutOrder
    }, {
        Scroll = v0.createElement(v4, {
            size = UDim2.new(1, 0, 1, -(l_CommandLineHeight_0 + 4)),
            targetSignal = v7.props.ServerLogData:Signal(),
            initLogOutput = v7.initServerLogData
        }),
        CommandLine = v0.createElement(v3, {
            pos = UDim2.new(0, 0, 1, -l_CommandLineHeight_0),
            height = l_CommandLineHeight_0
        })
    });
end;
return v1(v5, "ServerLogData");


local _ = game:GetService("ScriptContext");
local l_HttpService_0 = game:GetService("HttpService");
local v2 = require(script.Parent.Parent.Parent.Signal);
local v3 = require(script.Parent.Parent.Parent.Util.getClientReplicator);
local v4 = {};
v4.__index = v4;
v4.new = function()
    local v5 = {};
    setmetatable(v5, v4);
    v5._serverStatsUpdated = v2.new();
    v5._serverStatsData = {};
    v5._isRunning = false;
    return v5;
end;
v4.Signal = function(v6)
    return v6._serverStatsUpdated;
end;
v4.getCurrentData = function(v7)
    return v7._serverStatsData;
end;
v4.isRunning = function(v8)
    return v8._isRunning;
end;
v4.start = function(v9)
    local v10 = v3();
    if not (not v10 or v9._statsListenerConnection) then
        v9._statsListenerConnection = v10.StatsReceived:connect(function(v11)
            if not (not v11 or not v11.ServerLuauHeapData) and #v11.ServerLuauHeapData > 0 then
                v9._serverStatsData = l_HttpService_0:JSONDecode(v11.ServerLuauHeapData);
                v9._serverStatsUpdated:Fire(v9._serverStatsData);
            end;
        end);
        v10:RequestServerStats(true);
        v9._isRunning = true;
    end;
end;
v4.stop = function(v12)
    if v12._statsListenerConnection then
        v12._statsListenerConnection:Disconnect();
        v12._statsListenerConnection = nil;
    end;
    v12._isRunning = false;
end;
return v4;


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.HeaderButton);
local v5 = require(l_Components_0.BannerButton);
local v6 = require(l_Components_0.CellLabel);
local v7 = require(l_Components_0.BoxButton);
local v8 = require(script.Parent.LuauHeapViewEntry);
local v9 = require(script.Parent.LuauHeapViewStatEntry);
local v10 = require(script.Parent.LuauHeapViewRefEntry);
local _ = require(script.Parent.LuauHeapTypes);
local l_Actions_0 = script.Parent.Parent.Parent.Actions;
local v13 = require(l_Actions_0.SetLuauHeapActiveSnapshot);
local v14 = require(l_Actions_0.SetLuauHeapCompareSnapshot);
local v15 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v15.GeneralFormatting.LineWidth;
local l_LineColor_0 = v15.GeneralFormatting.LineColor;
local l_HeaderFrameHeight_0 = v15.GeneralFormatting.HeaderFrameHeight;
local l_EntryFrameHeight_0 = v15.GeneralFormatting.EntryFrameHeight;
local l_ValueCellWidth_0 = v15.LuauHeapFormatting.ValueCellWidth;
local l_CellPadding_0 = v15.LuauHeapFormatting.CellPadding;
local l_ValuePadding_0 = v15.LuauHeapFormatting.ValuePadding;
local l_SnapshotWidth_0 = v15.LuauHeapFormatting.SnapshotWidth;
local l_SnapshotHighlightSize_0 = v15.LuauHeapFormatting.SnapshotHighlightSize;
local l_TabsHeight_0 = v15.LuauHeapFormatting.TabsHeight;
local l_TabButtonWidth_0 = v15.LuauHeapFormatting.TabButtonWidth;
local l_TabButtonHeight_0 = v15.LuauHeapFormatting.TabButtonHeight;
local _ = v15.LuauHeapFormatting.TabButtonPad;
local l_TabHighlightHeight_0 = v15.LuauHeapFormatting.TabHighlightHeight;
local l_TableHintHeight_0 = v15.LuauHeapFormatting.TableHintHeight;
local v36 = {
    graph = {
        hint = "Graph displays the size of the objects in Luau VM aggregated by the shortest path from the root Engine references to them.\n\t\tMost important root references are ModuleScript tables and functions connected to signals or the task scheduler.",
        headers = {
            "Name",
            "Size",
            "Self"
        },
        initFragmentSource = function(v31)
            return v31:renderChildren();
        end
    },
    tag = {
        hint = "This memory breakdown displays how much memory is used by Luau VM types.",
        headers = {
            "Name",
            "Size",
            "Count"
        },
        initFragmentSource = function(v32)
            return v32:renderChildrenStats("TagBreakdown");
        end
    },
    memcat = {
        hint = "Memory separated by the category at the time of allocation.\n\t\tBy default, memory category is assigned to a subset of scripts.\n\t\tCustom memory category can be created using 'debug.setmemorycategory' API.",
        headers = {
            "Name",
            "Size",
            "Count"
        },
        initFragmentSource = function(v33)
            return v33:renderChildrenStats("MemcatBreakdown");
        end
    },
    userdata = {
        hint = "This breakdown shows how much memory inside Luau VM is taken by custom Roblox engine classes.\n\t\tFor DataModel classes like 'Part' this does not include the memory taken inside the engine itself.",
        headers = {
            "Name",
            "Size",
            "Count"
        },
        initFragmentSource = function(v34)
            return v34:renderChildrenStats("UserdataBreakdown");
        end
    },
    refs = {
        hint = "This view shows engine DataModel instances that are only referenced by Luau VM and are not directly parented to the DataModel.\n\t\tFor each instance, it will show the set of paths that make it accessible and prevent garbage collection.\n\t\tMost often, engine Luau references come from ModuleScript tables, active signal connections and active coroutines in the task scheduler.",
        headers = {
            "Name",
            "Count",
            "Total Instances"
        },
        initFragmentSource = function(v35)
            return v35:renderChildrenRefs();
        end
    }
};
local v37 = v1.PureComponent:extend("LuauHeapView");
v37.renderSnapshotList = function(v38)
    local l_data_0 = v38.props.data;
    local v40 = {};
    for v41, _ in l_data_0, nil, nil do
        v40[v41] = v1.createElement(v5, {
            size = UDim2.new(1, 0, 0, l_EntryFrameHeight_0),
            inset = 0,
            isExpanded = false,
            isExpandable = false,
            layoutOrder = v41,
            onButtonPress = function()
                v38.props.dispatchSetLuauHeapActiveSnapshot(v41);
            end
        }, {
            name = v1.createElement(v6, {
                text = ("Snapshot #%*"):format(v41),
                size = UDim2.new(UDim.new(1, 0), UDim.new(1, 0)),
                pos = UDim2.new(0, l_CellPadding_0, 0, 0)
            }),
            HorizontalHighlightTop = if v38.props.activeSnapshot == v41 then v1.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_SnapshotHighlightSize_0),
                BackgroundColor3 = l_LineColor_0
            }) else nil,
            HorizontalHighlightBottom = if v38.props.activeSnapshot == v41 then v1.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_SnapshotHighlightSize_0),
                Position = UDim2.new(0, 0, 1, -l_SnapshotHighlightSize_0),
                BackgroundColor3 = l_LineColor_0
            }) else nil,
            HorizontalHighlightLeft = if v38.props.activeSnapshot == v41 then v1.createElement("Frame", {
                Size = UDim2.new(0, l_SnapshotHighlightSize_0, 1, 0),
                BackgroundColor3 = l_LineColor_0
            }) else nil,
            HorizontalHighlightRight = if v38.props.activeSnapshot == v41 then v1.createElement("Frame", {
                Size = UDim2.new(0, l_SnapshotHighlightSize_0, 1, 0),
                Position = UDim2.new(1, -l_SnapshotHighlightSize_0, 0, 0),
                BackgroundColor3 = l_LineColor_0
            }) else nil,
            Compare = if v38.props.activeSnapshot ~= v41 then v1.createElement(v7, {
                text = "Compare",
                size = UDim2.new(0.3, -6, 1, -6),
                pos = UDim2.new(0.7, 3, 0, 3),
                onClicked = function()
                    v38.props.dispatchSetLuauHeapCompareSnapshot(v41);
                end
            }) else nil
        });
    end;
    return v40;
end;
v37.renderChildren = function(v43)
    local v44 = v43.props.data[v43.props.activeSnapshot];
    local v45 = v43.props.data[v43.props.compareSnapshot];
    return v1.createElement(v8, {
        layoutOrder = 0,
        depth = 0,
        data = v44.Graph,
        compare = if not v45 then nil else v45.Graph
    });
end;
v37.renderChildrenStats = function(v46, v47)
    local v48 = v46.props.data[v46.props.activeSnapshot];
    local v49 = v46.props.data[v46.props.compareSnapshot];
    local v50 = v48[v47];
    local v51 = if not v49 then nil else v49[v47];
    local v52 = {};
    for v53, v54 in v50, nil, nil do
        local v55 = nil;
        if v51 then
            for _, v57 in ipairs(v51) do
                if v54.Name == v57.Name then
                    v55 = v57;
                    break;
                end;
            end;
        end;
        v52[v53] = v1.createElement(v9, {
            layoutOrder = -v54.Size,
            depth = 0,
            data = v54,
            compare = v55
        });
    end;
    return v52;
end;
v37.renderChildrenRefs = function(v58)
    local l_Refs_0 = v58.props.data[v58.props.activeSnapshot].Refs;
    if l_Refs_0 then
        assert(l_Refs_0);
        local l_Roots_0 = l_Refs_0.Roots;
        local v61 = {};
        for v62, v63 in l_Roots_0, nil, nil do
            v61[v62] = v1.createElement(v10, {
                layoutOrder = -v63.Instances,
                depth = 0,
                data = v63
            });
        end;
        return v61;
    else
        return {};
    end;
end;
v37.createTabSelector = function(v64, v65, v66)
    local function _(v67)
        v64:setState({
            activeTab = v67
        });
    end;
    local function v72(v69, v70, v71)
        return v1.createElement(v7, {
            text = v70,
            size = UDim2.new(0, l_TabButtonWidth_0, 0, l_TabButtonHeight_0),
            pos = UDim2.new(0, l_TabButtonWidth_0 * v71, 0, 0),
            onClicked = function()
                v64:setState({
                    activeTab = v69
                });
            end
        });
    end;
    local function v75(v73, v74)
        if v64.state.activeTab == v73 then
            return (v1.createElement("Frame", {
                Size = UDim2.new(0, l_TabButtonWidth_0, 0, l_TabHighlightHeight_0),
                Position = UDim2.new(0, l_TabButtonWidth_0 * v74, 0, l_TabButtonHeight_0 - l_TabHighlightHeight_0),
                BorderSizePixel = 0,
                BackgroundColor3 = v15.Color.HighlightBlue,
                ZIndex = 10
            }));
        else
            return nil;
        end;
    end;
    return v1.createElement("Frame", {
        Size = v65,
        Position = v66,
        BackgroundTransparency = 1
    }, {
        Graph = v72("graph", "Graph", 0),
        GraphHighlight = v75("graph", 0),
        Tags = v72("tag", "Object Tags", 1),
        TagHighlight = v75("tag", 1),
        Memcat = v72("memcat", "Memory Categories", 2),
        MemcatHighlight = v75("memcat", 2),
        Userdata = v72("userdata", "Object Classes", 3),
        UserdataHighlight = v75("userdata", 3),
        Refs = v72("refs", "Unique References", 4),
        RefHighlight = v75("refs", 4)
    });
end;
v37.createStatsTableHeader = function(v76, v77, v78, v79)
    return v1.createElement("Frame", {
        Size = UDim2.new(1 - l_SnapshotWidth_0, 0, 0, l_HeaderFrameHeight_0),
        Position = UDim2.new(l_SnapshotWidth_0, 0, v77, v78),
        BackgroundTransparency = 1
    }, {
        First = if not v79[1] then nil else v1.createElement(v4, {
            text = v79[1],
            size = UDim2.new(1 - l_ValueCellWidth_0 * 2, -l_ValuePadding_0 - l_CellPadding_0, 0, l_HeaderFrameHeight_0),
            pos = UDim2.new(0, l_CellPadding_0, 0, 0),
            sortfunction = v76.onSortChanged
        }),
        Second = if not v79[2] then nil else v1.createElement(v4, {
            text = v79[2],
            size = UDim2.new(l_ValueCellWidth_0, -l_CellPadding_0, 0, l_HeaderFrameHeight_0),
            pos = UDim2.new(1 - l_ValueCellWidth_0 * 2, l_ValuePadding_0, 0, 0),
            sortfunction = v76.onSortChanged
        }),
        Third = if not v79[3] then nil else v1.createElement(v4, {
            text = v79[3],
            size = UDim2.new(l_ValueCellWidth_0, -l_CellPadding_0, 0, l_HeaderFrameHeight_0),
            pos = UDim2.new(1 - l_ValueCellWidth_0, l_ValuePadding_0, 0, 0),
            sortfunction = v76.onSortChanged
        }),
        TopHorizontal = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 1),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        }),
        LowerHorizontal = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, l_LineWidth_0),
            Position = UDim2.new(0, 0, 1, 0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        }),
        Vertical1 = v1.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
        }),
        Vertical2 = v1.createElement("Frame", {
            Size = UDim2.new(0, l_LineWidth_0, 1, 0),
            Position = UDim2.new(1 - l_ValueCellWidth_0 * 2, 0, 0, 0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        })
    });
end;
v37.init = function(v80)
    v80.state = {
        activeTab = "graph"
    };
end;
v37.render = function(v81)
    local l_layoutOrder_0 = v81.props.layoutOrder;
    local l_size_0 = v81.props.size;
    local v84 = nil;
    local v85 = v36[v81.state.activeTab];
    if not v81.props.data or #v81.props.data == 0 then
        v84 = v1.createElement("TextLabel", {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            Text = "Capture a Snapshot to view details",
            TextColor3 = v15.Color.Text,
            BackgroundTransparency = 1,
            LayoutOrder = l_layoutOrder_0
        });
    end;
    return v1.createElement("Frame", {
        Size = l_size_0,
        BackgroundTransparency = 1,
        LayoutOrder = l_layoutOrder_0
    }, {
        SnapshotHeader = v1.createElement(v4, {
            text = "Snapshots",
            size = UDim2.new(l_SnapshotWidth_0, -l_CellPadding_0, 0, l_HeaderFrameHeight_0),
            pos = UDim2.new(0, l_CellPadding_0, 0, 0)
        }),
        Snapshots = v1.createElement("ScrollingFrame", {
            Size = UDim2.new(l_SnapshotWidth_0, -4, 1, -l_HeaderFrameHeight_0),
            Position = UDim2.new(0, 2, 0, l_HeaderFrameHeight_0),
            BackgroundTransparency = 1,
            VerticalScrollBarInset = Enum.ScrollBarInset.None,
            ScrollBarThickness = 5,
            CanvasSize = UDim2.fromScale(0, 0),
            AutomaticCanvasSize = Enum.AutomaticSize.Y
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            Stroke = v1.createElement("UIStroke", {
                Thickness = 2,
                Color = Color3.new(0.6, 0.6, 0.6)
            }),
            Children = v1.createFragment(v81:renderSnapshotList())
        }),
        Tabs = v81:createTabSelector(UDim2.new(1 - l_SnapshotWidth_0, 0, 0, l_TabsHeight_0), UDim2.new(l_SnapshotWidth_0, 0, 0, 0)),
        Hint = v1.createElement("TextLabel", {
            Size = UDim2.new(1 - l_SnapshotWidth_0, 0, 0, l_TableHintHeight_0),
            Position = UDim2.new(l_SnapshotWidth_0, 0, 0, l_TabsHeight_0),
            Text = v85.hint,
            TextColor3 = v15.Color.Text,
            BackgroundTransparency = 1
        }),
        Headers = v81:createStatsTableHeader(0, l_TabsHeight_0 + l_TableHintHeight_0, v85.headers),
        Entries = v1.createElement("ScrollingFrame", {
            Size = UDim2.new(1 - l_SnapshotWidth_0, 0, 1, -((l_TabsHeight_0 + l_TableHintHeight_0) + l_HeaderFrameHeight_0)),
            Position = UDim2.new(l_SnapshotWidth_0, 0, 0, (l_TabsHeight_0 + l_TableHintHeight_0) + l_HeaderFrameHeight_0),
            BackgroundTransparency = 1,
            VerticalScrollBarInset = Enum.ScrollBarInset.None,
            ScrollBarThickness = 5,
            CanvasSize = UDim2.fromScale(0, 0),
            AutomaticCanvasSize = Enum.AutomaticSize.Y
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            Children = if not v84 then v1.createFragment(v85.initFragmentSource(v81)) else v84
        })
    });
end;
return v2.UNSTABLE_connect2(nil, function(v86)
    return {
        dispatchSetLuauHeapActiveSnapshot = function(v87)
            v86(v13(v87));
        end,
        dispatchSetLuauHeapCompareSnapshot = function(v88)
            v86(v14(v88));
        end
    };
end)(v37);


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.Tooltip);
local _ = require(script.Parent.LuauHeapTypes);
local v6 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v6.GeneralFormatting.LineWidth;
local l_LineColor_0 = v6.GeneralFormatting.LineColor;
local l_GraphEntryFrameHeight_0 = v6.LuauHeapFormatting.GraphEntryFrameHeight;
local l_DepthIndent_0 = v6.LuauHeapFormatting.DepthIndent;
local l_ValueCellWidth_0 = v6.LuauHeapFormatting.ValueCellWidth;
local l_CellPadding_0 = v6.LuauHeapFormatting.CellPadding;
local l_ValuePadding_0 = v6.LuauHeapFormatting.ValuePadding;
local v14 = v0.PureComponent:extend("LuauHeapViewEntry");
local function v16(v15)
    return v0.createFragment({
        Label = v0.createElement(v2, {
            text = v15.text,
            size = v15.size,
            pos = v15.pos,
            richText = true
        }),
        LeftBorder = v0.createElement("Frame", {
            Size = UDim2.new(UDim.new(0, l_LineWidth_0), v15.size.Y),
            Position = UDim2.fromOffset(-l_ValuePadding_0, 0) + v15.pos,
            AnchorPoint = Vector2.new(0, 0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        })
    });
end;
v14.init = function(v17)
    v17.state = {
        expanded = v17.props.depth == 0,
        expandedEllipsis = false,
        showTooltip = false,
        tooltipPos = UDim2.fromOffset(0, 0)
    };
    v17.onButtonPress = function()
        v17:setState(function(v18)
            return {
                expanded = not v18.expanded
            };
        end);
    end;
    v17.onExpandEllipsis = function()
        v17:setState({
            expandedEllipsis = true
        });
    end;
    v17.onMouseEnter = function(_, v20, v21)
        v17:setState({
            showTooltip = true,
            tooltipPos = UDim2.fromOffset(v20, v21)
        });
    end;
    v17.onMouseMove = function(_, v23, v24)
        v17:setState({
            showTooltip = true,
            tooltipPos = UDim2.fromOffset(v23, v24)
        });
    end;
    v17.onMouseLeave = function()
        v17:setState({
            showTooltip = false
        });
    end;
end;
v14.renderChildren = function(v25, v26, v27)
    if v25.state.expanded then
        local v28 = true;
        if #v26 == 0 then
            v28 = false;
            if v27 ~= nil then
                v28 = #v27 ~= 0;
            end;
        end;
        if v28 then
            local v29 = {};
            local l_TotalSize_0 = v25.props.data.TotalSize;
            local v31 = v25.props.depth + 1;
            local v32 = 0;
            local v33 = 0;
            local v34 = 0;
            local _ = function(v35)
                if v27 then
                    for _, v37 in ipairs(v27) do
                        if v35.Name == v37.Name then
                            return v37;
                        end;
                    end;
                end;
                return nil;
            end;
            for _, v40 in ipairs(v26) do
                local v41;
                if v27 then
                    for _, v43 in ipairs(v27) do
                        if v40.Name == v43.Name then
                            v41 = v43;
                            goto label0 --[[  true, false  ]];
                        end;
                    end;
                end;
                v41 = nil;
                ::label0::;
                if not (v40.TotalSize <= 128 and #v26 > 4) or v25.state.expandedEllipsis then
                    v34 = v34 + 1;
                    v29[v34] = v0.createElement(v14, {
                        layoutOrder = l_TotalSize_0 - v40.TotalSize,
                        depth = v31,
                        data = v40,
                        compare = v41
                    });
                else
                    v32 = v32 + v40.TotalSize;
                    if v41 then
                        v33 = v33 + v41.TotalSize;
                    end;
                end;
            end;
            if v32 > 0 then
                v34 = v34 + 1;
                v29[v34] = v0.createElement(v14, {
                    layoutOrder = l_TotalSize_0,
                    depth = v31,
                    data = {
                        Size = v32,
                        TotalSize = v32,
                        Name = "...",
                        Children = {}
                    },
                    compare = if not v27 then nil else {
                        Size = v33,
                        TotalSize = v33,
                        Name = "...",
                        Children = {}
                    },
                    customButtonPress = v25.onExpandEllipsis
                });
            end;
            if v27 then
                for _, v45 in ipairs(v27) do
                    local v46 = false;
                    for _, v48 in ipairs(v26) do
                        if v48.Name == v45.Name then
                            v46 = true;
                            break;
                        end;
                    end;
                    if not v46 then
                        local v49 = {
                            Size = 0,
                            TotalSize = 0,
                            Name = v45.Name,
                            Source = v45.Source,
                            Children = {}
                        };
                        v34 = v34 + 1;
                        v29[v34] = v0.createElement(v14, {
                            layoutOrder = l_TotalSize_0,
                            depth = v31,
                            data = v49,
                            compare = v45
                        });
                    end;
                end;
            end;
            return v29;
        else
            return {};
        end;
    else
        return {};
    end;
end;
v14.renderValues = function(_, v51)
    local v52 = {};
    local v53 = UDim2.new(l_ValueCellWidth_0, -l_ValuePadding_0, 0, l_GraphEntryFrameHeight_0);
    local v54 = UDim2.new(1 - l_ValueCellWidth_0 * #v51, l_ValuePadding_0, 0, 0);
    for v55, v56 in ipairs(v51) do
        v52[tostring(v55)] = v0.createElement(v16, {
            text = tostring(v56),
            size = v53,
            pos = v54 + UDim2.fromScale(l_ValueCellWidth_0 * (v55 - 1), 0)
        });
    end;
    return v52;
end;
v14.render = function(v57)
    local l_props_0 = v57.props;
    local v59 = l_props_0.size or UDim2.new(1, 0, 0, l_GraphEntryFrameHeight_0);
    local l_depth_0 = l_props_0.depth;
    local v61 = l_props_0.layoutOrder or 0;
    local v62 = l_depth_0 * l_DepthIndent_0;
    local l_data_0 = l_props_0.data;
    local l_compare_0 = l_props_0.compare;
    local _ = "";
    local _ = "";
    local v67 = {
        if not not l_compare_0 and l_compare_0.TotalSize ~= l_data_0.TotalSize then string.format("%d (%s%d)", l_data_0.TotalSize, l_data_0.TotalSize < l_compare_0.TotalSize and "0f0" or "f00", l_data_0.TotalSize < l_compare_0.TotalSize and "" or "+", l_data_0.TotalSize - l_compare_0.TotalSize) else string.format("%.0f", l_data_0.TotalSize),
        if not not l_compare_0 and l_compare_0.Size ~= l_data_0.Size then string.format("%d (%s%d)", l_data_0.Size, l_data_0.Size < l_compare_0.Size and "0f0" or "f00", l_data_0.Size < l_compare_0.Size and "" or "+", l_data_0.Size - l_compare_0.Size) else string.format("%.0f", l_data_0.Size)
    };
    local v68 = if not l_data_0.Name or #l_data_0.Name == 0 then l_depth_0 == 0 and "<root>" or "<anonymous>" else l_data_0.Name;
    local v69 = if not l_data_0.Source or #l_data_0.Source == 0 then v68 else l_data_0.Source;
    local v70 = UDim.new(1 - l_ValueCellWidth_0 * #v67, -(l_CellPadding_0 + v62));
    local v71 = true;
    if #l_data_0.Children == 0 then
        if l_compare_0 ~= nil then
            v71 = true;
            if not (#l_compare_0.Children == 0) then
                goto label1;
            end;
        end;
        v71 = l_props_0.customButtonPress ~= nil;
    end;
    ::label1::;
    return v0.createElement("Frame", {
        Size = v59,
        BackgroundTransparency = 1,
        LayoutOrder = v61,
        AutomaticSize = Enum.AutomaticSize.Y
    }, {
        tooltip = if not v57.state.showTooltip then nil else v0.createElement(v4, {
            text = v69,
            pos = v57.state.tooltipPos
        }),
        layout = v0.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Right,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        button = v0.createElement(v3, {
            size = UDim2.new(1, 0, 0, l_GraphEntryFrameHeight_0),
            inset = v62,
            isExpanded = v57.state.expanded,
            isExpandable = v71,
            onButtonPress = if not l_props_0.customButtonPress then v57.onButtonPress else l_props_0.customButtonPress,
            onMouseEnter = v57.onMouseEnter,
            onMouseLeave = v57.onMouseLeave,
            onMouseMove = v57.onMouseMove,
            layoutOrder = -1
        }, {
            name = v0.createElement(v2, {
                text = v68,
                size = UDim2.new(v70, UDim.new(1, 0)),
                pos = UDim2.new(0, l_CellPadding_0 + v62, 0, 0)
            }),
            values = v0.createFragment(v57:renderValues(v67))
        }),
        children = v0.createFragment(v57:renderChildren(l_data_0.Children, if not l_compare_0 then nil else l_compare_0.Children))
    });
end;
return v14;


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 _ = require(script.Parent.LuauHeapTypes);
local v5 = require(script.Parent.Parent.Parent.Constants);
local _ = v5.GeneralFormatting.LineWidth;
local _ = v5.GeneralFormatting.LineColor;
local l_PathEntryFrameHeight_0 = v5.LuauHeapFormatting.PathEntryFrameHeight;
local l_DepthIndent_0 = v5.LuauHeapFormatting.DepthIndent;
local _ = v5.LuauHeapFormatting.ValueCellWidth;
local l_CellPadding_0 = v5.LuauHeapFormatting.CellPadding;
local _ = v5.LuauHeapFormatting.ValuePadding;
local v13 = v0.PureComponent:extend("LuauHeapViewPathEntry");
v13.init = function(v14)
    v14.state = {
        expanded = false
    };
    v14.onButtonPress = function()
        v14:setState(function(v15)
            return {
                expanded = not v15.expanded
            };
        end);
    end;
end;
v13.renderChildren = function(v16, v17)
    local v18 = {};
    local v19 = 2 * l_DepthIndent_0 + l_CellPadding_0;
    if not ((not v16.state.expanded or not v17) or not #v17) then
        for v20, v21 in ipairs(v17) do
            v18[v20] = v0.createElement(v2, {
                text = v21,
                layoutOrder = v20,
                size = UDim2.new(UDim.new(1, -v19), UDim.new(0, l_PathEntryFrameHeight_0)),
                pos = UDim2.new(0, v19, 0, 0)
            });
        end;
    end;
    return v18;
end;
v13.render = function(v22)
    local l_props_0 = v22.props;
    local v24 = l_props_0.size or UDim2.new(1, 0, 0, l_PathEntryFrameHeight_0);
    local v25 = l_props_0.layoutOrder or 0;
    local l_name_0 = l_props_0.name;
    local l_data_0 = l_props_0.data;
    local v28 = l_props_0.depth * l_DepthIndent_0;
    return v0.createElement("Frame", {
        Size = v24,
        BackgroundTransparency = 1,
        LayoutOrder = v25,
        AutomaticSize = Enum.AutomaticSize.Y
    }, {
        layout = v0.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Right,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        button = v0.createElement(v3, {
            size = UDim2.new(1, 0, 0, l_PathEntryFrameHeight_0),
            inset = v28,
            isExpanded = v22.state.expanded,
            isExpandable = #l_data_0 ~= 0,
            onButtonPress = v22.onButtonPress,
            layoutOrder = -1
        }, {
            name = v0.createElement(v2, {
                text = l_name_0,
                size = UDim2.new(UDim.new(1, -v28), UDim.new(1, 0)),
                pos = UDim2.new(0, l_CellPadding_0 + v28, 0, 0)
            })
        }),
        children = v0.createFragment(v22:renderChildren(l_data_0))
    });
end;
return v13;


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 _ = require(script.Parent.LuauHeapTypes);
local v5 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v5.GeneralFormatting.LineWidth;
local l_LineColor_0 = v5.GeneralFormatting.LineColor;
local l_RefEntryFrameHeight_0 = v5.LuauHeapFormatting.RefEntryFrameHeight;
local _ = v5.LuauHeapFormatting.DepthIndent;
local l_ValueCellWidth_0 = v5.LuauHeapFormatting.ValueCellWidth;
local l_CellPadding_0 = v5.LuauHeapFormatting.CellPadding;
local l_ValuePadding_0 = v5.LuauHeapFormatting.ValuePadding;
local v13 = require(script.Parent.LuauHeapViewPathEntry);
local v14 = v0.PureComponent:extend("LuauHeapViewRefEntry");
local function v16(v15)
    return v0.createFragment({
        Label = v0.createElement(v2, {
            text = v15.text,
            size = v15.size,
            pos = v15.pos,
            richText = true
        }),
        LeftBorder = v0.createElement("Frame", {
            Size = UDim2.new(UDim.new(0, l_LineWidth_0), v15.size.Y),
            Position = UDim2.fromOffset(-l_ValuePadding_0, 0) + v15.pos,
            AnchorPoint = Vector2.new(0, 0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        })
    });
end;
v14.init = function(v17)
    v17.state = {
        expanded = false
    };
    v17.onButtonPress = function()
        v17:setState(function(v18)
            return {
                expanded = not v18.expanded
            };
        end);
    end;
end;
v14.renderValues = function(_, v20)
    local v21 = {};
    local v22 = UDim2.new(l_ValueCellWidth_0, -l_ValuePadding_0, 0, l_RefEntryFrameHeight_0);
    local v23 = UDim2.new(1 - l_ValueCellWidth_0 * #v20, l_ValuePadding_0, 0, 0);
    for v24, v25 in v20, nil, nil do
        v21[tostring(v24)] = v0.createElement(v16, {
            text = tostring(v25),
            size = v22,
            pos = v23 + UDim2.fromScale(l_ValueCellWidth_0 * (v24 - 1), 0)
        });
    end;
    return v21;
end;
v14.renderChildren = function(v26, v27)
    local v28 = {};
    if not ((not v26.state.expanded or not v27) or not #v27) then
        for v29, v30 in ipairs(v27) do
            v28[v29] = v0.createElement(v13, {
                layoutOrder = v29,
                depth = 1,
                name = ("Path #%*"):format(v29),
                data = v30
            });
        end;
    end;
    return v28;
end;
v14.render = function(v31)
    local l_props_0 = v31.props;
    local v33 = l_props_0.size or UDim2.new(1, 0, 0, l_RefEntryFrameHeight_0);
    local v34 = l_props_0.layoutOrder or 0;
    local l_data_0 = l_props_0.data;
    local v36 = {
        ("%*"):format(l_data_0.Count),
        (("%*"):format(l_data_0.Instances))
    };
    return v0.createElement("Frame", {
        Size = v33,
        BackgroundTransparency = 1,
        LayoutOrder = v34,
        AutomaticSize = Enum.AutomaticSize.Y
    }, {
        layout = v0.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Right,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        button = v0.createElement(v3, {
            size = UDim2.new(1, 0, 0, l_RefEntryFrameHeight_0),
            inset = 0,
            isExpanded = v31.state.expanded,
            isExpandable = l_data_0.Paths and #l_data_0.Paths ~= 0,
            onButtonPress = v31.onButtonPress,
            layoutOrder = -1
        }, {
            name = v0.createElement(v2, {
                text = l_data_0.Name,
                size = UDim2.new(UDim.new(1 - l_ValueCellWidth_0 * #v36, 0), UDim.new(1, 0)),
                pos = UDim2.new(0, l_CellPadding_0, 0, 0)
            }),
            values = v0.createFragment(v31:renderValues(v36))
        }),
        children = v0.createFragment(v31:renderChildren(l_data_0.Paths))
    });
end;
return v14;


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 _ = require(script.Parent.LuauHeapTypes);
local v5 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v5.GeneralFormatting.LineWidth;
local l_LineColor_0 = v5.GeneralFormatting.LineColor;
local l_StatEntryFrameHeight_0 = v5.LuauHeapFormatting.StatEntryFrameHeight;
local _ = v5.LuauHeapFormatting.DepthIndent;
local l_ValueCellWidth_0 = v5.LuauHeapFormatting.ValueCellWidth;
local l_CellPadding_0 = v5.LuauHeapFormatting.CellPadding;
local l_ValuePadding_0 = v5.LuauHeapFormatting.ValuePadding;
local v13 = v0.PureComponent:extend("LuauHeapViewStatEntry");
local function v15(v14)
    return v0.createFragment({
        Label = v0.createElement(v2, {
            text = v14.text,
            size = v14.size,
            pos = v14.pos,
            richText = true
        }),
        LeftBorder = v0.createElement("Frame", {
            Size = UDim2.new(UDim.new(0, l_LineWidth_0), v14.size.Y),
            Position = UDim2.fromOffset(-l_ValuePadding_0, 0) + v14.pos,
            AnchorPoint = Vector2.new(0, 0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        })
    });
end;
v13.renderValues = function(_, v17)
    local v18 = {};
    local v19 = UDim2.new(l_ValueCellWidth_0, -l_ValuePadding_0, 0, l_StatEntryFrameHeight_0);
    local v20 = UDim2.new(1 - l_ValueCellWidth_0 * #v17, l_ValuePadding_0, 0, 0);
    for v21, v22 in v17, nil, nil do
        v18[tostring(v21)] = v0.createElement(v15, {
            text = tostring(v22),
            size = v19,
            pos = v20 + UDim2.fromScale(l_ValueCellWidth_0 * (v21 - 1), 0)
        });
    end;
    return v18;
end;
v13.render = function(v23)
    local l_props_0 = v23.props;
    local v25 = l_props_0.size or UDim2.new(1, 0, 0, l_StatEntryFrameHeight_0);
    local v26 = l_props_0.layoutOrder or 0;
    local l_data_0 = l_props_0.data;
    local l_compare_0 = l_props_0.compare;
    local v29 = string.format("%.0f", l_data_0.Size);
    local v30 = string.format("%.0f", l_data_0.Count);
    if l_compare_0 then
        if l_compare_0.Size ~= l_data_0.Size then
            v29 = string.format("%d (%s%d)", l_data_0.Size, l_data_0.Size < l_compare_0.Size and "0f0" or "f00", l_data_0.Size < l_compare_0.Size and "" or "+", l_data_0.Size - l_compare_0.Size);
        end;
        if l_compare_0.Count ~= l_data_0.Count then
            v30 = string.format("%d (%s%d)", l_data_0.Count, l_data_0.Count < l_compare_0.Count and "0f0" or "f00", l_data_0.Count < l_compare_0.Count and "" or "+", l_data_0.Count - l_compare_0.Count);
        end;
    end;
    local v31 = {
        v29,
        v30
    };
    return v0.createElement("Frame", {
        Size = v25,
        BackgroundTransparency = 1,
        LayoutOrder = v26,
        AutomaticSize = Enum.AutomaticSize.Y
    }, {
        layout = v0.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Right,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        button = v0.createElement(v3, {
            size = UDim2.new(1, 0, 0, l_StatEntryFrameHeight_0),
            inset = 0,
            isExpanded = false,
            isExpandable = false,
            layoutOrder = -1
        }, {
            name = v0.createElement(v2, {
                text = l_data_0.Name,
                size = UDim2.new(UDim.new(1 - l_ValueCellWidth_0 * #v31, 0), UDim.new(1, 0)),
                pos = UDim2.new(0, l_CellPadding_0, 0, 0)
            }),
            values = v0.createFragment(v23:renderValues(v31))
        })
    });
end;
return v13;