local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_String_0 = v1.String;
local v6 = require(l_Parent_0.RegExp);
local v7 = {};
local v8 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local l_normalizePromiseError_0 = require(l_Parent_0.RobloxShared).normalizePromiseError;
local v12 = nil;
local v13 = nil;
local v14 = nil;
local v15 = v8.bold("\226\151\143 ");
local l_dim_0 = v8.dim;
v7.indentAllLines = function(v17, v18)
    local v19 = string.split(v17, "\n");
    for v20, v21 in v19, nil, nil do
        v19[v20] = (v18 or "") .. v21;
    end;
    return table.concat(v19, "\n");
end;
local function v23(v22)
    return l_String_0.trim(v22 or "");
end;
local function _(v24)
    if not v24:find("%s*at.*%(?:%d*:%d*%)?") and not v24:find("%s*at.*%(?native%)?") then
        return v24;
    else
        return v23(v24);
    end;
end;
local v28 = {
    test = function(_, v27)
        return string.match(v27, "%S") == nil;
    end
};
local function _(v29)
    return v29;
end;
v7.formatExecError = function(v31, v32, v33, v34, v35)
    if not l_Boolean_0.toJSBoolean(v31) or typeof(v31) == "number" then
        v31 = l_Error_0.new(("Expected an Error, but \"%s\" was thrown"):format((tostring(v31))));
        v31.stack = "";
    end;
    local v36 = nil;
    local v37 = nil;
    if (not (typeof(v31) ~= "string") or not l_Boolean_0.toJSBoolean(v31)) or v31 == nil then
        if not l_Boolean_0.toJSBoolean(v31) then
            v31 = "EMPTY ERROR";
        end;
        v36 = "";
        v37 = v31;
    else
        if v31.kind == "ExecutionError" then
            v31 = l_normalizePromiseError_0(v31);
        end;
        v36 = v31.message;
        v37 = if typeof(v31.stack) == "string" then v31.stack else ("thrown: %s"):format(l_format_0(v31, {
            maxDepth = 3
        }));
    end;
    local v38 = v14(not not l_Boolean_0.toJSBoolean(v37) and v37 or "");
    v37 = v38.stack;
    if string.find(v38.message, l_String_0.trim(v36 or ""), 1, true) ~= nil then
        v36 = v38.message;
    end;
    local v39 = string.split(v36, "\n");
    for v40, v41 in v39, nil, nil do
        v39[v40] = "    " .. v41;
    end;
    v36 = table.concat(v39, "\n");
    v37 = (not l_Boolean_0.toJSBoolean(v37) or v33.noStackTrace) and "" or "\n" .. v12(v37, v32, v33, v34);
    if not (typeof(v37) == "string" and (not v28:test(v36) or not v28:test(v37))) then
        v36 = ("thrown: %s"):format((tostring(l_format_0(v31, {
            maxDepth = 3
        }))));
    end;
    local _ = nil;
    return "  " .. v15 .. if not v35 then ("%s\n\n%s"):format("Test suite failed to run", v36) else (" %s"):format(l_String_0.trim(v36)) .. v37 .. "\n";
end;
local function v47(v43, v44)
    local v45 = 0;
    return l_Array_0.filter(v43, function(v46)
        if not v46:find("^%s+at <anonymous>.*$") then
            if not v46:find("^%s+at Promise %(<anonymous>%).*$") and not v46:find("^%s+at new Promise %(<anonymous>%).*$") then
                if not v46:find("^%s+at Generator.next %(<anonymous>%).*$") then
                    if not v46:find("^%s+at next %(native%).*$") then
                        if v46:find("%s*at.*%(?:%d*:%d*%)?") and v46:find("%s*at.*%(?native%)?") then
                            if not v46:find("%s+at(.jasmine%-)") and not v46:find("%s+at(%s+jasmine%.buildExpectationResult)") then
                                v45 = v45 + 1;
                                if v45 == 1 then
                                    return true;
                                elseif not v44.noStackTrace then
                                    return true;
                                else
                                    return false;
                                end;
                            else
                                return false;
                            end;
                        else
                            return true;
                        end;
                    else
                        return false;
                    end;
                else
                    return false;
                end;
            else
                return false;
            end;
        else
            return false;
        end;
    end);
end;
local _ = function(_, _, v50)
    return v50;
end;
v13 = function(v52, v53)
    if v53 == nil then
        v53 = {
            noCodeFrame = false,
            noStackTrace = false
        };
    end;
    return v47(string.split(v52, "\n"), v53);
end;
v7.getStackTraceLines = v13;
v12 = function(v54, v55, v56, v57)
    local v58 = v13(v54, v56);
    local v59 = nil;
    if v57 then
        v59 = "unsupported";
    end;
    return string.format("\n%s", (table.concat(l_Array_0.map(l_Array_0.filter(v58, l_Boolean_0.toJSBoolean), function(v60)
        local v61 = "      ";
        local _ = v55;
        local _ = v59;
        return v61 .. if v60:find("%s*at.*%(?:%d*:%d*%)?") or v60:find("%s*at.*%(?native%)?") then l_String_0.trim(v60 or "") else v60;
    end), "\n")));
end;
v7.formatStackTrace = v12;
v7.formatResultsErrors = function(v64, v65, v66, v67)
    local v71 = l_Array_0.reduce(v64, function(v68, v69)
        l_Array_0.forEach(v69.failureMessages, function(v70)
            table.insert(v68, {
                content = v70,
                result = v69
            });
        end);
        return v68;
    end, {});
    if #v71 <= 0 then
        return nil;
    else
        return l_Array_0.join(l_Array_0.map(v71, function(v72)
            local l_result_0 = v72.result;
            local v74 = v14(v72.content);
            local l_message_0 = v74.message;
            local v76 = if not v66.noStackTrace then l_dim_0(v12(v74.stack, v65, v66, v67)) .. "\n" else "";
            local v77 = string.split(l_message_0, "\n");
            for v78, v79 in v77, nil, nil do
                v77[v78] = "    " .. v79;
            end;
            return v8.bold(v8.red("  " .. v15 .. l_Array_0.join(l_result_0.ancestorTitles, " \226\128\186 ") .. (#l_result_0.ancestorTitles > 0 and " \226\128\186 " or "") .. l_result_0.title)) .. "\n" .. "\n" .. table.concat(v77, "\n") .. "\n" .. v76;
        end), "\n");
    end;
end;
local function v82(v80)
    return l_String_0.trimRight(table.concat(l_Array_0.filter(l_String_0.split(v80, "\n"), function(v81)
        return not v81:find("^Error:?%s*$");
    end), "\n"));
end;
v14 = function(v83)
    if v83 then
        local v84 = v6("^(?:Error: )?([\\s\\S]*?(?=\\n\\s*LoadedCode.*:\\d*)|\\s*.*)([\\s\\S]*)$"):exec(v83);
        if not v84 then
            error("If you hit this error, the regex above is buggy.");
        end;
        return {
            message = v82(v84[2]),
            stack = v82(v84[3])
        };
    else
        return {
            message = "",
            stack = ""
        };
    end;
end;
v7.separateMessageFromStack = v14;
return v7;


local v0 = require(script.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Set_0 = v0.Set;
local l_Symbol_0 = v0.Symbol;
local v4 = {};
local v5 = {};
v5.__index = v5;
v5.new = function()
    local v6 = {
        _mockState = {},
        _mockConfigRegistry = {},
        _invocationCallCounter = 1,
        _spyState = l_Set_0.new()
    };
    setmetatable(v6, v5);
    return v6;
end;
v5._ensureMockConfig = function(v7, v8)
    local v9 = v7._mockConfigRegistry[v8];
    if not v9 then
        v9 = v7:_defaultMockConfig();
        v7._mockConfigRegistry[v8] = v9;
    end;
    return v9;
end;
v5._ensureMockState = function(v10, v11)
    local v12 = v10._mockState[v11];
    if not v12 then
        v12 = v10:_defaultMockState();
        v10._mockState[v11] = v12;
    end;
    return v12;
end;
v5._defaultMockConfig = function(_)
    return {
        mockImpl = nil,
        mockName = "jest.fn()",
        specificMockImpls = {},
        specificReturnValues = {}
    };
end;
v5._defaultMockState = function(_)
    return {
        calls = {},
        instances = {},
        invocationCallOrder = {},
        results = {}
    };
end;
v5._makeComponent = function(v15, v16, v17)
    if v16.type == "function" then
        local v28 = setmetatable({}, {
            __call = function(v18, ...)
                local v19 = {
                    ...
                };
                local v20 = v15:_ensureMockState(v18);
                local v21 = v15:_ensureMockConfig(v18);
                table.insert(v20.instances, v18);
                for v22 = 1, select("#", ...) do
                    if v19[v22] == nil then
                        v19[v22] = l_Symbol_0.for_("$$nil");
                    end;
                end;
                table.insert(v20.calls, v19);
                local v23 = {
                    type = "incomplete",
                    value = nil
                };
                table.insert(v20.results, v23);
                table.insert(v20.invocationCallOrder, v15._invocationCallCounter);
                v15._invocationCallCounter = v15._invocationCallCounter + 1;
                local l_status_0, l_result_0 = pcall(function(v24)
                    local v25 = l_Array_0.shift(v21.specificMockImpls);
                    if v25 == nil then
                        v25 = v21.mockImpl;
                    end;
                    if not v25 then
                        return nil;
                    else
                        return v25(unpack(v24));
                    end;
                end, {
                    ...
                });
                if not l_status_0 then
                    v23.type = "throw";
                    v23.value = l_result_0;
                    error(l_result_0);
                end;
                v23.type = "return";
                v23.value = l_result_0;
                return l_result_0;
            end
        });
        v28._isMockFunction = true;
        v28.getMockImplementation = function()
            return v15:_ensureMockConfig(v28).mockImpl;
        end;
        if typeof(v17) == "function" then
            v15._spyState.add(v17);
        end;
        v15._mockState[v28] = v15._defaultMockState();
        v15._mockConfigRegistry[v28] = v15._defaultMockConfig();
        v28.mock = setmetatable({}, {
            __index = function(_, v30)
                return v15:_ensureMockState(v28)[v30];
            end
        });
        v28.mockClear = function()
            v15._mockState[v28] = nil;
            return v28;
        end;
        v28.mockReset = function()
            v28.mockClear();
            v15._mockConfigRegistry[v28] = nil;
            return v28;
        end;
        v28.mockRestore = function()
            v28.mockReset();
            if not v17 then
                return nil;
            else
                return v17();
            end;
        end;
        v28.mockImplementationOnce = function(v31)
            table.insert(v15:_ensureMockConfig(v28).specificMockImpls, v31);
            return v28;
        end;
        v28.mockImplementation = function(v32)
            v15:_ensureMockConfig(v28).mockImpl = v32;
            return v28;
        end;
        v28.mockReturnValueOnce = function(v33)
            return v28.mockImplementationOnce(function()
                return v33;
            end);
        end;
        v28.mockReturnValue = function(v34)
            return v28.mockImplementation(function()
                return v34;
            end);
        end;
        v28.mockReturnThis = function()
            return v28.mockImplementation(function(_)
                return v28;
            end);
        end;
        v28.mockName = function(v36)
            if v36 then
                v15:_ensureMockConfig(v28).mockName = v36;
            end;
            return v28;
        end;
        v28.getMockName = function()
            return v15:_ensureMockConfig(v28).mockName or "jest.fn()";
        end;
        v28.new = function(...)
            v28(...);
            return v28;
        end;
        if v16.mockImpl then
            v28.mockImplementation(v16.mockImpl);
        end;
        return v28;
    else
        error("Call to _makeComponent with non-function");
        return ;
    end;
end;
v5._createMockFunction = function(_, v38, v39)
    if v38.name then
        return v39;
    else
        return v39;
    end;
end;
v5.isMockFunction = function(_, v41)
    local v42 = false;
    if typeof(v41) == "table" then
        v42 = v41._isMockFunction == true;
    end;
    return v42;
end;
v5.fn = function(v43, v44)
    local v45 = v43:_makeComponent({
        length = 0,
        type = "function"
    });
    if v44 then
        v45.mockImplementation(v44);
    end;
    return v45, function(...)
        return getmetatable(v45).__call(v45, ...);
    end;
end;
v5.clearAllMocks = function(v46)
    v46._mockState = {};
end;
v5.resetAllMocks = function(v47)
    v47._mockConfigRegistry = {};
    v47._mockState = {};
end;
v5.restoreAllMocks = function(v48)
    for v49, _ in ipairs(v48._spyState) do
        v49();
    end;
    v48._spyState = l_Set_0.new();
end;
v5.mocked = function(_, v52, _)
    return v52;
end;
v4.ModuleMocker = v5;
local v54 = v5.new();
v4.fn = v54.fn;
v4.mocked = v54.mocked;
return v4;


local v0 = require(script.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Set_0 = v0.Set;
local l_Symbol_0 = v0.Symbol;
local v4 = {};
local v5 = {};
v5.__index = v5;
v5.new = function()
    local v6 = {
        _mockState = {},
        _mockConfigRegistry = {},
        _invocationCallCounter = 1,
        _spyState = l_Set_0.new()
    };
    setmetatable(v6, v5);
    return v6;
end;
v5._ensureMockConfig = function(v7, v8)
    local v9 = v7._mockConfigRegistry[v8];
    if not v9 then
        v9 = v7:_defaultMockConfig();
        v7._mockConfigRegistry[v8] = v9;
    end;
    return v9;
end;
v5._ensureMockState = function(v10, v11)
    local v12 = v10._mockState[v11];
    if not v12 then
        v12 = v10:_defaultMockState();
        v10._mockState[v11] = v12;
    end;
    if #v12.calls > 0 then
        v12.lastCall = v12.calls[#v12.calls];
    end;
    return v12;
end;
v5._defaultMockConfig = function(_)
    return {
        mockImpl = nil,
        mockName = "jest.fn()",
        specificMockImpls = {},
        specificReturnValues = {}
    };
end;
v5._defaultMockState = function(_)
    return {
        calls = {},
        contexts = {},
        instances = {},
        invocationCallOrder = {},
        results = {}
    };
end;
v5._makeComponent = function(v15, v16, v17)
    if v16.type == "function" then
        local v28 = setmetatable({}, {
            __call = function(v18, ...)
                local v19 = {
                    ...
                };
                local v20 = v15:_ensureMockState(v18);
                local v21 = v15:_ensureMockConfig(v18);
                table.insert(v20.instances, v18);
                table.insert(v20.contexts, v19[1]);
                for v22 = 1, select("#", ...) do
                    if v19[v22] == nil then
                        v19[v22] = l_Symbol_0.for_("$$nil");
                    end;
                end;
                table.insert(v20.calls, v19);
                local v23 = {
                    type = "incomplete",
                    value = nil
                };
                table.insert(v20.results, v23);
                table.insert(v20.invocationCallOrder, v15._invocationCallCounter);
                v15._invocationCallCounter = v15._invocationCallCounter + 1;
                local l_status_0, l_result_0 = pcall(function(v24)
                    local v25 = l_Array_0.shift(v21.specificMockImpls);
                    if v25 == nil then
                        v25 = v21.mockImpl;
                    end;
                    if not v25 then
                        return nil;
                    else
                        return v25(unpack(v24));
                    end;
                end, {
                    ...
                });
                if not l_status_0 then
                    v23.type = "throw";
                    v23.value = l_result_0;
                    error(l_result_0);
                end;
                v23.type = "return";
                v23.value = l_result_0;
                return l_result_0;
            end
        });
        v28._isMockFunction = true;
        v28.getMockImplementation = function()
            return v15:_ensureMockConfig(v28).mockImpl;
        end;
        if typeof(v17) == "function" then
            v15._spyState.add(v17);
        end;
        v15._mockState[v28] = v15._defaultMockState();
        v15._mockConfigRegistry[v28] = v15._defaultMockConfig();
        v28.mock = setmetatable({}, {
            __index = function(_, v30)
                return v15:_ensureMockState(v28)[v30];
            end
        });
        v28.mockClear = function()
            v15._mockState[v28] = nil;
            return v28;
        end;
        v28.mockReset = function()
            v28.mockClear();
            v15._mockConfigRegistry[v28] = nil;
            return v28;
        end;
        v28.mockRestore = function()
            v28.mockReset();
            if not v17 then
                return nil;
            else
                return v17();
            end;
        end;
        v28.mockImplementationOnce = function(v31)
            table.insert(v15:_ensureMockConfig(v28).specificMockImpls, v31);
            return v28;
        end;
        v28.mockImplementation = function(v32)
            v15:_ensureMockConfig(v28).mockImpl = v32;
            return v28;
        end;
        v28.mockReturnValueOnce = function(v33)
            return v28.mockImplementationOnce(function()
                return v33;
            end);
        end;
        v28.mockReturnValue = function(v34)
            return v28.mockImplementation(function()
                return v34;
            end);
        end;
        v28.mockReturnThis = function()
            return v28.mockImplementation(function(_)
                return v28;
            end);
        end;
        v28.mockName = function(v36)
            if v36 then
                v15:_ensureMockConfig(v28).mockName = v36;
            end;
            return v28;
        end;
        v28.getMockName = function()
            return v15:_ensureMockConfig(v28).mockName or "jest.fn()";
        end;
        v28.new = function(...)
            v28(...);
            return v28;
        end;
        if v16.mockImpl then
            v28.mockImplementation(v16.mockImpl);
        end;
        return v28;
    else
        error("Call to _makeComponent with non-function");
        return ;
    end;
end;
v5._createMockFunction = function(_, v38, v39)
    if v38.name then
        return v39;
    else
        return v39;
    end;
end;
v5.isMockFunction = function(_, v41)
    local v42 = false;
    if typeof(v41) == "table" then
        v42 = v41._isMockFunction == true;
    end;
    return v42;
end;
v5.fn = function(v43, v44)
    local v45 = v43:_makeComponent({
        length = 0,
        type = "function"
    });
    if v44 then
        v45.mockImplementation(v44);
    end;
    return v45, function(...)
        return getmetatable(v45).__call(v45, ...);
    end;
end;
v5.clearAllMocks = function(v46)
    v46._mockState = {};
end;
v5.resetAllMocks = function(v47)
    v47._mockConfigRegistry = {};
    v47._mockState = {};
end;
v5.restoreAllMocks = function(v48)
    for v49, _ in ipairs(v48._spyState) do
        v49();
    end;
    v48._spyState = l_Set_0.new();
end;
v5.mocked = function(_, v52, _)
    return v52;
end;
v4.ModuleMocker = v5;
local v54 = v5.new();
v4.fn = function(v55)
    return v54:fn(v55);
end;
v4.mocked = v54.mocked;
return v4;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
local v3 = {};
local _ = require(l_Parent_1.JestTestResult);
local l_remove_0 = require(l_Parent_1.JestUtil).remove;
local _ = require(l_Parent_0.types);
local l_Writeable_0 = require(l_Parent_1.RobloxShared).Writeable;
local v8 = {};
v8.__index = v8;
v8.new = function(v9)
    local v10 = setmetatable({}, v8);
    v10._process = l_Object_0.assign({}, {
        env = {},
        stdout = l_Writeable_0.new(),
        stderr = l_Writeable_0.new()
    }, v9 or {});
    return v10;
end;
v8.log = function(v11, v12)
    v11._process.stderr:write(v12);
end;
v8.onRunStart = function(v13, _, _)
    l_remove_0(v13._process.stderr);
end;
v8.onTestCaseResult = function(_, _, _)
end;
v8.onTestResult = function(_, _, _, _)
end;
v8.onTestStart = function(_, _)
end;
v8.onRunComplete = function(_, _, _)
end;
v8._setError = function(v28, v29)
    v28._error = v29;
end;
v8.getLastError = function(v30)
    return v30._error;
end;
v3.default = v8;
return v3;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_Set_0 = v2.Set;
local l_setTimeout_0 = v2.setTimeout;
local v7 = {};
local v8 = require(l_Parent_1.ChalkLua);
local l_getConsoleOutput_0 = require(l_Parent_1.JestConsole).getConsoleOutput;
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local v12 = require(l_Parent_1.JestUtil);
local l_clearLine_0 = v12.clearLine;
local l_default_0 = require(l_Parent_0.BaseReporter).default;
local l_default_1 = require(l_Parent_0.Status).default;
local l_default_2 = require(l_Parent_0.getResultHeader).default;
local l_default_3 = require(l_Parent_0.getSnapshotStatus).default;
local _ = require(l_Parent_0.types);
local l_Writeable_0 = require(l_Parent_1.RobloxShared).Writeable;
local v20 = v8.bold("\226\151\143 ");
local v21 = setmetatable({}, {
    __index = l_default_0
});
v21.__index = v21;
v21.filename = "DefaultReporter";
v21.new = function(v22, v23)
    local v24 = setmetatable(l_default_0.new(v23), v21);
    v24._isInteractive = v12.isInteractive;
    if v23 ~= nil and v23.env.IS_INTERACTIVE ~= nil then
        v24._isInteractive = v23.env.IS_INTERACTIVE;
    end;
    local _ = function()
        local v25 = l_Writeable_0.new();
        return function(_, v27)
            v25:write(v27);
        end;
    end;
    local v29;
    if not v23 or not v23.stdout then
        local v30 = l_Writeable_0.new();
        local l_v30_0 = v30 --[[ copy: 5 -> 7 ]];
        v29 = function(_, v33)
            l_v30_0:write(v33);
        end;
    else
        v29 = v23.stdout.write;
    end;
    local v34;
    if not v23 or not v23.stderr then
        local v35 = l_Writeable_0.new();
        v34 = function(_, v37)
            v35:write(v37);
        end;
    else
        v34 = v23.stderr.write;
    end;
    v24._globalConfig = v22;
    v24._clear = "";
    v24._out = function(_, v39)
        v29(v24._process.stdout, v39);
    end;
    v24._err = function(_, v41)
        v34(v24._process.stderr, v41);
    end;
    v24._status = l_default_1.new();
    v24._bufferedOutput = l_Set_0.new();
    v24:__wrapStdio(v24._process.stdout);
    v24:__wrapStdio(v24._process.stderr);
    v24._status:onChange(function()
        v24:__clearStatus();
        v24:__printStatus();
    end);
    return v24;
end;
v21.__wrapStdio = function(v42, v43)
    local l_write_0 = v43.write;
    local v45 = {};
    local v46 = nil;
    local function v47()
        local v48 = l_Array_0.join(v45, "");
        v45 = {};
        v42:__clearStatus();
        if l_Boolean_0.toJSBoolean(v48) then
            l_write_0(v43, v48);
        end;
        v42:__printStatus();
        v42._bufferedOutput:delete(v47);
    end;
    v42._bufferedOutput:add(v47);
    local function v49()
        if v43 == v42._process.stderr then
            v47();
            return ;
        else
            if not l_Boolean_0.toJSBoolean(v46) then
                v46 = l_setTimeout_0(function()
                    v47();
                    v46 = nil;
                end, 100);
            end;
            return ;
        end;
    end;
    v43.write = function(_, v51)
        table.insert(v45, v51);
        v49();
        return true;
    end;
end;
v21.forceFlushBufferedOutput = function(v52)
    l_Set_0.forEach(v52._bufferedOutput, function(v53)
        v53();
    end);
end;
v21.__clearStatus = function(v54)
    if v54._isInteractive then
        if not v54._globalConfig.useStderr then
            v54:_out(v54._clear);
        else
            v54:_err(v54._clear);
            return ;
        end;
    end;
end;
v21.__printStatus = function(v55)
    local v56 = v55._status:get();
    local l_content_0 = v56.content;
    v55._clear = v56.clear;
    if v55._isInteractive then
        if not v55._globalConfig.useStderr then
            v55:_out(l_content_0);
        else
            v55:_err(l_content_0);
            return ;
        end;
    end;
end;
v21.onRunStart = function(v58, v59, v60)
    v58._status:runStarted(v59, v60);
end;
v21.onTestStart = function(v61, v62)
    v61._status:testStarted(v62.path, v62.context.config);
end;
v21.onTestCaseResult = function(v63, v64, v65)
    v63._status:addTestCaseResult(v64, v65);
end;
v21.onRunComplete = function(v66)
    v66:forceFlushBufferedOutput();
    v66._status:runFinished();
    v66._process.stdout.write = v66._out;
    v66._process.stderr.write = v66._err;
    l_clearLine_0(v66._process.stderr);
end;
v21.onTestResult = function(v67, v68, v69, v70)
    v67:testFinished(v68.context.config, v69, v70);
    if not v69.skipped then
        v67:printTestFileHeader(v69.testFilePath, v68.context.config, v69);
        v67:printTestFileFailureMessage(v69.testFilePath, v68.context.config, v69);
    end;
    v67:forceFlushBufferedOutput();
end;
v21.testFinished = function(v71, v72, v73, v74)
    v71._status:testFinished(v72, v73, v74);
end;
v21.printTestFileHeader = function(v75, _, v77, v78)
    v75:log(l_default_2(v78, v75._globalConfig, v77));
    if v78.console ~= nil then
        v75:log("  " .. v20 .. "Console\n\n" .. l_getConsoleOutput_0(v78.console, v77, v75._globalConfig));
    end;
end;
v21.printTestFileFailureMessage = function(v79, _, _, v82)
    if l_Boolean_0.toJSBoolean(v82.failureMessage) then
        v79:log(v82.failureMessage);
    end;
    l_Array_0.forEach(l_default_3(v82.snapshot, v79._globalConfig.updateSnapshot == "all"), v79.log, v79);
end;
v7.default = v21;
return v7;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_String_0 = v2.String;
local l_setTimeout_0 = v2.setTimeout;
local l_setInterval_0 = v2.setInterval;
local l_clearInterval_0 = v2.clearInterval;
local v9 = {};
local v10 = require(l_Parent_1.ChalkLua);
local l_len_0 = utf8.len;
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local _ = require(l_Parent_0.types);
local v15 = require(l_Parent_0.utils);
local l_getSummary_0 = v15.getSummary;
local l_printDisplayName_0 = v15.printDisplayName;
local l_trimAndFormatPath_0 = v15.trimAndFormatPath;
local l_wrapAnsiString_0 = v15.wrapAnsiString;
local v20 = v10.reset(v10.inverse(v10.yellow(v10.bold(" RUNS ")))) .. " ";
local v21 = {};
v21.__index = v21;
v21.new = function()
    local v22 = setmetatable({}, v21);
    v22._array = {};
    return v22;
end;
v21.add = function(v23, v24, v25)
    local v26 = l_Array_0.indexOf(v23._array, nil);
    local v27 = {
        config = v25,
        testPath = v24
    };
    if v26 ~= -1 then
        v23._array[v26] = v27;
        return ;
    else
        table.insert(v23._array, v27);
        return ;
    end;
end;
v21.delete = function(v28, v29)
    local v32 = l_Array_0.find(v28._array, function(v30)
        local v31 = false;
        if v30 ~= nil then
            v31 = v30.testPath == v29;
        end;
        return v31;
    end);
    v28._array[l_Array_0.indexOf(v28._array, not not l_Boolean_0.toJSBoolean(v32) and v32 or nil)] = nil;
end;
v21.get = function(v33)
    return v33._array;
end;
local v34 = {};
v34.__index = v34;
v34.new = function()
    local v35 = setmetatable({}, v34);
    v35._cache = nil;
    v35._currentTests = v21.new();
    v35._currentTestCases = {};
    v35._done = false;
    v35._emitScheduled = false;
    v35._estimatedTime = 0;
    v35._showStatus = false;
    return v35;
end;
v34.onChange = function(v36, v37)
    v36._callback = v37;
end;
v34.runStarted = function(v38, v39, v40)
    v38._estimatedTime = if not not l_Boolean_0.toJSBoolean(v40) and l_Boolean_0.toJSBoolean(v40.estimatedTime) then v40.estimatedTime else 0;
    v38._showStatus = if not l_Boolean_0.toJSBoolean(v40) then v40 else v40.showStatus;
    v38._interval = l_setInterval_0(function()
        return v38:_tick();
    end, 1000);
    v38._aggregatedResults = v39;
    v38:_debouncedEmit();
end;
v34.runFinished = function(v41)
    v41._done = true;
    if l_Boolean_0.toJSBoolean(v41._interval) then
        l_clearInterval_0(v41._interval);
    end;
    v41:_emit();
end;
v34.addTestCaseResult = function(v42, v43, v44)
    table.insert(v42._currentTestCases, {
        test = v43,
        testCaseResult = v44
    });
    if l_Boolean_0.toJSBoolean(v42._showStatus) then
        v42:_debouncedEmit();
        return ;
    else
        v42:_emit();
        return ;
    end;
end;
v34.testStarted = function(v45, v46, v47)
    v45._currentTests:add(v46, v47);
    if v45._showStatus then
        v45:_debouncedEmit();
        return ;
    else
        v45:_emit();
        return ;
    end;
end;
v34.testFinished = function(v48, v49, v50, v51)
    local l_testFilePath_0 = v50.testFilePath;
    v48._aggregatedResults = v51;
    v48._currentTests:delete(l_testFilePath_0);
    v48._currentTestCases = l_Array_0.filter(v48._currentTestCases, function(v53)
        local l_test_0 = v53.test;
        if v49 ~= l_test_0.context.config then
            return true;
        else
            return l_test_0.path ~= l_testFilePath_0;
        end;
    end);
    v48:_debouncedEmit();
end;
v34.get = function(v55)
    if not l_Boolean_0.toJSBoolean(v55._cache) then
        if not l_Boolean_0.toJSBoolean(v55._done) then
            local v56 = "\n";
            l_Array_0.forEach(v55._currentTests:get(), function(v57)
                if l_Boolean_0.toJSBoolean(v57) then
                    local l_config_0 = v57.config;
                    local l_testPath_0 = v57.testPath;
                    local v60 = v20 .. (not l_Boolean_0.toJSBoolean(l_config_0.displayName) and "" or tostring(l_printDisplayName_0(l_config_0)) .. " ");
                    local v61 = l_len_0(v60);
                    assert(v61 ~= nil);
                    v56 = v56 .. l_wrapAnsiString_0(v60 .. l_trimAndFormatPath_0(v61, l_config_0, l_testPath_0, 0), 0) .. "\n";
                end;
            end);
            if not (not v55._showStatus or not l_Boolean_0.toJSBoolean(v55._aggregatedResults)) then
                v56 = v56 .. "\n" .. tostring(l_getSummary_0(v55._aggregatedResults, {
                    currentTestCases = v55._currentTestCases,
                    estimatedTime = v55._estimatedTime,
                    roundTime = true,
                    width = 0
                }));
            end;
            local v62 = 0;
            local v63 = 0;
            local v64 = utf8.len(v56);
            assert(v64 ~= nil);
            while v63 < v64 do
                if l_String_0.charCodeAt(v56, v63) == "\n" then
                    v62 = v62 + 1;
                end;
                v63 = v63 + 1;
            end;
            v55._cache = {
                clear = ("\n"):rep(v62),
                content = v56
            };
            return v55._cache;
        else
            return {
                clear = "",
                content = ""
            };
        end;
    else
        return v55._cache;
    end;
end;
v34._emit = function(v65)
    v65._cache = nil;
    if l_Boolean_0.toJSBoolean(v65._callback) then
        v65:_callback();
    end;
end;
v34._debouncedEmit = function(v66)
    if not l_Boolean_0.toJSBoolean(v66._emitScheduled) then
        v66._emitScheduled = true;
        l_setTimeout_0(function()
            v66:_emit();
            v66._emitScheduled = false;
        end, 100);
    end;
end;
v34._tick = function(v67)
    v67:_debouncedEmit();
end;
v9.default = v34;
return v9;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_Set_0 = v2.Set;
local l_String_0 = v2.String;
local v7 = {};
local v8 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local l_default_0 = require(l_Parent_0.BaseReporter).default;
local l_default_1 = require(l_Parent_0.getResultHeader).default;
local l_default_2 = require(l_Parent_0.getSnapshotSummary).default;
local _ = require(l_Parent_0.types);
local l_getSummary_0 = require(l_Parent_0.utils).getSummary;
local v16 = l_Set_0.new({
    "prepublish",
    "publish",
    "postpublish",
    "preinstall",
    "install",
    "postinstall",
    "preuninstall",
    "uninstall",
    "postuninstall",
    "preversion",
    "version",
    "postversion",
    "pretest",
    "test",
    "posttest",
    "prestop",
    "stop",
    "poststop",
    "prestart",
    "start",
    "poststart",
    "prerestart",
    "restart",
    "postrestart"
});
local v17 = nil;
local v18 = nil;
local v19 = nil;
local v20 = setmetatable({}, {
    __index = l_default_0
});
v20.__index = v20;
v20.filename = "SummaryReporter";
v20.new = function(v21, v22)
    local v23 = setmetatable(l_default_0.new(v22), v20);
    if v22 then
        v19 = v22.env.npm_lifecycle_script;
        v18 = v22.env.npm_lifecycle_event;
        v17 = v22.env.npm_config_user_agent;
    end;
    v23._globalConfig = v21;
    v23._estimatedTime = 0;
    return v23;
end;
v20._write = function(v24, v25)
    local v26 = 1;
    local v27 = utf8.len(v25);
    assert(v27 ~= nil);
    while v26 < v27 do
        v24._process.stderr:write(l_String_0.charCodeAt(v25, v26));
        v26 = v26 + 1;
    end;
end;
v20.onRunStart = function(v28, v29, v30)
    l_default_0.onRunStart(v28, v29, v30);
    v28._estimatedTime = v30.estimatedTime;
end;
v20.onRunComplete = function(v31, v32, v33)
    local l_numTotalTestSuites_0 = v33.numTotalTestSuites;
    local l_testResults_0 = v33.testResults;
    local l_wasInterrupted_0 = v33.wasInterrupted;
    if l_Boolean_0.toJSBoolean(l_numTotalTestSuites_0) then
        local v37 = l_testResults_0[#l_testResults_0];
        if not (((not l_Boolean_0.toJSBoolean(v31._globalConfig.verbose) or not l_Boolean_0.toJSBoolean(v37)) or l_Boolean_0.toJSBoolean(v37.numFailingTests)) or l_Boolean_0.toJSBoolean(v37.testExecError)) then
            v31:log("");
        end;
        v31:_printSummary(v33, v31._globalConfig);
        v31:_printSnapshotSummary(v33.snapshot, v31._globalConfig);
        if l_Boolean_0.toJSBoolean(l_numTotalTestSuites_0) then
            local v38 = l_getSummary_0(v33, {
                estimatedTime = v31._estimatedTime
            });
            if not l_Boolean_0.toJSBoolean(v31._globalConfig.silent) then
                v38 = v38 .. "\n" .. if not l_Boolean_0.toJSBoolean(l_wasInterrupted_0) then v31:_getTestSummary(v32, v31._globalConfig) else v8.bold(v8.red("Test run was interrupted."));
            end;
            v31:log(v38);
        end;
    end;
end;
v20._printSnapshotSummary = function(v39, v40, v41)
    if not (not (((l_Boolean_0.toJSBoolean(v40.added) or l_Boolean_0.toJSBoolean(v40.filesRemoved)) or l_Boolean_0.toJSBoolean(v40.unchecked)) or l_Boolean_0.toJSBoolean(v40.unmatched)) and not l_Boolean_0.toJSBoolean(v40.updated)) then
        local _ = nil;
        local v43 = not not l_Boolean_0.toJSBoolean(v18) and v18 or "";
        local v44 = not l_Boolean_0.toJSBoolean(v16:has(v43)) and "run " or "";
        local v45 = false;
        if typeof(v17) == "string" then
            v45 = string.match(v17 or "", "yarn") ~= nil;
        end;
        local v46 = not l_Boolean_0.toJSBoolean(v45) and "npm" or "yarn";
        local v47 = false;
        if typeof(v19) == "string" then
            v47 = l_Boolean_0.toJSBoolean(string.match(v19 or "", "jest"));
        end;
        l_Array_0.forEach(l_default_2(v40, v41, (v41.watch or v41.watchAll) and "press `u`" or if l_Boolean_0.toJSBoolean(v43) and v47 then ("run `%s -u`"):format(v46 .. " " .. v44 .. v43 .. (not v45 and " --" or "")) else "re-run jest with `-u`"), function(v48)
            v39:log(v48);
        end);
        v39:log("");
    end;
end;
v20._printSummary = function(v49, v50, v51)
    if (v50.numFailedTests or 0) + (v50.numRuntimeErrorTestSuites or 0) > 0 and v50.numTotalTestSuites > 20 then
        v49:log(v8.bold("Summary of all failing tests"));
        l_Array_0.forEach(v50.testResults, function(v52)
            local l_failureMessage_0 = v52.failureMessage;
            if l_Boolean_0.toJSBoolean(l_failureMessage_0) then
                v49:_write(l_default_1(v52, v51) .. "\n" .. l_failureMessage_0 .. "\n");
            end;
        end);
        v49:log("");
    end;
end;
v20._getTestSummary = function(_, v55, v56)
    local function _()
        return v8.dim(not l_Boolean_0.toJSBoolean(v56.findRelatedTests) and " matching " or " related to files matching ");
    end;
    local v58 = "";
    if not v56.runTestsByPath then
        if not l_Boolean_0.toJSBoolean(v56.onlyChanged) then
            if l_Boolean_0.toJSBoolean(v56.testPathPattern) then
                v58 = v8.dim(not l_Boolean_0.toJSBoolean(v56.findRelatedTests) and " matching " or " related to files matching ");
            end;
        else
            v58 = v8.dim(" related to changed files");
        end;
    else
        v58 = v8.dim(" within paths");
    end;
    local v59 = "";
    if not v56.runTestsByPath then
        if v56.testNamePattern ~= nil then
            v59 = v8.dim(" with tests matching ") .. ("\"%s\""):format(v56.testNamePattern);
        end;
    else
        v59 = " " .. l_Array_0.join(l_Array_0.map(v56.nonFlagArgs, function(v60)
            return ("\"%s\""):format(v60);
        end), ", ");
    end;
    return v8.dim("Ran all test suites") .. v58 .. v59 .. if v55.size > 1 then v8.dim(" in ") .. tostring(v55.size) .. v8.dim(" projects") else "" .. v8.dim(".");
end;
v7.default = v20;
return v7;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local v5 = {};
local v6 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local v9 = require(l_Parent_1.JestUtil);
local l_formatTime_0 = v9.formatTime;
local l_ICONS_0 = v9.ICONS;
local l_default_0 = require(l_Parent_0.DefaultReporter).default;
local _ = require(l_Parent_0.types);
local _ = require(l_Parent_1.RobloxShared);
local v15 = setmetatable({}, {
    __index = l_default_0
});
v15.__index = v15;
v15.filename = "VerboseReporter";
local function _(v16)
    return math.floor(v16 * 1 + 0.5) / 1;
end;
v15.new = function(v18)
    local v19 = setmetatable(l_default_0.new(v18), v15);
    v19._globalConfig = v18;
    return v19;
end;
v15.__wrapStdio = function(v20, v21)
    local l_write_0 = v21.write;
    v21.write = function(_, v24)
        v20:__clearStatus();
        l_write_0(v21, v24);
        v20:__printStatus();
        return true;
    end;
end;
v15.filterTestResults = function(v25)
    return l_Array_0.filter(v25, function(v26)
        return v26.status ~= "pending";
    end);
end;
v15.groupTestsBySuites = function(v27)
    local v28 = {
        suites = {},
        tests = {},
        title = ""
    };
    l_Array_0.forEach(v27, function(v29)
        local l_v28_0 = v28;
        for _, v32 in ipairs(v29.ancestorTitles) do
            local v34 = l_Array_0.find(l_v28_0.suites, function(v33)
                return v33.title == v32;
            end);
            if v34 == nil then
                v34 = {
                    suites = {},
                    tests = {},
                    title = v32
                };
                table.insert(l_v28_0.suites, v34);
            end;
            l_v28_0 = v34;
        end;
        table.insert(l_v28_0.tests, v29);
    end);
    return v28;
end;
v15.onTestResult = function(v35, v36, v37, v38)
    l_default_0.testFinished(v35, v36.context.config, v37, v38);
    if not l_Boolean_0.toJSBoolean(v37.skipped) then
        v35:printTestFileHeader(v37.testFilePath, v36.context.config, v37);
        if not (l_Boolean_0.toJSBoolean(v37.testExecError) or l_Boolean_0.toJSBoolean(v37.skipped)) then
            v35:_logTestResults(v37.testResults);
        end;
        v35:printTestFileFailureMessage(v37.testFilePath, v36.context.config, v37);
    end;
    l_default_0.forceFlushBufferedOutput(v35);
end;
v15._logTestResults = function(v39, v40)
    v39:_logSuite(v15.groupTestsBySuites(v40), 0);
    v39:_logLine();
end;
v15._logSuite = function(v41, v42, v43)
    if l_Boolean_0.toJSBoolean(v42.title) then
        v41:_logLine(v42.title, v43);
    end;
    v41:_logTests(v42.tests, v43 + 1);
    l_Array_0.forEach(v42.suites, function(v44)
        v41:_logSuite(v44, v43 + 1);
    end);
end;
v15._getIcon = function(_, v46)
    if v46 == "failed" then
        return v6.red(l_ICONS_0.failed);
    elseif v46 == "pending" then
        return v6.yellow(l_ICONS_0.pending);
    elseif v46 == "todo" then
        return v6.magenta(l_ICONS_0.todo);
    else
        return v6.green(l_ICONS_0.success);
    end;
end;
v15._logTest = function(v47, v48, v49)
    v47:_logLine(v47:_getIcon(v48.status) .. " " .. v6.dim(v48.title .. if v48.duration ~= nil then (" (%s)"):format((tostring(l_formatTime_0(math.floor(v48.duration * 1 + 0.5) / 1)))) else ""), v49);
end;
v15._logTests = function(v50, v51, v52)
    if not l_Boolean_0.toJSBoolean(v50._globalConfig.expand) then
        local v55 = l_Array_0.reduce(v51, function(v53, v54)
            if v54.status == "pending" then
                table.insert(v53.pending, v54);
                return v53;
            elseif v54.status == "todo" then
                table.insert(v53.todo, v54);
                return v53;
            else
                v50:_logTest(v54, v52);
                return v53;
            end;
        end, {
            pending = {},
            todo = {}
        });
        if #v55.pending > 0 then
            l_Array_0.forEach(v55.pending, v50:_logTodoOrPendingTest(v52));
        end;
        if #v55.todo > 0 then
            l_Array_0.forEach(v55.todo, v50:_logTodoOrPendingTest(v52));
        end;
        return ;
    else
        l_Array_0.forEach(v51, function(v56)
            return v50:_logTest(v56, v52);
        end);
        return ;
    end;
end;
v15._logTodoOrPendingTest = function(v57, v58)
    return function(v59)
        v57:_logLine(("%s %s"):format(v57:_getIcon(v59.status), (v6.dim(("%s %s"):format(v59.status == "pending" and "skipped" or v59.status, v59.title)))), v58);
    end;
end;
v15._logLine = function(v60, v61, v62)
    v60:log(("  "):rep(not not l_Boolean_0.toJSBoolean(v62) and v62 or 0) .. (v61 or ""));
end;
v5.default = v15;
return v5;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Boolean_0 = require(l_Parent_1.LuauPolyfill).Boolean;
local v3 = {};
local v4 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local l_formatTime_0 = require(l_Parent_1.JestUtil).formatTime;
local v8 = require(l_Parent_0.utils);
local l_formatTestPath_0 = v8.formatTestPath;
local l_printDisplayName_0 = v8.printDisplayName;
local function v11(...)
    return v4.reset(v4.bold(v4.bgRed(...)));
end;
local v12 = if not (v4.supportsColor ~= nil) or v4.supportsColor == true then v4.reset(v4.inverse(v4.bold(v4.red(string.format(" %s ", "FAIL"))))) else "FAIL";
local v13 = if not (v4.supportsColor ~= nil) or v4.supportsColor == true then v4.reset(v4.inverse(v4.bold(v4.green(string.format(" %s ", "PASS"))))) else "PASS";
v3.default = function(v14, v15, v16)
    local v17 = l_formatTestPath_0(v16 or v15, v14.testFilePath);
    if v14.numFailingTests == nil then
        v14.numFailingTests = 0;
    end;
    local v18 = if not (v14.numFailingTests <= 0) or v14.testExecError ~= nil then v12 else v13;
    local v19 = {};
    if not (not (v14.perfStats ~= nil) or not l_Boolean_0.toJSBoolean(v14.perfStats.slow)) then
        table.insert(v19, v11(l_formatTime_0(v14.perfStats.runtime / 1000, 0)));
    end;
    if v14.memoryUsage ~= nil then
        local function _(v20)
            return (math.floor((v20 / 1024) / 1024));
        end;
        table.insert(v19, (" %sMB heap size"):format((tostring((math.floor((v14.memoryUsage / 1024) / 1024))))));
    end;
    return string.format("%s %s%s %s", v18, if v16 ~= nil and l_Boolean_0.toJSBoolean(v16.displayName) then l_printDisplayName_0(v16) .. " " else "", v17, table.concat(v19, " "));
end;
return v3;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Boolean_0 = v1.Boolean;
local l_Array_0 = v1.Array;
local v4 = {};
local v5 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTestResult);
local l_pluralize_0 = require(l_Parent_0.JestUtil).pluralize;
local function v8(...)
    return v5.bold(v5.red(...));
end;
local function v9(...)
    return v5.bold(v5.green(...));
end;
local function v10(...)
    return v5.bold(v5.green(...));
end;
local function v11(...)
    return v5.bold(v5.yellow(...));
end;
v4.default = function(v12, v13)
    local v14 = {};
    if l_Boolean_0.toJSBoolean(v12.added) then
        table.insert(v14, v9(" \226\128\186 " .. l_pluralize_0("snapshot", v12.added) .. " written."));
    end;
    if l_Boolean_0.toJSBoolean(v12.updated) then
        table.insert(v14, v10(" \226\128\186 " .. l_pluralize_0("snapshot", v12.updated) .. " updated."));
    end;
    if l_Boolean_0.toJSBoolean(v12.unmatched) then
        table.insert(v14, v8(" \226\128\186 " .. l_pluralize_0("snapshot", v12.unmatched) .. " failed."));
    end;
    if l_Boolean_0.toJSBoolean(v12.unchecked) then
        if not v13 then
            table.insert(v14, v11(" \226\128\186 " .. l_pluralize_0("snapshot", v12.unchecked) .. " obsolete."));
        else
            table.insert(v14, v10(" \226\128\186 " .. l_pluralize_0("snapshot", v12.unchecked) .. " removed."));
        end;
        l_Array_0.forEach(v12.uncheckedKeys, function(v15)
            table.insert(v14, "\t" .. " \226\128\162 " .. v15);
        end);
    end;
    if v12.fileDeleted then
        table.insert(v14, v10(" \226\128\186 " .. "snapshot file removed."));
    end;
    return v14;
end;
return v4;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = {};
local v3 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v3.Array;
local l_Boolean_0 = v3.Boolean;
local v6 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local l_pluralize_0 = require(l_Parent_1.JestUtil).pluralize;
local l_formatTestPath_0 = require(l_Parent_0.utils).formatTestPath;
local function v11(...)
    return v6.bold(v6.red(...));
end;
local function v12(...)
    return v6.bold(v6.yellow(...));
end;
local function v13(...)
    return v6.bold(v6.green(...));
end;
local l_dim_0 = v6.dim;
local function v15(...)
    return v6.bold(v6.green(...));
end;
local l_bold_0 = v6.bold;
local function v17(...)
    return v6.bold(v6.green(...));
end;
v2.default = function(v18, v19, v20)
    local v21 = {};
    table.insert(v21, l_bold_0("Snapshot Summary"));
    if l_Boolean_0.toJSBoolean(v18.added) then
        table.insert(v21, v13(" \226\128\186 " .. l_pluralize_0("snapshot", v18.added) .. " written ") .. "from " .. l_pluralize_0("test suite", v18.filesAdded) .. ".");
    end;
    if l_Boolean_0.toJSBoolean(v18.unmatched) then
        table.insert(v21, v11(" \226\128\186 " .. l_pluralize_0("snapshot", v18.unmatched) .. " failed") .. " from " .. l_pluralize_0("test suite", v18.filesUnmatched) .. ". " .. l_dim_0("Inspect your code changes or " .. v20 .. " to update them."));
    end;
    if l_Boolean_0.toJSBoolean(v18.updated) then
        table.insert(v21, v17(" \226\128\186 " .. l_pluralize_0("snapshot", v18.updated) .. " updated ") .. "from " .. l_pluralize_0("test suite", v18.filesUpdated) .. ".");
    end;
    if l_Boolean_0.toJSBoolean(v18.filesRemoved) then
        if not v18.didUpdate then
            table.insert(v21, v12(" \226\128\186 " .. l_pluralize_0("snapshot file", v18.filesRemoved) .. " obsolete ") .. "from " .. l_pluralize_0("test suite", v18.filesRemoved) .. ". " .. l_dim_0("To remove " .. (v18.filesRemoved == 1 and "it" or "them all") .. ", " .. v20 .. "."));
        else
            table.insert(v21, v15(" \226\128\186 " .. l_pluralize_0("snapshot file", v18.filesRemoved) .. " removed ") .. "from " .. l_pluralize_0("test suite", v18.filesRemoved) .. ".");
        end;
    end;
    if v18.filesRemovedList and #v18.filesRemovedList > 0 then
        local v22 = v18.filesRemovedList[1];
        local v23 = table.pack(table.unpack(v18.filesRemovedList, 2));
        table.insert(v21, "  " .. " \226\134\179 " .. " " .. " \226\128\162 " .. l_formatTestPath_0(v19, v22));
        l_Array_0.forEach(v23, function(v24)
            table.insert(v21, "    " .. " \226\128\162 " .. l_formatTestPath_0(v19, v24));
        end);
    end;
    if l_Boolean_0.toJSBoolean(v18.unchecked) then
        if not v18.didUpdate then
            table.insert(v21, v12(" \226\128\186 " .. l_pluralize_0("snapshot", v18.unchecked) .. " obsolete ") .. "from " .. l_pluralize_0("test suite", #v18.uncheckedKeysByFile) .. ". " .. l_dim_0("To remove " .. (v18.unchecked == 1 and "it" or "them all") .. ", " .. v20 .. "."));
        else
            table.insert(v21, v15(" \226\128\186 " .. l_pluralize_0("snapshot", v18.unchecked) .. " removed ") .. "from " .. l_pluralize_0("test suite", #v18.uncheckedKeysByFile) .. ".");
        end;
    end;
    l_Array_0.forEach(v18.uncheckedKeysByFile, function(v25)
        table.insert(v21, "  " .. " \226\134\179 " .. l_formatTestPath_0(v19, v25.filePath));
        l_Array_0.forEach(v25.keys, function(v26)
            table.insert(v21, "    " .. " \226\128\162 " .. v26);
        end);
    end);
    return v21;
end;
return v2;


local v0 = {};
local l_default_0 = require(script.getResultHeader).default;
local v2 = require(script.utils);
local l_formatTestPath_0 = v2.formatTestPath;
local l_getSummary_0 = v2.getSummary;
local l_printDisplayName_0 = v2.printDisplayName;
local l_relativePath_0 = v2.relativePath;
local l_trimAndFormatPath_0 = v2.trimAndFormatPath;
v0.BaseReporter = require(script.BaseReporter).default;
v0.DefaultReporter = require(script.DefaultReporter).default;
v0.SummaryReporter = require(script.SummaryReporter).default;
v0.VerboseReporter = require(script.VerboseReporter).default;
local _ = require(script.types);
v0.utils = {
    formatTestPath = l_formatTestPath_0,
    getResultHeader = l_default_0,
    getSummary = l_getSummary_0,
    printDisplayName = l_printDisplayName_0,
    relativePath = l_relativePath_0,
    trimAndFormatPath = l_trimAndFormatPath_0
};
return v0;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.RobloxShared);
return v2;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_String_0 = v2.String;
local v6 = {};
local l_path_0 = require(l_Parent_1.Path).path;
local v8 = require(l_Parent_1.ChalkLua);
local function v10(v9)
    return v9:gsub("\\", "/");
end;
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local v13 = require(l_Parent_1.JestUtil);
local l_formatTime_0 = v13.formatTime;
local l_pluralize_0 = v13.pluralize;
local _ = require(l_Parent_0.types);
local v17 = nil;
local v18 = nil;
v6.printDisplayName = function(v19)
    local l_displayName_0 = v19.displayName;
    local function v21(...)
        return v8.reset(v8.inverse(v8.white(...)));
    end;
    if l_Boolean_0.toJSBoolean(l_displayName_0) then
        local v22 = nil;
        local v23 = nil;
        if l_displayName_0 ~= nil then
            v22 = l_displayName_0.name;
            v23 = l_displayName_0.color;
        end;
        return if not (v8.supportsColor ~= nil) or v8.supportsColor == true then (function(...)
            if l_Boolean_0.toJSBoolean(v23) and v8[v23] ~= nil then
                return v8.reset(v8.inverse(v8[v23](...)));
            else
                return v21(...);
            end;
        end)((" %s "):format(v22)) else v22;
    else
        return "";
    end;
end;
v6.trimAndFormatPath = function(v24, v25, v26, v27)
    local v28 = v27 - v24;
    local v29 = v17(v25, v26);
    local l_basename_0 = v29.basename;
    local l_dirname_0 = v29.dirname;
    local v32 = utf8.len(l_dirname_0 .. l_path_0.sep .. l_basename_0);
    assert(v32 ~= nil);
    if v32 <= v28 then
        return v10(v8.dim(l_dirname_0 .. l_path_0.sep) .. v8.bold(l_basename_0));
    else
        local v33 = utf8.len(l_basename_0);
        assert(v33);
        if v33 + 4 < v28 then
            return v10(v8.dim("..." .. l_String_0.slice(l_dirname_0, (utf8.len(l_dirname_0) - ((v28 - 4) - v33)) + 1, utf8.len(l_dirname_0) + 1) .. l_path_0.sep) .. v8.bold(l_basename_0));
        elseif v33 + 4 == v28 then
            return v10(v8.dim("..." .. l_path_0.sep) .. v8.bold(l_basename_0));
        else
            return v10(v8.bold("..." .. l_String_0.slice(l_basename_0, (v33 - v28) - 4, v33 + 1)));
        end;
    end;
end;
v6.formatTestPath = function(v34, v35)
    local v36 = v17(v34, v35);
    return v10(v8.dim(v36.dirname .. l_path_0.sep) .. v8.bold(v36.basename));
end;
v17 = function(v37, v38)
    v38 = l_path_0:relative(not not l_Boolean_0.toJSBoolean(v37.cwd) and v37.cwd or v37.rootDir, v38);
    return {
        basename = l_path_0:basename(v38),
        dirname = l_path_0:dirname(v38)
    };
end;
v6.relativePath = v17;
local function v47(v39)
    if v39 == nil then
        v39 = {};
    end;
    local v40 = 0;
    local v41 = 0;
    local v42 = 0;
    local v43 = 0;
    local v44 = 0;
    l_Array_0.forEach(v39, function(v45)
        local l_status_0 = v45.testCaseResult.status;
        if l_status_0 == "failed" then
            v40 = v40 + 1;
        elseif l_status_0 == "passed" then
            v41 = v41 + 1;
        elseif l_status_0 == "skipped" then
            v42 = v42 + 1;
        elseif l_status_0 == "todo" then
            v43 = v43 + 1;
        end;
        v44 = v44 + 1;
    end);
    return {
        numFailingTests = v40,
        numPassingTests = v41,
        numPendingTests = v42,
        numTodoTests = v43,
        numTotalTests = v44
    };
end;
v6.getSummary = function(v48, v49)
    local v50 = (DateTime.now().UnixTimestampMillis - v48.startTime) / 1000;
    if not (not (v49 ~= nil) or not v49.roundTime) then
        v50 = math.floor(v50);
    end;
    local v51 = v47(if v49 ~= nil then v49.currentTestCases else nil);
    local v52 = v49 ~= nil and v49.estimatedTime or 0;
    local l_snapshot_0 = v48.snapshot;
    local l_added_0 = l_snapshot_0.added;
    local l_unmatched_0 = l_snapshot_0.unmatched;
    local l_unchecked_0 = l_snapshot_0.unchecked;
    local l_filesRemoved_0 = l_snapshot_0.filesRemoved;
    local l_didUpdate_0 = l_snapshot_0.didUpdate;
    local l_matched_0 = l_snapshot_0.matched;
    local l_total_0 = l_snapshot_0.total;
    local l_updated_0 = l_snapshot_0.updated;
    local v62 = v48.numFailedTestSuites or 0;
    local v63 = v48.numPassedTestSuites or 0;
    local v64 = v48.numPendingTestSuites or 0;
    local v65 = v62 + v63;
    local v66 = v48.numTotalTestSuites or 0;
    local v67 = v48.numFailedTests or 0;
    local v68 = v48.numPassedTests or 0;
    local v69 = v48.numPendingTests or 0;
    local v70 = v48.numTodoTests or 0;
    local v71 = v48.numTotalTests or 0;
    local v72 = v49 ~= nil and v49.width or 0;
    local v73 = v8.bold("Test Suites: ") .. if v62 > 0 then v8.bold(v8.red(("%d failed"):format(v62))) .. ", " else "" .. if v64 > 0 then v8.bold(v8.yellow(("%d skipped"):format(v64))) .. ", " else "" .. if v63 > 0 then v8.bold(v8.green(("%d passed"):format(v63))) .. ", " else "" .. if v65 ~= v66 then tostring(v65) .. " of " .. tostring(v66) else tostring(v66) .. " total";
    local v74 = v67 + v51.numFailingTests;
    local v75 = v69 + v51.numPendingTests;
    local v76 = v70 + v51.numTodoTests;
    local v77 = v68 + v51.numPassingTests;
    return l_Array_0.join({
        v73,
        v8.bold("Tests:       ") .. if v74 > 0 then v8.bold(v8.red(("%d failed"):format(v74))) .. ", " else "" .. if v75 > 0 then v8.bold(v8.yellow(("%d skipped"):format(v75))) .. ", " else "" .. if v76 > 0 then v8.bold(v8.magenta(("%d todo"):format(v76))) .. ", " else "" .. if v77 > 0 then v8.bold(v8.green(("%d passed"):format(v77))) .. ", " else "" .. ("%d total"):format(v71 + v51.numTotalTests),
        v8.bold("Snapshots:   ") .. if l_unmatched_0 > 0 then v8.bold(v8.red(("%d failed"):format(l_unmatched_0))) .. ", " else "" .. ((not l_Boolean_0.toJSBoolean(l_unchecked_0) or l_didUpdate_0) and "" or v8.bold(v8.yellow(("%d obsolete"):format(l_unchecked_0))) .. ", ") .. if not not l_Boolean_0.toJSBoolean(l_unchecked_0) and l_didUpdate_0 then v8.bold(v8.green(("%d removed"):format(l_unchecked_0))) .. ", " else "" .. ((not l_Boolean_0.toJSBoolean(l_filesRemoved_0) or l_didUpdate_0) and "" or v8.bold(v8.yellow(l_pluralize_0("file", l_filesRemoved_0) .. " obsolete")) .. ", ") .. if not not l_Boolean_0.toJSBoolean(l_filesRemoved_0) and l_didUpdate_0 then v8.bold(v8.green(l_pluralize_0("file", l_filesRemoved_0) .. " removed")) .. ", " else "" .. (not l_Boolean_0.toJSBoolean(l_updated_0) and "" or v8.bold(v8.green(("%d updated"):format(l_updated_0))) .. ", ") .. (not l_Boolean_0.toJSBoolean(l_added_0) and "" or v8.bold(v8.green(("%d written"):format(l_added_0))) .. ", ") .. (not l_Boolean_0.toJSBoolean(l_matched_0) and "" or v8.bold(v8.green(("%d passed"):format(l_matched_0))) .. ", ") .. ("%d total"):format(l_total_0),
        (v18(v50, v52, v72))
    }, "\n");
end;
v18 = function(v78, v79, v80)
    local v81 = v8.bold("Time:") .. ("        %s"):format(if not not l_Boolean_0.toJSBoolean(v79) and v79 + 1 <= v78 then v8.bold(v8.yellow(l_formatTime_0(v78, 0))) else l_formatTime_0(v78, 0));
    if v78 < v79 then
        v81 = v81 .. (", estimated %s"):format(l_formatTime_0(v79, 0));
    end;
    local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
    local v83 = false;
    if v79 > 2 then
        v83 = false;
        if v78 < v79 then
            v83 = v80;
        end;
    end;
    if l_toJSBoolean_0(v83) then
        l_toJSBoolean_0 = math.min(40, v80);
        v83 = math.min(math.floor((v78 / v79) * l_toJSBoolean_0), l_toJSBoolean_0);
        if l_toJSBoolean_0 >= 2 then
            v81 = v81 .. "\n" .. v8.green("\226\150\136"):rep(v83) .. tostring(v8.white("\226\150\136"):rep(l_toJSBoolean_0 - v83));
        end;
    end;
    return v81;
end;
v6.wrapAnsiString = function(v84, _)
    return v84;
end;
return v6;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_Set_0 = v2.Set;
local l_setTimeout_0 = v2.setTimeout;
local v7 = {};
local v8 = require(l_Parent_1.ChalkLua);
local l_getConsoleOutput_0 = require(l_Parent_1.JestConsole).getConsoleOutput;
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local v12 = require(l_Parent_1.JestMessageUtil);
local l_formatStackTrace_0 = v12.formatStackTrace;
local l_indentAllLines_0 = v12.indentAllLines;
local l_separateMessageFromStack_0 = v12.separateMessageFromStack;
local v16 = require(l_Parent_1.JestUtil);
local l_clearLine_0 = v16.clearLine;
local l_default_0 = require(l_Parent_0.BaseReporter).default;
local l_default_1 = require(l_Parent_0.Status).default;
local l_default_2 = require(l_Parent_0.getResultHeader).default;
local l_default_3 = require(l_Parent_0.getSnapshotStatus).default;
local _ = require(l_Parent_0.types);
local l_Writeable_0 = require(l_Parent_1.RobloxShared).Writeable;
local v24 = v8.bold("\226\151\143 ");
local v25 = setmetatable({}, {
    __index = l_default_0
});
v25.__index = v25;
v25.filename = "DefaultReporter";
v25.new = function(v26, v27)
    local v28 = setmetatable(l_default_0.new(v27), v25);
    v28._isInteractive = v16.isInteractive;
    if v27 ~= nil and v27.env.IS_INTERACTIVE ~= nil then
        v28._isInteractive = l_Boolean_0.toJSBoolean(v27.env.IS_INTERACTIVE);
    end;
    local _ = function()
        local v29 = l_Writeable_0.new();
        return function(_, v31)
            v29:write(v31);
        end;
    end;
    local v33;
    if not v27 or not v27.stdout then
        local v34 = l_Writeable_0.new();
        local l_v34_0 = v34 --[[ copy: 5 -> 7 ]];
        v33 = function(_, v37)
            l_v34_0:write(v37);
        end;
    else
        v33 = v27.stdout.write;
    end;
    local v38;
    if not v27 or not v27.stderr then
        local v39 = l_Writeable_0.new();
        v38 = function(_, v41)
            v39:write(v41);
        end;
    else
        v38 = v27.stderr.write;
    end;
    v28._globalConfig = v26;
    v28._clear = "";
    v28._out = function(_, v43)
        v33(v28._process.stdout, v43);
    end;
    v28._err = function(_, v45)
        v38(v28._process.stderr, v45);
    end;
    v28._status = l_default_1.new();
    v28._bufferedOutput = l_Set_0.new();
    v28:__wrapStdio(v28._process.stdout);
    v28:__wrapStdio(v28._process.stderr);
    v28._status:onChange(function()
        v28:__clearStatus();
        v28:__printStatus();
    end);
    return v28;
end;
v25.__wrapStdio = function(v46, v47)
    local l_write_0 = v47.write;
    local v49 = {};
    local v50 = nil;
    local function v51()
        local v52 = l_Array_0.join(v49, "");
        v49 = {};
        v46:__clearStatus();
        if l_Boolean_0.toJSBoolean(v52) then
            l_write_0(v47, v52);
        end;
        v46:__printStatus();
        v46._bufferedOutput:delete(v51);
    end;
    v46._bufferedOutput:add(v51);
    local function v53()
        if v47 == v46._process.stderr then
            v51();
            return ;
        else
            if not l_Boolean_0.toJSBoolean(v50) then
                v50 = l_setTimeout_0(function()
                    v51();
                    v50 = nil;
                end, 100);
            end;
            return ;
        end;
    end;
    v47.write = function(_, v55)
        table.insert(v49, v55);
        v53();
        return true;
    end;
end;
v25.forceFlushBufferedOutput = function(v56)
    l_Set_0.forEach(v56._bufferedOutput, function(v57)
        v57();
    end);
end;
v25.__clearStatus = function(v58)
    if v58._isInteractive then
        if not v58._globalConfig.useStderr then
            v58:_out(v58._clear);
        else
            v58:_err(v58._clear);
            return ;
        end;
    end;
end;
v25.__printStatus = function(v59)
    local v60 = v59._status:get();
    local l_content_0 = v60.content;
    v59._clear = v60.clear;
    if v59._isInteractive then
        if not v59._globalConfig.useStderr then
            v59:_out(l_content_0);
        else
            v59:_err(l_content_0);
            return ;
        end;
    end;
end;
v25.onRunStart = function(v62, v63, v64)
    v62._status:runStarted(v63, v64);
end;
v25.onTestStart = function(v65, v66)
    v65._status:testStarted(v66.path, v66.context.config);
end;
v25.onTestCaseResult = function(v67, v68, v69)
    v67._status:addTestCaseResult(v68, v69);
end;
v25.onRunComplete = function(v70)
    v70:forceFlushBufferedOutput();
    v70._status:runFinished();
    v70._process.stdout.write = v70._out;
    v70._process.stderr.write = v70._err;
    l_clearLine_0(v70._process.stderr);
end;
v25.onTestResult = function(v71, v72, v73, v74)
    v71:testFinished(v72.context.config, v73, v74);
    if not v73.skipped then
        v71:printTestFileHeader(v73.testFilePath, v72.context.config, v73);
        v71:printTestFileFailureMessage(v73.testFilePath, v72.context.config, v73);
    end;
    v71:forceFlushBufferedOutput();
end;
v25.testFinished = function(v75, v76, v77, v78)
    v75._status:testFinished(v76, v77, v78);
end;
v25.printTestFileHeader = function(v79, v80, v81, v82)
    l_Array_0.forEach(v82.testResults, function(v83)
        local l_retryReasons_0 = v83.retryReasons;
        if l_retryReasons_0 and #l_retryReasons_0 > 0 then
            v79:log(("%s %s"):format(tostring(v8.reset.inverse.bold:yellow(" LOGGING RETRY ERRORS ")), v8.bold(v83.fullName)));
            l_Array_0.forEach(l_retryReasons_0, function(v85, v86)
                local v87 = nil;
                local v88 = nil;
                local v89 = l_separateMessageFromStack_0(v85);
                v87 = v89.message;
                v88 = if not l_Boolean_0.toJSBoolean(v79._globalConfig.noStackTrace) then v8.dim(l_formatStackTrace_0(v89.stack, v81, v79._globalConfig, v80)) else "";
                v87 = l_indentAllLines_0(v87);
                v79:log(("%s\n"):format((tostring(v8.reset.inverse.bold:blueBright((" RETRY %s "):format((tostring(v86 + 1))))))));
                v79:log(("%s\n%s\n"):format(tostring(v87), (tostring(v88))));
            end);
        end;
    end);
    v79:log(l_default_2(v82, v79._globalConfig, v81));
    if v82.console ~= nil then
        v79:log("  " .. v24 .. "Console\n\n" .. l_getConsoleOutput_0(v82.console, v81, v79._globalConfig));
    end;
end;
v25.printTestFileFailureMessage = function(v90, _, _, v93)
    if l_Boolean_0.toJSBoolean(v93.failureMessage) then
        v90:log(v93.failureMessage);
    end;
    l_Array_0.forEach(l_default_3(v93.snapshot, v90._globalConfig.updateSnapshot == "all"), v90.log, v90);
end;
v7.default = v25;
return v7;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_String_0 = v2.String;
local l_setTimeout_0 = v2.setTimeout;
local l_setInterval_0 = v2.setInterval;
local l_clearInterval_0 = v2.clearInterval;
local v9 = {};
local v10 = require(l_Parent_1.ChalkLua);
local l_len_0 = utf8.len;
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local _ = require(l_Parent_0.types);
local v15 = require(l_Parent_0.utils);
local l_getSummary_0 = v15.getSummary;
local l_printDisplayName_0 = v15.printDisplayName;
local l_trimAndFormatPath_0 = v15.trimAndFormatPath;
local l_wrapAnsiString_0 = v15.wrapAnsiString;
local v20 = v10.reset(v10.inverse(v10.yellow(v10.bold(" RUNS ")))) .. " ";
local v21 = {};
v21.__index = v21;
v21.new = function()
    local v22 = setmetatable({}, v21);
    v22._array = {};
    return v22;
end;
v21.add = function(v23, v24, v25)
    local v26 = l_Array_0.indexOf(v23._array, nil);
    local v27 = {
        config = v25,
        testPath = v24
    };
    if v26 ~= -1 then
        v23._array[v26] = v27;
        return ;
    else
        table.insert(v23._array, v27);
        return ;
    end;
end;
v21.delete = function(v28, v29)
    local v32 = l_Array_0.find(v28._array, function(v30)
        local v31 = false;
        if v30 ~= nil then
            v31 = v30.testPath == v29;
        end;
        return v31;
    end);
    v28._array[l_Array_0.indexOf(v28._array, not not l_Boolean_0.toJSBoolean(v32) and v32 or nil)] = nil;
end;
v21.get = function(v33)
    return v33._array;
end;
local v34 = {};
v34.__index = v34;
v34.new = function()
    local v35 = setmetatable({}, v34);
    v35._cache = nil;
    v35._currentTests = v21.new();
    v35._currentTestCases = {};
    v35._done = false;
    v35._emitScheduled = false;
    v35._estimatedTime = 0;
    v35._showStatus = false;
    return v35;
end;
v34.onChange = function(v36, v37)
    v36._callback = v37;
end;
v34.runStarted = function(v38, v39, v40)
    v38._estimatedTime = if not not l_Boolean_0.toJSBoolean(v40) and l_Boolean_0.toJSBoolean(v40.estimatedTime) then v40.estimatedTime else 0;
    v38._showStatus = if not l_Boolean_0.toJSBoolean(v40) then v40 else v40.showStatus;
    v38._interval = l_setInterval_0(function()
        return v38:_tick();
    end, 1000);
    v38._aggregatedResults = v39;
    v38:_debouncedEmit();
end;
v34.runFinished = function(v41)
    v41._done = true;
    if l_Boolean_0.toJSBoolean(v41._interval) then
        l_clearInterval_0(v41._interval);
    end;
    v41:_emit();
end;
v34.addTestCaseResult = function(v42, v43, v44)
    table.insert(v42._currentTestCases, {
        test = v43,
        testCaseResult = v44
    });
    if l_Boolean_0.toJSBoolean(v42._showStatus) then
        v42:_debouncedEmit();
        return ;
    else
        v42:_emit();
        return ;
    end;
end;
v34.testStarted = function(v45, v46, v47)
    v45._currentTests:add(v46, v47);
    if v45._showStatus then
        v45:_debouncedEmit();
        return ;
    else
        v45:_emit();
        return ;
    end;
end;
v34.testFinished = function(v48, v49, v50, v51)
    local l_testFilePath_0 = v50.testFilePath;
    v48._aggregatedResults = v51;
    v48._currentTests:delete(l_testFilePath_0);
    v48._currentTestCases = l_Array_0.filter(v48._currentTestCases, function(v53)
        local l_test_0 = v53.test;
        if v49 ~= l_test_0.context.config then
            return true;
        else
            return l_test_0.path ~= l_testFilePath_0;
        end;
    end);
    v48:_debouncedEmit();
end;
v34.get = function(v55)
    if not l_Boolean_0.toJSBoolean(v55._cache) then
        if not l_Boolean_0.toJSBoolean(v55._done) then
            local v56 = "\n";
            l_Array_0.forEach(v55._currentTests:get(), function(v57)
                if l_Boolean_0.toJSBoolean(v57) then
                    local l_config_0 = v57.config;
                    local l_testPath_0 = v57.testPath;
                    local v60 = v20 .. (not l_Boolean_0.toJSBoolean(l_config_0.displayName) and "" or ("%s "):format((tostring(l_printDisplayName_0(l_config_0)))));
                    local v61 = l_len_0(v60);
                    assert(v61 ~= nil);
                    v56 = v56 .. l_wrapAnsiString_0(v60 .. l_trimAndFormatPath_0(v61, l_config_0, l_testPath_0, 0), 0) .. "\n";
                end;
            end);
            if not (not v55._showStatus or not l_Boolean_0.toJSBoolean(v55._aggregatedResults)) then
                v56 = v56 .. "\n" .. tostring(l_getSummary_0(v55._aggregatedResults, {
                    currentTestCases = v55._currentTestCases,
                    estimatedTime = v55._estimatedTime,
                    roundTime = true,
                    width = 0
                }));
            end;
            local v62 = 0;
            local v63 = 0;
            local v64 = utf8.len(v56);
            assert(v64 ~= nil);
            while v63 < v64 do
                if l_String_0.charCodeAt(v56, v63) == "\n" then
                    v62 = v62 + 1;
                end;
                v63 = v63 + 1;
            end;
            v55._cache = {
                clear = ("\n"):rep(v62),
                content = v56
            };
            return v55._cache;
        else
            return {
                clear = "",
                content = ""
            };
        end;
    else
        return v55._cache;
    end;
end;
v34._emit = function(v65)
    v65._cache = nil;
    if l_Boolean_0.toJSBoolean(v65._callback) then
        v65:_callback();
    end;
end;
v34._debouncedEmit = function(v66)
    if not l_Boolean_0.toJSBoolean(v66._emitScheduled) then
        v66._emitScheduled = true;
        l_setTimeout_0(function()
            v66:_emit();
            v66._emitScheduled = false;
        end, 100);
    end;
end;
v34._tick = function(v67)
    v67:_debouncedEmit();
end;
v9.default = v34;
return v9;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_Set_0 = v2.Set;
local v6 = {};
local v7 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local l_default_0 = require(l_Parent_0.BaseReporter).default;
local l_default_1 = require(l_Parent_0.getResultHeader).default;
local l_default_2 = require(l_Parent_0.getSnapshotSummary).default;
local _ = require(l_Parent_0.types);
local l_getSummary_0 = require(l_Parent_0.utils).getSummary;
local v15 = l_Set_0.new({
    "prepublish",
    "publish",
    "postpublish",
    "preinstall",
    "install",
    "postinstall",
    "preuninstall",
    "uninstall",
    "postuninstall",
    "preversion",
    "version",
    "postversion",
    "pretest",
    "test",
    "posttest",
    "prestop",
    "stop",
    "poststop",
    "prestart",
    "start",
    "poststart",
    "prerestart",
    "restart",
    "postrestart"
});
local v16 = nil;
local v17 = nil;
local v18 = nil;
local v19 = setmetatable({}, {
    __index = l_default_0
});
v19.__index = v19;
v19.filename = "SummaryReporter";
v19.new = function(v20, v21)
    local v22 = setmetatable(l_default_0.new(v21), v19);
    if v21 then
        v18 = v21.env.npm_lifecycle_script;
        v17 = v21.env.npm_lifecycle_event;
        v16 = v21.env.npm_config_user_agent;
    end;
    v22._globalConfig = v20;
    v22._estimatedTime = 0;
    return v22;
end;
v19._write = function(v23, v24)
    v23._process.stderr:write(v24);
end;
v19.onRunStart = function(v25, v26, v27)
    l_default_0.onRunStart(v25, v26, v27);
    v25._estimatedTime = v27.estimatedTime;
end;
v19.onRunComplete = function(v28, v29, v30)
    local l_numTotalTestSuites_0 = v30.numTotalTestSuites;
    local l_testResults_0 = v30.testResults;
    local l_wasInterrupted_0 = v30.wasInterrupted;
    if l_Boolean_0.toJSBoolean(l_numTotalTestSuites_0) then
        local v34 = l_testResults_0[#l_testResults_0];
        if not (((not l_Boolean_0.toJSBoolean(v28._globalConfig.verbose) or not l_Boolean_0.toJSBoolean(v34)) or l_Boolean_0.toJSBoolean(v34.numFailingTests)) or l_Boolean_0.toJSBoolean(v34.testExecError)) then
            v28:log("");
        end;
        v28:_printSummary(v30, v28._globalConfig);
        v28:_printSnapshotSummary(v30.snapshot, v28._globalConfig);
        if l_Boolean_0.toJSBoolean(l_numTotalTestSuites_0) then
            local v35 = l_getSummary_0(v30, {
                estimatedTime = v28._estimatedTime
            });
            if not l_Boolean_0.toJSBoolean(v28._globalConfig.silent) then
                v35 = v35 .. "\n" .. if not l_Boolean_0.toJSBoolean(l_wasInterrupted_0) then v28:_getTestSummary(v29, v28._globalConfig) else v7.bold(v7.red("Test run was interrupted."));
            end;
            v28:log(v35);
        end;
    end;
end;
v19._printSnapshotSummary = function(v36, v37, v38)
    if not (not (((l_Boolean_0.toJSBoolean(v37.added) or l_Boolean_0.toJSBoolean(v37.filesRemoved)) or l_Boolean_0.toJSBoolean(v37.unchecked)) or l_Boolean_0.toJSBoolean(v37.unmatched)) and not l_Boolean_0.toJSBoolean(v37.updated)) then
        local _ = nil;
        local v40 = not not l_Boolean_0.toJSBoolean(v17) and v17 or "";
        local v41 = not l_Boolean_0.toJSBoolean(v15:has(v40)) and "run " or "";
        local v42 = false;
        if typeof(v16) == "string" then
            v42 = string.match(v16 or "", "yarn") ~= nil;
        end;
        local v43 = not l_Boolean_0.toJSBoolean(v42) and "npm" or "yarn";
        local v44 = false;
        if typeof(v18) == "string" then
            v44 = l_Boolean_0.toJSBoolean(string.match(v18 or "", "jest"));
        end;
        l_Array_0.forEach(l_default_2(v37, v38, if not not l_Boolean_0.toJSBoolean(v40) and v44 then ("run `%s -u`"):format(v43 .. " " .. v41 .. v40 .. (not v42 and " --" or "")) else "re-run jest with `-u`"), function(v45)
            v36:log(v45);
        end);
        v36:log("");
    end;
end;
v19._printSummary = function(v46, v47, v48)
    if (v47.numFailedTests or 0) + (v47.numRuntimeErrorTestSuites or 0) > 0 and v47.numTotalTestSuites > 20 then
        v46:log(v7.bold("Summary of all failing tests"));
        l_Array_0.forEach(v47.testResults, function(v49)
            local l_failureMessage_0 = v49.failureMessage;
            if l_Boolean_0.toJSBoolean(l_failureMessage_0) then
                v46:_write(l_default_1(v49, v48) .. "\n" .. l_failureMessage_0 .. "\n");
            end;
        end);
        v46:log("");
    end;
end;
v19._getTestSummary = function(_, v52, v53)
    local function _()
        return v7.dim(" matching");
    end;
    local v55 = "";
    if not v53.runTestsByPath then
        if l_Boolean_0.toJSBoolean(v53.testPathPattern) then
            v55 = v7.dim(" matching");
        end;
    else
        v55 = v7.dim(" within paths");
    end;
    local v56 = "";
    if not v53.runTestsByPath then
        if v53.testNamePattern ~= nil then
            v56 = v7.dim(" with tests matching ") .. ("\"%s\""):format(v53.testNamePattern);
        end;
    else
        v56 = " " .. l_Array_0.join(l_Array_0.map(v53.nonFlagArgs, function(v57)
            return ("\"%s\""):format(v57);
        end), ", ");
    end;
    return v7.dim("Ran all test suites") .. v55 .. v56 .. if v52.size > 1 then v7.dim(" in ") .. tostring(v52.size) .. v7.dim(" projects") else "" .. v7.dim(".");
end;
v6.default = v19;
return v6;


local v0 = {};
local l_default_0 = require(script.getResultHeader).default;
local l_default_1 = require(script.getSnapshotStatus).default;
local l_default_2 = require(script.getSnapshotSummary).default;
local v4 = require(script.utils);
local l_formatTestPath_0 = v4.formatTestPath;
local l_getSummary_0 = v4.getSummary;
local l_printDisplayName_0 = v4.printDisplayName;
local l_relativePath_0 = v4.relativePath;
local l_trimAndFormatPath_0 = v4.trimAndFormatPath;
v0.BaseReporter = require(script.BaseReporter).default;
v0.DefaultReporter = require(script.DefaultReporter).default;
v0.SummaryReporter = require(script.SummaryReporter).default;
v0.VerboseReporter = require(script.VerboseReporter).default;
local _ = require(script.types);
v0.utils = {
    formatTestPath = l_formatTestPath_0,
    getResultHeader = l_default_0,
    getSnapshotStatus = l_default_1,
    getSnapshotSummary = l_default_2,
    getSummary = l_getSummary_0,
    printDisplayName = l_printDisplayName_0,
    relativePath = l_relativePath_0,
    trimAndFormatPath = l_trimAndFormatPath_0
};
return v0;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Boolean_0 = v2.Boolean;
local l_String_0 = v2.String;
local v6 = {};
local l_path_0 = require(l_Parent_1.Path).path;
local v8 = require(l_Parent_1.ChalkLua);
local function v10(v9)
    return v9:gsub("\\", "/");
end;
local _ = require(l_Parent_1.JestTestResult);
local _ = require(l_Parent_1.JestTypes);
local v13 = require(l_Parent_1.JestUtil);
local l_formatTime_0 = v13.formatTime;
local l_pluralize_0 = v13.pluralize;
local _ = require(l_Parent_0.types);
local v17 = nil;
local v18 = nil;
v6.printDisplayName = function(v19)
    local l_displayName_0 = v19.displayName;
    local function v21(...)
        return v8.reset(v8.inverse(v8.white(...)));
    end;
    if l_Boolean_0.toJSBoolean(l_displayName_0) then
        local v22 = nil;
        local v23 = nil;
        if l_displayName_0 ~= nil then
            v22 = l_displayName_0.name;
            v23 = l_displayName_0.color;
        end;
        return if not (v8.supportsColor ~= nil) or v8.supportsColor == true then (function(...)
            if l_Boolean_0.toJSBoolean(v23) and v8[v23] ~= nil then
                return v8.reset(v8.inverse(v8[v23](...)));
            else
                return v21(...);
            end;
        end)((" %s "):format(v22)) else v22;
    else
        return "";
    end;
end;
v6.trimAndFormatPath = function(v24, v25, v26, v27)
    local v28 = v27 - v24;
    local v29 = v17(v25, v26);
    local l_basename_0 = v29.basename;
    local l_dirname_0 = v29.dirname;
    local v32 = utf8.len(l_dirname_0 .. l_path_0.sep .. l_basename_0);
    assert(v32 ~= nil);
    if v32 <= v28 then
        return v10(v8.dim(l_dirname_0 .. l_path_0.sep) .. v8.bold(l_basename_0));
    else
        local v33 = utf8.len(l_basename_0);
        assert(v33);
        if v33 + 4 < v28 then
            return v10(v8.dim("..." .. l_String_0.slice(l_dirname_0, (utf8.len(l_dirname_0) - ((v28 - 4) - v33)) + 1, utf8.len(l_dirname_0) + 1) .. l_path_0.sep) .. v8.bold(l_basename_0));
        elseif v33 + 4 == v28 then
            return v10(v8.dim("..." .. l_path_0.sep) .. v8.bold(l_basename_0));
        else
            return v10(v8.bold("..." .. l_String_0.slice(l_basename_0, (v33 - v28) - 4, v33 + 1)));
        end;
    end;
end;
v6.formatTestPath = function(v34, v35)
    local v36 = v17(v34, v35);
    return v10(v8.dim(v36.dirname .. l_path_0.sep) .. v8.bold(v36.basename));
end;
v17 = function(_, v38)
    return {
        basename = l_path_0:basename(v38),
        dirname = l_path_0:dirname(v38)
    };
end;
v6.relativePath = v17;
local function v47(v39)
    if v39 == nil then
        v39 = {};
    end;
    local v40 = 0;
    local v41 = 0;
    local v42 = 0;
    local v43 = 0;
    local v44 = 0;
    l_Array_0.forEach(v39, function(v45)
        local l_status_0 = v45.testCaseResult.status;
        if l_status_0 == "failed" then
            v40 = v40 + 1;
        elseif l_status_0 == "passed" then
            v41 = v41 + 1;
        elseif l_status_0 == "skipped" then
            v42 = v42 + 1;
        elseif l_status_0 == "todo" then
            v43 = v43 + 1;
        end;
        v44 = v44 + 1;
    end);
    return {
        numFailingTests = v40,
        numPassingTests = v41,
        numPendingTests = v42,
        numTodoTests = v43,
        numTotalTests = v44
    };
end;
v6.getSummary = function(v48, v49)
    local v50 = (DateTime.now().UnixTimestampMillis - v48.startTime) / 1000;
    if not (not (v49 ~= nil) or not v49.roundTime) then
        v50 = math.floor(v50);
    end;
    local v51 = v47(if v49 ~= nil then v49.currentTestCases else nil);
    local v52 = v49 ~= nil and v49.estimatedTime or 0;
    local l_snapshot_0 = v48.snapshot;
    local l_added_0 = l_snapshot_0.added;
    local l_unmatched_0 = l_snapshot_0.unmatched;
    local l_unchecked_0 = l_snapshot_0.unchecked;
    local l_filesRemoved_0 = l_snapshot_0.filesRemoved;
    local l_didUpdate_0 = l_snapshot_0.didUpdate;
    local l_matched_0 = l_snapshot_0.matched;
    local l_total_0 = l_snapshot_0.total;
    local l_updated_0 = l_snapshot_0.updated;
    local v62 = v48.numFailedTestSuites or 0;
    local v63 = v48.numPassedTestSuites or 0;
    local v64 = v48.numPendingTestSuites or 0;
    local v65 = v62 + v63;
    local v66 = v48.numTotalTestSuites or 0;
    local v67 = v48.numFailedTests or 0;
    local v68 = v48.numPassedTests or 0;
    local v69 = v48.numPendingTests or 0;
    local v70 = v48.numTodoTests or 0;
    local v71 = v48.numTotalTests or 0;
    local v72 = v49 ~= nil and v49.width or 0;
    local v73 = v8.bold("Test Suites: ") .. if v62 > 0 then v8.bold(v8.red(("%d failed"):format(v62))) .. ", " else "" .. if v64 > 0 then v8.bold(v8.yellow(("%d skipped"):format(v64))) .. ", " else "" .. if v63 > 0 then v8.bold(v8.green(("%d passed"):format(v63))) .. ", " else "" .. if v65 ~= v66 then tostring(v65) .. " of " .. tostring(v66) else tostring(v66) .. " total";
    local v74 = v67 + v51.numFailingTests;
    local v75 = v69 + v51.numPendingTests;
    local v76 = v70 + v51.numTodoTests;
    local v77 = v68 + v51.numPassingTests;
    return l_Array_0.join({
        v73,
        v8.bold("Tests:       ") .. if v74 > 0 then v8.bold(v8.red(("%d failed"):format(v74))) .. ", " else "" .. if v75 > 0 then v8.bold(v8.yellow(("%d skipped"):format(v75))) .. ", " else "" .. if v76 > 0 then v8.bold(v8.magenta(("%d todo"):format(v76))) .. ", " else "" .. if v77 > 0 then v8.bold(v8.green(("%d passed"):format(v77))) .. ", " else "" .. ("%d total"):format(v71 + v51.numTotalTests),
        v8.bold("Snapshots:   ") .. if l_unmatched_0 > 0 then v8.bold(v8.red(("%d failed"):format(l_unmatched_0))) .. ", " else "" .. ((not l_Boolean_0.toJSBoolean(l_unchecked_0) or l_didUpdate_0) and "" or v8.bold(v8.yellow(("%d obsolete"):format(l_unchecked_0))) .. ", ") .. if not not l_Boolean_0.toJSBoolean(l_unchecked_0) and l_didUpdate_0 then v8.bold(v8.green(("%d removed"):format(l_unchecked_0))) .. ", " else "" .. ((not l_Boolean_0.toJSBoolean(l_filesRemoved_0) or l_didUpdate_0) and "" or v8.bold(v8.yellow(l_pluralize_0("file", l_filesRemoved_0) .. " obsolete")) .. ", ") .. if not not l_Boolean_0.toJSBoolean(l_filesRemoved_0) and l_didUpdate_0 then v8.bold(v8.green(l_pluralize_0("file", l_filesRemoved_0) .. " removed")) .. ", " else "" .. (not l_Boolean_0.toJSBoolean(l_updated_0) and "" or v8.bold(v8.green(("%d updated"):format(l_updated_0))) .. ", ") .. (not l_Boolean_0.toJSBoolean(l_added_0) and "" or v8.bold(v8.green(("%d written"):format(l_added_0))) .. ", ") .. (not l_Boolean_0.toJSBoolean(l_matched_0) and "" or v8.bold(v8.green(("%d passed"):format(l_matched_0))) .. ", ") .. ("%d total"):format(l_total_0),
        (v18(v50, v52, v72))
    }, "\n");
end;
v18 = function(v78, v79, v80)
    local v81 = v8.bold("Time:") .. ("        %s"):format(if not not l_Boolean_0.toJSBoolean(v79) and v79 + 1 <= v78 then v8.bold(v8.yellow(l_formatTime_0(v78, 0))) else l_formatTime_0(v78, 0));
    if v78 < v79 then
        v81 = v81 .. (", estimated %s"):format(l_formatTime_0(v79, 0));
    end;
    local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
    local v83 = false;
    if v79 > 2 then
        v83 = false;
        if v78 < v79 then
            v83 = v80;
        end;
    end;
    if l_toJSBoolean_0(v83) then
        l_toJSBoolean_0 = math.min(40, v80);
        v83 = math.min(math.floor((v78 / v79) * l_toJSBoolean_0), l_toJSBoolean_0);
        if l_toJSBoolean_0 >= 2 then
            v81 = v81 .. "\n" .. v8.green("\226\150\136"):rep(v83) .. tostring(v8.white("\226\150\136"):rep(l_toJSBoolean_0 - v83));
        end;
    end;
    return v81;
end;
v6.wrapAnsiString = function(v84, _)
    return v84;
end;
return v6;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_Map_0 = v1.Map;
local l_console_0 = v1.console;
local v7 = require(l_Parent_0.Promise);
local v8 = {};
local l_default_0 = require(l_Parent_0.Emittery).default;
local l_default_1 = require(l_Parent_0.Throat).default;
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local l_deepCyclicCopy_0 = require(l_Parent_0.JestUtil).deepCyclicCopy;
local l_default_2 = require(script.runTest).default;
local _ = require(script.types);
local v16 = nil;
local v17 = {};
v17.__index = v17;
v17.new = function(v18, v19)
    local v20 = setmetatable({}, v17);
    v20.eventEmitter = l_default_0.new();
    v20.__PRIVATE_UNSTABLE_API_supportsEventEmitters__ = true;
    v20._globalConfig = v18;
    v20._context = not not l_Boolean_0.toJSBoolean(v19) and v19 or {};
    v20._loadedModuleFns = l_Map_0.new();
    return v20;
end;
v17.runTests = function(v21, v22, v23, v24, v25, v26, v27)
    return v7.resolve():andThen(function()
        if not l_Boolean_0.toJSBoolean(v27.serial) then
            return (v21:_createParallelTestRun(v22, v23, v24, v25, v26):expect());
        else
            return (v21:_createInBandTestRun(v22, v23, v24, v25, v26):expect());
        end;
    end);
end;
v17._createInBandTestRun = function(v28, v29, v30, v31, v32, v33)
    return v7.resolve():andThen(function()
        local v34 = l_default_1(1);
        return l_Array_0.reduce(v29, function(v35, v36)
            return v34(function()
                return (v35:andThen(function()
                    return v7.resolve():andThen(function()
                        if v30:isInterrupted() then
                            error(v16.new());
                        end;
                        local v37 = nil;
                        if v31 ~= nil then
                            v31(v36):expect();
                            return l_default_2(v36.script, v28._globalConfig, v36.context.config, nil, v28._context, nil, v28._loadedModuleFns);
                        else
                            v37 = function(v38, v39)
                                return v28.eventEmitter:emit(v38, l_deepCyclicCopy_0(v39, {
                                    keepPrototype = false
                                }));
                            end;
                            v28.eventEmitter:emit("test-file-start", {
                                v36
                            }):expect();
                            return l_default_2(v36.script, v28._globalConfig, v36.context.config, nil, v28._context, v37, v28._loadedModuleFns);
                        end;
                    end);
                end):andThen(function(v40)
                    if v32 ~= nil then
                        return v32(v36, v40);
                    else
                        return v28.eventEmitter:emit("test-file-success", {
                            v36,
                            v40
                        });
                    end;
                end):catch(function(v41)
                    if v33 ~= nil then
                        return v33(v36, v41);
                    else
                        return v28.eventEmitter:emit("test-file-failure", {
                            v36,
                            v41
                        });
                    end;
                end));
            end);
        end, v7.resolve());
    end);
end;
v17._createParallelTestRun = function(v42, v43, v44, v45, v46, v47)
    return v7.resolve():andThen(function()
        l_console_0.warn("Parallel tests run not implemented yet\nRunning tests in band instead");
        return v42:_createInBandTestRun(v43, v44, v45, v46, v47);
    end);
end;
v17.on = function(v48, v49, v50)
    return v48.eventEmitter:on(v49, v50);
end;
v17.cleanup = function(v51)
    v51._loadedModuleFns:forEach(function(v52)
        local v53 = v52[3];
        if v53 ~= nil then
            v53();
        end;
    end);
end;
v8.default = v17;
v16 = setmetatable({}, {
    __index = l_Error_0
});
v16.__index = v16;
v16.new = function(v54)
    local v55 = setmetatable(l_Error_0.new(v54), v16);
    v55.name = "CancelRun";
    return v55;
end;
return v8;