local l_Parent_0 = script.Parent.Parent.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 v5 = require(l_Parent_0.Promise);
local v6 = nil;
local v7 = nil;
local v8 = nil;
local v9 = nil;
local v10 = nil;
local v11 = require(l_Parent_0.RegExp);
local function v16(v12)
    if v12 then
        local l_v12_0 = v12;
        local v14 = "";
        local v15 = v11("^(\\s*LoadedCode.*:\\d+)?(: )?(.*)$"):exec(v12);
        if v15 then
            l_v12_0 = v15[4];
            v14 = v15[2];
        end;
        return {
            message = l_v12_0,
            stack = v14
        };
    else
        return {
            message = "",
            stack = ""
        };
    end;
end;
local v17 = {};
local l_dedent_0 = require(l_Parent_0.RobloxShared).dedent;
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local v21 = require(l_Parent_0.JestUtil);
local l_ErrorWithStack_0 = v21.ErrorWithStack;
local l_convertDescriptorToString_0 = v21.convertDescriptorToString;
local l_formatTime_0 = v21.formatTime;
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local v26 = require(script.Parent.state_);
local l_ROOT_DESCRIBE_BLOCK_NAME_0 = v26.ROOT_DESCRIBE_BLOCK_NAME;
local l_getState_0 = v26.getState;
local function _(v29)
    return debug.info(v29, "a") > 1;
end;
local _ = function(_)
    return false;
end;
v17.makeDescribe = function(v33, v34, v35)
    local l_v35_0 = v35;
    if not (not (v34 ~= nil) or l_Boolean_0.toJSBoolean(v35)) then
        l_v35_0 = v34.mode;
    end;
    return {
        type = "describeBlock",
        children = {},
        hooks = {},
        mode = l_v35_0,
        name = l_convertDescriptorToString_0(v33),
        parent = v34,
        tests = {}
    };
end;
v17.makeTest = function(v37, v38, v39, v40, v41, v42)
    return {
        type = "test",
        asyncError = v42,
        duration = nil,
        errors = {},
        fn = v37,
        invocations = 0,
        mode = v38,
        name = l_convertDescriptorToString_0(v39),
        parent = v40,
        retryReasons = {},
        seenDone = false,
        startedAt = nil,
        status = nil,
        timeout = v41
    };
end;
local function v43(v44)
    local v45 = l_getState_0();
    local l_hasFocusedTests_0 = v45.hasFocusedTests;
    local l_testNamePattern_0 = v45.testNamePattern;
    return l_Array_0.some(v44.children, function(v48)
        if v48.type == "describeBlock" then
            return (v43(v48));
        else
            local v49 = true;
            if v48.mode ~= "skip" then
                if l_hasFocusedTests_0 then
                    v49 = true;
                    if not (v48.mode == "only") then
                        goto label0;
                    end;
                end;
                v49 = l_testNamePattern_0 and not l_testNamePattern_0:test(v7(v48));
            end;
            ::label0::;
            return not v49;
        end;
    end);
end;
v17.getAllHooksForDescribe = function(v50)
    local v51 = {
        afterAll = {},
        beforeAll = {}
    };
    local v52 = l_getState_0();
    local l_hasFocusedTests_1 = v52.hasFocusedTests;
    local l_testNamePattern_1 = v52.testNamePattern;
    local l_l_testNamePattern_1_0 = l_testNamePattern_1 --[[ copy: 5 -> 7 ]];
    if l_Array_0.some(v50.children, function(v56)
        if v56.type == "describeBlock" then
            return (v43(v56));
        else
            local v57 = true;
            if v56.mode ~= "skip" then
                if l_hasFocusedTests_1 then
                    v57 = true;
                    if not (v56.mode == "only") then
                        goto label1;
                    end;
                end;
                v57 = l_l_testNamePattern_1_0 and not l_l_testNamePattern_1_0:test(v7(v56));
            end;
            ::label1::;
            return not v57;
        end;
    end) then
        for _, v59 in ipairs(v50.hooks) do
            if v59.type == "beforeAll" then
                table.insert(v51.beforeAll, v59);
            elseif v59.type == "afterAll" then
                table.insert(v51.afterAll, v59);
            end;
        end;
    end;
    return v51;
end;
v17.getEachHooksForTest = function(v60)
    local v61 = {
        afterEach = {},
        beforeEach = {}
    };
    local l_parent_0 = v60.parent;
    while true do
        local v63 = {};
        local v64 = nil;
        for _, v66 in ipairs(l_parent_0.hooks) do
            v64 = v66;
            if v64.type == "beforeEach" then
                table.insert(v63, v64);
            elseif v64.type == "afterEach" then
                table.insert(v61.afterEach, v64);
            end;
        end;
        v61.beforeEach = l_Array_0.concat({}, v63, v61.beforeEach);
        l_parent_0 = l_parent_0.parent;
        if not l_Boolean_0.toJSBoolean(l_parent_0) then
            break;
        end;
    end;
    return v61;
end;
local function v67(v68)
    return l_Array_0.some(v68.children, function(v69)
        local v70 = true;
        if v69.type ~= "test" then
            v70 = v67(v69);
        end;
        return v70;
    end);
end;
v17.describeBlockHasTests = v67;
local function v73(v71, v72)
    return ("Exceeded timeout of %s for a %s.\nUse jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."):format(l_formatTime_0(v71), not v72 and "test" or "hook");
end;
local l_setTimeout_0 = v1.setTimeout;
local l_clearTimeout_0 = v1.clearTimeout;
local function _(v76)
    return (l_Boolean_0.toJSBoolean(v76) and l_Boolean_0.toJSBoolean(v76.message)) and l_Boolean_0.toJSBoolean(v76.stack);
end;
v17.callAsyncCircusFn = function(v78, v79, v80)
    local l_isHook_0 = v80.isHook;
    local l_timeout_0 = v80.timeout;
    local v83 = nil;
    local v84 = false;
    local l_fn_0 = v78.fn;
    local l_asyncError_0 = v78.asyncError;
    return v5.new(function(v87, v88)
        v83 = l_setTimeout_0(function()
            return v88(v73(l_timeout_0, l_isHook_0));
        end, l_timeout_0);
        if not (debug.info(l_fn_0, "a") > 1) then
            local v89 = nil;
            local l_l_fn_0_0 = l_fn_0;
            if not false then
                local v91;
                v91, l_l_fn_0_0 = pcall(l_fn_0, v79);
                if v91 then
                    v89 = l_l_fn_0_0;
                else
                    v88(l_l_fn_0_0);
                    return ;
                end;
            else
                error("Generator functions are not supported in Lua");
            end;
            if (typeof(v89) == "table" and v89 ~= nil) and typeof(v89.andThen) == "function" then
                v89:andThen(function()
                    return v87();
                end, v88);
                return ;
            elseif not l_isHook_0 and v89 ~= nil then
                v88((l_dedent_0(("\ntest functions can only return Promise or undefined.\n      Returned value: %s\n      "):format(l_format_0(v89, {
                    maxDepth = 3
                })))));
                return ;
            else
                v87();
                return ;
            end;
        else
            local v92 = nil;
            local function v93(v94)
                local v95 = l_ErrorWithStack_0.new(nil, v93);
                if v84 or not v78.seenDone then
                    v78.seenDone = true;
                else
                    v95.message = "Expected done to be called once, but it was called multiple times.";
                    if l_Boolean_0.toJSBoolean(v94) then
                        v95.message = v95.message .. " Reason: " .. l_format_0(v94, {
                            maxDepth = 3
                        });
                    end;
                    v88(v95);
                    error(v95);
                end;
                v5.delay(0):andThen(function()
                    if v92 ~= nil then
                        l_asyncError_0.message = l_dedent_0(("\n      Test functions cannot both take a 'done' callback and return something. Either use a 'done' callback, or return a promise.\n      Returned value: %s\n      "):format(l_format_0(v92, {
                            maxDepth = 3
                        })));
                        return v88(l_asyncError_0);
                    else
                        local v96 = nil;
                        local l_v94_0 = v94;
                        if not ((l_Boolean_0.toJSBoolean(l_v94_0) and l_Boolean_0.toJSBoolean(l_v94_0.message)) and l_Boolean_0.toJSBoolean(l_v94_0.stack)) then
                            v96 = v95;
                            v95.message = ("Failed: %s"):format(l_format_0(v94, {
                                maxDepth = 3
                            }));
                        else
                            v96 = v94;
                        end;
                        if not (not v84 or not l_Boolean_0.toJSBoolean(v94)) then
                            v96.message = "Caught error after test environment was torn down\n\n" .. v96.message;
                            error(v96);
                        end;
                        if not l_Boolean_0.toJSBoolean(v94) then
                            return (v87());
                        else
                            return (v88(v96));
                        end;
                    end;
                end);
            end;
            v92 = l_fn_0(v79, v93);
            return ;
        end;
    end):andThen(function()
        v84 = true;
        l_clearTimeout_0(v83);
    end):catch(function(v98)
        v84 = true;
        l_clearTimeout_0(v83);
        if typeof(v98) == "string" then
            local v99 = v16(v98);
            local v100 = l_Error_0.new(v99.message);
            v100.__stack = v99.stack;
            l_Error_0.__recalculateStacktrace(v100);
            error(v100);
        end;
        error(v98);
    end);
end;
v17.getTestDuration = function(v101)
    local l_startedAt_0 = v101.startedAt;
    if typeof(l_startedAt_0) == "number" then
        return DateTime.now().UnixTimestampMillis - l_startedAt_0;
    else
        return nil;
    end;
end;
v17.makeRunResult = function(v103, v104)
    return {
        testResults = v6(v103),
        unhandledErrors = l_Array_0.map(l_Array_0.map(v104, v8), v9)
    };
end;
local function v111(v105)
    local _ = l_getState_0().includeTestLocationInResult;
    local v107 = {};
    local l_v105_0 = v105;
    local l_status_0 = v105.status;
    v10(l_status_0, "Status should be present after tests are run.");
    while true do
        table.insert(v107, 1, l_v105_0.name);
        l_v105_0 = l_v105_0.parent;
        if not (l_v105_0 ~= nil) then
            break;
        end;
    end;
    local v110 = l_Array_0.map(v105.errors, v8);
    return {
        duration = v105.duration,
        errors = l_Array_0.map(v110, v9),
        errorsDetailed = v110,
        invocations = v105.invocations,
        location = nil,
        retryReasons = l_Array_0.map(l_Array_0.map(v105.retryReasons, v8), v9),
        status = l_status_0,
        testPath = l_Array_0.from(v107)
    };
end;
v17.makeSingleTestResult = v111;
v6 = function(v112)
    local v113 = {};
    for _, v115 in ipairs(v112.children) do
        if v115.type == "describeBlock" then
            v113 = l_Array_0.concat(v113, v6(v115));
        elseif v115.type == "test" then
            table.insert(v113, (v111(v115)));
        end;
    end;
    return v113;
end;
v7 = function(v116)
    local v117 = {};
    local l_v116_0 = v116;
    while true do
        table.insert(v117, 1, l_v116_0.name);
        l_v116_0 = l_v116_0.parent;
        if not (l_v116_0 ~= nil) then
            break;
        end;
    end;
    table.remove(v117, 1);
    return l_Array_0.join(v117, " ");
end;
v17.getTestID = v7;
v8 = function(v119)
    local v120 = nil;
    local v121 = nil;
    if not l_Array_0.isArray(v119) then
        v120 = v119;
        v121 = l_Error_0.new();
    else
        v120 = v119[1];
        v121 = v119[2];
    end;
    if not (v120 ~= nil) or typeof(v120.stack) ~= "string" and not l_Boolean_0.toJSBoolean(v120.message) then
        v121.message = ("thrown: %s"):format(l_format_0(v120, {
            maxDepth = 3
        }));
        return v121;
    else
        return v120;
    end;
end;
v9 = function(v122)
    if typeof(v122.stack) == "string" then
        if not string.find(v122.stack, v122.message, nil, true) then
            return v122.message .. "\n" .. v122.stack;
        else
            return v122.stack;
        end;
    else
        return v122.message;
    end;
end;
local function v123(v124, v125, v126)
    for _, v128 in ipairs(v124.children) do
        if v128.type == "describeBlock" then
            v123(v128, v125, v126);
        elseif v128.type == "test" then
            table.insert(v128.errors, {
                v125,
                v126
            });
        end;
    end;
end;
v17.addErrorToEachTestUnderDescribe = v123;
v10 = function(v129, v130)
    if not l_Boolean_0.toJSBoolean(v129) then
        error(l_Error_0.new(v130));
    end;
end;
v17.invariant = v10;
v17.parseSingleTestResult = function(v131)
    local v132 = nil;
    v132 = v131.status == "skip" and "pending" or (v131.status == "todo" and "todo" or (#v131.errors > 0 and "failed" or "passed"));
    local v134 = l_Array_0.filter(v131.testPath, function(v133)
        return v133 ~= l_ROOT_DESCRIBE_BLOCK_NAME_0;
    end);
    local v135 = table.remove(v134);
    return {
        ancestorTitles = v134,
        duration = v131.duration,
        failureDetails = v131.errorsDetailed,
        failureMessages = l_Array_0.from(v131.errors),
        fullName = if not l_Boolean_0.toJSBoolean(v135) then l_Array_0.join(v134, " ") else l_Array_0.join(l_Array_0.concat(v134, v135), " "),
        invocations = v131.invocations,
        location = v131.location,
        numPassingAsserts = 0,
        retryReasons = l_Array_0.from(v131.retryReasons),
        status = v132,
        title = v131.testPath[#v131.testPath]
    };
end;
return v17;


local v0 = require(script.circus);
v0.runner = require(script.runner);
return v0;


local l_Parent_0 = script.Parent.Parent;
local v1 = {};
local _ = require(l_Parent_0.JestTypes);
v1.default = {
    automock = false,
    bail = 0,
    changedFilesWithAncestor = false,
    ci = false,
    clearMocks = false,
    coveragePathIgnorePatterns = {},
    expand = false,
    globals = {},
    injectGlobals = true,
    listTests = false,
    maxConcurrency = 5,
    maxWorkers = "50%",
    noStackTrace = false,
    notify = false,
    passWithNoTests = false,
    resetMocks = false,
    resetModules = false,
    restoreMocks = false,
    roots = {
        "<rootDir>"
    },
    runTestsByPath = false,
    runner = "jest-runner",
    setupFiles = {},
    setupFilesAfterEnv = {},
    skipFilter = false,
    slowTestThreshold = 5,
    snapshotSerializers = {},
    testEnvironment = l_Parent_0.JestEnvironmentLuau,
    testEnvironmentOptions = {},
    testFailureExitCode = 1,
    testLocationInResults = false,
    testMatch = {
        "**/__tests__/**/*",
        "**/?(*.)+(spec|test)"
    },
    testPathIgnorePatterns = {},
    testRegex = {},
    timers = "real",
    useStderr = false,
    watch = false,
    watchPathIgnorePatterns = {},
    watchman = true
};
return v1;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_String_0 = v1.String;
local v5 = {};
local v6 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local l_ValidationError_0 = require(l_Parent_0.JestValidate).ValidationError;
local v10 = require(script.Parent.utils);
local l_BULLET_0 = v10.BULLET;
local l_DOCUMENTATION_NOTE_0 = v10.DOCUMENTATION_NOTE;
local l_JSON_0 = require(l_Parent_0.RobloxShared).nodeUtils.JSON;
local v14 = nil;
local v15 = {
    "table",
    "ModuleScript"
};
local v16 = ("%sReporter Validation Error"):format((tostring(l_BULLET_0)));
local function v19(v17, v18)
    return l_ValidationError_0.new(v16, ("  Reporter at index %s must be of type:\n"):format((tostring(v17))) .. ("    %s\n"):format(v6.green(v6.bold(l_Array_0.join(v15, " or ")))) .. "  but instead received:\n" .. ("    %s"):format(v6.red(v6.bold(l_getType_0(v18)))), l_DOCUMENTATION_NOTE_0);
end;
v5.createReporterError = v19;
local function v26(v20, v21, v22, v23, v24, v25)
    return l_ValidationError_0.new(v16, ("  Unexpected value for %s "):format(v25) .. ("at index %s of reporter at index %s\n"):format(tostring(v22), (tostring(v21))) .. "  Expected:\n" .. ("    %s\n"):format(v6.red(v6.bold(v24))) .. "  Got:\n" .. ("    %s\n"):format(v6.green(v6.bold(l_getType_0(v23)))) .. "  Reporter configuration:\n" .. ("    %s"):format(v6.green(v6.bold(l_Array_0.join(l_String_0.split(l_JSON_0.stringify(v20, nil, 2), "\n"), "\n    ")))), l_DOCUMENTATION_NOTE_0);
end;
v5.createArrayReporterError = v26;
v5.validateReporters = function(v27)
    return l_Array_0.every(v27, function(v28, v29)
        if not l_Boolean_0.toJSBoolean(l_Array_0.isArray(v28)) then
            if typeof(v28) ~= "string" then
                error(v19(v29, v28));
            end;
        else
            v14(v28, v29);
        end;
        return true;
    end);
end;
v14 = function(v30, v31)
    local v32, v33 = table.unpack(v30, 1, 2);
    if typeof(v32) == "Instance" and v32:isA("ModuleScript") then
        if typeof(v33) ~= "table" then
            error(v26(v30, v31, 1, v33, "table", "Reporter Configuration"));
        end;
        return ;
    else
        error(v26(v30, v31, 0, v32, "ModuleScript", "Path"));
        return ;
    end;
end;
return v5;


local _ = require(script.Parent.Parent.LuauPolyfill);
local v1 = {};
local v2 = {
    "red",
    "green",
    "yellow",
    "blue",
    "magenta",
    "cyan",
    "white"
};
v1.getDisplayNameColor = function(v3)
    if v3 == nil then
        return "white";
    else
        return v2[math.random(#v2)];
    end;
end;
return v1;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
v2.default = function(_, _)
    return 1;
end;
return v2;


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_Object_0 = v1.Object;
local v7 = require(l_Parent_0.Promise);
local v8 = {};
local v9 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local v11 = require(script.constants);
local l_default_0 = require(script.normalize).default;
local l_default_1 = require(script.readConfigFileAndSetRootDir).default;
local l_default_2 = require(script.resolveConfigPath).default;
local l_isJSONString_0 = require(script.utils).isJSONString;
v8.isJSONString = require(script.utils).isJSONString;
v8.normalize = require(script.normalize).default;
v8.defaults = require(script.Defaults).default;
v8.constants = v11;
local l_JSON_0 = require(l_Parent_0.RobloxShared).nodeUtils.JSON;
local v17 = nil;
local v18 = nil;
local function v34(v19, v20, v21, v22, _, v24, v25)
    if v24 == nil then
        v24 = math.huge;
    end;
    if v25 == nil then
        v25 = false;
    end;
    return v7.resolve():andThen(function()
        local v26 = nil;
        local v27 = nil;
        if typeof(v21) ~= "Instance" and typeof(v21) ~= "string" then
            error(l_Error_0.new("Jest: configuration as an object not supported yet"));
        elseif not l_isJSONString_0(v20.config) then
            if not v22 and typeof(v20.config) == "string" then
                v27 = l_default_2(v20.config, v19, v25);
                v26 = l_default_1(v27):expect();
            else
                v27 = l_default_2(v21, v19, v25);
                v26 = l_default_1(v27):expect();
            end;
        else
            local v28 = nil;
            do
                local l_v28_0 = v28;
                if not pcall(function()
                    l_v28_0 = l_JSON_0.parse(v20.config);
                end) then
                    error(l_Error_0.new("There was an error while parsing the `--config` argument as a JSON string."));
                end;
                l_v28_0.rootDir = not not l_Boolean_0.toJSBoolean(l_v28_0.rootDir) and l_v28_0.rootDir or v21;
                v26 = l_v28_0;
            end;
        end;
        local v30 = l_default_0(v26, v20, v27, v24):expect();
        local l_options_0 = v30.options;
        local l_hasDeprecationWarnings_0 = v30.hasDeprecationWarnings;
        local v33 = v17(l_options_0);
        return {
            configPath = v27,
            globalConfig = v33.globalConfig,
            hasDeprecationWarnings = l_hasDeprecationWarnings_0,
            projectConfig = v33.projectConfig
        };
    end);
end;
v8.readConfig = v34;
v17 = function(v35)
    return {
        globalConfig = l_Object_0.freeze({
            bail = v35.bail,
            changedSince = v35.changedSince,
            expand = v35.expand,
            filter = v35.filter,
            json = v35.json,
            listTests = v35.listTests,
            maxConcurrency = v35.maxConcurrency,
            maxWorkers = v35.maxWorkers,
            noStackTrace = v35.noStackTrace,
            nonFlagArgs = v35.nonFlagArgs,
            outputFile = v35.outputFile,
            passWithNoTests = v35.passWithNoTests,
            projects = v35.projects,
            rootDir = v35.rootDir,
            runTestsByPath = v35.runTestsByPath,
            silent = v35.silent,
            skipFilter = v35.skipFilter,
            snapshotFormat = v35.snapshotFormat,
            testFailureExitCode = v35.testFailureExitCode,
            testNamePattern = v35.testNamePattern,
            testPathPattern = v35.testPathPattern,
            testTimeout = v35.testTimeout,
            updateSnapshot = v35.updateSnapshot,
            verbose = v35.verbose
        }),
        projectConfig = l_Object_0.freeze({
            automock = v35.automock,
            clearMocks = v35.clearMocks,
            displayName = v35.displayName,
            id = v35.id,
            injectGlobals = v35.injectGlobals,
            resetMocks = v35.resetMocks,
            resetModules = v35.resetModules,
            restoreMocks = v35.restoreMocks,
            rootDir = v35.rootDir,
            roots = v35.roots,
            runner = v35.runner,
            runtime = v35.runtime,
            sandboxInjectedGlobals = v35.sandboxInjectedGlobals,
            setupFiles = v35.setupFiles,
            setupFilesAfterEnv = v35.setupFilesAfterEnv,
            slowTestThreshold = v35.slowTestThreshold,
            snapshotFormat = v35.snapshotFormat,
            snapshotSerializers = v35.snapshotSerializers,
            testEnvironment = v35.testEnvironment,
            testEnvironmentOptions = v35.testEnvironmentOptions,
            testLocationInResults = v35.testLocationInResults,
            testMatch = v35.testMatch,
            testPathIgnorePatterns = v35.testPathIgnorePatterns,
            testRegex = v35.testRegex,
            timers = v35.timers
        })
    };
end;
v18 = function(v36, v37)
    if #v37 <= 1 then
        return ;
    else
        local v38 = l_Map_0.new();
        for _, v40 in v36, nil, nil do
            local l_configPath_0 = v40.configPath;
            if v38:has(l_configPath_0) then
                error(l_Error_0.new((("Whoops %s:\n\n  Project 1: %s\n  Project 2: %s\n\nThis usually means that your %s config includes a directory that doesn't have any configuration recognizable by Jest. Please fix it.\n"):format(v9.bold((tostring(l_configPath_0))), v9.bold((tostring(v37[l_Array_0.findIndex(v36, function(v42)
                    return v42 == v40;
                end)]))), tostring(v9.bold((tostring(v37[l_Array_0.findIndex(v36, function(v43)
                    return v43 == v38:get(l_configPath_0);
                end)])))), (tostring(v9.bold("\"projects\"")))))));
            end;
            if l_configPath_0 ~= nil then
                v38:set(l_configPath_0, v40);
            end;
        end;
        return ;
    end;
end;
v8.readConfigs = function(v44, v45, v46)
    return v7.resolve():andThen(function()
        local v47 = nil;
        local v48 = nil;
        local v49 = {};
        local l_v46_0 = v46;
        local v51 = nil;
        if #v46 == 1 then
            local l_v44_0 = v44;
            local l_v45_0 = v45;
            local v54 = l_v46_0[1];
            local v55 = nil;
            local v56 = nil;
            if v55 == nil then
                v55 = math.huge;
            end;
            if v56 == nil then
                v56 = false;
            end;
            local v57 = v7.resolve();
            local v58 = nil;
            local l_l_v45_0_0 = l_v45_0 --[[ copy: 7 -> 15 ]];
            local l_l_v44_0_0 = l_v44_0 --[[ copy: 6 -> 16 ]];
            local v61;
            do
                local l_v55_0, l_v56_0 = v55, v56;
                v61 = v57:andThen(function()
                    local v64 = nil;
                    local v65 = nil;
                    if typeof(v54) ~= "Instance" and typeof(v54) ~= "string" then
                        error(l_Error_0.new("Jest: configuration as an object not supported yet"));
                    elseif not l_isJSONString_0(l_l_v45_0_0.config) then
                        if not v58 and typeof(l_l_v45_0_0.config) == "string" then
                            v65 = l_default_2(l_l_v45_0_0.config, l_l_v44_0_0, l_v56_0);
                            v64 = l_default_1(v65):expect();
                        else
                            v65 = l_default_2(v54, l_l_v44_0_0, l_v56_0);
                            v64 = l_default_1(v65):expect();
                        end;
                    else
                        local v66 = nil;
                        do
                            local l_v66_0 = v66;
                            if not pcall(function()
                                l_v66_0 = l_JSON_0.parse(l_l_v45_0_0.config);
                            end) then
                                error(l_Error_0.new("There was an error while parsing the `--config` argument as a JSON string."));
                            end;
                            l_v66_0.rootDir = not not l_Boolean_0.toJSBoolean(l_v66_0.rootDir) and l_v66_0.rootDir or v54;
                            v64 = l_v66_0;
                        end;
                    end;
                    local v68 = l_default_0(v64, l_l_v45_0_0, v65, l_v55_0):expect();
                    local l_options_1 = v68.options;
                    local l_hasDeprecationWarnings_1 = v68.hasDeprecationWarnings;
                    local v71 = v17(l_options_1);
                    return {
                        configPath = v65,
                        globalConfig = v71.globalConfig,
                        hasDeprecationWarnings = l_hasDeprecationWarnings_1,
                        projectConfig = v71.projectConfig
                    };
                end);
            end;
            v61 = v61:expect();
            v51 = v61.configPath;
            v48 = v61.hasDeprecationWarnings;
            v47 = v61.globalConfig;
            v49 = {
                v61.projectConfig
            };
            if l_Boolean_0.toJSBoolean(if v47.projects ~= nil then #v47.projects else nil) then
                l_v46_0 = v47.projects;
            end;
        end;
        if #l_v46_0 > 0 then
            local l_v44_1 = v44;
            local v73 = l_v46_0[1] == l_v44_1;
            local v78 = v7.all(l_Array_0.map(l_Array_0.filter(l_v46_0, function(v74)
                if not (typeof(v74) == "Instance" and #v74:GetChildren() == 0) or v74:isA("ModuleScript") then
                    return true;
                else
                    return false;
                end;
            end), function(v75, v76)
                local v77 = false;
                if v76 == 1 then
                    v77 = #l_v46_0 == 1;
                end;
                return v34(v44, v45, v75, not if not v77 then v77 else v73, if v51 ~= nil then v51.Parent else l_v44_1, v76, v73);
            end)):expect();
            v18(v78, l_v46_0);
            v49 = l_Array_0.map(v78, function(v79)
                return v79.projectConfig;
            end);
            if not v48 then
                v48 = l_Array_0.some(v78, function(v80)
                    return l_Boolean_0.toJSBoolean(v80.hasDeprecationWarnings);
                end);
            end;
            if not l_Boolean_0.toJSBoolean(v47) then
                v47 = v78[1].globalConfig;
            end;
        end;
        if not (l_Boolean_0.toJSBoolean(v47) and l_Boolean_0.toJSBoolean(#v49)) then
            error(l_Error_0.new("jest: No configuration found for any project."));
        end;
        return {
            configs = v49,
            globalConfig = v47,
            hasDeprecationWarnings = l_Boolean_0.toJSBoolean(v48)
        };
    end);
end;
return v8;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local l_console_0 = v1.console;
local v6 = require(l_Parent_0.Promise);
local v7 = {};
local v8 = nil;
local v9 = require(l_Parent_0.RobloxShared);
local l_process_0 = v9.nodeUtils.process;
local l_getRelativePath_0 = v9.getRelativePath;
local v12 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local function v15(v14)
    return v14;
end;
local l_clearLine_0 = require(l_Parent_0.JestUtil).clearLine;
local function v18(v17)
    return v17;
end;
local l_ValidationError_0 = require(l_Parent_0.JestValidate).ValidationError;
local l_default_0 = require(script.Parent.Defaults).default;
local l_getDisplayNameColor_0 = require(script.Parent.color).getDisplayNameColor;
local l_default_1 = require(script.Parent.getMaxWorkers).default;
local l_default_2 = require(script.Parent.setFromArgv).default;
local v24 = require(script.Parent.utils);
local l_BULLET_0 = v24.BULLET;
local l_DOCUMENTATION_NOTE_0 = v24.DOCUMENTATION_NOTE;
local l_default_3 = require(script.Parent.validatePattern).default;
local v28 = ("%sValidation Error"):format(l_BULLET_0);
local function v30(v29)
    return l_ValidationError_0.new(v28, v29, l_DOCUMENTATION_NOTE_0);
end;
local function _(v31, v32)
    if typeof(v31) ~= "Instance" then
        error(v30(("  Directory %s in the %s option was not found."):format(v12.bold((tostring(v31))), v12.bold(v32))));
    end;
end;
local function _(v34)
    return v34;
end;
local _ = function(v36, _, _)
    if not l_Boolean_0.toJSBoolean(v36.id) then
        v36.id = l_getRelativePath_0(v36.rootDir, nil);
    end;
    if v36.setupFiles == nil then
        v36.setupFiles = {};
    end;
    return v36;
end;
local function v42(v40)
    if not l_Boolean_0.toJSBoolean(v40.rootDir) then
        error(v30(("  Configuration option %s must be specified."):format(v12.bold("rootDir"))));
    end;
    local l_rootDir_0 = v40.rootDir;
    if typeof(l_rootDir_0) ~= "Instance" then
        error(v30(("  Directory %s in the %s option was not found."):format(v12.bold((tostring(l_rootDir_0))), v12.bold("rootDir"))));
    end;
    return l_Object_0.assign({}, v40, {
        rootDir = v40.rootDir
    });
end;
local function _(v43)
    return v43;
end;
local function v49(v45)
    local v46 = {};
    if v45._ ~= nil then
        v46 = l_Array_0.concat(v46, v45._);
    end;
    if v45.testPathPattern ~= nil then
        v46 = l_Array_0.concat(v46, v45.testPathPattern);
    end;
    local v48 = l_Array_0.join(l_Array_0.map(v46, function(v47)
        return (tostring(v47));
    end), "|");
    if not l_default_3(v48) then
        v8(v48);
        return "";
    else
        return v48;
    end;
end;
v8 = function(v50)
    l_clearLine_0(l_process_0.stdout);
    l_console_0.log(v12.red(("  Invalid testPattern %s supplied. "):format((tostring(v50))) .. "Running all tests instead."));
end;
v7.default = function(v51, v52, v53, v54)
    local v55 = if v54 ~= nil then v54 else math.huge;
    return v6.resolve():andThen(function()
        local v56 = v42(l_default_2(v51, v52));
        local _ = v53;
        local _ = v55;
        if not l_Boolean_0.toJSBoolean(v56.id) then
            v56.id = l_getRelativePath_0(v56.rootDir, nil);
        end;
        if v56.setupFiles == nil then
            v56.setupFiles = {};
        end;
        local l_v56_0 = v56;
        l_v56_0.testEnvironment = l_v56_0.testEnvironment or l_default_0.testEnvironment;
        if l_v56_0.roots == nil and l_v56_0.testPathDirs ~= nil then
            l_v56_0.roots = l_v56_0.testPathDirs;
            l_v56_0.testPathDirs = nil;
        end;
        if l_v56_0.roots == nil then
            l_v56_0.roots = {
                l_v56_0.rootDir
            };
        end;
        local v60 = l_Object_0.assign({}, l_default_0);
        l_Array_0.reduce(l_Object_0.keys(l_v56_0), function(v61, v62)
            if v62 == "resolver" then
                return v61;
            else
                local l_l_v56_0_0 = l_v56_0;
                local v64 = nil;
                if not (v62 ~= "setupFiles" and v62 ~= "setupFilesAfterEnv") or v62 == "snapshotSerializers" then
                    local v65 = l_l_v56_0_0[v62];
                    if v65 ~= nil then
                        v64 = l_Array_0.map(v65, function(v66)
                            if v66 == "<rootDir>" then
                                return l_v56_0.rootDir;
                            else
                                return v66;
                            end;
                        end);
                    end;
                elseif not (v62 ~= "modulePaths") or v62 == "roots" then
                    local v67 = l_l_v56_0_0[v62];
                    if v67 ~= nil then
                        v64 = l_Array_0.map(v67, function(v68)
                            if v68 == "<rootDir>" then
                                return l_v56_0.rootDir;
                            else
                                return v68;
                            end;
                        end);
                    end;
                elseif v62 == "testPathIgnorePatterns" then
                    v64 = l_l_v56_0_0[v62];
                elseif v62 == "projects" then
                    v64 = l_Array_0.reduce(l_Array_0.map(not not l_Boolean_0.toJSBoolean(l_l_v56_0_0[v62]) and l_l_v56_0_0[v62] or {}, function(v69)
                        return v69;
                    end), function(v70, v71)
                        local v72 = {};
                        return l_Array_0.concat(v70, if #v72 > 0 then v72 else {
                            v71
                        });
                    end, {});
                elseif not (v62 ~= "moduleDirectories") or v62 == "testMatch" then
                    local v73 = l_l_v56_0_0[v62];
                    v64 = if v73 ~= nil then if l_Array_0.isArray(v73) then l_Array_0.map(v73, v18) else v73 else v73;
                elseif v62 == "testRegex" then
                    local v74 = l_l_v56_0_0[v62];
                    v64 = if v74 ~= nil and l_Boolean_0.toJSBoolean(v74) then l_Array_0.map(if not l_Array_0.isArray(v74) then {
                        v74
                    } else v74, v15) else {};
                elseif v62 == "bail" then
                    local v75 = l_l_v56_0_0[v62];
                    if typeof(v75) == "boolean" then
                        v64 = not v75 and 0 or 1;
                    elseif typeof(v75) == "string" then
                        v64 = 1;
                        table.insert(v52._, v75);
                    else
                        v64 = l_l_v56_0_0[v62];
                    end;
                elseif v62 == "displayName" then
                    local v76 = l_l_v56_0_0[v62];
                    if typeof(v76) == "table" then
                        local l_name_0 = v76.name;
                        local l_color_0 = v76.color;
                        if not (not (not l_Boolean_0.toJSBoolean(l_name_0) or not l_Boolean_0.toJSBoolean(l_color_0)) and typeof(l_name_0) == "string") or typeof(l_color_0) ~= "string" then
                            error(v30(("  Option \"%s\" must be of type:\n\n"):format(v12.bold("displayName")) .. "  {\n" .. "    name: string;\n" .. "    color: string;\n" .. "  }\n"));
                        end;
                        v64 = l_l_v56_0_0[v62];
                    else
                        v64 = {
                            color = l_getDisplayNameColor_0(l_v56_0.runner),
                            name = v76
                        };
                    end;
                elseif v62 == "testTimeout" then
                    if l_l_v56_0_0[v62] < 0 then
                        error(v30(("  Option \"%s\" must be a natural number."):format(v12.bold("testTimeout"))));
                    end;
                    v64 = l_l_v56_0_0[v62];
                elseif not ((((((((((((((((((((((((((((((((((((((((((((((((((((((v62 ~= "automock" and v62 ~= "cache") and v62 ~= "changedSince") and v62 ~= "changedFilesWithAncestor") and v62 ~= "clearMocks") and v62 ~= "collectCoverage") and v62 ~= "coverageProvider") and v62 ~= "coverageReporters") and v62 ~= "coverageThreshold") and v62 ~= "detectLeaks") and v62 ~= "detectOpenHandles") and v62 ~= "errorOnDeprecated") and v62 ~= "expand") and v62 ~= "extensionsToTreatAsEsm") and v62 ~= "extraGlobals") and v62 ~= "globals") and v62 ~= "findRelatedTests") and v62 ~= "forceCoverageMatch") and v62 ~= "forceExit") and v62 ~= "injectGlobals") and v62 ~= "lastCommit") and v62 ~= "listTests") and v62 ~= "logHeapUsage") and v62 ~= "maxConcurrency") and v62 ~= "id") and v62 ~= "noStackTrace") and v62 ~= "notify") and v62 ~= "notifyMode") and v62 ~= "onlyChanged") and v62 ~= "onlyFailures") and v62 ~= "outputFile") and v62 ~= "passWithNoTests") and v62 ~= "replname") and v62 ~= "reporters") and v62 ~= "resetMocks") and v62 ~= "resetModules") and v62 ~= "restoreMocks") and v62 ~= "rootDir") and v62 ~= "runTestsByPath") and v62 ~= "silent") and v62 ~= "skipFilter") and v62 ~= "skipNodeResolution") and v62 ~= "slowTestThreshold") and v62 ~= "snapshotFormat") and v62 ~= "testEnvironment") and v62 ~= "testEnvironmentOptions") and v62 ~= "testFailureExitCode") and v62 ~= "testLocationInResults") and v62 ~= "testNamePattern") and v62 ~= "testURL") and v62 ~= "timers") and v62 ~= "useStderr") and v62 ~= "verbose") and v62 ~= "watch") and v62 ~= "watchAll") or v62 == "watchman" then
                    v64 = l_l_v56_0_0[v62];
                end;
                v61[v62] = v64;
                return v61;
            end;
        end, v60);
        l_Array_0.forEach(v60.roots, function(v79, v80)
            local v81 = ("roots[%s]"):format((tostring(v80)));
            if typeof(v79) ~= "Instance" then
                error(v30(("  Directory %s in the %s option was not found."):format(v12.bold((tostring(v79))), v12.bold(v81))));
            end;
        end);
        v60.testPathPattern = v49(v52);
        v60.json = l_Boolean_0.toJSBoolean(v52.json);
        v60.testFailureExitCode = tonumber(v60.testFailureExitCode, 10) or 0;
        v60.updateSnapshot = if not l_Boolean_0.toJSBoolean(v52.ci) or v52.updateSnapshot then v52.updateSnapshot and "all" or "new" else "none";
        v60.maxConcurrency = tonumber(v60.maxConcurrency, 10) or 0;
        v60.maxWorkers = l_default_1(v52, l_v56_0);
        if #v60.testRegex > 0 and l_v56_0.testMatch ~= nil then
            error(v30(("  Configuration options %s and"):format(v12.bold("testMatch")) .. (" %s cannot be used together."):format(v12.bold("testRegex"))));
        end;
        if #v60.testRegex > 0 and l_v56_0.testMatch == nil then
            v60.testMatch = {};
        end;
        if not l_Boolean_0.toJSBoolean(v60.projects) then
            v60.projects = {};
        end;
        return {
            hasDeprecationWarnings = false,
            options = v60
        };
    end);
end;
return v7;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Number_0 = v1.Number;
local l_Error_0 = v1.Error;
local l_String_0 = v1.String;
local v7 = require(l_Parent_0.RegExp);
return {
    parseShardPair = function(v8)
        local v12 = l_Array_0.filter(l_Array_0.map(l_Array_0.filter(l_String_0.split(v8, "/"), function(v9)
            return v7("^\\d+$"):test(v9);
        end), function(v10)
            return (tonumber(v10, 10));
        end), function(v11)
            return not l_Boolean_0.toJSBoolean(l_Number_0.isNaN(v11));
        end);
        local v13, v14 = table.unpack(v12, 1, 2);
        if #v12 ~= 2 then
            error(l_Error_0.new("The shard option requires a string in the format of <n>/<m>."));
        end;
        if not (v13 ~= 0) or v14 == 0 then
            error(l_Error_0.new("The shard option requires 1-based values, received 0 or lower in the pair."));
        end;
        if v14 < v13 then
            error(l_Error_0.new("The shard option <n>/<m> requires <n> to be lower or equal than <m>."));
        end;
        return {
            shardCount = v14,
            shardIndex = v13
        };
    end
};


local l_Parent_0 = script.Parent.Parent;
local l_Error_0 = require(l_Parent_0.LuauPolyfill).Error;
local v2 = require(l_Parent_0.Promise);
local v3 = {};
local _ = require(l_Parent_0.JestTypes);
v3.default = function(v5)
    return v2.resolve():andThen(function()
        local l_status_0, l_result_0 = pcall(require, v5);
        if not l_status_0 then
            error(l_Error_0.new(("Failed to load the Luau config file %s\n  %s"):format(tostring(v5), (tostring(l_result_0)))));
        end;
        local l_l_result_0_0 = l_result_0;
        if typeof(l_l_result_0_0) == "function" then
            l_l_result_0_0 = v2.resolve(l_l_result_0_0()):expect();
        end;
        if not l_l_result_0_0.rootDir or typeof(l_l_result_0_0.rootDir) ~= "Instance" then
            l_l_result_0_0.rootDir = v5.Parent;
        end;
        return l_l_result_0_0;
    end);
end;
return v3;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Error_0 = v1.Error;
local l_String_0 = v1.String;
local l_console_0 = v1.console;
local v6 = {};
local v7 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_JEST_CONFIG_BASE_NAME_0 = require(script.Parent.constants).JEST_CONFIG_BASE_NAME;
local l_DOCUMENTATION_NOTE_0 = require(script.Parent.utils).DOCUMENTATION_NOTE;
local v11 = nil;
local v12 = nil;
local v13 = nil;
local function _(v14)
    local v15 = false;
    if typeof(v14) == "Instance" then
        v15 = v14:IsA("ModuleScript") and l_String_0.endsWith(v14.Name, ".config");
    end;
    return v15;
end;
local function _(v17)
    return l_JEST_CONFIG_BASE_NAME_0 .. v17;
end;
v6.default = function(v19, v20, v21)
    local v22 = if v21 ~= nil then v21 else false;
    local function _(v23, v24)
        return v23[v24];
    end;
    local v26 = nil;
    v26 = if typeof(v19) == "string" then v20[v19] else v19;
    local l_v26_0 = v26;
    local v28 = false;
    if typeof(l_v26_0) == "Instance" then
        v28 = l_v26_0:IsA("ModuleScript") and l_String_0.endsWith(l_v26_0.Name, ".config");
    end;
    if not v28 then
        if v26 == nil then
            error(l_Error_0.new("Can't find a root directory while resolving a config file path.\n" .. ("Provided path to resolve: %s\n"):format((tostring(v19))) .. ("cwd: %s"):format((tostring(v20)))));
        end;
        return v11(v26, v19, v20, v22);
    else
        return v26;
    end;
end;
local function v30(v29)
    return v29:IsA("ModuleScript") and v29.Name == l_JEST_CONFIG_BASE_NAME_0;
end;
v11 = function(v31, v32, v33, v34)
    if not (v31 ~= nil) or typeof(v31.GetChildren) ~= "function" then
        error(l_Error_0.new(v12(v32, v33)));
    end;
    local v38 = l_Array_0.filter(v31:GetChildren(), function(v35)
        local l_status_0, l_result_0 = pcall(v30, v35);
        return l_status_0 and l_result_0;
    end);
    if not v34 and #v38 > 1 then
        l_console_0.warn(v13(v38));
    end;
    if #v38 > 0 then
        return v38[1];
    else
        if v31 == game then
            error(l_Error_0.new(v12(v32, v33)));
        end;
        return v11(v31.Parent, v32, v33, v34);
    end;
end;
v12 = function(v39, v40)
    return "Could not find a config file based on provided values:\n" .. ("path: \"%s\"\n"):format((tostring(v39))) .. ("cwd: \"%s\"\n"):format((tostring(v40))) .. "Config paths must be specified by either a direct path to a config script\n" .. "or a path to a directory. If directory is given, Jest will try to\n" .. ("traverse directory tree up, until it finds one of those files in exact order: %s."):format(l_Array_0.join(l_Array_0.map({
        ".lua"
    }, function(v41)
        return ("\"%s\""):format(l_JEST_CONFIG_BASE_NAME_0 .. v41);
    end), " or "));
end;
local _ = function(_)
    return "";
end;
v13 = function(v44)
    return v7.yellow({
        l_Array_0.join(l_Array_0.concat({}, {
            v7.bold("\226\151\143 Multiple configurations found:")
        }, l_Array_0.map(v44, function(v45)
            return ("    * %s%s"):format(tostring(""), (tostring(v45)));
        end), {
            "",
            "  Implicit config resolution does not allow multiple configuration files.",
            "  Either remove unused config files or select one explicitly with `--config`."
        }), "\n"),
        l_DOCUMENTATION_NOTE_0
    });
end;
return v6;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v4 = {};
local _ = require(l_Parent_0.JestTypes);
local l_isJSONString_0 = require(script.Parent.utils).isJSONString;
local l_JSON_0 = require(l_Parent_0.RobloxShared).nodeUtils.JSON;
local v8 = {
    "_",
    "$0",
    "h",
    "help",
    "config"
};
v4.default = function(v9, v10)
    return l_Object_0.assign({}, v9, if not l_isJSONString_0(v10.config) then nil else l_JSON_0.parse(v10.config), (l_Array_0.reduce(l_Array_0.filter(l_Object_0.keys(v10), function(v11)
        local v12 = false;
        if v10[v11] ~= nil then
            v12 = l_Array_0.indexOf(v8, v11) == -1;
        end;
        return v12;
    end), function(v13, v14)
        if v14 == "json" then
            v13.useStderr = v10[v14];
            return v13;
        elseif v14 == "config" then
            return v13;
        else
            if v14 == "globals" then
                local v15 = v10[v14];
                if l_isJSONString_0(v15) then
                    v13[v14] = l_JSON_0.parse(v15);
                    return v13;
                end;
            else
                v13[v14] = v10[v14];
            end;
            return v13;
        end;
    end, {})));
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local l_String_0 = require(l_Parent_0.LuauPolyfill).String;
local v2 = {};
local v3 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
v2.BULLET = v3.bold("\226\151\143 ");
v2.DOCUMENTATION_NOTE = ("  %s\n  https://jestjs.io/docs/configuration\n"):format(v3.bold("Configuration Documentation:"));
v2.isJSONString = function(v5)
    local v6 = false;
    if v5 ~= nil then
        v6 = false;
        if typeof(v5) == "string" then
            v6 = l_String_0.startsWith(v5, "{") and l_String_0.endsWith(v5, "}");
        end;
    end;
    return v6;
end;
return v2;


local l_Parent_0 = script.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local v2 = require(l_Parent_0.RegExp);
return {
    default = function(v3)
        if (not (v3 ~= nil) or not l_Boolean_0.toJSBoolean(v3)) or pcall(function()
            v2(v3, "i");
        end) then
            return true;
        else
            return false;
        end;
    end
};


local v0 = {};
local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v3.Array;
local l_Boolean_0 = v3.Boolean;
local l_String_0 = v3.String;
local l_Error_0 = v3.Error;
local l_inspect_0 = v3.util.inspect;
local l_default_0 = require(l_Parent_0.Console).default;
local v10 = require(l_Parent_0.helpers);
local l_format_0 = v10.format;
local l_formatWithOptions_0 = v10.formatWithOptions;
local v13 = require(l_Parent_1.ChalkLua);
local v14 = require(l_Parent_1.JestUtil);
local l_ErrorWithStack_0 = v14.ErrorWithStack;
local l_formatTime_0 = v14.formatTime;
local _ = require(l_Parent_0.types);
local _ = require(l_Parent_1.RobloxShared);
local v19 = nil;
local v20 = setmetatable({}, {
    __index = l_default_0
});
v20.__index = v20;
v20.new = function()
    local v23 = setmetatable(l_default_0.new({
        write = function(v21, v22)
            v20.write(v21._buffer, "log", v22, nil);
            return true;
        end
    }), v20);
    v23._buffer = {};
    v23._counters = {};
    v23._timers = {};
    v23._groupDepth = 0;
    v23.Console = l_default_0;
    return v23;
end;
v20.write = function(v24, v25, v26, v27)
    local v28 = if v27 ~= nil then v27 else 2;
    local l_stack_0 = l_ErrorWithStack_0.new(nil, v20.write).stack;
    v19(l_stack_0, "always have a stack trace");
    table.insert(v24, {
        message = v26,
        origin = l_Array_0.join(l_Array_0.filter(l_Array_0.slice(l_String_0.split(l_stack_0, "\n"), v28), l_Boolean_0.toJSBoolean), "\n"),
        type = v25
    });
    return v24;
end;
v20._log = function(v30, v31, v32)
    v20.write(v30._buffer, v31, ("  "):rep(v30._groupDepth) .. v32, 3);
end;
v20.assert = function(v33, v34, v35)
    xpcall(function()
        assert(v34);
    end, function(v36)
        local v37 = "";
        if v35 ~= nil then
            v37 = " " .. tostring(v35);
        end;
        v33:_log("assert", tostring(v36) .. v37);
    end);
end;
v20.count = function(v38, v39)
    local v40 = if v39 ~= nil then v39 else "default";
    if v38._counters[v40] == nil then
        v38._counters[v40] = 0;
    end;
    local l__counters_0 = v38._counters;
    l__counters_0[v40] = l__counters_0[v40] + 1;
    v38:_log("count", l_format_0("%s: %s", v40, v38._counters[v40]));
end;
v20.countReset = function(v42, v43)
    v42._counters[if v43 ~= nil then v43 else "default"] = 0;
end;
v20.debug = function(v44, v45, ...)
    v44:_log("debug", l_format_0(v45, ...));
end;
v20.dir = function(v46, v47, v48)
    local v49 = v48 or {};
    v46:_log("dir", l_formatWithOptions_0(v49, (l_inspect_0(v47, v49))));
end;
v20.dirxml = function(v50, v51, ...)
    v50:_log("dirxml", l_format_0(v51, ...));
end;
v20.error = function(v52, v53, ...)
    v52:_log("error", l_format_0(v53, ...));
end;
v20.group = function(v54, v55, ...)
    local v56 = {
        ...
    };
    v54._groupDepth = v54._groupDepth + 1;
    if l_Boolean_0.toJSBoolean(v55) or #v56 > 0 then
        v54:_log("group", v13.bold(l_format_0(v55, ...)));
    end;
end;
v20.groupCollapsed = function(v57, v58, ...)
    local v59 = {
        ...
    };
    v57._groupDepth = v57._groupDepth + 1;
    if l_Boolean_0.toJSBoolean(v58) or #v59 > 0 then
        v57:_log("groupCollapsed", v13.bold(l_format_0(v58, ...)));
    end;
end;
v20.groupEnd = function(v60)
    if v60._groupDepth > 0 then
        v60._groupDepth = v60._groupDepth - 1;
    end;
end;
v20.info = function(v61, v62, ...)
    v61:_log("info", l_format_0(v62, ...));
end;
v20.log = function(v63, v64, ...)
    v63:_log("log", l_format_0(v64, ...));
end;
v20.time = function(v65, v66)
    local v67 = if v66 ~= nil then v66 else "default";
    if not l_Boolean_0.toJSBoolean(v65._timers[v67]) then
        v65._timers[v67] = DateTime.now();
        return ;
    else
        return ;
    end;
end;
v20.timeEnd = function(v68, v69)
    local v70 = if v69 ~= nil then v69 else "default";
    local v71 = v68._timers[v70];
    if l_Boolean_0.toJSBoolean(v71) then
        v68:_log("time", l_format_0("%s: %s", v70, l_formatTime_0(DateTime.now().UnixTimestampMillis - v71.UnixTimestampMillis)));
        v68._timers[v70] = nil;
    end;
end;
v20.timeLog = function(v72, v73, ...)
    local v74 = if v73 ~= nil then v73 else "default";
    local v75 = v72._timers[v74];
    if l_Boolean_0.toJSBoolean(v75) then
        v72:_log("time", l_format_0("%s: %s", v74, l_formatTime_0(DateTime.now().UnixTimestampMillis - v75.UnixTimestampMillis), ...));
    end;
end;
v20.warn = function(v76, v77, ...)
    v76:_log("warn", l_format_0(v77, ...));
end;
v20.getBuffer = function(v78)
    if #v78._buffer > 0 then
        return v78._buffer;
    else
        return nil;
    end;
end;
v19 = function(v79, v80)
    if not l_Boolean_0.toJSBoolean(v79) then
        error(l_Error_0.new(v80));
    end;
end;
v0.default = v20;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_format_0 = require(l_Parent_0.helpers).format;
local _ = require(l_Parent_1.RobloxShared);
local v5 = {};
v5.__index = v5;
v5.new = function(v6, v7, v8)
    local v9 = setmetatable({}, v5);
    local v10 = v8 or {};
    if typeof(v6.write) == "function" then
        v10.stdout = v6;
        v10.stderr = v7;
    end;
    if v10.stderr == nil then
        v10.stderr = v10.stdout;
    end;
    if not (v10.stdout ~= nil) or typeof(v10.stdout.write) ~= "function" then
        error("stdout must have a write method");
    end;
    if not (v10.stderr ~= nil) or typeof(v10.stderr.write) ~= "function" then
        error("stderr must have a write method");
    end;
    v9._stdout = v10.stdout;
    v9._stderr = v10.stderr;
    return v9;
end;
v5._write = function(v11, v12, v13)
    (if v12 == "stdout" then v11._stdout else v11._stderr):write(v13);
end;
v5.log = function(v14, ...)
    v14:_write("stdout", l_format_0(...));
end;
v5.error = function(v15, ...)
    v15:_write("stderr", l_format_0(...));
end;
v0.default = v5;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_default_0 = require(l_Parent_0.Console).default;
local v4 = require(l_Parent_1.LuauPolyfill);
local l_Boolean_0 = v4.Boolean;
local l_inspect_0 = v4.util.inspect;
local v7 = require(l_Parent_0.helpers);
local l_format_0 = v7.format;
local l_formatWithOptions_0 = v7.formatWithOptions;
local _ = require(l_Parent_1.RobloxShared);
local v11 = require(l_Parent_1.ChalkLua);
local v12 = require(l_Parent_1.JestUtil);
local l_clearLine_0 = v12.clearLine;
local l_formatTime_0 = v12.formatTime;
local _ = require(l_Parent_0.types);
local v16 = setmetatable({}, {
    __index = l_default_0
});
v16.__index = v16;
v16.new = function(v17, v18, v19)
    local v20 = setmetatable(l_default_0.new(v17, v18), v16);
    local v23 = if v19 ~= nil then v19 else function(_, v22)
        return v22;
    end;
    v20._counters = {};
    v20._timers = {};
    v20._groupDepth = 0;
    v20.Console = l_default_0;
    v20._stdout = v17;
    v20._stderr = v18;
    v20._formatBuffer = v23;
    return v20;
end;
v16._log = function(v24, v25, v26)
    l_clearLine_0(v24._stdout);
    l_default_0.log(v24, v24._formatBuffer(v25, ("  "):rep(v24._groupDepth) .. v26));
end;
v16._logError = function(v27, v28, v29)
    l_clearLine_0(v27._stderr);
    l_default_0.error(v27, v27._formatBuffer(v28, ("  "):rep(v27._groupDepth) .. v29));
end;
v16.assert = function(v30, v31, v32)
    xpcall(function()
        assert(v31);
    end, function(v33)
        local v34 = "";
        if v32 ~= nil then
            v34 = " " .. tostring(v32);
        end;
        v30:_logError("assert", tostring(v33) .. v34);
    end);
end;
v16.count = function(v35, v36)
    local v37 = if v36 ~= nil then v36 else "default";
    if v35._counters[v37] == nil then
        v35._counters[v37] = 0;
    end;
    local l__counters_0 = v35._counters;
    l__counters_0[v37] = l__counters_0[v37] + 1;
    v35:_log("count", l_format_0("%s: %s", v37, v35._counters[v37]));
end;
v16.countReset = function(v39, v40)
    v39._counters[if v40 ~= nil then v40 else "default"] = 0;
end;
v16.debug = function(v41, v42, ...)
    v41:_log("debug", l_format_0(v42, ...));
end;
v16.dir = function(v43, v44, v45)
    local v46 = v45 or {};
    v43:_log("dir", l_formatWithOptions_0(v46, (l_inspect_0(v44, v46))));
end;
v16.dirxml = function(v47, v48, ...)
    v47:_log("dirxml", l_format_0(v48, ...));
end;
v16.error = function(v49, v50, ...)
    v49:_logError("error", l_format_0(v50, ...));
end;
v16.group = function(v51, v52, ...)
    local v53 = {
        ...
    };
    v51._groupDepth = v51._groupDepth + 1;
    if l_Boolean_0.toJSBoolean(v52) or #v53 > 0 then
        v51:_log("group", v11.bold(l_format_0(v52, ...)));
    end;
end;
v16.groupCollapsed = function(v54, v55, ...)
    local v56 = {
        ...
    };
    v54._groupDepth = v54._groupDepth + 1;
    if l_Boolean_0.toJSBoolean(v55) or #v56 > 0 then
        v54:_log("groupCollapsed", v11.bold(l_format_0(v55, ...)));
    end;
end;
v16.groupEnd = function(v57)
    if v57._groupDepth > 0 then
        v57._groupDepth = v57._groupDepth - 1;
    end;
end;
v16.info = function(v58, v59, ...)
    v58:_log("info", l_format_0(v59, ...));
end;
v16.log = function(v60, v61, ...)
    v60:_log("log", l_format_0(v61, ...));
end;
v16.time = function(v62, v63)
    local v64 = if v63 ~= nil then v63 else "default";
    if v62._timers[v64] ~= nil then
        return ;
    else
        v62._timers[v64] = DateTime.now();
        return ;
    end;
end;
v16.timeEnd = function(v65, v66)
    local v67 = if v66 ~= nil then v66 else "default";
    local v68 = v65._timers[v67];
    if l_Boolean_0.toJSBoolean(v68) then
        v65:_log("time", l_format_0("%s: %s", v67, l_formatTime_0(DateTime.now().UnixTimestampMillis - v68.UnixTimestampMillis)));
        v65._timers[v67] = nil;
    end;
end;
v16.timeLog = function(v69, v70, ...)
    local v71 = if v70 ~= nil then v70 else "default";
    local v72 = v69._timers[v71];
    if l_Boolean_0.toJSBoolean(v72) then
        v69:_log("time", l_format_0("%s: %s", v71, l_formatTime_0(DateTime.now().UnixTimestampMillis - v72.UnixTimestampMillis), ...));
    end;
end;
v16.warn = function(v73, v74, ...)
    v73:_logError("warn", l_format_0(v74, ...));
end;
v16.getBuffer = function(_)
    return nil;
end;
v0.default = v16;
return v0;


local v0 = {};
local l_default_0 = require(script.Parent.CustomConsole).default;
local v2 = setmetatable({}, {
    __index = l_default_0
});
v2.__index = v2;
v2.new = function(...)
    return (setmetatable(l_default_0.new(...), v2));
end;
v2.assert = function(_)
end;
v2.debug = function(_)
end;
v2.dir = function(_)
end;
v2.error = function(_)
end;
v2.info = function(_)
end;
v2.log = function(_)
end;
v2.time = function(_)
end;
v2.timeEnd = function(_)
end;
v2.timeLog = function(_)
end;
v2.trace = function(_)
end;
v2.warn = function(_)
end;
v2.group = function(_)
end;
v2.groupCollapsed = function(_)
end;
v2.groupEnd = function(_)
end;
v0.default = v2;
return v0;


local v0 = {};
local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v3.Array;
local l_String_0 = v3.String;
local v6 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_1.JestTypes);
local l_formatStackTrace_0 = require(l_Parent_1.JestMessageUtil).formatStackTrace;
local _ = require(l_Parent_0.types);
v0.default = function(v10, v11, v12)
    local v13 = not v12.verbose and "    " or "  ";
    local v14 = v13 .. "  ";
    return l_String_0.trimEnd((l_Array_0.reduce(v10, function(v15, v16)
        local l_type_0 = v16.type;
        local l_message_0 = v16.message;
        local l_origin_0 = v16.origin;
        l_message_0 = l_Array_0.join(l_Array_0.map(l_String_0.split(l_message_0, "\n"), function(v20)
            return v14 .. v20;
        end), "\n");
        local v21 = "console." .. l_type_0;
        local v22 = true;
        local v23 = true;
        if l_type_0 == "warn" then
            l_message_0 = v6.yellow(l_message_0);
            v21 = v6.yellow(v21);
            v22 = v12.noStackTrace or false;
            v23 = false;
        elseif l_type_0 == "error" then
            l_message_0 = v6.red(l_message_0);
            v21 = v6.red(v21);
            v22 = v12.noStackTrace or false;
            v23 = false;
        end;
        return v15 .. v13 .. v6.dim(v21) .. "\n" .. l_String_0.trimEnd(l_message_0) .. "\n" .. v6.dim(l_String_0.trimEnd((l_formatStackTrace_0(l_origin_0, v11, {
            noStackTrace = v22,
            noCodeFrame = v23
        })))) .. "\n\n";
    end, ""))) .. "\n";
end;
return v0;


local l_Parent_0 = script.Parent;
local l_inspect_0 = require(l_Parent_0.Parent.LuauPolyfill).util.inspect;
local _ = require(l_Parent_0.types);
concatRestArgs = function(v3)
    local v4 = "";
    if #v3 > 0 then
        v4 = " " .. table.concat(v3, " ");
    end;
    return v4;
end;
getFormattedValue = function(v5, v6)
    if type(v5) == "string" then
        return v5;
    else
        return (l_inspect_0(v5, v6));
    end;
end;
format = function(...)
    return formatter(nil, ...);
end;
formatWithOptions = function(v7, v8, ...)
    return formatter(v7, v8, ...);
end;
formatter = function(v9, v10, ...)
    local v11 = {
        ...
    };
    local v12 = {};
    local v13 = {};
    if type(v10) == "string" then
        local _, v15 = v10:gsub("%%[sdj%%]", "");
        for v16, v17 in pairs(v11) do
            local v18 = getFormattedValue(v17, v9);
            if v16 <= v15 then
                table.insert(v12, v18);
            else
                table.insert(v13, v18);
            end;
        end;
    else
        v10 = l_inspect_0(v10, v9);
        for _, v20 in pairs(v11) do
            table.insert(v13, getFormattedValue(v20, v9));
        end;
    end;
    return string.format(v10, table.unpack(v12)) .. concatRestArgs(v13);
end;
return {
    format = format,
    formatWithOptions = formatWithOptions,
    concatRestArgs = concatRestArgs
};


local l_script_0 = script;
local v1 = {
    helpers = require(l_script_0.helpers),
    Console = require(l_script_0.Console),
    BufferedConsole = require(l_script_0.BufferedConsole).default,
    CustomConsole = require(l_script_0.CustomConsole).default,
    NullConsole = require(l_script_0.NullConsole).default,
    getConsoleOutput = require(l_script_0.getConsoleOutput).default
};
local _ = require(l_script_0.types);
return v1;


local l_Parent_0 = script.Parent;
local l_inspect_0 = require(l_Parent_0.Parent.LuauPolyfill).util.inspect;
local _ = require(l_Parent_0.types);
concatRestArgs = function(v3)
    local v4 = "";
    if #v3 > 0 then
        v4 = " " .. table.concat(v3, " ");
    end;
    return v4;
end;
getFormattedValue = function(v5, v6)
    if type(v5) == "string" then
        return v5;
    else
        return (l_inspect_0(v5, v6));
    end;
end;
format = function(...)
    return formatter(nil, ...);
end;
formatWithOptions = function(v7, v8, ...)
    return formatter(v7, v8, ...);
end;
formatter = function(v9, v10, ...)
    local v11 = {
        ...
    };
    local v12 = {};
    local v13 = {};
    local v14 = "";
    if type(v10) == "string" then
        local _, v16 = v10:gsub("%%[sdj%%]", "");
        for v17, v18 in pairs(v11) do
            local v19 = getFormattedValue(v18, v9);
            if v17 <= v16 then
                table.insert(v12, v19);
            else
                table.insert(v13, v19);
            end;
        end;
        v14 = v10;
    else
        v14 = l_inspect_0(v10, v9);
        for _, v21 in pairs(v11) do
            table.insert(v13, getFormattedValue(v21, v9));
        end;
    end;
    return string.format(v14, table.unpack(v12)) .. concatRestArgs(v13);
end;
return {
    format = format,
    formatWithOptions = formatWithOptions,
    concatRestArgs = concatRestArgs
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_instanceof_0 = v1.instanceof;
local v4 = require(l_Parent_0.Promise);
local v5 = {};
local _ = require(l_Parent_0.JestReporters);
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestRuntime);
local _ = require(script.Parent.types);
local v10 = {};
v10.__index = v10;
v10.new = function()
    local v11 = setmetatable({}, v10);
    v11._reporters = {};
    return v11;
end;
v10.register = function(v12, v13)
    table.insert(v12._reporters, v13);
end;
v10.unregister = function(v14, v15)
    v14._reporters = l_Array_0.filter(v14._reporters, function(v16)
        return not l_instanceof_0(v16, v15);
    end);
end;
v10.onTestFileResult = function(v17, v18, v19, v20)
    return v4.resolve():andThen(function()
        for _, v22 in v17._reporters, nil, nil do
            if v22.onTestFileResult ~= nil then
                v4.resolve(v22:onTestFileResult(v18, v19, v20)):expect();
            elseif v22.onTestResult ~= nil then
                v4.resolve(v22:onTestResult(v18, v19, v20)):expect();
            end;
        end;
        v19.coverage = nil;
        v19.console = nil;
    end);
end;
v10.onTestFileStart = function(v23, v24)
    return v4.resolve():andThen(function()
        for _, v26 in v23._reporters, nil, nil do
            if v26.onTestFileStart ~= nil then
                v4.resolve(v26:onTestFileStart(v24)):expect();
            elseif v26.onTestStart ~= nil then
                v4.resolve(v26:onTestStart(v24)):expect();
            end;
        end;
    end);
end;
v10.onRunStart = function(v27, v28, v29)
    return v4.resolve():andThen(function()
        for _, v31 in v27._reporters, nil, nil do
            if v31.onRunStart ~= nil then
                v4.resolve(v31:onRunStart(v28, v29)):expect();
            end;
        end;
    end);
end;
v10.onTestCaseResult = function(v32, v33, v34)
    return v4.resolve():andThen(function()
        for _, v36 in v32._reporters, nil, nil do
            if v36.onTestCaseResult ~= nil then
                v4.resolve(v36:onTestCaseResult(v33, v34)):expect();
            end;
        end;
    end);
end;
v10.onRunComplete = function(v37, v38, v39)
    return v4.resolve():andThen(function()
        for _, v41 in v37._reporters, nil, nil do
            if v41.onRunComplete ~= nil then
                v4.resolve(v41:onRunComplete(v38, v39)):expect();
            end;
        end;
    end);
end;
v10.getErrors = function(v42)
    return l_Array_0.reduce(v42._reporters, function(v43, v44)
        local v45 = if v44.getLastError ~= nil then v44:getLastError() else nil;
        if v45 ~= nil then
            return (l_Array_0.concat(v43, v45));
        else
            return v43;
        end;
    end, {});
end;
v10.hasErrors = function(v46)
    return #v46:getErrors() ~= 0;
end;
v5.default = v10;
return v5;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = require(l_Parent_0.Promise);
local v5 = require(l_Parent_0.RegExp);
local v6 = {};
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.JestRuntime);
local v10 = require(l_Parent_0.JestUtil);
local l_globsToMatcher_0 = v10.globsToMatcher;
local l_testPathPatternToRegExp_0 = v10.testPathPatternToRegExp;
local _ = require(script.Parent.types);
local _ = require(l_Parent_0.JestTypes);
local l_getRelativePath_0 = require(l_Parent_0.RobloxShared).getRelativePath;
local function v19(v16)
    return l_Array_0.map(l_Array_0.filter(v16.config.rootDir:GetDescendants(), function(v17)
        return v17:isA("ModuleScript");
    end), function(v18)
        return {
            path = l_getRelativePath_0(v18, v16.config.rootDir),
            script = v18
        };
    end);
end;
local function _(v20)
    local v22 = l_Array_0.map(v20, function(v21)
        return v5(v21);
    end);
    return function(v23)
        return l_Array_0.some(v22, function(v24)
            local v25 = v24:test(v23);
            v24.lastIndex = 0;
            return v25;
        end);
    end;
end;
local function _(v27, v28)
    return l_Array_0.map(v28, function(v29)
        return {
            context = v27,
            duration = nil,
            path = v29.path,
            script = v29.script
        };
    end);
end;
local v31 = {};
v31.__index = v31;
v31.new = function(v32)
    local v33 = setmetatable({}, v31);
    v33._testPathCases = {};
    local l_config_0 = v32.config;
    v33._context = v32;
    v33._dependencyResolver = nil;
    if #l_config_0.testMatch > 0 then
        table.insert(v33._testPathCases, {
            isMatch = l_globsToMatcher_0(l_config_0.testMatch),
            stat = "testMatch"
        });
    end;
    if #l_config_0.testPathIgnorePatterns > 0 then
        local v35 = v5(l_Array_0.join(l_config_0.testPathIgnorePatterns, "|"));
        table.insert(v33._testPathCases, {
            isMatch = function(v36)
                return not v35:test(v36);
            end,
            stat = "testPathIgnorePatterns"
        });
    end;
    if #l_config_0.testRegex > 0 then
        local l__testPathCases_0 = v33._testPathCases;
        local v38 = {};
        local v40 = l_Array_0.map(l_config_0.testRegex, function(v39)
            return v5(v39);
        end);
        v38.isMatch = function(v41)
            return l_Array_0.some(v40, function(v42)
                local v43 = v42:test(v41);
                v42.lastIndex = 0;
                return v43;
            end);
        end;
        v38.stat = "testRegex";
        table.insert(l__testPathCases_0, v38);
    end;
    return v33;
end;
v31._filterTestPathsWithStats = function(v44, v45, v46)
    local v47 = {
        stats = {
            roots = 0,
            testMatch = 0,
            testPathIgnorePatterns = 0,
            testRegex = 0
        },
        tests = {},
        total = #v45
    };
    local v48 = l_Array_0.from(v44._testPathCases);
    if not (not (v46 ~= nil) or not l_Boolean_0.toJSBoolean(v46)) then
        local v49 = l_testPathPatternToRegExp_0(v46);
        table.insert(v48, {
            isMatch = function(v50)
                return v49:test(v50);
            end,
            stat = "testPathPattern"
        });
        v47.stats.testPathPattern = 0;
    end;
    v47.tests = l_Array_0.filter(v45, function(v51)
        local v52 = true;
        for _, v54 in v48, nil, nil do
            local l_isMatch_0 = v54.isMatch;
            local l_stat_0 = v54.stat;
            if not l_isMatch_0(v51.path) then
                v52 = false;
            else
                v47.stats[l_stat_0] = v47.stats[l_stat_0] or 0;
                local l_stats_0 = v47.stats;
                l_stats_0[l_stat_0] = l_stats_0[l_stat_0] + 1;
            end;
        end;
        return v52;
    end);
    return v47;
end;
v31._getAllTestPaths = function(v58, v59)
    local l__context_0 = v58._context;
    return v58:_filterTestPathsWithStats(l_Array_0.map(v19(v58._context), function(v61)
        return {
            context = l__context_0,
            duration = nil,
            path = v61.path,
            script = v61.script
        };
    end), v59);
end;
v31.isTestFilePath = function(v62, v63)
    return l_Array_0.every(v62._testPathCases, function(v64)
        return v64.isMatch(v63);
    end);
end;
v31.findMatchingTests = function(v65, v66)
    return v65:_getAllTestPaths(v66);
end;
v31._getTestPaths = function(v67, v68, _)
    return v4.resolve():andThen(function()
        if v68.testPathPattern ~= nil then
            return v67:findMatchingTests(v68.testPathPattern);
        else
            return {
                tests = {}
            };
        end;
    end);
end;
v31.getTestPaths = function(v70, v71, v72, _)
    return v4.resolve():andThen(function()
        return (v70:_getTestPaths(v71, v72):expect());
    end);
end;
v6.default = v31;
return v6;


local l_Parent_0 = script.Parent.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_Object_0 = v1.Object;
local l_Set_0 = v1.Set;
local l_WeakMap_0 = v1.WeakMap;
local v8 = require(l_Parent_0.Promise);
local v9 = {};
local v10 = require(l_Parent_0.ChalkLua);
local l_exit_0 = require(l_Parent_0.RobloxShared).nodeUtils.exit;
local v12 = require(l_Parent_0.JestReporters);
local l_DefaultReporter_0 = v12.DefaultReporter;
local l_SummaryReporter_0 = v12.SummaryReporter;
local l_VerboseReporter_0 = v12.VerboseReporter;
local v16 = require(l_Parent_0.JestTestResult);
local l_addResult_0 = v16.addResult;
local l_buildFailureTestResult_0 = v16.buildFailureTestResult;
local l_makeEmptyAggregatedTestResult_0 = v16.makeEmptyAggregatedTestResult;
local _ = require(l_Parent_0.JestTypes);
local l_formatExecError_0 = require(l_Parent_0.JestMessageUtil).formatExecError;
local _ = require(l_Parent_0.JestRunner);
local _ = require(l_Parent_0.JestRuntime);
local l_default_0 = require(script.Parent.ReporterDispatcher).default;
local _ = require(script.Parent.TestWatcher);
local l_shouldRunInBand_0 = require(script.Parent.testSchedulerHelper).shouldRunInBand;
local _ = require(script.Parent.types);
local v28 = nil;
local v29 = nil;
local v30 = nil;
local v31 = nil;
v9.createTestScheduler = function(v32, v33)
    return v8.resolve():andThen(function()
        local v34 = v28.new(v32, v33);
        v34:_setupReporters():expect();
        return v34;
    end);
end;
v28 = {};
v28.__index = v28;
v28.new = function(v35, v36)
    local v37 = setmetatable({}, v28);
    v37._context = v36;
    v37._dispatcher = l_default_0.new();
    v37._globalConfig = v35;
    return v37;
end;
v28.addReporter = function(v38, v39)
    v38._dispatcher:register(v39);
end;
v28.removeReporter = function(v40, v41)
    v40._dispatcher:unregister(v41);
end;
v28.scheduleTests = function(v42, v43, v44)
    return v8.resolve():andThen(function()
        local v45 = nil;
        local v46 = nil;
        local v47 = nil;
        local function v48(...)
            return v42._dispatcher:onTestFileStart(...);
        end;
        local v49 = {};
        local v50 = l_Set_0.new();
        l_Array_0.forEach(v43, function(v51)
            v50:add(v51.context);
            local v52 = v51.duration or 0;
            if v52 > 0 then
                table.insert(v49, v52);
            end;
        end);
        local v53 = v30(#v43);
        local v54 = math.ceil(v31(v49, v42._globalConfig.maxWorkers) / 1000);
        local v55 = l_shouldRunInBand_0(v43, v49, v42._globalConfig);
        v45 = function(v56, v57)
            return v8.resolve():andThen(function()
                if not v44:isInterrupted() then
                    if #v57.testResults == 0 then
                        return v46(v56, {
                            message = "Your test suite must contain at least one test.",
                            stack = l_Error_0.new("Your test suite must contain at least one test.").stack
                        });
                    elseif not l_Boolean_0.toJSBoolean(v57.leaks) then
                        l_addResult_0(v53, v57);
                        v42._dispatcher:onTestFileResult(v56, v57, v53):expect();
                        return v42:_bailIfNeeded(v50, v53, v44);
                    else
                        local v58 = ("%sYour test suite is leaking memory. Please ensure all references are cleaned.\n"):format((tostring(v10.red:bold("EXPERIMENTAL FEATURE\n" .. "  - Async operations that have not finished (e.g. fs.readFile).\n" .. "  - Timers not properly mocked (e.g. setInterval, setTimeout).\n" .. "  - Keeping references to the global scope.";
                        return v46(v56, {
                            message = v58,
                            stack = l_Error_0.new(v58).stack
                        });
                    end;
                else
                    return v8.resolve();
                end;
            end);
        end;
        v46 = function(v59, v60)
            return v8.resolve():andThen(function()
                if not v44:isInterrupted() then
                    local v61 = l_buildFailureTestResult_0(v59.path, v60);
                    v61.failureMessage = l_formatExecError_0(v61.testExecError, v59.context.config, v42._globalConfig, v59.path);
                    l_addResult_0(v53, v61);
                    v42._dispatcher:onTestFileResult(v59, v61, v53):expect();
                    return ;
                else
                    return ;
                end;
            end);
        end;
        v47 = function()
            return v8.resolve():andThen(function()
                l_Array_0.forEach(v8.all(l_Array_0.map(l_Array_0.from(v50), function(v62)
                    return v8.resolve():andThen(function()
                        return {
                            v62
                        };
                    end);
                end)):expect(), function(_)
                    local v64 = {
                        filesRemoved = 0,
                        filesRemovedList = {}
                    };
                    local l_snapshot_0 = v53.snapshot;
                    l_snapshot_0.filesRemoved = l_snapshot_0.filesRemoved + v64.filesRemoved;
                    v53.snapshot.filesRemovedList = l_Array_0.concat(if v53.snapshot.filesRemovedList ~= nil then v53.snapshot.filesRemovedList else {}, v64.filesRemovedList);
                end);
                local v66 = v42._globalConfig.updateSnapshot == "all";
                v53.snapshot.didUpdate = v66;
                local l_snapshot_1 = v53.snapshot;
                local v68 = not v66;
                if v68 then
                    v68 = true;
                    if v53.snapshot.unchecked <= 0 then
                        v68 = true;
                        if v53.snapshot.unmatched <= 0 then
                            v68 = v53.snapshot.filesRemoved > 0;
                        end;
                    end;
                end;
                l_snapshot_1.failure = v68;
            end);
        end;
        v42._dispatcher:onRunStart(v53, {
            estimatedTime = v54,
            showStatus = not l_Boolean_0.toJSBoolean(v55)
        }):expect();
        local v69 = {};
        local v70 = l_WeakMap_0.new();
        v8.all(l_Array_0.map(l_Array_0.from(v50), function(v71)
            return v8.resolve():andThen(function()
                local l_config_0 = v71.config;
                if not l_Boolean_0.toJSBoolean(v69[l_config_0.runner]) then
                    local v73 = require(l_Parent_0.JestRunner).default.new(v42._globalConfig, {
                        changedFiles = v42._context.changedFiles,
                        sourcesRelatedToTestsInChangedFiles = v42._context.sourcesRelatedToTestsInChangedFiles
                    });
                    v69[l_config_0.runner] = v73;
                    v70:set(v73, v71);
                end;
            end);
        end)):expect();
        local v74 = v42:_partitionTests(v69, v43);
        if v74 ~= nil then
            local l_status_0, l_result_0 = pcall(function()
                for _, v76 in l_Object_0.keys(v69) do
                    local v77 = v69[v76];
                    local v78 = v70:get(v77);
                    v29(v78);
                    local v79 = v74[v76];
                    local v80 = {
                        serial = v55 or l_Boolean_0.toJSBoolean(v77.isSerial)
                    };
                    if not v77.__PRIVATE_UNSTABLE_API_supportsEventEmitters__ then
                        v77:runTests(v79, v44, v48, v45, v46, v80):expect();
                    else
                        local v91 = {
                            v77:on("test-file-start", function(v81)
                                return v48(v81[1]);
                            end),
                            v77:on("test-file-success", function(v82)
                                local v83, v84 = table.unpack(v82, 1, 2);
                                return v45(v83, v84);
                            end),
                            v77:on("test-file-failure", function(v85)
                                local v86, v87 = table.unpack(v85, 1, 2);
                                return v46(v86, v87);
                            end),
                            v77:on("test-case-result", function(v88)
                                local v89, v90 = table.unpack(v88, 1, 2);
                                v42._dispatcher:onTestCaseResult({
                                    context = v78,
                                    path = v89.Name,
                                    script = v89
                                }, v90);
                            end)
                        };
                        v77:runTests(v79, v44, nil, nil, nil, v80):expect();
                        l_Array_0.forEach(v91, function(v92)
                            return v92();
                        end);
                    end;
                    v77:cleanup();
                end;
            end);
            if not (l_status_0 or v44:isInterrupted()) then
                error(l_result_0);
            end;
        end;
        v47():expect();
        v53.wasInterrupted = v44:isInterrupted();
        v42._dispatcher:onRunComplete(v50, v53):expect();
        local v95 = false;
        if v53.numFailedTests == 0 then
            v95 = v53.numRuntimeErrorTestSuites == 0;
        end;
        v53.success = (not v95 or v53.snapshot.failure) or v42._dispatcher:hasErrors();
        return v53;
    end);
end;
v28._partitionTests = function(_, v97, v98)
    if #l_Object_0.keys(v97) > 1 then
        return l_Array_0.reduce(v98, function(v99, v100)
            local l_runner_0 = v100.context.config.runner;
            if not l_Boolean_0.toJSBoolean(v99[l_runner_0]) then
                v99[l_runner_0] = {};
            end;
            table.insert(v99[l_runner_0], v100);
            return v99;
        end, {});
    elseif #v98 > 0 and v98[1] ~= nil then
        return l_Object_0.assign({}, {
            [v98[1].context.config.runner] = v98
        });
    else
        return nil;
    end;
end;
v28._shouldAddDefaultReporters = function(v102, v103)
    local v104 = true;
    if v103 ~= nil then
        v104 = l_Boolean_0.toJSBoolean(l_Array_0.find(v103, function(v105)
            return v102:_getReporterProps(v105).path == "default";
        end));
    end;
    return v104;
end;
v28._setupReporters = function(v106)
    return v8.resolve():andThen(function()
        if v106:_shouldAddDefaultReporters(nil) then
            v106:_setupDefaultReporters(false);
        end;
    end);
end;
v28._setupDefaultReporters = function(v107, _)
    v107:addReporter(if not v107._globalConfig.verbose then l_DefaultReporter_0.new(v107._globalConfig) else l_VerboseReporter_0.new(v107._globalConfig));
    v107:addReporter(l_SummaryReporter_0.new(v107._globalConfig));
end;
v28._getReporterProps = function(v109, v110)
    if typeof(v110) == "string" then
        return {
            options = v109._options,
            path = v110
        };
    elseif not l_Array_0.isArray(v110) then
        error(l_Error_0.new("Reporter should be either a string or an array"));
        return ;
    else
        return {
            options = v110[2],
            path = v110[1]
        };
    end;
end;
v28._bailIfNeeded = function(v111, v112, v113, v114)
    return v8.resolve():andThen(function()
        if v111._globalConfig.bail ~= 0 and v111._globalConfig.bail <= v113.numFailedTests then
            if not v114:isWatchMode() then
                local l_status_1, l_result_1 = pcall(function()
                    v111._dispatcher:onRunComplete(v112, v113):expect();
                end);
                l_exit_0(v111._globalConfig.testFailureExitCode);
                if not l_status_1 then
                    error(l_result_1);
                end;
            else
                v114:setState({
                    interrupted = true
                }):expect();
                return ;
            end;
        end;
    end);
end;
v29 = function(v117, v118)
    if not l_Boolean_0.toJSBoolean(v117) then
        error(l_Error_0.new(v118));
    end;
end;
v30 = function(v119)
    local v120 = l_makeEmptyAggregatedTestResult_0();
    v120.numTotalTestSuites = v119;
    v120.startTime = DateTime.now().UnixTimestampMillis;
    v120.success = false;
    return v120;
end;
v31 = function(v121, v122)
    if #v121 == 0 then
        return 0;
    else
        local v123 = math.max(table.unpack(v121));
        if #v121 <= v122 then
            return v123;
        else
            return (math.max(l_Array_0.reduce(v121, function(v124, v125)
                return v124 + v125;
            end) / v122, v123));
        end;
    end;
end;
return v9;


local l_Parent_0 = script.Parent.Parent;
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v2 = require(l_Parent_0.Promise);
local v3 = {};
local l_default_0 = require(l_Parent_0.Emittery).default;
local v5 = setmetatable({}, {
    __index = l_default_0
});
v5.__index = v5;
v5.new = function(v6)
    local v7 = setmetatable(l_default_0.new(), v5);
    local l_isWatchMode_0 = v6.isWatchMode;
    v7.state = {
        interrupted = false
    };
    v7._isWatchMode = l_isWatchMode_0;
    return v7;
end;
v5.setState = function(v9, v10)
    return v2.resolve():andThen(function()
        l_Object_0.assign(v9.state, v10);
        v9:emit("change", v9.state):expect();
    end);
end;
v5.isInterrupted = function(v11)
    return v11.state.interrupted;
end;
v5.isWatchMode = function(v12)
    return v12._isWatchMode;
end;
v3.default = v5;
return v3;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Set_0 = v1.Set;
local l_String_0 = v1.String;
local v5 = {};
local v6 = require(script.Parent.jsHelpers.stripAnsi);
local _ = require(l_Parent_0.JestTypes);
local l_formatExecError_0 = require(l_Parent_0.JestMessageUtil).formatExecError;
v5.formatHandleErrors = function(v9, v10)
    local v11 = l_Set_0.new();
    return l_Array_0.filter(l_Array_0.map(v9, function(v12)
        return l_formatExecError_0(v12, v10, {
            noStackTrace = false
        }, nil, true);
    end), function(v13)
        local v14 = v6(v13);
        local v15 = string.match(v14, "%s+at(.*)");
        if v15 == nil then
            return true;
        else
            local v16 = l_String_0.trim((string.sub(v14, (string.find(v14, v15)))));
            if not v11:has(v16) then
                v11:add(v16);
                return true;
            else
                return false;
            end;
        end;
    end);
end;
return v5;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
v2.default = function(_, _)
    return nil;
end;
return v2;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = {};
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.Parent.getProjectDisplayName).default;
local v7 = nil;
v4.default = function(v8, v9)
    local v10 = v7(v9);
    return l_Array_0.filter(v8, function(v11)
        return v10((l_default_0(v11)));
    end);
end;
v7 = function(v12)
    local v13 = if not l_Array_0.isArray(v12.selectProjects) then {} else v12.selectProjects;
    local v14 = if not l_Array_0.isArray(v12.ignoreProjects) then {} else v12.ignoreProjects;
    local function v15()
        return true;
    end;
    local v17 = #v13 > 0 and function(v16)
        if not l_Boolean_0.toJSBoolean(v16) then
            return v16;
        else
            return (l_Array_0.includes(v13, v16));
        end;
    end or v15;
    local v19 = #v14 > 0 and function(v18)
        return not l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(v18) then v18 else l_Array_0.includes(v14, v18));
    end or v15;
    return function(v20)
        return l_Boolean_0.toJSBoolean(v17(v20)) and l_Boolean_0.toJSBoolean(v19(v20));
    end;
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = {};
local v5 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.Parent.pluralize).default;
local _ = require(script.Parent.types);
v4.default = function(v9, v10, v11)
    local v14 = l_Array_0.reduce(v9, function(v12, v13)
        return v12 + (not not l_Boolean_0.toJSBoolean(v13.matches.total) and v13.matches.total or 0);
    end, 0);
    local v15 = nil;
    v15 = if not l_Boolean_0.toJSBoolean(v10.runTestsByPath) then ("Pattern: %s - 0 matches"):format(v5.yellow(v10.testPathPattern)) else ("Files: %s"):format((tostring(l_Array_0.join(l_Array_0.map(v10.nonFlagArgs, function(v16)
        return ("\"%s\""):format((tostring(v16)));
    end), ", "))));
    if not l_Boolean_0.toJSBoolean(v11) then
        return ("%s\n"):format(v5.bold("No tests found, exiting with code 1")) .. "Run with `--passWithNoTests` to exit with code 0" .. "\n" .. ("In %s"):format(v5.bold(v10.rootDir)) .. "\n" .. ("  %s checked across %s. Run with `--verbose` for more details."):format(tostring(l_default_0("file", v14, "s")), (tostring(l_default_0("project", #v9, "s")))) .. ("\n%s"):format((tostring(v15)));
    else
        return ("%s\n"):format(v5.bold("No tests found, exiting with code 0")) .. ("In %s"):format(v5.bold(v10.rootDir)) .. "\n" .. ("  %s checked across %s. Run with `--verbose` for more details."):format(tostring(l_default_0("file", v14, "s")), (tostring(l_default_0("project", #v9, "s")))) .. ("\n%s"):format((tostring(v15)));
    end;
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = {};
local v2 = require(l_Parent_0.ChalkLua);
v1.default = function()
    return v2.bold("No tests found, exiting with code 0");
end;
return v1;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local v5 = {};
local v6 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.Parent.pluralize).default;
local _ = require(script.Parent.types);
v5.default = function(v10, v11, v12)
    local v20 = l_Array_0.map(v10, function(v13)
        local v14 = v13.matches.stats ~= nil and v13.matches.stats or {};
        local l_config_0 = v13.context.config;
        local v19 = l_Array_0.join(l_Array_0.filter(l_Array_0.map(l_Object_0.keys(v14), function(v16)
            if v16 == "roots" and #l_config_0.roots == 1 then
                return nil;
            else
                local v17 = l_config_0[v16];
                if not l_Boolean_0.toJSBoolean(v17) then
                    return nil;
                else
                    return ("  %s: %s - %s"):format(v16, v6.yellow(if not l_Array_0.isArray(v17) then tostring(v17) else l_Array_0.join(v17, ", ")), (tostring((l_default_0("match", not not l_Boolean_0.toJSBoolean(v14[v16]) and v14[v16] or 0, "es")))));
                end;
            end;
        end), function(v18)
            return l_Boolean_0.toJSBoolean(v18);
        end), "\n");
        if not l_Boolean_0.toJSBoolean(v13.matches.total) then
            return ("No files found in %s.\n"):format((tostring(l_config_0.rootDir))) .. "Make sure Jest's configuration does not exclude this directory." .. "\nTo set up Jest, make sure a package.json file exists.\n" .. "Jest Documentation: " .. "https://jestjs.io/docs/configuration";
        else
            return ("In %s\n"):format(v6.bold((tostring(l_config_0.rootDir)))) .. ("  %s checked.\n"):format(l_default_0("file", not not l_Boolean_0.toJSBoolean(v13.matches.total) and v13.matches.total or 0, "s")) .. v19;
        end;
    end);
    local v21 = nil;
    v21 = if not v11.runTestsByPath then ("Pattern: %s - 0 matches"):format(v6.yellow(v11.testPathPattern)) else ("Files: %s"):format(l_Array_0.join(l_Array_0.map(v11.nonFlagArgs, function(v22)
        return ("\"%s\""):format((tostring(v22)));
    end), ", "));
    if not l_Boolean_0.toJSBoolean(v12) then
        return ("%s\n"):format(v6.bold("No tests found, exiting with code 1")) .. "Run with `--passWithNoTests` to exit with code 0" .. "\n" .. l_Array_0.join(v20, "\n") .. "\n" .. v21;
    else
        return ("%s\n%s\n%s"):format(v6.bold("No tests found, exiting with code 0"), tostring(l_Array_0.join(v20, "\n")), (tostring(v21)));
    end;
end;
return v5;


local l_Parent_0 = script.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.Parent.getNoTestFound).default;
local l_default_1 = require(script.Parent.getNoTestFoundPassWithNoTests).default;
local l_default_2 = require(script.Parent.getNoTestFoundVerbose).default;
local _ = require(script.Parent.types);
v2.default = function(v8, v9)
    local v10 = l_Boolean_0.toJSBoolean(v9.passWithNoTests);
    if not l_Boolean_0.toJSBoolean(v9.passWithNoTests) then
        local v11 = {
            exitWith0 = v10
        };
        local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
        local v13 = true;
        if #v8 ~= 1 then
            v13 = v9.verbose;
        end;
        v11.message = if not l_toJSBoolean_0(v13) then l_default_0(v8, v9, v10) else l_default_2(v8, v9, v10);
        return v11;
    else
        return {
            exitWith0 = v10,
            message = l_default_1()
        };
    end;
end;
return v2;


local l_Parent_0 = script.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
v2.default = function(v4)
    local v5 = if typeof(v4.displayName) == "table" then v4.displayName.name else nil;
    return not not l_Boolean_0.toJSBoolean(v5) and v5 or nil;
end;
return v2;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = {};
local v5 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.Parent.getProjectDisplayName).default;
v4.default = function(v8, v9)
    local v11 = #l_Array_0.filter(v8, function(v10)
        return not l_Boolean_0.toJSBoolean(l_default_0(v10));
    end);
    if v11 == 0 then
        return nil;
    else
        local v12 = {};
        if l_Boolean_0.toJSBoolean(v9.selectProjects) then
            table.insert(v12, "--selectProjects");
        end;
        if l_Boolean_0.toJSBoolean(v9.ignoreProjects) then
            table.insert(v12, "--ignoreProjects");
        end;
        return v5.yellow(("You provided values for %s but %s.\n"):format(tostring(l_Array_0.join(v12, " and ")), v11 == 1 and "a project does not have a name" or ("%s projects do not have a name"):format((tostring(v11)))) .. "Set displayName in the config of all projects in order to disable this warning.\n");
    end;
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = {};
local v5 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.Parent.getProjectDisplayName).default;
local v8 = nil;
local v9 = nil;
local v10 = nil;
v4.default = function(v11, v12)
    if #v11 == 0 then
        return v8(v12);
    else
        return v9(v11);
    end;
end;
v8 = function(v13)
    if not l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(v13.ignoreProjects) then v13.ignoreProjects else v13.selectProjects) then
        if not l_Boolean_0.toJSBoolean(v13.ignoreProjects) then
            if not l_Boolean_0.toJSBoolean(v13.selectProjects) then
                return v5.yellow("No projects were found.\n");
            else
                return v5.yellow("You provided values for --selectProjects but no projects were found matching the selection.\n");
            end;
        else
            return v5.yellow("You provided values for --ignoreProjects, but no projects were found matching the selection.\n" .. "Are you ignoring all projects?\n");
        end;
    else
        return v5.yellow("You provided values for --selectProjects and --ignoreProjects, but no projects were found matching the selection.\n" .. "Are you ignoring all the selected projects?\n");
    end;
end;
v9 = function(v14)
    if #v14 == 1 then
        return ("Running one project: %s\n"):format(v5.bold((l_default_0(v14[1]))));
    else
        return ("Running %s projects:\n%s\n"):format(tostring(#v14), (tostring((l_Array_0.join(l_Array_0.sort(l_Array_0.map(v14, v10)), "\n")))));
    end;
end;
v10 = function(v15)
    local v16 = l_default_0(v15);
    return ("- %s"):format((tostring(not l_Boolean_0.toJSBoolean(v16) and "<unnamed project>" or v5.bold(v16))));
end;
return v4;


return {
    SearchSource = require(script.SearchSource).default,
    createTestScheduler = require(script.TestScheduler).createTestScheduler,
    TestWatcher = require(script.TestWatcher).default,
    runCLI = require(script.cli).runCLI
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = {};
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.JestRuntime);
v1.default = function(v4, _)
    return {
        config = v4
    };
end;
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
local l_JSON_0 = require(l_Parent_0.RobloxShared).nodeUtils.JSON;
v2.default = function(v5, v6, v7)
    v7:write(l_JSON_0.stringify({
        configs = v6,
        globalConfig = v5,
        version = "27.4.7"
    }, nil, "  ") .. "\n");
end;
return v2;


return {
    default = function(v0, v1, v2)
        return ("%s %s%s"):format(tostring(v1), v0, v1 == 1 and "" or v2);
    end
};


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);
v2.shouldRunInBand = function(_, _, _)
    return true;
end;
return v2;


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