local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local v3 = require(l_Parent_0.Packages.Cryo);
local v4 = require(l_Parent_0.Src.Util.Constants);
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_DropdownMenu_0 = l_UI_0.DropdownMenu;
local l_Checkbox_0 = l_UI_0.Checkbox;
local l_Separator_0 = l_UI_0.Separator;
local l_Button_0 = l_UI_0.Button;
local l_IconButton_0 = l_UI_0.IconButton;
local l_Tooltip_0 = l_UI_0.Tooltip;
local l_StudioDebuggerDropdownMenuSelectionRerender_0 = game:GetFastFlag("StudioDebuggerDropdownMenuSelectionRerender");
local v14 = v1.PureComponent:extend("DropdownField");
local _ = function(v15)
    for _, v17 in pairs(v15) do
        if not v17 then
            return false;
        end;
    end;
    return true;
end;
local _ = function(v19)
    for _, v21 in pairs(v19) do
        if v21 then
            return true;
        end;
    end;
    return false;
end;
local _ = function(v23)
    local v24;
    for _, v26 in pairs(v23) do
        if not v26 then
            v24 = false;
            goto label0 --[[  true, false  ]];
        end;
    end;
    v24 = true;
    ::label0::;
    if not v24 then
        for _, v28 in pairs(v23) do
            if v28 then
                v24 = true;
                goto label1 --[[  true, false  ]];
            end;
        end;
        v24 = false;
        ::label1::;
        if not v24 then
            return false;
        else
            return l_Checkbox_0.Indeterminate;
        end;
    else
        return true;
    end;
end;
v14.init = function(v30)
    v30.state = {
        isOpen = false
    };
    v30.onDropdownClick = function(v31)
        local l_props_0 = v30.props;
        local v33 = {};
        local v34 = v3.Dictionary.join(l_props_0.KeyStates, {
            [v31] = not l_props_0.KeyStates[v31]
        });
        for v35, v36 in ipairs(v30.props.KeyTexts) do
            if not (not (v35 ~= 1) or not v34[v35]) then
                table.insert(v33, v36);
            end;
        end;
        l_props_0.ClickCallback(v33);
    end;
    v30.onAllDropdownClick = function(_)
        local l_props_1 = v30.props;
        local v39;
        for _, v41 in pairs(l_props_1.KeyStates) do
            if not v41 then
                v39 = false;
                goto label2 --[[  true, false  ]];
            end;
        end;
        v39 = true;
        ::label2::;
        local v42 = not v39;
        v39 = {};
        if v42 then
            for v43, v44 in ipairs(v30.props.KeyTexts) do
                if v43 ~= 1 then
                    table.insert(v39, v44);
                end;
            end;
        end;
        l_props_1.ClickCallback(v39);
    end;
    v30.onRenderItem = function(_, v46, _)
        local l_props_2 = v30.props;
        local l_Localization_0 = l_props_2.Localization;
        local l_Style_0 = l_props_2.Style;
        local l_createElement_0 = v1.createElement;
        local l_l_Pane_0_0 = l_Pane_0;
        local v53 = {
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = v46,
            Stylizer = l_Style_0,
            BackgroundColor = l_Style_0.MainBackground,
            BorderColor = l_Style_0.BorderColor
        };
        local v54 = {};
        local l_createElement_1 = v1.createElement;
        local l_l_Checkbox_0_0 = l_Checkbox_0;
        local v57 = {
            LayoutOrder = 1,
            Key = v46
        };
        local v58;
        if v46 == 1 then
            local l_KeyStates_0 = l_props_2.KeyStates;
            local v60;
            for _, v62 in pairs(l_KeyStates_0) do
                if not v62 then
                    v60 = false;
                    goto label4 --[[  true, false  ]];
                end;
            end;
            v60 = true;
            ::label4::;
            if not v60 then
                for _, v64 in pairs(l_KeyStates_0) do
                    if v64 then
                        v60 = true;
                        goto label5 --[[  true, false  ]];
                    end;
                end;
                v60 = false;
                ::label5::;
                v58 = not not v60 and l_Checkbox_0.Indeterminate;
            else
                v58 = true;
            end;
            if v58 then
                goto label3;
            end;
        end;
        v58 = l_props_2.KeyStates[v46];
        ::label3::;
        v57.Checked = v58;
        v57.OnClick = v46 == 1 and v30.onAllDropdownClick or v30.onDropdownClick;
        v57.Text = l_Localization_0:getText(l_props_2.Widget, v30.props.KeyTexts[v46]);
        v57.Stylizer = l_Style_0;
        v54.CheckboxView = l_createElement_1(l_l_Checkbox_0_0, v57);
        l_createElement_1 = false;
        if v46 == 1 then
            l_createElement_1 = v1.createElement(l_Separator_0, {
                LayoutOrder = 2,
                Position = UDim2.new(0.5, 0, 1, 0),
                DominantAxis = Enum.DominantAxis.Width,
                Style = l_Style_0.Separator,
                Stylizer = l_Style_0
            });
        end;
        v54.SeparatorView = l_createElement_1;
        v54.Tooltip = (v30.props.Tooltips and v30.props.Tooltips[v46]) and v1.createElement(l_Tooltip_0, {
            Text = v30.props.Tooltips[v46]
        });
        return l_createElement_0(l_l_Pane_0_0, v53, v54);
    end;
    v30.openMenu = function()
        v30:setState(function(_)
            return {
                isOpen = true
            };
        end);
    end;
    v30.closeMenu = function()
        v30:setState(function(_)
            return {
                isOpen = false
            };
        end);
    end;
end;
v14.render = function(v67)
    local l_props_3 = v67.props;
    local l_Style_1 = l_props_3.Style;
    local l_Localization_1 = l_props_3.Localization;
    local v71 = not l_props_3.ShouldShowDropdownIcon and not l_props_3.HamburgerMenu;
    local v72 = "";
    if v71 then
        if l_props_3.NumDisplay == 0 then
            v72 = l_Localization_1:getText("Common", "None");
        elseif l_props_3.NumDisplay == 1 then
            for v73, v74 in pairs(l_props_3.KeyStates) do
                if v74 then
                    v72 = l_Localization_1:getText(l_props_3.Widget, v67.props.KeyTexts[v73]);
                end;
            end;
        else
            v72 = if l_props_3.NumDisplay == l_props_3.MaxDisplay then l_Localization_1:getText(l_props_3.Widget, v67.props.KeyTexts[1]) else l_Localization_1:getText(l_props_3.Widget, "DropdownFieldText", {
                NumFields = l_props_3.NumDisplay
            });
        end;
    end;
    local v75 = if not v71 then v4.BUTTON_SIZE else l_props_3.DropdownWidth;
    local v76 = {};
    if l_StudioDebuggerDropdownMenuSelectionRerender_0 then
        for v77, _ in ipairs(l_props_3.KeyTexts) do
            if v77 == 1 then
                local v79 = l_props_3.KeyTexts[v77];
                local l_KeyStates_1 = l_props_3.KeyStates;
                local v81;
                for _, v83 in pairs(l_KeyStates_1) do
                    if not v83 then
                        v81 = false;
                        goto label6 --[[  true, false  ]];
                    end;
                end;
                v81 = true;
                ::label6::;
                local v84;
                if not v81 then
                    for _, v86 in pairs(l_KeyStates_1) do
                        if v86 then
                            v81 = true;
                            goto label7 --[[  true, false  ]];
                        end;
                    end;
                    v81 = false;
                    ::label7::;
                    v84 = not not v81 and l_Checkbox_0.Indeterminate;
                else
                    v84 = true;
                end;
                table.insert(v76, v79 .. tostring(v84));
            else
                table.insert(v76, l_props_3.KeyTexts[v77] .. tostring(l_props_3.KeyStates[v77]));
            end;
        end;
    end;
    return v1.createElement(l_Pane_0, {
        Size = UDim2.new(0, v75, 1, 0),
        LayoutOrder = l_props_3.LayoutOrder
    }, {
        IconView = l_props_3.ShouldShowDropdownIcon and v1.createElement(l_IconButton_0, {
            Size = UDim2.new(0, v4.BUTTON_SIZE, 0, v4.BUTTON_SIZE),
            LeftIcon = "rbxasset://textures/Debugger/Breakpoints/filter.png",
            TooltipText = l_props_3.Tooltip,
            OnClick = v67.openMenu
        }),
        HamburgerIconView = l_props_3.HamburgerMenu and v1.createElement(l_IconButton_0, {
            Size = UDim2.new(0, v4.BUTTON_SIZE, 0, v4.BUTTON_SIZE),
            LeftIcon = "rbxasset://textures/Debugger/Breakpoints/MoreButton.png",
            OnClick = v67.openMenu,
            BackgroundStyle = "Box"
        }),
        ButtonView = v71 and v1.createElement(l_Button_0, {
            Text = v72,
            TextSize = l_Style_1.TextSize,
            Font = l_Style_1.Font,
            Size = UDim2.new(1, 0, 1, 0),
            Stylizer = l_Style_1,
            BorderSizePixel = 0,
            OnClick = v67.openMenu,
            Tooltip = l_props_3.Tooltip
        }),
        DropdownView = v1.createElement(l_DropdownMenu_0, {
            Width = l_props_3.DropdownWidth,
            Hide = not v67.state.isOpen,
            Items = if not l_StudioDebuggerDropdownMenuSelectionRerender_0 then v67.props.KeyTexts else v76,
            OnFocusLost = v67.closeMenu,
            OnRenderItem = v67.onRenderItem,
            Stylizer = l_Style_1
        })
    });
end;
return v14;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local l_Tabs_0 = require(l_Parent_0.Packages.Framework).UI.Tabs;
local v4 = require(l_Parent_0.Src.Models.Watch.TableTab);
local v5 = require(l_Parent_0.Src.Actions.Watch.SetTab);
local v6 = v1.PureComponent:extend("Tabs");
v6.render = function(v7)
    local l_props_0 = v7.props;
    return v1.createElement(l_Tabs_0, {
        Tabs = l_props_0.Tabs,
        SelectedTab = l_props_0.selectedTab,
        OnTabSelected = l_props_0.onTabSelected,
        LayoutOrder = l_props_0.LayoutOrder,
        Size = l_props_0.Size,
        AutomaticSize = Enum.AutomaticSize.X
    });
end;
return (v2.connect(function(v9, v10)
    return {
        selectedTab = v9.Watch.currentTab == v4.Variables and v10.Tabs[1] or v10.Tabs[2]
    };
end, function(v11)
    return {
        onTabSelected = function(v12)
            return v11(v5(v12.Key));
        end
    };
end)(v6));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local v4 = require(l_Parent_0.Packages.Cryo);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Analytics_0 = l_ContextServices_0.Analytics;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_Plugin_0 = l_ContextServices_0.Plugin;
local v10 = require(l_Parent_0.Src.Resources.AnalyticsEventNames);
local l_UI_0 = v3.UI;
local l_showContextMenu_0 = l_UI_0.showContextMenu;
local l_Dash_0 = v3.Dash;
local l_map_0 = l_Dash_0.map;
local l_join_0 = l_Dash_0.join;
local l_TreeTable_0 = l_UI_0.TreeTable;
local l_Stylizer_0 = v3.Style.Stylizer;
local l_deepCopy_0 = v3.Util.deepCopy;
local l_Models_0 = l_Parent_0.Src.Models;
local v20 = require(l_Models_0.Watch.TableTab);
local v21 = require(l_Models_0.Watch.WatchRow);
local v22 = require(l_Models_0.StepStateBundle);
local v23 = require(l_Parent_0.Src.Util.WatchHelperFunctions);
local l_Actions_0 = l_Parent_0.Src.Actions;
local v25 = require(l_Actions_0.Watch.SetVariableExpanded);
local v26 = require(l_Actions_0.Watch.SetExpressionExpanded);
local v27 = require(l_Actions_0.Watch.ChangeExpression);
local v28 = require(l_Actions_0.Watch.AddExpression);
local v29 = require(l_Actions_0.Watch.RemoveExpression);
local v30 = require(l_Actions_0.Watch.ClearAllExpressions);
local v31 = require(l_Actions_0.Watch.SetWatchSortState);
local v32 = require(l_Actions_0.Watch.SetTab);
local v33 = require(l_Actions_0.Watch.MyWatchesFilterChange);
local v34 = require(l_Actions_0.Watch.VariablesFilterChange);
local v35 = require(l_Parent_0.Src.Thunks.Common.AddChildRowsToVars);
local v36 = require(l_Parent_0.Src.Thunks.Watch.ExecuteExpressionForAllFrames);
local v37 = require(l_Parent_0.Src.Thunks.Watch.FilterScopeWatchThunk);
local l_Util_0 = l_Parent_0.Src.Util;
local v39 = require(l_Util_0.Constants);
local v40 = require(l_Util_0.ColumnResizeHelperFunctions);
local v41 = require(l_Util_0.MakePluginActions);
local v42 = v1.PureComponent:extend("DisplayTable");
local v43 = {
    [1] = "nameColumn"
};
local v44 = {
    [1] = "expressionColumn"
};
local v45 = {
    nameColumn = "NameColumn",
    expressionColumn = "ExpressionColumn"
};
local v46 = {
    ScopeColumn = "scopeColumn",
    ValueColumn = "valueColumn",
    DataTypeColumn = "dataTypeColumn"
};
local v47 = {
    [1] = "nameColumn",
    [2] = "scopeColumn",
    [3] = "valueColumn",
    [4] = "dataTypeColumn"
};
local v48 = {
    [1] = "expressionColumn",
    [2] = "valueColumn",
    [3] = "dataTypeColumn"
};
local function v49(v50, v51)
    if #v50 == 0 then
        return {};
    else
        local v52 = {};
        for _, v54 in ipairs(v50) do
            local v55 = nil;
            if not v51[v54] then
                v55 = v21.fromExpression(v54);
                v55.children = {};
            else
                v55 = l_deepCopy_0(v51[v54]);
                v55.children = v49(v55.childPaths, v51);
            end;
            table.insert(v52, v55);
        end;
        return v52;
    end;
end;
local function v56(v57, v58, v59)
    if #v57 == 0 then
        return ;
    else
        for _, v61 in ipairs(v57) do
            v58[v61] = v59[v61.pathColumn];
            v56(v61.children, v58, v59);
        end;
        return ;
    end;
end;
local function v69(v62, v63, v64)
    local v65 = {};
    for _, v67 in ipairs(v62) do
        local v68 = v63[v67.pathColumn];
        if not (v68 and (v68.textFilteredOut or v64 and v68.scopeFilteredOut)) then
            table.insert(v65, v67);
        end;
    end;
    return v65;
end;
local function v78(v70, v71, v72)
    local v73 = l_deepCopy_0(v70);
    for v74, v75 in ipairs(v70) do
        for _, v77 in ipairs(v71) do
            if v72[v77] == nil then
                warn("debug variable id not found in store when constructing DisplayTable");
                return ;
            elseif v75 == v72[v77].expressionColumn then
                v73[v74] = v77;
                break;
            end;
        end;
    end;
    return v73;
end;
v42.init = function(v79)
    v79.getTreeChildren = function(v80)
        return v80.children or {};
    end;
    v79.getTableColumns = function(v81, v82)
        local l_Localization_1 = v79.props.Localization;
        local v84 = {};
        for _, v86 in ipairs(v82) do
            table.insert(v84, {
                Name = l_Localization_1:getText("Watch", v45[v86]),
                Key = v86,
                Tooltip = l_Localization_1:getText("Watch", v45[v86] .. "Tooltip") or nil
            });
        end;
        for _, v88 in ipairs(v81) do
            table.insert(v84, {
                Name = l_Localization_1:getText("Watch", v88),
                Key = v46[v88],
                Tooltip = l_Localization_1:getText("Watch", v88 .. "Tooltip") or nil
            });
        end;
        return v84;
    end;
    v79.getVariableTableColumns = function()
        local l_Localization_2 = v79.props.Localization;
        return {
            {
                Name = l_Localization_2:getText("Watch", "NameColumn"),
                Key = v47[1],
                Tooltip = l_Localization_2:getText("Watch", "NameColumnTooltip") or nil
            },
            {
                Name = l_Localization_2:getText("Watch", "ScopeColumn"),
                Key = v47[2],
                Tooltip = l_Localization_2:getText("Watch", "ScopeColumnTooltip") or nil
            },
            {
                Name = l_Localization_2:getText("Watch", "ValueColumn"),
                Key = v47[3],
                Tooltip = l_Localization_2:getText("Watch", "ValueColumnTooltip") or nil
            },
            {
                Name = l_Localization_2:getText("Watch", "DataTypeColumn"),
                Key = v47[4],
                Tooltip = l_Localization_2:getText("Watch", "DataTypeColumnTooltip") or nil
            }
        };
    end;
    v79.getWatchTableColumns = function()
        local l_Localization_3 = v79.props.Localization;
        return {
            {
                Name = l_Localization_3:getText("Watch", "ExpressionColumn"),
                Key = v48[1]
            },
            {
                Name = l_Localization_3:getText("Watch", "ValueColumn"),
                Key = v48[2],
                Tooltip = l_Localization_3:getText("Watch", "ValueColumnTooltip") or nil
            },
            {
                Name = l_Localization_3:getText("Watch", "DataTypeColumn"),
                Key = v48[3],
                Tooltip = l_Localization_3:getText("Watch", "DataTypeColumnTooltip") or nil
            }
        };
    end;
    local v91 = {};
    for _ = 1, 4 do
        table.insert(v91, UDim.new(0.25, 0));
    end;
    local v93 = {};
    table.insert(v93, UDim.new(0.3333333333333333, 0));
    table.insert(v93, UDim.new(0.3333333333333333, 0));
    table.insert(v93, UDim.new(0.3333333333333333, 0));
    v79.state = {
        VariableColumnSizes = v91,
        MyWatchColumnSizes = v93
    };
    v79.OnColumnSizesChange = function(v94)
        if not (v79.props.SelectedTab == v20.Variables) then
            v79:setState(function(_)
                return {
                    MyWatchColumnSizes = v94
                };
            end);
            return ;
        else
            v79:setState(function(_)
                return {
                    VariableColumnSizes = v94
                };
            end);
            return ;
        end;
    end;
    v79.onExpansionChange = function(v97)
        local l_props_0 = v79.props;
        local l_CurrentStepStateBundle_0 = l_props_0.CurrentStepStateBundle;
        local l_DebuggerConnectionManager_0 = game:GetService("DebuggerConnectionManager");
        if l_CurrentStepStateBundle_0 then
            local l_l_DebuggerConnectionManager_0_ConnectionById_0 = l_DebuggerConnectionManager_0:GetConnectionById(l_CurrentStepStateBundle_0.debuggerStateToken.debuggerConnectionId);
            for v102, v103 in pairs(v97) do
                local v104 = l_props_0.SelectedTab == v20.Variables;
                if not v104 then
                    v79.props.OnExpressionExpansionDispatch(v102.pathColumn, v103);
                else
                    v79.props.OnVariableExpansionDispatch(v102.pathColumn, v103);
                end;
                if v103 then
                    v79.props.OnLazyLoadChildren(v102.pathColumn, v102.idColumn, l_CurrentStepStateBundle_0, v104, l_l_DebuggerConnectionManager_0_ConnectionById_0);
                end;
            end;
            return ;
        else
            assert(false);
            return ;
        end;
    end;
    v79.IsDuplicateWatchEntry = function(v105)
        for _, v107 in ipairs(v79.props.RootItems) do
            if v107.expressionColumn == v105 then
                return true;
            end;
        end;
        return false;
    end;
    v79.OnFocusLost = function(_, v109, v110, v111)
        local l_expressionColumn_0 = v110.item.expressionColumn;
        local l_Text_0 = v109.Text;
        local l_CurrentStepStateBundle_1 = v79.props.CurrentStepStateBundle;
        local l_DebuggerConnectionManager_1 = game:GetService("DebuggerConnectionManager");
        if v111 == 1 then
            local v116 = false;
            if not v79.IsDuplicateWatchEntry(l_Text_0) then
                if l_expressionColumn_0 == "" and l_Text_0 ~= "" then
                    v79.props.OnAddExpression(l_Text_0);
                    v116 = true;
                    if l_CurrentStepStateBundle_1 ~= nil then
                        local l_debuggerStateToken_0 = l_CurrentStepStateBundle_1.debuggerStateToken;
                        if l_debuggerStateToken_0 then
                            v79.props.OnExecuteExpressionForAllFrames(l_Text_0, l_DebuggerConnectionManager_1:GetConnectionById(l_debuggerStateToken_0.debuggerConnectionId), l_debuggerStateToken_0, l_CurrentStepStateBundle_1.threadId);
                        end;
                    end;
                elseif l_Text_0 == "" then
                    v79.props.OnRemoveExpression(l_expressionColumn_0);
                elseif l_expressionColumn_0 ~= l_Text_0 then
                    v79.props.OnChangeExpression(l_expressionColumn_0, l_Text_0);
                    v116 = true;
                    if l_CurrentStepStateBundle_1 ~= nil then
                        local l_debuggerStateToken_1 = l_CurrentStepStateBundle_1.debuggerStateToken;
                        if l_debuggerStateToken_1 then
                            v79.props.OnExecuteExpressionForAllFrames(l_Text_0, l_DebuggerConnectionManager_1:GetConnectionById(l_debuggerStateToken_1.debuggerConnectionId), l_debuggerStateToken_1, l_CurrentStepStateBundle_1.threadId);
                        end;
                    end;
                end;
                if v116 then
                    v79.props.Analytics:report(v10.WatchAdded, "WatchWindow");
                end;
            elseif l_expressionColumn_0 == "" then
                v109.Text = "";
                return ;
            else
                if l_expressionColumn_0 ~= l_Text_0 then
                    v79.props.OnRemoveExpression(l_expressionColumn_0);
                end;
                return ;
            end;
        end;
    end;
    v79.onMenuActionSelected = function(v119)
        local l_Id_0 = v119.Id;
        local l_Data_0 = v119.Data;
        local l_props_1 = v79.props;
        if l_Id_0 == v39.WatchActionIds.DeleteWatch then
            if l_Data_0.item.expressionColumn ~= "" then
                l_props_1.OnRemoveExpression(l_Data_0.item.expressionColumn);
                return ;
            end;
        elseif l_Id_0 == v39.WatchActionIds.DeleteAllWatches then
            l_props_1.OnClearAllExpressions();
        end;
    end;
    v79.onRightClick = function(v123)
        if v79.props.SelectedTab == v20.Watches then
            local l_props_2 = v79.props;
            l_showContextMenu_0(l_props_2.Plugin:get(), v41.getWatchActions(l_props_2.Localization, v123, v79.onMenuActionSelected), v39.WatchActionsOrder);
        end;
    end;
    v79.OnDoubleClick = function(v125)
        if v79.props.SelectedTab == v20.Watches then
            game:GetService("DebuggerUIService"):EditWatch(v125.item.expressionColumn);
        end;
    end;
    v79.OnSortChange = function(v126, v127)
        local l_props_3 = v79.props;
        l_props_3.OnSetWatchSortState(l_props_3.SortIndex == v126 and v127 or (l_props_3.SortOrder or v127), v126);
    end;
    v79.childSort = function(v129, v130)
        local v131 = {
            v129,
            v130
        };
        local l_props_4 = v79.props;
        local v133 = l_props_4.SelectedTab == v20.Variables;
        if v129 == v130 then
            return false;
        else
            v23.sortTableByColumnAndOrder(v131, l_props_4.SortIndex, l_props_4.SortOrder, not not v133 and v47 or v48, false);
            return v131[1] == v129;
        end;
    end;
end;
v42.didMount = function(v134)
    local l_props_5 = v134.props;
    local l_Setting_0 = l_props_5.Plugin:get():GetSetting("watchWindowConfigs");
    if not ((((((not l_Setting_0 or not l_Setting_0[v39.ColumnSizeVariables]) or not l_Setting_0[v39.ColumnSizeMyWatches]) or not l_Setting_0[v39.Tab]) or not l_Setting_0[v39.ScopeFilter]) or not l_Setting_0[v39.VariablesColumnFilter]) or not l_Setting_0[v39.MyWatchesColumnFilter]) then
        l_props_5.onScopeFilterChange(l_Setting_0[v39.ScopeFilter]);
        l_props_5.onTabSelected(l_Setting_0[v39.Tab]);
        l_props_5.onVariablesFilterChange(l_Setting_0[v39.VariablesColumnFilter]);
        l_props_5.onMyWatchesFilterChange(l_Setting_0[v39.MyWatchesColumnFilter]);
        v134:setState(function(_)
            return {
                VariableColumnSizes = v40.fetchSizesFromColumnScales(l_Setting_0[v39.ColumnSizeVariables]),
                MyWatchColumnSizes = v40.fetchSizesFromColumnScales(l_Setting_0[v39.ColumnSizeMyWatches])
            };
        end);
    end;
end;
v42.willUnmount = function(v138)
    local l_props_6 = v138.props;
    l_props_6.Plugin:get():SetSetting("watchWindowConfigs", {
        [v39.ScopeFilter] = l_props_6.EnabledScopes,
        [v39.Tab] = l_props_6.SelectedTab,
        [v39.ColumnSizeVariables] = v40.fetchScaleFromColumnSizes(v138.state.VariableColumnSizes),
        [v39.ColumnSizeMyWatches] = v40.fetchScaleFromColumnSizes(v138.state.MyWatchColumnSizes),
        [v39.VariablesColumnFilter] = l_props_6.VariablesColumnFilter,
        [v39.MyWatchesColumnFilter] = l_props_6.MyWatchesColumnFilter
    });
end;
v42.didUpdate = function(v140, v141)
    local l_props_7 = v140.props;
    if l_props_7.Expressions ~= v141.Expressions then
        local l_DebuggerUIService_0 = game:GetService("DebuggerUIService");
        if l_DebuggerUIService_0 then
            l_DebuggerUIService_0:SetWatchExpressions(l_props_7.Expressions);
        end;
    end;
    local v144 = l_props_7.SelectedTab == v20.Variables;
    local v145 = if not v144 then v44 else v43;
    local v146 = if not v144 then l_props_7.MyWatchesColumnFilter else l_props_7.VariablesColumnFilter;
    local v147 = if not v144 then v141.MyWatchesColumnFilter else v141.VariablesColumnFilter;
    local v148 = #v146 + #v145;
    local v149 = if not v144 then v140.state.MyWatchColumnSizes else v140.state.VariableColumnSizes;
    if #v146 ~= #v147 and #v149 ~= v148 then
        local v150 = {};
        local v151 = #v147 + #v145;
        local v152 = v4.List.toSet(v146);
        local v153 = v40.fetchOldColumnSizes(v151, v147, v145, v149);
        v150 = if v148 < v151 then v40.updatedSizesAfterRemovingColumns(v148, v40.fetchDeletedColumnsSize(#v145, v151, v147, v153, v152), v153, v145, v146) else v40.updatedSizesAfterAddingColumns(v148, v151, v153, v146, v145);
        do
            local l_v150_0 = v150;
            if not v144 then
                v140:setState(function(_)
                    return {
                        MyWatchColumnSizes = l_v150_0
                    };
                end);
            else
                v140:setState(function(_)
                    return {
                        VariableColumnSizes = l_v150_0
                    };
                end);
            end;
        end;
    end;
end;
v42.render = function(v157)
    local l_props_8 = v157.props;
    local l_Stylizer_1 = l_props_8.Stylizer;
    local v160 = l_props_8.SelectedTab == v20.Variables;
    local _ = nil;
    return v1.createElement(l_TreeTable_0, {
        Scroll = true,
        Size = UDim2.fromScale(1, 1),
        Columns = l_map_0(v157.getTableColumns(if not v160 then v157.props.MyWatchesColumnFilter else v157.props.VariablesColumnFilter, if not v160 then v44 else v43), function(v162, v163)
            if not v160 then
                return l_join_0(v162, {
                    Width = v157.state.MyWatchColumnSizes[v163]
                });
            else
                return l_join_0(v162, {
                    Width = v157.state.VariableColumnSizes[v163]
                });
            end;
        end),
        RootItems = l_props_8.RootItems,
        Stylizer = l_Stylizer_1,
        OnExpansionChange = v157.onExpansionChange,
        GetChildren = v157.getTreeChildren,
        Expansion = l_props_8.ExpansionTable,
        OnFocusLost = v157.OnFocusLost,
        TextInputCols = not v160 and {
            [1] = true
        } or nil,
        RightClick = v157.onRightClick,
        OnDoubleClick = v157.OnDoubleClick,
        DisableTooltip = false,
        SortIndex = l_props_8.SortIndex,
        SortOrder = l_props_8.SortOrder,
        OnSortChange = v157.OnSortChange,
        SortChildren = v157.childSort,
        OnColumnSizesChange = v157.OnColumnSizesChange,
        UseDeficit = false,
        UseScale = true,
        ClampSize = true,
        ColumnHeaderHeight = v39.COLUMN_HEADER_HEIGHT,
        RowHeight = v39.ROW_HEIGHT,
        ExpandOnDoubleClick = true
    });
end;
return (v2.connect(function(v164, _)
    local l_Common_0 = v164.Common;
    local l_Watch_0 = v164.Watch;
    local l_currentTab_0 = l_Watch_0.currentTab;
    local v169 = l_currentTab_0 == v20.Variables;
    local v170 = l_Common_0.debuggerConnectionIdToCurrentThreadId[l_Common_0.currentDebuggerConnectionId];
    local v171 = (not not v170 and l_Common_0.currentFrameMap[l_Common_0.currentDebuggerConnectionId]) and l_Common_0.currentFrameMap[l_Common_0.currentDebuggerConnectionId][v170] or 1;
    local v172 = l_Common_0.debuggerConnectionIdToDST[l_Common_0.currentDebuggerConnectionId];
    local v173 = not not v172 and l_Watch_0.stateTokenToRoots[v172] or nil;
    local v174 = (v173 and v173[v170]) and v173[v170][v171];
    local v175 = not v169 and "Watches" or "Variables";
    local v176 = not not v174 and (v174[v175] and l_deepCopy_0(v174[v175]) or {}) or {};
    local v177 = l_Watch_0.stateTokenToFlattenedTree[v172];
    local v178 = (v177 and v177[v170]) and v177[v170][v171];
    local v179 = not not v178 and (v178[v175] and l_deepCopy_0(v178[v175]) or {}) or {};
    if not v169 then
        v176 = v78(l_Watch_0.listOfExpressions, v176, v179);
    end;
    local v180 = v69(v49(v176, v179), v179, v169);
    local v181 = {};
    v56(v180, v181, not not v169 and l_Watch_0.pathToExpansionState or l_Watch_0.expressionToExpansionState);
    if not v169 then
        table.insert(v180, v21.fromExpression(""));
    end;
    local v182 = not not v169 and v47 or v48;
    local v183 = nil;
    local v184 = nil;
    v183 = if not v169 then l_Watch_0.watchesColumnIndex else l_Watch_0.variablesColumnIndex;
    v184 = if not v169 then l_Watch_0.watchesSortDirection else l_Watch_0.variablesSortDirection;
    v23.sortTableByColumnAndOrder(v180 or {}, v183, v184, v182, not v169);
    return {
        SelectedTab = l_currentTab_0,
        RootItems = v180 or {},
        ExpansionTable = v181,
        CurrentStepStateBundle = v22.ctor(v172, v170, v171),
        SortIndex = v183,
        SortOrder = v184,
        EnabledScopes = l_Watch_0.listOfEnabledScopes,
        Expressions = l_Watch_0.listOfExpressions,
        VariablesColumnFilter = l_Watch_0.listOfVariablesColumns,
        MyWatchesColumnFilter = l_Watch_0.listOfMyWatchesColumns
    };
end, function(v185)
    return {
        OnVariableExpansionDispatch = function(v186, v187)
            return v185(v25(v186, v187));
        end,
        OnExpressionExpansionDispatch = function(v188, v189)
            return v185(v26(v188, v189));
        end,
        OnChangeExpression = function(v190, v191)
            return v185(v27(v190, v191));
        end,
        OnAddExpression = function(v192)
            return v185(v28(v192));
        end,
        OnLazyLoadChildren = function(v193, v194, v195, v196, v197)
            local l_v197_VariableById_0 = v197:GetVariableById(v194);
            if l_v197_VariableById_0 then
                return v185(v35(v193:sub(1, -1 * (string.len(l_v197_VariableById_0.Name) + 2)), {
                    l_v197_VariableById_0
                }, v195, v196, v197));
            else
                return ;
            end;
        end,
        OnExecuteExpressionForAllFrames = function(v199, v200, v201, v202)
            return v185(v36(v199, v200, v201, v202));
        end,
        OnRemoveExpression = function(v203)
            return v185(v29(v203));
        end,
        OnClearAllExpressions = function()
            return v185(v30());
        end,
        OnSetWatchSortState = function(v204, v205)
            return v185(v31(v204, v205));
        end,
        onScopeFilterChange = function(v206)
            return v185(v37(v206));
        end,
        onTabSelected = function(v207)
            return v185(v32(v207));
        end,
        onVariablesFilterChange = function(v208)
            return v185(v34(v208));
        end,
        onMyWatchesFilterChange = function(v209)
            return v185(v33(v209));
        end
    };
end)((l_withContext_0({
    Analytics = l_Analytics_0,
    Localization = l_Localization_0,
    Stylizer = l_Stylizer_0,
    Plugin = l_Plugin_0
})(v42))));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_Analytics_0 = l_ContextServices_0.Analytics;
local v8 = require(l_Parent_0.Src.Resources.AnalyticsEventNames);
local l_Stylizer_0 = v3.Style.Stylizer;
local v10 = require(l_Parent_0.Src.Components.Common.DropdownField);
local v11 = require(l_Parent_0.Src.Actions.Watch.MyWatchesFilterChange);
local v12 = require(l_Parent_0.Src.Models.Watch.MyWatchesColumnEnum);
local v13 = require(l_Parent_0.Src.Util.flatListToString);
local v14 = v1.PureComponent:extend("MyWatchesDropdownField");
local _ = function(v15, v16)
    for _, v18 in pairs(v15) do
        if v18 == v16 then
            return true;
        end;
    end;
    return false;
end;
v14.init = function(v20)
    v20.keyColumns = {
        [1] = "AllColumns",
        [2] = v12.Value,
        [3] = v12.DataType
    };
    v20.clickCallback = function(v21)
        v20.props.onMyWatchesFilterChange(v21);
        v20.props.Analytics:report(v8.MyWatchesColumnsEdited, v13(v21));
    end;
end;
v14.render = function(v22)
    local l_props_0 = v22.props;
    return v1.createElement(v10, {
        KeyTexts = v22.keyColumns,
        ClickCallback = v22.clickCallback,
        KeyStates = l_props_0.ColumnStates,
        Localization = l_props_0.Localization,
        Style = l_props_0.Stylizer,
        Widget = "Watch",
        DropdownWidth = 200,
        HamburgerMenu = true,
        ShouldShowDropdownIcon = false,
        LayoutOrder = l_props_0.LayoutOrder
    });
end;
return (v2.connect(function(v24, _)
    local l_listOfMyWatchesColumns_0 = v24.Watch.listOfMyWatchesColumns;
    local v27 = {};
    local l_Value_0 = v12.Value;
    local v29;
    for _, v31 in pairs(l_listOfMyWatchesColumns_0) do
        if v31 == l_Value_0 then
            v29 = true;
            goto label0 --[[  true, false  ]];
        end;
    end;
    v29 = false;
    ::label0::;
    v27[2] = v29;
    l_Value_0 = v12.DataType;
    for _, v33 in pairs(l_listOfMyWatchesColumns_0) do
        if v33 == l_Value_0 then
            v29 = true;
            goto label1 --[[  true, false  ]];
        end;
    end;
    v29 = false;
    ::label1::;
    v27[3] = v29;
    return {
        ColumnStates = v27
    };
end, function(v34)
    return {
        onMyWatchesFilterChange = function(v35)
            return v34(v11(v35));
        end
    };
end)((l_withContext_0({
    Analytics = l_Analytics_0,
    Localization = l_Localization_0,
    Stylizer = l_Stylizer_0
})(v14))));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_Analytics_0 = l_ContextServices_0.Analytics;
local v8 = require(l_Parent_0.Src.Resources.AnalyticsEventNames);
local l_Stylizer_0 = v3.Style.Stylizer;
local v10 = require(l_Parent_0.Src.Components.Common.DropdownField);
local v11 = require(l_Parent_0.Src.Thunks.Watch.FilterScopeWatchThunk);
local v12 = require(l_Parent_0.Src.Util.flatListToString);
local v13 = v1.PureComponent:extend("ScopeDropdownField");
local v14 = {
    LocalScope = "Local",
    UpvalueScope = "Upvalue",
    GlobalScope = "Global"
};
local _ = function(v15, v16)
    for _, v18 in pairs(v15) do
        if v18 == v16 then
            return true;
        end;
    end;
    return false;
end;
v13.init = function(v20)
    v20.keyColumns = {
        [1] = "AllScopes",
        [2] = v14.LocalScope,
        [3] = v14.UpvalueScope,
        [4] = v14.GlobalScope
    };
    v20.clickCallback = function(v21)
        v20.props.onScopeFilterChange(v21);
        v20.props.Analytics:report(v8.WatchScopeEdited, v12(v21));
    end;
end;
v13.render = function(v22)
    local l_props_0 = v22.props;
    local l_Stylizer_1 = l_props_0.Stylizer;
    local l_Localization_1 = l_props_0.Localization;
    return v1.createElement(v10, {
        KeyTexts = v22.keyColumns,
        Tooltips = {
            [1] = nil,
            [2] = l_Localization_1:getText("Watch", "LocalTooltip"),
            [3] = l_Localization_1:getText("Watch", "UpvalueTooltip"),
            [4] = l_Localization_1:getText("Watch", "GlobalTooltip")
        },
        NumDisplay = l_props_0.NumEnabledChoices,
        MaxDisplay = 3,
        ClickCallback = v22.clickCallback,
        KeyStates = l_props_0.KeyStates,
        Localization = l_Localization_1,
        Style = l_Stylizer_1,
        Widget = "Watch",
        DropdownWidth = 100,
        ShouldShowDropdownIcon = l_props_0.ShouldShowDropdownIcon,
        Tooltip = l_Localization_1:getText("Watch", "FilterScopes"),
        LayoutOrder = l_props_0.LayoutOrder
    });
end;
return (v2.connect(function(v26, _)
    local l_listOfEnabledScopes_0 = v26.Watch.listOfEnabledScopes;
    local v29 = {};
    local l_LocalScope_0 = v14.LocalScope;
    local v31;
    for _, v33 in pairs(l_listOfEnabledScopes_0) do
        if v33 == l_LocalScope_0 then
            v31 = true;
            goto label0 --[[  true, false  ]];
        end;
    end;
    v31 = false;
    ::label0::;
    v29[2] = v31;
    l_LocalScope_0 = v14.UpvalueScope;
    for _, v35 in pairs(l_listOfEnabledScopes_0) do
        if v35 == l_LocalScope_0 then
            v31 = true;
            goto label1 --[[  true, false  ]];
        end;
    end;
    v31 = false;
    ::label1::;
    v29[3] = v31;
    l_LocalScope_0 = v14.GlobalScope;
    for _, v37 in pairs(l_listOfEnabledScopes_0) do
        if v37 == l_LocalScope_0 then
            v31 = true;
            goto label2 --[[  true, false  ]];
        end;
    end;
    v31 = false;
    ::label2::;
    v29[4] = v31;
    return {
        NumEnabledChoices = #l_listOfEnabledScopes_0,
        KeyStates = v29
    };
end, function(v38)
    return {
        onScopeFilterChange = function(v39)
            return v38(v11(v39));
        end
    };
end)((l_withContext_0({
    Analytics = l_Analytics_0,
    Localization = l_Localization_0,
    Stylizer = l_Stylizer_0
})(v13))));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local l_SearchBar_0 = require(l_Parent_0.Packages.Framework).UI.SearchBar;
local v4 = require(l_Parent_0.Src.Thunks.Watch.FilterWatchDataThunk);
local v5 = v1.PureComponent:extend("SearchBarField");
v5.render = function(v6)
    local l_props_0 = v6.props;
    return v1.createElement(l_SearchBar_0, {
        ShowSearchIcon = true,
        ShowSearchButton = false,
        OnTextChanged = l_props_0.onFilterTextChanged,
        OnSearchRequested = l_props_0.onSearchRequested,
        LayoutOrder = l_props_0.LayoutOrder,
        Size = l_props_0.Size,
        SearchTerm = l_props_0.SearchTerm
    });
end;
return (v2.connect(function(v8, _)
    return {
        SearchTerm = v8.Watch.filterText
    };
end, function(v10)
    return {
        onFilterTextChanged = function(v11)
            return v10(v4(v11));
        end,
        onSearchRequested = function(v12)
            return v10(v4(v12));
        end
    };
end)(v5));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_Analytics_0 = l_ContextServices_0.Analytics;
local v8 = require(l_Parent_0.Src.Resources.AnalyticsEventNames);
local l_Stylizer_0 = v3.Style.Stylizer;
local v10 = require(l_Parent_0.Src.Components.Common.DropdownField);
local v11 = require(l_Parent_0.Src.Actions.Watch.VariablesFilterChange);
local v12 = require(l_Parent_0.Src.Models.Watch.VariablesColumnEnum);
local v13 = require(l_Parent_0.Src.Util.flatListToString);
local v14 = v1.PureComponent:extend("VariablesDropdownField");
local _ = function(v15, v16)
    for _, v18 in pairs(v15) do
        if v18 == v16 then
            return true;
        end;
    end;
    return false;
end;
v14.init = function(v20)
    v20.keyColumns = {
        [1] = "AllColumns",
        [2] = v12.Scope,
        [3] = v12.Value,
        [4] = v12.DataType
    };
    v20.clickCallback = function(v21)
        v20.props.onVariablesFilterChange(v21);
        v20.props.Analytics:report(v8.VariablesColumnsEdited, v13(v21));
    end;
end;
v14.render = function(v22)
    local l_props_0 = v22.props;
    return v1.createElement(v10, {
        KeyTexts = v22.keyColumns,
        ClickCallback = v22.clickCallback,
        KeyStates = l_props_0.ColumnStates,
        Localization = l_props_0.Localization,
        Style = l_props_0.Stylizer,
        Widget = "Watch",
        DropdownWidth = 200,
        HamburgerMenu = true,
        ShouldShowDropdownIcon = false,
        LayoutOrder = l_props_0.LayoutOrder
    });
end;
return (v2.connect(function(v24, _)
    local l_listOfVariablesColumns_0 = v24.Watch.listOfVariablesColumns;
    local v27 = {};
    local l_Scope_0 = v12.Scope;
    local v29;
    for _, v31 in pairs(l_listOfVariablesColumns_0) do
        if v31 == l_Scope_0 then
            v29 = true;
            goto label0 --[[  true, false  ]];
        end;
    end;
    v29 = false;
    ::label0::;
    v27[2] = v29;
    l_Scope_0 = v12.Value;
    for _, v33 in pairs(l_listOfVariablesColumns_0) do
        if v33 == l_Scope_0 then
            v29 = true;
            goto label1 --[[  true, false  ]];
        end;
    end;
    v29 = false;
    ::label1::;
    v27[3] = v29;
    l_Scope_0 = v12.DataType;
    for _, v35 in pairs(l_listOfVariablesColumns_0) do
        if v35 == l_Scope_0 then
            v29 = true;
            goto label2 --[[  true, false  ]];
        end;
    end;
    v29 = false;
    ::label2::;
    v27[4] = v29;
    return {
        ColumnStates = v27
    };
end, function(v36)
    return {
        onVariablesFilterChange = function(v37)
            return v36(v11(v37));
        end
    };
end)((l_withContext_0({
    Analytics = l_Analytics_0,
    Localization = l_Localization_0,
    Stylizer = l_Stylizer_0
})(v14))));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Analytics_0 = l_ContextServices_0.Analytics;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_Stylizer_0 = v3.Style.Stylizer;
local l_Pane_0 = v3.UI.Pane;
local v10 = require(script.Parent.DisplayTable);
local v11 = require(script.Parent.ControlledTabs);
local v12 = require(script.Parent.ScopeDropdownField);
local v13 = require(script.Parent.VariablesDropdownField);
local v14 = require(script.Parent.MyWatchesDropdownField);
local v15 = require(script.Parent.SearchBarField);
local l_Src_0 = l_Parent_0.Src;
local l_Models_0 = l_Src_0.Models;
local v18 = require(l_Models_0.Watch.TableTab);
local v19 = require(l_Models_0.StepStateBundle);
local v20 = require(l_Src_0.Util.Constants);
local v21 = require(l_Src_0.Actions.Watch.AddExpression);
local v22 = require(l_Src_0.Actions.Watch.SetTab);
local v23 = require(l_Src_0.Thunks.Watch.ExecuteExpressionForAllFrames);
local v24 = require(l_Src_0.Resources.AnalyticsEventNames);
local v25 = v1.PureComponent:extend("WatchComponent");
v25.didMount = function(v26)
    v26.calculateVisibleComponents();
end;
v25.didUpdate = function(v27)
    v27.calculateVisibleComponents();
end;
v25.init = function(v28)
    game:GetService("DebuggerUIService").ExpressionAdded:Connect(function(v29)
        v28.props.Analytics:report(v24.WatchAdded, "WatchWindow");
        v28.props.OnAddExpression(v29);
        v28.props.OnSetTab("Watches");
        local l_CurrentStepStateBundle_0 = v28.props.CurrentStepStateBundle;
        if l_CurrentStepStateBundle_0 ~= nil then
            local l_debuggerStateToken_0 = l_CurrentStepStateBundle_0.debuggerStateToken;
            if l_debuggerStateToken_0 ~= nil then
                local l_ConnectionById_0 = game:GetService("DebuggerConnectionManager"):GetConnectionById(l_debuggerStateToken_0.debuggerConnectionId);
                if l_ConnectionById_0 ~= nil then
                    v28.props.OnExecuteExpressionForAllFrames(v29, l_ConnectionById_0, l_debuggerStateToken_0, l_CurrentStepStateBundle_0.threadId);
                end;
            end;
        end;
    end);
    v28.componentRef = v1.createRef();
    v28.state = {
        shouldShowDropdown = true,
        shouldShowDropdownIcon = false,
        shouldShowSearchBar = true
    };
    v28.calculateVisibleComponents = function()
        local l_current_0 = v28.componentRef.current;
        local l_x_0 = l_current_0.AbsoluteSize.x;
        if l_current_0 == nil then
            return ;
        else
            local l_shouldShowDropdown_0 = v28.state.shouldShowDropdown;
            local l_shouldShowDropdownIcon_0 = v28.state.shouldShowDropdownIcon;
            local l_shouldShowSearchBar_0 = v28.state.shouldShowSearchBar;
            if l_x_0 < 420 then
                if not (not (not l_shouldShowDropdownIcon_0 or l_shouldShowDropdown_0) and not l_shouldShowSearchBar_0) then
                    v28:setState(function(_)
                        return {
                            shouldShowDropdown = false,
                            shouldShowDropdownIcon = true,
                            shouldShowSearchBar = false
                        };
                    end);
                    return ;
                end;
            elseif l_x_0 < 527 then
                if not (not (l_shouldShowDropdown_0 or not l_shouldShowDropdownIcon_0) and l_shouldShowSearchBar_0) then
                    v28:setState(function(_)
                        return {
                            shouldShowDropdown = false,
                            shouldShowDropdownIcon = true,
                            shouldShowSearchBar = true
                        };
                    end);
                    return ;
                end;
            elseif not (not (not l_shouldShowDropdown_0 or l_shouldShowDropdownIcon_0) and l_shouldShowSearchBar_0) then
                v28:setState(function(_)
                    return {
                        shouldShowDropdown = true,
                        shouldShowDropdownIcon = false,
                        shouldShowSearchBar = true
                    };
                end);
            end;
            return ;
        end;
    end;
    v28.getTreeChildren = function(v41)
        return v41.children or {};
    end;
end;
v25.render = function(v42)
    local l_props_0 = v42.props;
    local l_Localization_1 = l_props_0.Localization;
    local l_Stylizer_1 = l_props_0.Stylizer;
    local v46 = {
        Variables = l_Localization_1:getText("Watch", "VariablesTab"),
        Watches = l_Localization_1:getText("Watch", "WatchesTab")
    };
    local v47 = {
        {
            Label = v46.Variables,
            Key = "Variables"
        },
        {
            Label = v46.Watches,
            Key = "Watches"
        }
    };
    local v48 = v20.HEADER_HEIGHT + v20.BUTTON_PADDING * 2;
    return v1.createElement(l_Pane_0, {
        Size = UDim2.fromScale(1, 1),
        Style = "Box",
        Layout = Enum.FillDirection.Vertical,
        [v1.Ref] = v42.componentRef,
        [v1.Change.AbsoluteSize] = v42.calculateVisibleComponents
    }, {
        HeaderView = v1.createElement(l_Pane_0, {
            LayoutOrder = 1,
            Size = UDim2.new(1, 0, 0, v48),
            Style = "Box",
            Spacing = v20.BUTTON_PADDING,
            Padding = v20.BUTTON_PADDING
        }, {
            TabView = v1.createElement(v11, {
                LayoutOrder = 1,
                Tabs = v47,
                Size = UDim2.new(0.4, 0, 1, 0)
            }),
            RightView = v1.createElement(l_Pane_0, {
                AnchorPoint = Vector2.new(1, 0),
                Position = UDim2.new(1, 0, 0, 0),
                Size = UDim2.new(0.6, 0, 1, 0),
                LayoutOrder = 2,
                HorizontalAlignment = Enum.HorizontalAlignment.Right,
                Layout = Enum.FillDirection.Horizontal,
                Spacing = 10
            }, {
                ScopeDropdownView = (l_props_0.IsVariablesTab and (v42.state.shouldShowDropdown or v42.state.shouldShowDropdownIcon)) and v1.createElement(v12, {
                    LayoutOrder = 1,
                    Size = UDim2.new(0.4, 0, 1, 0),
                    ShouldShowDropdownIcon = v42.state.shouldShowDropdownIcon
                }),
                SearchBarView = v42.state.shouldShowSearchBar and v1.createElement(v15, {
                    LayoutOrder = 2,
                    Size = UDim2.new(0.6, 0, 1, 0)
                }),
                ColumnsDropdownView = if not l_props_0.IsVariablesTab then v1.createElement(v14, {
                    LayoutOrder = 3,
                    AutomaticSize = Enum.AutomaticSize.X
                }) else v1.createElement(v13, {
                    LayoutOrder = 3,
                    AutomaticSize = Enum.AutomaticSize.X
                })
            })
        }),
        BodyView = v1.createElement(l_Pane_0, {
            LayoutOrder = 2,
            Size = UDim2.new(1, 0, 1, -v48),
            Style = "Box"
        }, {
            DisplayTableView = v1.createElement(v10, {
                Stylizer = l_Stylizer_1
            })
        })
    });
end;
return (v2.connect(function(v49, _)
    local l_Common_0 = v49.Common;
    local v52 = l_Common_0.debuggerConnectionIdToDST[l_Common_0.currentDebuggerConnectionId];
    local v53 = not not l_Common_0.debuggerConnectionIdToCurrentThreadId and l_Common_0.debuggerConnectionIdToCurrentThreadId[l_Common_0.currentDebuggerConnectionId] or nil;
    local v54 = (((not not v53 and l_Common_0.currentFrameMap) and l_Common_0.currentDebuggerConnectionId) and l_Common_0.currentFrameMap[l_Common_0.currentDebuggerConnectionId]) and l_Common_0.currentFrameMap[l_Common_0.currentDebuggerConnectionId][v53] or nil;
    local v55 = nil;
    if (v52 ~= nil and v53 ~= nil) and v54 ~= nil then
        v55 = v19.ctor(v52, v53, v54);
    end;
    return {
        IsVariablesTab = v49.Watch.currentTab == v18.Variables,
        CurrentStepStateBundle = v55
    };
end, function(v56)
    return {
        OnAddExpression = function(v57)
            return v56(v21(v57));
        end,
        OnSetTab = function(v58)
            return v56(v22(v58));
        end,
        OnExecuteExpressionForAllFrames = function(v59, v60, v61, v62)
            return v56(v23(v59, v60, v61, v62));
        end
    };
end)((l_withContext_0({
    Analytics = l_Analytics_0,
    Localization = l_Localization_0,
    Stylizer = l_Stylizer_0
})(v25))));


local l_StudioFixPluginWidgetLocalizedIds_0 = game:GetFastFlag("StudioFixPluginWidgetLocalizedIds");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Packages.Framework);
local l_DockWidget_0 = v3.UI.DockWidget;
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local v8 = require(l_Parent_0.Src.Components.Watch.WatchComponent);
local v9 = v2.PureComponent:extend("WatchWindow");
v9.render = function(v10)
    local l_props_0 = v10.props;
    return v2.createElement(l_DockWidget_0, {
        Id = if not l_StudioFixPluginWidgetLocalizedIds_0 then nil else "Watch",
        Title = l_props_0.Localization:getText("Watch", "WindowName"),
        ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
        InitialDockState = Enum.InitialDockState.Bottom,
        Size = Vector2.new(640, 480),
        MinSize = Vector2.new(250, 200),
        Enabled = l_props_0.Enabled,
        OnClose = l_props_0.OnClose,
        ShouldRestore = true,
        OnWidgetRestored = l_props_0.OnRestore,
        [v2.Change.Enabled] = l_props_0.OnWidgetEnabledChanged
    }, {
        Watch = v2.createElement(v8)
    });
end;
return (l_withContext_0({
    Localization = l_Localization_0
})(v9));


local l_Parent_0 = script.Parent.Parent;
local l_Src_0 = l_Parent_0.Src;
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Packages.Rodux);
local v4 = require(l_Parent_0.Packages.Framework);
local l_UI_0 = v4.UI;
local l_PluginButton_0 = l_UI_0.PluginButton;
local l_PluginToolbar_0 = l_UI_0.PluginToolbar;
local l_ContextServices_0 = v4.ContextServices;
local l_Plugin_0 = l_ContextServices_0.Plugin;
local l_Mouse_0 = l_ContextServices_0.Mouse;
local l_Store_0 = l_ContextServices_0.Store;
local v12 = require(l_Src_0.Reducers.MainReducer);
local v13 = require(l_Src_0.Resources.MakeTheme);
local v14 = require(l_Src_0.Resources.AnalyticsHolder);
local l_SourceStrings_0 = l_Src_0.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_Src_0.Resources.Localization.LocalizedStrings;
local l_Components_0 = l_Src_0.Components;
local v18 = require(l_Components_0.Callstack.CallstackWindow);
local v19 = require(l_Components_0.Watch.WatchWindow);
local v20 = require(l_Components_0.Breakpoints.BreakpointsWindow);
local v21 = require(l_Components_0.Watch.WatchComponent);
local v22 = require(l_Components_0.Common.DebuggerToolbarButtons);
local v23 = require(l_Src_0.Middleware.MainMiddleware);
local v24 = require(l_Src_0.Util.DebugConnectionListener.DebugConnectionListener);
local v25 = require(l_Src_0.Util.MetaBreakpointManagerListener.MetaBreakpointManagerListener);
local v26 = require(l_Src_0.Util.CrossDMScriptChangeListener.CrossDMScriptChangeListener);
local v27 = require(l_Src_0.Util.DebuggerUIServiceListener.DebuggerUIServiceListener);
local v28 = require(l_Src_0.Util.MakePluginActions);
local v29 = v2.PureComponent:extend("MainPlugin");
v29.init = function(v30, v31)
    local l_Plugin_1 = v31.Plugin;
    v30.state = {
        callstackWindow = {
            Enabled = false
        },
        breakpointsWindow = {
            Enabled = false
        },
        watchWindow = {
            Enabled = false
        },
        uiDmLoaded = false
    };
    local l_MultipleDocumentInterfaceInstance_0 = l_Plugin_1.MultipleDocumentInterfaceInstance;
    l_MultipleDocumentInterfaceInstance_0.DataModelSessionStarted:Connect(function(_)
        v30:setState(function()
            return {
                uiDmLoaded = true
            };
        end);
    end);
    l_MultipleDocumentInterfaceInstance_0.DataModelSessionEnded:Connect(function(_)
        v30:setState(function()
            return {
                uiDmLoaded = false
            };
        end);
    end);
    if l_MultipleDocumentInterfaceInstance_0.FocusedDataModelSession then
        v30:setState(function()
            return {
                uiDmLoaded = true
            };
        end);
    end;
    v30.toggleWidgetEnabled = function(v36)
        local v37 = not v30.state[v36].Enabled;
        v30:setState(function(_)
            return {
                [v36] = {
                    Enabled = v37
                }
            };
        end);
    end;
    v30.onWidgetClose = function(v39)
        v30:setState(function(_)
            return {
                [v39] = {
                    Enabled = false
                }
            };
        end);
    end;
    v30.setWidgetEnabledState = function(v41, v42)
        v30:setState(function(_)
            return {
                [v41] = {
                    Enabled = v42
                }
            };
        end);
    end;
    v30.store = v3.Store.new(v12, nil, v23);
    v30.debugConnectionListener = v24.new(v30.store);
    v30.metaBreakpointManagerListener = v25.new(v30.store);
    v30.scriptChangeServiceListener = v26.new(v30.store);
    v30.debuggerUIServiceListener = v27.new(v30.store);
    v30.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = "Debugger"
    });
    v30.analytics = v14;
    v30.pluginActions = l_ContextServices_0.PluginActions.new(v31.Plugin, v28.getActionsWithShortcuts(v30.localization));
end;
v29.renderButtons = function(v44, v45)
    local l_state_0 = v44.state;
    return {
        ToggleCallstack = v2.createElement(l_PluginButton_0, {
            Name = "callStackDockWidgetActionV2",
            Toolbar = v45,
            Active = l_state_0.callstackWindow.Enabled,
            Title = "Callstack",
            Tooltip = "",
            icon = "rbxlocaltheme://CallStack",
            OnClick = function()
                v44.toggleWidgetEnabled("callstackWindow");
            end,
            ClickableWhenViewportHidden = true
        }),
        ToggleBreakpointsWindow = v2.createElement(l_PluginButton_0, {
            Name = "breakpointsDockWidgetActionV2",
            Toolbar = v45,
            Active = l_state_0.breakpointsWindow.Enabled,
            Title = "Breakpoints",
            Tooltip = "",
            icon = "rbxlocaltheme://Breakpoint",
            OnClick = function()
                v44.toggleWidgetEnabled("breakpointsWindow");
            end,
            ClickableWhenViewportHidden = true
        }),
        ToggleWatchWindow = v2.createElement(l_PluginButton_0, {
            Name = "watchDockWidgetActionV2",
            Toolbar = v45,
            Active = l_state_0.watchWindow.Enabled,
            Title = "Watch",
            Tooltip = "",
            icon = "rbxlocaltheme://Watch",
            OnClick = function()
                v44.toggleWidgetEnabled("watchWindow");
            end,
            ClickableWhenViewportHidden = true
        })
    };
end;
v29.render = function(v47)
    local l_props_0 = v47.props;
    local l_state_1 = v47.state;
    local l_Plugin_2 = l_props_0.Plugin;
    return l_ContextServices_0.provide({
        l_Plugin_0.new(l_Plugin_2),
        l_Store_0.new(v47.store),
        l_Mouse_0.new(l_Plugin_2:getMouse()),
        v13(),
        v47.localization,
        v47.analytics,
        v47.pluginActions
    }, {
        Toolbar = v2.createElement(l_PluginToolbar_0, {
            Title = "Debugger",
            RenderButtons = function(v51)
                return v47:renderButtons(v51);
            end
        }),
        ToolbarWithRoduxConnection = v2.createElement(v22),
        CallstackWindow = v2.createElement(v18, {
            Enabled = (l_state_1.uiDmLoaded and l_state_1.callstackWindow) and l_state_1.callstackWindow.Enabled,
            OnClose = function()
                v47.onWidgetClose("callstackWindow");
            end,
            OnRestore = function(v52)
                v47.setWidgetEnabledState("callstackWindow", v52);
            end,
            OnWidgetEnabledChanged = function(v53)
                v47.setWidgetEnabledState("callstackWindow", v53.Enabled);
            end
        }),
        BreakpointsWindow = v2.createElement(v20, {
            Enabled = (l_state_1.uiDmLoaded and l_state_1.breakpointsWindow) and l_state_1.breakpointsWindow.Enabled,
            OnClose = function()
                v47.onWidgetClose("breakpointsWindow");
            end,
            OnRestore = function(v54)
                v47.setWidgetEnabledState("breakpointsWindow", v54);
            end,
            OnWidgetEnabledChanged = function(v55)
                v47.setWidgetEnabledState("breakpointsWindow", v55.Enabled);
            end
        }),
        WatchWindow = v2.createElement(v19, {
            Enabled = (l_state_1.uiDmLoaded and l_state_1.watchWindow) and l_state_1.watchWindow.Enabled,
            OnClose = function()
                v47.onWidgetClose("watchWindow");
            end,
            OnRestore = function(v56)
                v47.setWidgetEnabledState("watchWindow", v56);
            end,
            OnWidgetEnabledChanged = function(v57)
                v47.setWidgetEnabledState("watchWindow", v57.Enabled);
            end
        }, {
            Watch = v2.createElement(v21)
        })
    });
end;
v29.willUnmount = function(v58)
    if v58.debugConnectionListener then
        v58.debugConnectionListener:destroy();
        v58.debugConnectionListener = nil;
    end;
    if v58.metaBreakpointManagerListener then
        v58.metaBreakpointManagerListener:destroy();
        v58.metaBreakpointManagerListener = nil;
    end;
    if v58.scriptChangeServiceListener then
        v58.scriptChangeServiceListener:destroy();
        v58.scriptChangeServiceListener = nil;
    end;
    if v58.debuggerUIServiceListener then
        v58.debuggerUIServiceListener:destroy();
        v58.debuggerUIServiceListener = nil;
    end;
end;
return v29;


local l_Parent_0 = script.Parent.Parent.Parent;
return {
    (require(l_Parent_0.Packages.Framework).Util.ThunkWithArgsMiddleware({
        analytics = require(l_Parent_0.Src.Resources.AnalyticsHolder)
    }))
};


local v0 = {};
v0.__index = v0;
v0.new = function(v1)
    if v1.Enabled == nil then
        v1.Enabled = true;
    end;
    if v1.ContinueExecution == nil then
        v1.ContinueExecution = false;
    end;
    if v1.Verified == nil then
        v1.Verified = true;
    end;
    if v1.Id == nil then
        v1.Id = 1;
    end;
    if v1.RemoveOnHit == nil then
        v1.RemoveOnHit = false;
    end;
    local v2 = {
        Id = v1.Id,
        Enabled = v1.Enabled,
        Line = v1.Line or 1,
        Script = v1.Script or "1234-5678-9ABC",
        Condition = v1.Condition or "varNum" .. tostring(v1.Id) .. " == 0",
        LogMessage = v1.LogMessage or "varNum" .. tostring(v1.Id),
        ContinueExecution = v1.ContinueExecution,
        Verified = v1.Verified,
        MetaBreakpointId = v1.MetaBreakpointId or 6,
        RemoveOnHit = v1.RemoveOnHit
    };
    setmetatable(v2, v0);
    return v2;
end;
return v0;


local v0 = require(script.Parent.Parent.Util.Constants);
local v1 = {};
v1.__index = v1;
v1.new = function(v2, v3, v4, v5)
    local v6 = {
        VariableId = v2,
        Name = v3,
        Value = v4,
        Type = v5,
        Populated = false,
        PopulatableType = "DebuggerVariable"
    };
    setmetatable(v6, v1);
    return v6;
end;
v1.MockSetChildren = function(v7, v8)
    v7.children = v8;
end;
v1.GetChildren = function(v9)
    return not not v9.children and v9.children or {};
end;
v1.GetVariableByIndex = function(_)
    return v1.new(0, "", "", "");
end;
v1.newDummyRow = function()
    return v1.new(0, v0.DummyRowName, "", "");
end;
v1.GetDefaultFrameVariables = function()
    return {
        Locals = v1.new(1, "", "", ""),
        Globals = v1.new(1, "", "", ""),
        Upvalues = v1.new(1, "", "", "")
    };
end;
return v1;


local v0 = {};
v0.__index = v0;
v0.GetFullName = function(v1)
    return v1.FileName;
end;
v0.new = function(v2, v3)
    local v4 = {
        ScriptGuid = v2,
        FileName = v3
    };
    setmetatable(v4, v0);
    return v4;
end;
return v0;


local v0 = {};
v0.__index = v0;
v0.SetEnabled = function(v1, v2)
    v1.Enabled = v2;
    if v1.mockMetaBreakpointManager then
        v1.mockMetaBreakpointManager.MetaBreakpointChanged:Fire(v1);
    end;
end;
v0.SetContinueExecution = function(v3, v4)
    v3.ContinueExecution = v4;
    if v3.mockMetaBreakpointManager then
        v3.mockMetaBreakpointManager.MetaBreakpointChanged:Fire(v3);
    end;
end;
v0.SetRemoveOnHit = function(v5, v6)
    v5.RemoveOnHit = v6;
    if v5.mockMetaBreakpointManager then
        v5.mockMetaBreakpointManager.MetaBreakpointChanged:Fire(v5);
    end;
end;
v0.SetMockMetaBreakpointManager = function(v7, v8)
    v7.mockMetaBreakpointManager = v8;
end;
v0.GetContextBreakpoints = function(_)
    return {};
end;
v0.new = function(v10)
    if v10.Enabled == nil then
        v10.Enabled = true;
    end;
    if v10.ContinueExecution == nil then
        v10.ContinueExecution = false;
    end;
    if v10.IsLogpoint == nil then
        v10.IsLogpoint = false;
    end;
    if v10.RemoveOnHit == nil then
        v10.RemoveOnHit = false;
    end;
    local v11 = {
        Script = v10.Script or "1234-5678-9ABC",
        Line = v10.Line or 1,
        Condition = v10.Condition or "",
        Id = v10.Id or 1,
        LogMessage = v10.LogMessage or "",
        Enabled = v10.Enabled,
        ContinueExecution = v10.ContinueExecution,
        IsLogpoint = v10.IsLogpoint,
        RemoveOnHit = v10.RemoveOnHit
    };
    setmetatable(v11, v0);
    return v11;
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Framework);
local v2 = require(l_Parent_0.Packages.Cryo);
local l_Signal_0 = v1.Util.Signal;
local v4 = {};
v4.__index = v4;
v4.new = function()
    local v5 = {
        GuidNameChanged = l_Signal_0.new(),
        GuidLineContentsChanged = l_Signal_0.new()
    };
    setmetatable(v5, v4);
    v5.watchingScripts = {};
    return v5;
end;
v4.StartWatchingScriptLine = function(v6, v7, _, v9)
    v6.watchingScripts[v7] = v2.Dictionary.join(v6.watchingScripts[v7] or {}, {
        [v9] = true
    });
end;
v4.IsWatchingScriptLine = function(v10, v11, v12)
    return v10.watchingScripts[v11] and v10.watchingScripts[v11][v12];
end;
return v4;


local l_Signal_0 = require(script.Parent.Parent.Parent.Packages.Framework).Util.Signal;
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {
        ConnectionStarted = l_Signal_0.new(),
        ConnectionEnded = l_Signal_0.new(),
        FocusChanged = l_Signal_0.new()
    };
    setmetatable(v2, v1);
    return v2;
end;
return v1;


local v0 = {};
v0.__index = v0;
v0.new = function(v1, v2)
    local v3 = {
        arg = v1,
        Status = v2
    };
    setmetatable(v3, v0);
    return v3;
end;
v0.GetArg = function(v4)
    return v4.arg;
end;
return v0;


local l_Signal_0 = require(script.Parent.Parent.Parent.Packages.Framework).Util.Signal;
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {
        ExpressionsCleared = l_Signal_0.new()
    };
    setmetatable(v2, v1);
    v2.openScripts = {};
    v2.showingArrow = false;
    v2.currentThreadId = -1;
    return v2;
end;
v1.OpenScriptAtLine = function(v3, v4, _, _, _)
    v3.openScripts[v4] = true;
end;
v1.SetScriptLineMarker = function(v8, _, _, _, v12)
    if v12 then
        v8.showingArrow = true;
    end;
end;
v1.RemoveScriptLineMarkers = function(v13, _, v15)
    if v15 then
        v13.showingArrow = false;
    end;
end;
v1.SetCurrentThreadId = function(v16, v17)
    v16.currentThreadId = v17;
end;
return v1;


local l_Signal_0 = require(script.Parent.Parent.Parent.Packages.Framework).Util.Signal;
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {};
    setmetatable(v2, v1);
    v2.MetaBreakpointAdded = l_Signal_0.new();
    v2.MetaBreakpointAdded:Connect(function(v3)
        v2.MockMetaBreakpointsById[v3.Id] = v3;
    end);
    v2.MetaBreakpointChanged = l_Signal_0.new();
    v2.MetaBreakpointSetChanged = l_Signal_0.new();
    v2.MetaBreakpointRemoved = l_Signal_0.new();
    v2.MockMetaBreakpointsById = {};
    v2.MockSetMetaBreakpointById = function(v4, v5)
        v2.MockMetaBreakpointsById[v4] = v5;
    end;
    v2.deletedBreakpoints = {};
    return v2;
end;
v1.RemoveBreakpointById = function(v6, v7)
    v6.deletedBreakpoints[v7] = true;
end;
v1.GetBreakpointById = function(v8, v9)
    return v8.MockMetaBreakpointsById[v9];
end;
return v1;


local _ = require(script.Parent.Breakpoint);
local v1 = {};
v1.__index = v1;
v1.SetBreakpointHit = function(v2, v3)
    v2.Breakpoint = v3;
end;
v1.new = function(v4, v5, v6)
    local v7 = {
        Reason = v4,
        ThreadId = v5,
        AllThreadsPaused = v6
    };
    setmetatable(v7, v1);
    return v7;
end;
return v1;


return {
    new = function()
        return "TestScript" .. math.random();
    end
};


local _ = require(script.Parent.ScriptRef);
local v1 = {};
v1.__index = v1;
v1.new = function(v2, v3, v4, v5)
    local v6 = {
        Line = v2,
        Script = v3,
        FrameName = v4,
        FrameType = v5,
        Populated = false,
        FrameId = 0,
        PopulatableType = "StackFrame"
    };
    setmetatable(v6, v1);
    return v6;
end;
v1.MockSetChildren = function(v7, v8)
    assert(v8);
    v7.Locals = v8.Locals;
    v7.Globals = v8.Globals;
    v7.Upvalues = v8.Upvalues;
    v7.Populated = true;
end;
return v1;


local _ = require(script.Parent.StackFrame);
local v1 = {};
v1.__index = v1;
v1.new = function(v2, v3, v4)
    local v5 = {
        ThreadId = v2,
        ThreadName = v3,
        isValid = v4,
        Populated = false,
        PopulatableType = "ThreadState",
        callstack = {},
        FrameCount = 0
    };
    setmetatable(v5, v1);
    return v5;
end;
v1.GetFrame = function(v6, v7)
    return v6.callstack[v7];
end;
v1.GetChildren = function(v8)
    local v9 = {};
    for v10, v11 in pairs(v8.callstack) do
        v9[v10 + 1] = v11;
    end;
    return v9;
end;
v1.MockSetChildren = function(v12, v13)
    assert(v13);
    assert(v13[0]);
    v12.callstack = v13;
    v12.FrameCount = 0;
    for _ in pairs(v12.callstack) do
        v12.FrameCount = v12.FrameCount + 1;
    end;
    v12.Populated = true;
end;
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.Src.Util.Constants);
local _ = require(l_Parent_0.Src.Models.MetaBreakpoint);
return {
    extractNonChildData = function(v3, v4, v5)
        return {
            id = v3.id,
            isEnabled = v3.isEnabled,
            isValid = v3.isValid,
            lineNumber = v3.lineNumber,
            scriptName = "",
            scriptLine = v3.scriptLine,
            condition = v3.condition,
            logMessage = v3.logMessage,
            continueExecution = v3.continueExecution,
            debugpointType = v3.debugpointType,
            removeOnHit = v3.removeOnHit,
            context = v4,
            scriptGUID = v5
        };
    end
};


return {
    SourceLine = "SourceLineColumn",
    Condition = "ConditionColumn",
    LogMessage = "LogMessageColumn",
    ContinueExecution = "ContinueExecutionColumn",
    RemoveOnHit = "RemoveOnHitColumn"
};


return {
    new = function()
        return {
            frameColumn = "",
            functionColumn = "",
            lineColumn = "",
            sourceColumn = ""
        };
    end,
    fromData = function(v0)
        return {
            frameColumn = v0.frameColumn,
            functionColumn = v0.functionColumn,
            lineColumn = v0.lineColumn,
            sourceColumn = v0.sourceColumn
        };
    end,
    ICON_FRAME_TOP = {
        LeftIcon = {
            Image = "rbxasset://textures/Debugger/debugger_arrow.png",
            Size = UDim2.new(0, 14, 0, 14)
        },
        Value = ""
    },
    ICON_CURRENT_FRAME = {
        LeftIcon = {
            Image = "rbxasset://textures/Debugger/debugger_arrow_curve_left.png",
            Size = UDim2.new(0, 14, 0, 14)
        },
        Value = ""
    }
};


return {
    Frame = "FrameColumn",
    Source = "SourceColumn",
    Function = "FunctionColumn",
    Line = "LineColumn"
};


return {
    fromData = function(v0)
        return {
            debuggerConnectionId = v0.debuggerConnectionId
        };
    end
};


local v0 = require(script.Parent.Parent.Parent.Src.Util.Constants);
return {
    fromMetaBreakpoint = function(v1)
        return {
            id = v1.Id,
            isEnabled = v1.Enabled,
            isValid = v1.Valid,
            lineNumber = v1.Line,
            scriptName = v1.Script,
            scriptLine = "",
            condition = v1.Condition,
            logMessage = v1.LogMessage,
            continueExecution = v1.ContinueExecution,
            debugpointType = not not v1.IsLogpoint and v0.DebugpointType.Logpoint or v0.DebugpointType.Breakpoint,
            removeOnHit = v1.RemoveOnHit,
            contextBreakpoints = v1:GetContextBreakpoints()
        };
    end,
    mockMetaBreakpoint = function(v2, v3)
        if v2.isEnabled == nil then
            v2.isEnabled = math.random() > 0.5;
        end;
        if v2.isValid == nil then
            v2.isValid = true;
        end;
        if v2.continueExecution == nil then
            v2.continueExecution = math.random() > 0.5;
        end;
        if v2.removeOnHit == nil then
            v2.removeOnHit = math.random() > 0.5;
        end;
        return {
            id = v2.id or v3,
            isEnabled = v2.isEnabled,
            isValid = v2.isValid,
            lineNumber = v2.lineNumber or v3,
            scriptName = v2.scriptName or "script" .. tostring(v3),
            scriptLine = v2.scriptLine or "local varNum" .. tostring(v3) .. " = 0",
            condition = v2.condition or "varNum" .. tostring(v3) .. " == 0",
            logMessage = v2.logMessage or "varNum" .. tostring(v3),
            continueExecution = v2.continueExecution,
            debugpointType = (v2.debugpointType or math.fmod(v3, 2) == 0 and v0.DebugpointType.Breakpoint) or v0.DebugpointType.Logpoint,
            contextBreakpoints = v2.contextBreakpoints or {},
            removeOnHit = v2.removeOnHit
        };
    end
};


local _ = require(script.Parent.DebuggerStateToken);
return {
    ctor = function(v1, v2, v3)
        return {
            debuggerStateToken = v1,
            threadId = v2,
            frameNumber = v3
        };
    end
};


return {
    new = function()
        return {
            threadId = -1,
            displayString = ""
        };
    end,
    fromData = function(v0)
        return {
            threadId = v0.threadId or -1,
            displayString = v0.displayString or ""
        };
    end
};


return {
    Local = "Local",
    Upvalue = "Upvalue",
    Global = "Global"
};


local _ = require(script.Parent.WatchWindowTableRow);
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Mocks.DebuggerVariable);
local v3 = require(l_Parent_0.Util.Constants);
local v4 = require(l_Parent_0.Util.WatchHelperFunctions);
local function v6(v5)
    return {
        nameColumn = v5.name,
        pathColumn = v5.path,
        idColumn = v5.id,
        scopeColumn = v5.scope,
        valueColumn = v5.value,
        dataTypeColumn = v5.dataType,
        childPaths = v5.childPaths or {},
        expanded = false,
        textFilteredOut = false,
        scopeFilteredOut = false
    };
end;
local function v13(v7, v8, v9, v10, v11)
    local v12 = {
        nameColumn = v7.Name,
        pathColumn = (not v8 and "" or v8.pathColumn .. v3.SeparationToken) .. v7.Name,
        idColumn = v7.VariableId,
        scopeColumn = not not v8 and v8.scopeColumn or v9,
        valueColumn = v7.Value,
        dataTypeColumn = v7.Type,
        childPaths = {},
        expanded = false,
        textFilteredOut = false,
        scopeFilteredOut = false
    };
    v12.textFilteredOut = not v4.textMatchRow(v10, v12);
    v12.scopeFilteredOut = v4.isScopeFiltered(v11, v12);
    return v12;
end;
return {
    fromData = v6,
    fromInstance = v13,
    dummyRow = function(v14, v15, v16)
        return (v13(v2.newDummyRow(), v14, "", v15, v16));
    end
};


return {
    Scope = "ScopeColumn",
    Value = "ValueColumn",
    DataType = "DataTypeColumn"
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Mocks.DebuggerVariable);
local v2 = require(l_Parent_0.Util.Constants);
local _ = require(script.Parent.WatchWindowTableRow);
local function v5(v4)
    return {
        expressionColumn = v4,
        pathColumn = v4,
        scopeColumn = "",
        valueColumn = "",
        dataTypeColumn = "",
        childPaths = {},
        expanded = false,
        textFilteredOut = false,
        scopeFilteredOut = false
    };
end;
local function v7(v6)
    return {
        expressionColumn = v6.expression,
        pathColumn = v6.path,
        scopeColumn = v6.scope,
        valueColumn = v6.value,
        dataTypeColumn = v6.dataType,
        childPaths = v6.childPaths or {},
        expanded = false,
        textFilteredOut = false,
        scopeFilteredOut = false
    };
end;
local function v10(v8, v9)
    return {
        expressionColumn = v9,
        pathColumn = v9,
        idColumn = v8.VariableId,
        scopeColumn = "",
        valueColumn = v8.Value,
        dataTypeColumn = v8.Type,
        childPaths = {},
        expanded = false,
        textFilteredOut = false,
        scopeFilteredOut = false
    };
end;
local function v13(v11, v12)
    return {
        expressionColumn = v11.Name,
        pathColumn = v12 .. v2.SeparationToken .. v11.Name,
        idColumn = v11.VariableId,
        scopeColumn = "",
        valueColumn = v11.Value,
        dataTypeColumn = v11.Type,
        childPaths = {},
        expanded = false,
        textFilteredOut = false,
        scopeFilteredOut = false
    };
end;
return {
    fromData = v7,
    fromExpression = v5,
    fromInstance = v10,
    fromChildInstance = v13,
    dummyRow = function(v14)
        return (v13(v1.newDummyRow(), v14.pathColumn));
    end
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local l_Actions_0 = l_Parent_0.Src.Actions;
local l_Models_0 = l_Parent_0.Src.Models;
local v5 = require(l_Actions_0.BreakpointsWindow.AddBreakpoint);
local v6 = require(l_Actions_0.BreakpointsWindow.DeleteBreakpoint);
local v7 = require(l_Actions_0.BreakpointsWindow.ModifyBreakpoint);
local v8 = require(l_Actions_0.BreakpointsWindow.SetBreakpointSortState);
local v9 = require(l_Actions_0.BreakpointsWindow.BreakpointColumnFilter);
local _ = require(l_Models_0.MetaBreakpoint);
local l_deepCopy_0 = require(l_Parent_0.Packages.Framework).Util.deepCopy;
return v1.createReducer({
    BreakpointIdsInDebuggerConnection = {},
    MetaBreakpoints = {},
    SortDirection = nil,
    ColumnIndex = nil,
    listOfEnabledColumns = {}
}, {
    [v5.name] = function(v12, v13)
        if not ((not v12.BreakpointIdsInDebuggerConnection or not v12.BreakpointIdsInDebuggerConnection[v13.debuggerConnectionId]) or not v12.BreakpointIdsInDebuggerConnection[v13.debuggerConnectionId][v13.metaBreakpoint.id]) then
            assert(false);
        end;
        return v2.Dictionary.join(v12, {
            BreakpointIdsInDebuggerConnection = v2.Dictionary.join(v12.BreakpointIdsInDebuggerConnection, {
                [v13.debuggerConnectionId] = v2.Dictionary.join(not not v12.BreakpointIdsInDebuggerConnection and v12.BreakpointIdsInDebuggerConnection[v13.debuggerConnectionId] or {}, {
                    [v13.metaBreakpoint.id] = v13.metaBreakpoint.id
                })
            })
        }, {
            MetaBreakpoints = v2.Dictionary.join(v12.MetaBreakpoints, {
                [v13.metaBreakpoint.id] = v13.metaBreakpoint
            })
        });
    end,
    [v7.name] = function(v14, v15)
        assert(v14.BreakpointIdsInDebuggerConnection);
        assert(v14.MetaBreakpoints[v15.metaBreakpoint.id]);
        return v2.Dictionary.join(v14, {
            MetaBreakpoints = v2.Dictionary.join(v14.MetaBreakpoints, {
                [v15.metaBreakpoint.id] = v15.metaBreakpoint
            })
        });
    end,
    [v8.name] = function(v16, v17)
        return v2.Dictionary.join(v16, {
            SortDirection = v17.sortDirection,
            ColumnIndex = v17.columnIndex
        });
    end,
    [v6.name] = function(v18, v19)
        if not (v18.MetaBreakpoints and v18.MetaBreakpoints[v19.metaBreakpointId]) then
            assert(false);
        end;
        local v20 = l_deepCopy_0(v18.MetaBreakpoints);
        v20[v19.metaBreakpointId] = nil;
        local v21 = l_deepCopy_0(v18.BreakpointIdsInDebuggerConnection);
        for _, v23 in pairs(v21) do
            v23[v19.metaBreakpointId] = nil;
        end;
        return v2.Dictionary.join(v18, {
            BreakpointIdsInDebuggerConnection = v21
        }, {
            MetaBreakpoints = v20
        });
    end,
    [v9.name] = function(v24, v25)
        return v2.Dictionary.join(v24, {
            listOfEnabledColumns = v25.listOfEnabledColumns
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local l_Actions_0 = l_Parent_0.Src.Actions;
local l_Models_0 = l_Parent_0.Src.Models;
local v5 = require(l_Actions_0.Callstack.AddCallstack);
local v6 = require(l_Actions_0.Callstack.AddThreadId);
local v7 = require(l_Actions_0.Common.Resumed);
local v8 = require(l_Actions_0.Common.ClearConnectionData);
local v9 = require(l_Actions_0.Common.SimPaused);
local v10 = require(l_Actions_0.Callstack.ColumnFilterChange);
local v11 = require(l_Models_0.ThreadInfo);
local _ = require(l_Models_0.DebuggerStateToken);
local _ = require(l_Models_0.Callstack.CallstackRow);
local v14 = require(l_Models_0.Callstack.ColumnEnum);
return v1.createReducer({
    stateTokenToCallstackVars = {},
    listOfEnabledColumns = {
        v14.Frame,
        v14.Source,
        v14.Function,
        v14.Line
    }
}, {
    [v6.name] = function(v15, v16)
        return v2.Dictionary.join(v15, {
            stateTokenToCallstackVars = v2.Dictionary.join(v15.stateTokenToCallstackVars, {
                [v16.debuggerStateToken] = {
                    threadList = v2.List.join(v15.stateTokenToCallstackVars[v16.debuggerStateToken].threadList, {
                        v11.fromData(v16)
                    }),
                    threadIdToFrameList = v15.stateTokenToCallstackVars[v16.debuggerStateToken].threadIdToFrameList
                }
            })
        });
    end,
    [v5.name] = function(v17, v18)
        if v17.stateTokenToCallstackVars[v18.debuggerStateToken] == nil then
            assert(false);
            return v17;
        else
            return v2.Dictionary.join(v17, {
                stateTokenToCallstackVars = v2.Dictionary.join(v17.stateTokenToCallstackVars, {
                    [v18.debuggerStateToken] = {
                        threadIdToFrameList = v2.Dictionary.join(v17.stateTokenToCallstackVars[v18.debuggerStateToken].threadIdToFrameList, {
                            [v18.threadId] = v18.frameList
                        }),
                        threadList = v17.stateTokenToCallstackVars[v18.debuggerStateToken].threadList
                    }
                })
            });
        end;
    end,
    [v9.name] = function(v19, v20)
        local v21 = true;
        if v19.stateTokenToCallstackVars[v20.debuggerStateToken] ~= nil then
            v21 = v19.stateTokenToCallstackVars[v20.debuggerStateToken].threadIdToFrameList[v20.threadId] == nil;
        end;
        assert(v21);
        return v2.Dictionary.join(v19, {
            stateTokenToCallstackVars = v2.Dictionary.join(v19.stateTokenToCallstackVars, {
                [v20.debuggerStateToken] = {
                    threadList = not not v19.stateTokenToCallstackVars[v20.debuggerStateToken] and v19.stateTokenToCallstackVars[v20.debuggerStateToken].threadList or {},
                    threadIdToFrameList = not not v19.stateTokenToCallstackVars[v20.debuggerStateToken] and v19.stateTokenToCallstackVars[v20.debuggerStateToken].threadIdToFrameList or {}
                }
            })
        });
    end,
    [v7.name] = function(v22, v23)
        local v24 = {};
        for _, v26 in ipairs(v22.stateTokenToCallstackVars[v23.debuggerStateToken].threadList) do
            if v26.threadId ~= v23.threadId then
                table.insert(v24, v26);
            end;
        end;
        assert(v22.stateTokenToCallstackVars[v23.debuggerStateToken] ~= nil);
        local v27 = v2.Dictionary.join(v22.stateTokenToCallstackVars[v23.debuggerStateToken].threadIdToFrameList, {});
        v27[v23.threadId] = nil;
        return v2.Dictionary.join(v22, {
            stateTokenToCallstackVars = v2.Dictionary.join(v22.stateTokenToCallstackVars, {
                [v23.debuggerStateToken] = {
                    threadIdToFrameList = v27,
                    threadList = v24
                }
            })
        });
    end,
    [v8.name] = function(v28, v29)
        return v2.Dictionary.join(v28, {
            stateTokenToCallstackVars = v2.Dictionary.join(v28.stateTokenToCallstackVars, {
                [v29.debuggerStateToken] = v2.None
            })
        });
    end,
    [v10.name] = function(v30, v31)
        return v2.Dictionary.join(v30, {
            listOfEnabledColumns = v31.listOfEnabledColumns
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local v3 = require(l_Parent_0.Src.Util.Constants);
local l_Actions_0 = l_Parent_0.Src.Actions;
local v5 = require(l_Actions_0.Callstack.SetCurrentThread);
local v6 = require(l_Actions_0.Callstack.SetCurrentFrameNumber);
local v7 = require(l_Actions_0.Common.Resumed);
local v8 = require(l_Actions_0.Common.SetPausedState);
local v9 = require(l_Actions_0.Common.SimPaused);
local v10 = require(l_Actions_0.Common.SetCurrentBreakpointId);
local v11 = require(l_Actions_0.Common.ClearConnectionData);
local v12 = require(l_Actions_0.Callstack.AddThreadId);
local v13 = require(l_Actions_0.Common.SetFocusedDebuggerConnection);
local l_deepCopy_0 = require(l_Parent_0.Packages.Framework).Util.deepCopy;
local _ = require(l_Parent_0.Src.Models.DebuggerStateToken);
return v1.createReducer({
    debuggerConnectionIdToDST = {},
    currentDebuggerConnectionId = v3.kInvalidDebuggerConnectionId,
    debuggerConnectionIdToCurrentThreadId = {},
    currentFrameMap = {},
    currentBreakpointId = nil,
    isPaused = false,
    hitException = {},
    pausedDebuggerConnectionIds = {}
}, {
    [v5.name] = function(v16, v17)
        local v18 = l_deepCopy_0(v16.debuggerConnectionIdToCurrentThreadId);
        v18[v16.currentDebuggerConnectionId] = v17.currentThreadId;
        return v2.Dictionary.join(v16, {
            debuggerConnectionIdToCurrentThreadId = v18
        });
    end,
    [v6.name] = function(v19, v20)
        local v21 = l_deepCopy_0(v19.currentFrameMap);
        assert(v21[v19.currentDebuggerConnectionId] ~= nil);
        v21[v19.currentDebuggerConnectionId][v20.threadId] = v20.currentFrame;
        return v2.Dictionary.join(v19, {
            currentFrameMap = v21
        });
    end,
    [v7.name] = function(v22, v23)
        return v2.Dictionary.join(v22, {
            debuggerConnectionIdToDST = v2.Dictionary.join(v22.debuggerConnectionIdToDST, {
                [v23.debuggerStateToken.debuggerConnectionId] = v2.None
            }),
            debuggerConnectionIdToCurrentThreadId = {},
            currentFrameMap = {},
            isPaused = false,
            hitException = {},
            pausedDebuggerConnectionIds = v2.Dictionary.join(v22.pausedDebuggerConnectionIds, {
                [v23.debuggerStateToken.debuggerConnectionId] = v2.None
            })
        });
    end,
    [v11.name] = function(v24, v25)
        local l_debuggerConnectionId_0 = v25.debuggerStateToken.debuggerConnectionId;
        local l_isPaused_0 = v24.isPaused;
        local l_currentDebuggerConnectionId_0 = v24.currentDebuggerConnectionId;
        if l_debuggerConnectionId_0 == v24.currentDebuggerConnectionId then
            l_currentDebuggerConnectionId_0 = v3.kInvalidDebuggerConnectionId;
            l_isPaused_0 = false;
        end;
        local v29 = v2.Dictionary.join(v24.pausedDebuggerConnectionIds, {
            [l_debuggerConnectionId_0] = v2.None
        });
        if next(v29) == nil then
            l_isPaused_0 = false;
        end;
        local v30 = l_deepCopy_0(v24.hitException);
        if v24.currentFrameMap[l_debuggerConnectionId_0] then
            for v31, _ in pairs(v24.currentFrameMap[l_debuggerConnectionId_0]) do
                v30 = v2.Dictionary.join(v30, {
                    [v31] = v2.None
                });
            end;
        end;
        return v2.Dictionary.join(v24, {
            debuggerConnectionIdToDST = v2.Dictionary.join(v24.debuggerConnectionIdToDST, {
                [l_debuggerConnectionId_0] = v2.None
            }),
            currentDebuggerConnectionId = l_currentDebuggerConnectionId_0,
            debuggerConnectionIdToCurrentThreadId = v2.List.removeValue(v24.debuggerConnectionIdToCurrentThreadId, l_debuggerConnectionId_0),
            currentFrameMap = v2.List.removeValue(v24.currentFrameMap, l_debuggerConnectionId_0),
            isPaused = l_isPaused_0,
            hitException = v30,
            pausedDebuggerConnectionIds = v29
        });
    end,
    [v9.name] = function(v33, v34)
        local l_debuggerConnectionId_1 = v34.debuggerStateToken.debuggerConnectionId;
        return v2.Dictionary.join(v33, {
            debuggerConnectionIdToDST = v2.Dictionary.join(v33.debuggerConnectionIdToDST, {
                [v34.debuggerStateToken.debuggerConnectionId] = v34.debuggerStateToken
            }),
            isPaused = true,
            hitException = v2.Dictionary.join(v33.hitException, {
                [v34.threadId] = v34.hitException
            }),
            pausedDebuggerConnectionIds = v2.Dictionary.join(v33.pausedDebuggerConnectionIds, {
                [l_debuggerConnectionId_1] = l_debuggerConnectionId_1
            }),
            debuggerConnectionIdToCurrentThreadId = v2.Dictionary.join(v33.debuggerConnectionIdToCurrentThreadId, {
                [l_debuggerConnectionId_1] = nil
            }),
            currentFrameMap = v2.Dictionary.join(v33.currentFrameMap, {
                [l_debuggerConnectionId_1] = nil
            })
        });
    end,
    [v10.name] = function(v36, v37)
        return v2.Dictionary.join(v36, {
            currentBreakpointId = v37.breakpointId
        });
    end,
    [v8.name] = function(v38, v39)
        if not v39.pause then
            return v2.Dictionary.join(v38, {
                isPaused = v39.pause,
                debuggerConnectionIdToCurrentThreadId = {}
            });
        else
            return v2.Dictionary.join(v38, {
                isPaused = v39.pause
            });
        end;
    end,
    [v12.name] = function(v40, v41)
        local v42 = {
            debuggerConnectionIdToCurrentThreadId = l_deepCopy_0(v40.debuggerConnectionIdToCurrentThreadId)
        };
        if v42.debuggerConnectionIdToCurrentThreadId[v40.currentDebuggerConnectionId] == nil then
            v42.debuggerConnectionIdToCurrentThreadId[v40.currentDebuggerConnectionId] = v41.threadId;
        end;
        v42.currentFrameMap = l_deepCopy_0(v40.currentFrameMap);
        if v42.currentFrameMap[v40.currentDebuggerConnectionId] == nil then
            v42.currentFrameMap[v40.currentDebuggerConnectionId] = {};
        end;
        v42.currentFrameMap[v40.currentDebuggerConnectionId][v41.threadId] = 1;
        return v2.Dictionary.join(v40, v42);
    end,
    [v13.name] = function(v43, v44)
        return v2.Dictionary.join(v43, {
            currentDebuggerConnectionId = v44.debuggerConnectionId
        });
    end
});


return require(script.Parent.Parent.Parent.Packages.Rodux).combineReducers({
    Breakpoint = require(script.Parent.Breakpoint),
    Watch = require(script.Parent.Watch),
    Callstack = require(script.Parent.Callstack),
    Common = require(script.Parent.Common),
    ScriptInfo = require(script.Parent.ScriptInfo)
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local l_Actions_0 = l_Parent_0.Src.Actions;
return v1.createReducer({
    ScriptInfo = {},
    ScriptLineContents = {}
}, {
    [require(l_Actions_0.Common.SetFilenameForGuid).name] = function(v4, v5)
        if v5.fileName == "" and v4.ScriptInfo[v5.scriptRefGuid] ~= nil then
            return v4;
        else
            return v2.Dictionary.join(v4, {
                ScriptInfo = v2.Dictionary.join(v4.ScriptInfo, {
                    [v5.scriptRefGuid] = v5.fileName
                })
            });
        end;
    end,
    [require(l_Actions_0.Common.SetScriptSourceLine).name] = function(v6, v7)
        return v2.Dictionary.join(v6, {
            ScriptLineContents = v2.Dictionary.join(v6.ScriptLineContents, {
                [v7.scriptRefGuid] = v2.Dictionary.join(v6.ScriptLineContents[v7.scriptRefGuid] or {}, {
                    [v7.lineNumber] = v7.source
                })
            })
        });
    end
});