local l_Util_0 = script.Parent.Parent.Parent.Core.Util;
local v1 = require(l_Util_0.AssetConfigConstants);
local v2 = require(l_Util_0.ScreenSetup);
local v3 = require(l_Util_0.Images);
local v4 = {};
local v5 = {
    name = "GET_ASSET_DETAIL_FAILURE",
    trigger = "FailToGetAssetDetail",
    action = "CloseAssetConfig"
};
local v6 = {
    name = "SET_ASSET_PRICE_FAILURE",
    trigger = "FailToSetPrice",
    action = "ShowPriceFailReason"
};
local v7 = {
    name = "SET_ASSET_THUMBNAIL_FAILURE",
    trigger = "FaileToSetIcon",
    action = "ShowThumbnailFailReason"
};
v4.NetworkErrors = {
    [v5.name] = v5,
    [v6.name] = v6,
    [v7.name] = v7
};
v4.GET_ASSET_DETAIL_FAILURE_ACTION = "CloseAssetConfig";
local v8 = {
    name = v1.SIDE_TABS.General,
    image = v3.GENERAL_SIDE_TAB
};
local v9 = {
    name = v1.SIDE_TABS.Versions,
    image = v3.VERSIONS_SIDE_TAB
};
local v10 = {
    name = v1.SIDE_TABS.Sales,
    image = v3.SALES_SIDE_TAB
};
local v11 = {
    name = v1.SIDE_TABS.Override
};
local v12 = {
    name = v1.SIDE_TABS.Permissions,
    image = v3.PERMISSIONS_SIDE_TAB
};
v4.OWNER_TYPES = {
    User = 1,
    Group = 2
};
v4.getAssetconfigContent = function(_, v14, v15, v16, v17)
    local v18 = {
        v8
    };
    if not (not v16 or not v17) then
        v18[#v18 + 1] = v12;
    end;
    if not (not (v15 == Enum.AssetType.Model) or not v2.queryParam(v14, v15, v2.keys.SHOW_VERSIONS_TAB)) then
        v18[#v18 + 1] = v9;
    end;
    if v17 and v17.typeId == v4.OWNER_TYPES.Group then
        return v18;
    else
        if v2.queryParam(v14, v15, v2.keys.SHOW_SALES_TAB) then
            v18[#v18 + 1] = v10;
        end;
        return v18;
    end;
end;
v4.isGeneral = function(_, v20)
    return v20 == v8;
end;
v4.isVersions = function(_, v22)
    return v22 == v9;
end;
v4.isSales = function(_, v24)
    return v24 == v10;
end;
v4.isOverride = function(_, v26)
    return v26 == v11;
end;
v4.isPermissions = function(_, v28)
    return v28 == v12;
end;
v4.getOverrideTab = function(_)
    return v11;
end;
v4.getGeneralTab = function(_)
    return v8;
end;
v4.getDefualtTab = function(_)
    return v8;
end;
return v4;


local _ = require(script:FindFirstAncestor("Toolbox").Core.Types.AssetLogicTypes);
return {};


return {
    SellerStatusEnum = {
        Complete = "SELLER_STATUS_COMPLETE",
        Enabled = "SELLER_STATUS_ENABLED",
        Invalid = "SELLER_STATUS_INVALID",
        NotStarted = "SELLER_STATUS_NOT_STARTED",
        Pending = "SELLER_STATUS_PENDING",
        Rejected = "SELLER_STATUS_REJECTED",
        Restricted = "SELLER_STATUS_RESTRICTED",
        RestrictedSoon = "SELLER_STATUS_RESTRICTED_SOON"
    }
};


return {
    Invalid = "Invalid",
    Success = "Success",
    AlreadyOwned = "AlreadyOwned"
};


return {
    None = 1,
    Waiting = 2,
    Success = 3,
    Failed = 4
};


return {
    AlreadyOwned = "PURCHASE_TRANSACTION_STATUS_ALREADY_OWNED",
    ExcessiveTransactions = "PURCHASE_TRANSACTION_STATUS_EXCESSIVE_TRANSACTIONS_LIMIT",
    PriceChanged = "PURCHASE_TRANSACTION_STATUS_PRICE_CHANGED",
    Success = "PURCHASE_TRANSACTION_STATUS_SUCCESS"
};


local v0 = {
    InitLoad = 1,
    ChangeTabs = 2,
    ChangeCategory = 3,
    ChangeSort = 4,
    ChangeGroup = 5,
    StartSearch = 6,
    NextPage = 7,
    UpdatePage = 8
};
v0.IsUpdate = function(v1)
    local v2 = true;
    if v1 ~= v0.NextPage then
        v2 = v1 == v0.UpdatePage;
    end;
    return v2;
end;
return v0;


local v0 = require(script.Parent.Parent.Parent.Core.Types.Category);
local v5 = {
    SORT_OPTIONS = {
        {
            name = "Relevance",
            sort = "Relevance"
        },
        {
            name = "MostTaken",
            sort = "MostTaken"
        },
        {
            name = "Favorites",
            sort = "Favorites"
        },
        {
            name = "Updated",
            sort = "Updated"
        },
        {
            name = "Ratings",
            sort = "Ratings"
        }
    },
    canSort = function(v1, v2)
        local v3 = false;
        if v1 ~= "" then
            v3 = v0.categoryIsFreeAsset(v2);
        end;
        return v3;
    end,
    getDefaultSortForCategory = function(v4)
        if not v0.categoryIsPackage(v4) then
            return 1;
        else
            return 4;
        end;
    end
};
v5.getDefaultSortNameForCategory = function(v6)
    return v5.SORT_OPTIONS[v5.getDefaultSortForCategory(v6)];
end;
v5.getDefaultSortForGroups = function(v7)
    return v5.getDefaultSortForCategory(v7.categoryName);
end;
return v5;


local _ = require(script:FindFirstAncestor("Toolbox").Core.Models.AssetInfo);
return {
    ExcessiveTransactions = "ExcessiveTransactions",
    PriceChanged = "PriceChanged",
    PurchaseFailed = "PurchaseFailed",
    PurchaseSuccess = "PurchaseSuccess"
};


local v0 = require(script.Parent.Parent.Parent.Core.Types.Category);
return {
    SUGGESTIONS = {
        {
            name = "NPC",
            search = "NPC"
        },
        {
            name = "Vehicle",
            search = "Vehicle"
        },
        {
            name = "Weapon",
            search = "Weapon"
        },
        {
            name = "Building",
            search = "Building"
        },
        {
            name = "Light",
            search = "Light"
        }
    },
    canHaveSuggestions = function(v1, v2)
        local v3 = false;
        if v1 == "" then
            v3 = v0.categoryIsFreeAsset(v2);
        end;
        return v3;
    end
};


return {
    Icon = {
        Asset = "Asset",
        AvatarHeadShot = "AvatarHeadShot",
        GroupIcon = "GroupIcon"
    }
};


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Core.Util.Analytics.Senders);
local _ = require(l_Parent_0.Core.Types.AnalyticsTypes);
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v4 = require(l_Parent_0.Core.Util.getUserId);
local l_NewPackageAnalyticsWithRefactor2_0 = game:GetFastFlag("NewPackageAnalyticsWithRefactor2");
local v6 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxListviewAnalytics);
local v7 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxAddAutocorrect);
local v8 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxEnableSearchOptionsRefactor);
local v9 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxAddCreationsFilterToListView);
local v10 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagEnableUGCUploadFlowAnalytics);
local v11 = require(l_Parent_0.Core.Flags.getFFlagEnableUGCIndividualAssetUploadAnalytics);
local l_game_EngineFeature_0 = game:GetEngineFeature("ToolboxSampleProductMUS418");
local v13 = require(l_Parent_0.Core.Util.getPlaceId);
local function v15()
    local v14 = nil;
    pcall(function()
        v14 = l_RbxAnalyticsService_0:GetSessionId();
    end);
    return v14;
end;
local function v17()
    local v16 = nil;
    pcall(function()
        v16 = l_RbxAnalyticsService_0:GetClientId();
    end);
    return v16;
end;
local function v18()
    return 0;
end;
local v19 = {};
local v20 = game:GetService("RunService"):IsEdit();
v19.getIsEditMode = function()
    return v20;
end;
v19.getPlaceId = v13;
v19.getPlatformId = v18;
v19.getClientId = v17;
v19.getStudioSessionId = v15;
if v10() then
    v19.Status = {
        Start = "Start",
        Success = "Success",
        Failure = "Failure"
    };
end;
v19.onTermSearchedWithoutInsertion = function(v21, v22)
    local l_sendEventImmediately_0 = v1.sendEventImmediately;
    local v24 = "studio";
    local v25 = "toolbox";
    local v26 = "termSearchedWithoutInsertion";
    local v27 = {
        categoryName = v21,
        searchTerm = v22
    };
    local v28 = nil;
    local v29;
    do
        local l_v28_0 = v28;
        pcall(function()
            l_v28_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v29 = l_v28_0;
    end;
    v27.studioSid = v29;
    v28 = nil;
    do
        local l_v28_1 = v28;
        pcall(function()
            l_v28_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v29 = l_v28_1;
    end;
    v27.clientId = v29;
    v27.userId = v4();
    v27.isEditMode = v20;
    l_sendEventImmediately_0(v24, v25, v26, v27);
end;
v19.onCreatorSearched = function(v32, v33, v34)
    local l_sendEventImmediately_1 = v1.sendEventImmediately;
    local v36 = "studio";
    local v37 = "toolbox";
    local v38 = "creatorSearched";
    local v39 = {
        searchTerm = v32,
        creatorId = v33
    };
    local v40 = nil;
    local v41;
    do
        local l_v40_0 = v40;
        pcall(function()
            l_v40_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v41 = l_v40_0;
    end;
    v39.studioSid = v41;
    v40 = nil;
    do
        local l_v40_1 = v40;
        pcall(function()
            l_v40_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v41 = l_v40_1;
    end;
    v39.clientId = v41;
    v39.userId = v4();
    v39.type = if not v8() then nil else v34;
    v39.isEditMode = v20;
    l_sendEventImmediately_1(v36, v37, v38, v39);
end;
v19.onTryAsset = function(v44)
    local l_sendEventImmediately_2 = v1.sendEventImmediately;
    local v46 = "studio";
    local v47 = "toolbox";
    local v48 = "tryAsset";
    local v49 = {
        assetId = v44
    };
    local v50 = nil;
    local v51;
    do
        local l_v50_0 = v50;
        pcall(function()
            l_v50_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v51 = l_v50_0;
    end;
    v49.studioSid = v51;
    v50 = nil;
    do
        local l_v50_1 = v50;
        pcall(function()
            l_v50_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v51 = l_v50_1;
    end;
    v49.clientId = v51;
    v49.userId = v4();
    v49.isEditMode = v20;
    l_sendEventImmediately_2(v46, v47, v48, v49);
end;
v19.onTryAssetFailure = function(v54)
    local l_sendEventImmediately_3 = v1.sendEventImmediately;
    local v56 = "studio";
    local v57 = "toolbox";
    local v58 = "tryAssetFailure";
    local v59 = {
        assetId = v54
    };
    local v60 = nil;
    local v61;
    do
        local l_v60_0 = v60;
        pcall(function()
            l_v60_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v61 = l_v60_0;
    end;
    v59.studioSid = v61;
    v60 = nil;
    do
        local l_v60_1 = v60;
        pcall(function()
            l_v60_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v61 = l_v60_1;
    end;
    v59.clientId = v61;
    v59.userId = v4();
    v59.isEditMode = v20;
    l_sendEventImmediately_3(v56, v57, v58, v59);
end;
v19.onSearchOptionsOpened = function()
    local l_sendEventImmediately_4 = v1.sendEventImmediately;
    local v65 = "studio";
    local v66 = "toolbox";
    local v67 = "searchOptionsOpened";
    local v68 = {};
    local v69 = nil;
    local v70;
    do
        local l_v69_0 = v69;
        pcall(function()
            l_v69_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v70 = l_v69_0;
    end;
    v68.studioSid = v70;
    v69 = nil;
    do
        local l_v69_1 = v69;
        pcall(function()
            l_v69_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v70 = l_v69_1;
    end;
    v68.clientId = v70;
    v68.userId = v4();
    v68.isEditMode = v20;
    l_sendEventImmediately_4(v65, v66, v67, v68);
end;
v19.onCategorySelected = function(v73, v74)
    local l_sendEventImmediately_5 = v1.sendEventImmediately;
    local v76 = "studio";
    local v77 = "click";
    local v78 = "toolboxCategorySelection";
    local v79 = {
        oldCategory = v73,
        newCategory = v74
    };
    local v80 = nil;
    local v81;
    do
        local l_v80_0 = v80;
        pcall(function()
            l_v80_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v81 = l_v80_0;
    end;
    v79.studioSid = v81;
    v80 = nil;
    do
        local l_v80_1 = v80;
        pcall(function()
            l_v80_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v81 = l_v80_1;
    end;
    v79.clientId = v81;
    v79.isEditMode = v20;
    l_sendEventImmediately_5(v76, v77, v78, v79);
end;
v19.onAssetInserted = function(v84, v85, v86, v87, v88)
    local v89 = {
        assetId = v84,
        searchText = v85,
        assetIndex = v86,
        currentCategory = v87
    };
    local v90 = nil;
    local v91;
    do
        local l_v90_0 = v90;
        pcall(function()
            l_v90_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v91 = l_v90_0;
    end;
    v89.studioSid = v91;
    v90 = nil;
    do
        local l_v90_1 = v90;
        pcall(function()
            l_v90_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v91 = l_v90_1;
    end;
    v89.clientId = v91;
    v89.placeId = v13();
    v89.userId = v4();
    v89.isEditMode = v20;
    if v6() then
        v89.layoutMode = v88;
    end;
    v1.sendEventImmediately("studio", "click", "toolboxInsert", v89);
end;
v19.onAssetDragInserted = function(v94, v95, v96, v97)
    local l_sendEventImmediately_6 = v1.sendEventImmediately;
    local v99 = "studio";
    local v100 = "drag";
    local v101 = "toolboxInsert";
    local v102 = {
        assetId = v94,
        searchText = v95,
        assetIndex = v96,
        currentCategory = v97
    };
    local v103 = nil;
    local v104;
    do
        local l_v103_0 = v103;
        pcall(function()
            l_v103_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v104 = l_v103_0;
    end;
    v102.studioSid = v104;
    v103 = nil;
    do
        local l_v103_1 = v103;
        pcall(function()
            l_v103_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v104 = l_v103_1;
    end;
    v102.clientId = v104;
    v102.placeId = v13();
    v102.userId = v4();
    v102.isEditMode = v20;
    l_sendEventImmediately_6(v99, v100, v101, v102);
end;
v19.reportDragInsertFinished = function(v107, v108)
    local l_sendEventImmediately_7 = v1.sendEventImmediately;
    local v110 = "studio";
    local v111 = "Marketplace";
    local v112 = "DragInsertFinished";
    local v113 = {
        assetId = v107,
        assetTypeId = v108
    };
    local v114 = nil;
    local v115;
    do
        local l_v114_0 = v114;
        pcall(function()
            l_v114_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v115 = l_v114_0;
    end;
    v113.studioSid = v115;
    v114 = nil;
    do
        local l_v114_1 = v114;
        pcall(function()
            l_v114_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v115 = l_v114_1;
    end;
    v113.clientId = v115;
    v113.placeId = v13();
    v113.userId = v4();
    v113.isEditMode = v20;
    l_sendEventImmediately_7(v110, v111, v112, v113);
end;
v19.onPackageNoteCreated = function(v118, v119, v120)
    local l_sendEventImmediately_8 = v1.sendEventImmediately;
    local v122 = "studio";
    local v123 = "AssetConfig";
    local v124 = "PackageNoteCreated";
    local v125 = {
        assetId = v118,
        assetVersionNumber = v119,
        message = v120
    };
    local v126 = nil;
    local v127;
    do
        local l_v126_0 = v126;
        pcall(function()
            l_v126_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v127 = l_v126_0;
    end;
    v125.studioSid = v127;
    v126 = nil;
    do
        local l_v126_1 = v126;
        pcall(function()
            l_v126_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v127 = l_v126_1;
    end;
    v125.clientId = v127;
    v125.placeId = v13();
    v125.userId = v4();
    l_sendEventImmediately_8(v122, v123, v124, v125);
end;
v19.onPackageNoteDiscarded = function(v130, v131, v132)
    local l_sendEventImmediately_9 = v1.sendEventImmediately;
    local v134 = "studio";
    local v135 = "AssetConfig";
    local v136 = "PackageNoteDiscarded";
    local v137 = {
        assetId = v130,
        assetVersionNumber = v131,
        message = v132
    };
    local v138 = nil;
    local v139;
    do
        local l_v138_0 = v138;
        pcall(function()
            l_v138_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v139 = l_v138_0;
    end;
    v137.studioSid = v139;
    v138 = nil;
    do
        local l_v138_1 = v138;
        pcall(function()
            l_v138_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v139 = l_v138_1;
    end;
    v137.clientId = v139;
    v137.placeId = v13();
    v137.userId = v4();
    l_sendEventImmediately_9(v134, v135, v136, v137);
end;
v19.onPackageNoteCanceled = function(v142)
    local l_sendEventImmediately_10 = v1.sendEventImmediately;
    local v144 = "studio";
    local v145 = "AssetConfig";
    local v146 = "PackageNoteCanceled";
    local v147 = {
        assetId = v142
    };
    local v148 = nil;
    local v149;
    do
        local l_v148_0 = v148;
        pcall(function()
            l_v148_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v149 = l_v148_0;
    end;
    v147.studioSid = v149;
    v148 = nil;
    do
        local l_v148_1 = v148;
        pcall(function()
            l_v148_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v149 = l_v148_1;
    end;
    v147.clientId = v149;
    v147.placeId = v13();
    v147.userId = v4();
    l_sendEventImmediately_10(v144, v145, v146, v147);
end;
v19.incrementToolboxInsertCounter = function(v152)
    v1.reportCounter(("Studio.ToolboxInsert.%s"):format((tostring(v152))));
end;
v19.incrementToolboxCategoryInsertCounter = function(v153)
    v1.reportCounter(("Studio.ToolboxCategoryInsert.%s"):format((tostring(v153))));
end;
v19.incrementWorkspaceInsertCounter = function()
    v1.reportCounter("StudioWorkspaceInsertCounter");
end;
v19.incrementUploadAssetSuccess = function(v154)
    v1.reportCounter(("Studio.Upload.%s.Success"):format((tostring(v154))));
end;
v19.incrementUploadAssetFailure = function(v155)
    v1.reportCounter(("Studio.Upload.%s.Failure"):format((tostring(v155))));
end;
v19.onSoundPlayedCounter = function()
    v1.reportCounter("Studio.ToolboxAudio.Played");
end;
v19.onSoundPausedCounter = function()
    v1.reportCounter("Studio.ToolboxAudio.Paused");
end;
v19.sendResultToKibana = function(v156)
    assert(l_NewPackageAnalyticsWithRefactor2_0);
    v1.sendResultToKibana(v156);
end;
v19.incrementAssetImpressionCounter = function()
    v1.reportCounter("Studio.ToolboxAsset.Impression");
end;
v19.onAssetPreviewSelected = function(v157)
    local l_sendEventDeferred_0 = v1.sendEventDeferred;
    local v159 = "studio";
    local v160 = "toolbox";
    local v161 = "assetPreviewOpen";
    local v162 = {
        assetId = v157
    };
    local v163 = nil;
    local v164;
    do
        local l_v163_0 = v163;
        pcall(function()
            l_v163_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v164 = l_v163_0;
    end;
    v162.clientId = v164;
    v162.userId = v4();
    v162.platformId = 0;
    v162.isEditMode = v20;
    l_sendEventDeferred_0(v159, v160, v161, v162);
end;
v19.onAssetPreviewEnded = function(v166, v167)
    local l_sendEventDeferred_1 = v1.sendEventDeferred;
    local v169 = "studio";
    local v170 = "toolbox";
    local v171 = "modelPreviewInteractionDuration";
    local v172 = {
        assetId = v166,
        time = v167
    };
    local v173 = nil;
    local v174;
    do
        local l_v173_0 = v173;
        pcall(function()
            l_v173_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v174 = l_v173_0;
    end;
    v172.clientId = v174;
    v172.userId = v4();
    v172.platformId = 0;
    v172.isEditMode = v20;
    l_sendEventDeferred_1(v169, v170, v171, v172);
end;
v19.onAssetInsertedFromAssetPreview = function(v176)
    local l_sendEventDeferred_2 = v1.sendEventDeferred;
    local v178 = "studio";
    local v179 = "toolbox";
    local v180 = "previewInsertion";
    local v181 = {
        assetId = v176
    };
    local v182 = nil;
    local v183;
    do
        local l_v182_0 = v182;
        pcall(function()
            l_v182_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v183 = l_v182_0;
    end;
    v181.clientId = v183;
    v181.userId = v4();
    v181.platformId = 0;
    v181.isEditMode = v20;
    l_sendEventDeferred_2(v178, v179, v180, v181);
end;
v19.onPluginButtonClickOpen = function()
    v1.sendEventDeferred("studio", "toolbox", "MarketplaceOpen", {
        userId = v4(),
        placeId = v13(),
        isEditMode = v20
    });
end;
v19.onPluginButtonClickClose = function()
    v1.sendEventDeferred("studio", "toolbox", "MarketplaceClosed", {
        userId = v4(),
        placeId = v13(),
        isEditMode = v20
    });
end;
v19.onToolboxDisplayed = function()
    v1.sendEventDeferred("studio", "toolbox", "MarketplaceImpression", {
        userId = v4(),
        placeId = v13(),
        isEditMode = v20
    });
end;
v19.onToolboxHidden = function()
    v1.sendEventDeferred("studio", "Marketplace", "MarketplaceHidden", {
        userId = v4(),
        placeId = v13(),
        isEditMode = v20
    });
end;
v19.onContextMenuClicked = function(v185, v186, v187, v188)
    local l_sendEventImmediately_11 = v1.sendEventImmediately;
    local v190 = "studio";
    local v191 = "Marketplace";
    local l_v185_0 = v185;
    local v193 = {
        assetId = v186,
        assetTypeId = v187
    };
    local v194 = nil;
    local v195;
    do
        local l_v194_0 = v194;
        pcall(function()
            l_v194_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v195 = l_v194_0;
    end;
    v193.clientId = v195;
    v193.userId = v4();
    v193.platformId = 0;
    v194 = nil;
    do
        local l_v194_1 = v194;
        pcall(function()
            l_v194_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v195 = l_v194_1;
    end;
    v193.studioSid = v195;
    v193.isEditMode = v20;
    v193.currentCategory = v188;
    l_sendEventImmediately_11(v190, v191, l_v185_0, v193);
end;
v19.openedFromPluginManagement = function()
    local l_sendEventImmediately_12 = v1.sendEventImmediately;
    local v199 = "studio";
    local v200 = "Marketplace";
    local v201 = "OpenedFromPluginManagement";
    local v202 = {};
    local v203 = nil;
    local v204;
    do
        local l_v203_0 = v203;
        pcall(function()
            l_v203_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v204 = l_v203_0;
    end;
    v202.studioSid = v204;
    v203 = nil;
    do
        local l_v203_1 = v203;
        pcall(function()
            l_v203_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v204 = l_v203_1;
    end;
    v202.clientId = v204;
    v202.isEditMode = v20;
    l_sendEventImmediately_12(v199, v200, v201, v202);
end;
v19.openedExternallyByAssetType = function(v207)
    local l_sendEventImmediately_13 = v1.sendEventImmediately;
    local v209 = "studio";
    local v210 = "Marketplace";
    local v211 = "OpenedExternallyByAssetType";
    local v212 = {
        assetTypeName = v207
    };
    local v213 = nil;
    local v214;
    do
        local l_v213_0 = v213;
        pcall(function()
            l_v213_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v214 = l_v213_0;
    end;
    v212.clientId = v214;
    v212.isEditMode = v20;
    v213 = nil;
    do
        local l_v213_1 = v213;
        pcall(function()
            l_v213_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v214 = l_v213_1;
    end;
    v212.studioSid = v214;
    l_sendEventImmediately_13(v209, v210, v211, v212);
end;
v19.reportAssetClicked = function(v217, v218)
    local l_sendEventImmediately_14 = v1.sendEventImmediately;
    local v220 = "studio";
    local v221 = "Marketplace";
    local v222 = "ReportAssetClicked";
    local v223 = {};
    local v224 = nil;
    local v225;
    do
        local l_v224_0 = v224;
        pcall(function()
            l_v224_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v225 = l_v224_0;
    end;
    v223.studioSid = v225;
    v224 = nil;
    do
        local l_v224_1 = v224;
        pcall(function()
            l_v224_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v225 = l_v224_1;
    end;
    v223.clientId = v225;
    v223.isEditMode = v20;
    v223.assetId = v217;
    v223.assetTypeId = v218;
    l_sendEventImmediately_14(v220, v221, v222, v223);
end;
v19.reportMeshPartFiltered = function(v228)
    local l_sendEventImmediately_15 = v1.sendEventImmediately;
    local v230 = "studio";
    local v231 = "Marketplace";
    local v232 = "MeshPartFiltered";
    local v233 = {};
    local v234 = nil;
    local v235;
    do
        local l_v234_0 = v234;
        pcall(function()
            l_v234_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v235 = l_v234_0;
    end;
    v233.studioSid = v235;
    v234 = nil;
    do
        local l_v234_1 = v234;
        pcall(function()
            l_v234_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v235 = l_v234_1;
    end;
    v233.clientId = v235;
    v233.isEditMode = v20;
    v233.placeId = v13();
    v233.assetId = v228;
    l_sendEventImmediately_15(v230, v231, v232, v233);
end;
v19.onIdVerificationIconClicked = function(v238)
    local l_sendEventImmediately_16 = v1.sendEventImmediately;
    local v240 = "studio";
    local v241 = "Marketplace";
    local v242 = "IdVerificationIconClicked";
    local v243 = {
        assetId = v238
    };
    local v244 = nil;
    local v245;
    do
        local l_v244_0 = v244;
        pcall(function()
            l_v244_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v245 = l_v244_0;
    end;
    v243.clientId = v245;
    v243.userId = v4();
    v243.platformId = 0;
    v244 = nil;
    do
        local l_v244_1 = v244;
        pcall(function()
            l_v244_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v245 = l_v244_1;
    end;
    v243.studioSid = v245;
    v243.isEditMode = v20;
    l_sendEventImmediately_16(v240, v241, v242, v243);
end;
v19.marketplaceSearch = function(v248, v249, v250)
    local v251 = {};
    local v252 = nil;
    local v253;
    do
        local l_v252_0 = v252;
        pcall(function()
            l_v252_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v253 = l_v252_0;
    end;
    v251.studioSid = v253;
    v252 = nil;
    do
        local l_v252_1 = v252;
        pcall(function()
            l_v252_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v253 = l_v252_1;
    end;
    v251.clientID = v253;
    v251.creatorIDs = if not v9() then nil else v250.creatorIDs;
    v251.excludeGroupCreations = if not v9() then nil else v250.excludeGroupCreations;
    v251.groupIDs = if not v9() then nil else v250.groupIDs;
    v251.isEditMode = v20;
    v251.userID = v4();
    v251.ptid = 0;
    v251.placeID = v13();
    v251.searchKeyword = v248;
    v251.isTopKeyword = v249;
    v251.categoryName = v250.categoryName;
    v251.includeOnlyVerifiedCreators = v250.includeOnlyVerifiedCreators;
    v251.assetType = v250.assetType;
    v251.searchByCreatorID = if not v9() then v250.creatorID else nil;
    v251.searchID = v250.searchId;
    v251.sort = v250.sort;
    v251.toolboxTab = v250.toolboxTab;
    if v250.qualityFilterTags and v250.qualityFilterTags ~= "" then
        v251.qualityFilterTags = v250.qualityFilterTags;
    end;
    if v7() then
        v251.previousSearchId = v250.previousSearchId;
        v251.querySource = v250.querySource;
        v251.originalUserQuery = v250.originalUserQuery;
        v251.originalCorrection = v250.originalCorrection;
    end;
    v1.sendEventImmediately("studio", "Marketplace", "MarketplaceSearch", v251);
end;
v19.marketplaceAutocompleteSearch = function(v256, v257, v258, v259, v260, v261)
    local l_sendEventImmediately_17 = v1.sendEventImmediately;
    local v263 = "studio";
    local v264 = "Marketplace";
    local v265 = "MarketplaceAutocompleteSearch";
    local v266 = {};
    local v267 = nil;
    local v268;
    do
        local l_v267_0 = v267;
        pcall(function()
            l_v267_0 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v268 = l_v267_0;
    end;
    v266.studioSid = v268;
    v267 = nil;
    do
        local l_v267_1 = v267;
        pcall(function()
            l_v267_1 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v268 = l_v267_1;
    end;
    v266.clientID = v268;
    v266.isEditMode = v20;
    v266.userID = v4();
    v266.ptid = 0;
    v266.placeID = v13();
    v266.searchKeyword = v256;
    v266.autocompletePrefix = v257;
    v266.autocompleteKeyCount = v258;
    v266.autocompleteDeleteCount = v259;
    v266.autocompleteShown = v260;
    v266.assetType = v261.assetType;
    v266.searchByCreatorID = v261.creatorID;
    v266.searchID = v261.searchId;
    v266.sort = v261.sort;
    v266.toolboxTab = v261.toolboxTab;
    l_sendEventImmediately_17(v263, v264, v265, v266);
end;
v19.onToolboxWidgetInteraction = function(v271)
    local l_sendEventImmediately_18 = v1.sendEventImmediately;
    local v273 = "studio";
    local v274 = "Marketplace";
    local v275 = "ToolboxWidgetInteraction";
    local v276 = {};
    local v277 = nil;
    local v278;
    do
        local l_v277_0 = v277;
        pcall(function()
            l_v277_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v278 = l_v277_0;
    end;
    v276.clientId = v278;
    v276.userId = v4();
    v276.platformId = 0;
    v277 = nil;
    do
        local l_v277_1 = v277;
        pcall(function()
            l_v277_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v278 = l_v277_1;
    end;
    v276.studioSid = v278;
    v276.isEditMode = v20;
    v276.widgetWidth = v271.X;
    v276.widgetHeight = v271.Y;
    l_sendEventImmediately_18(v273, v274, v275, v276);
end;
v19.AnnouncementViewed = function(v281, v282, v283, v284, v285, v286)
    local v287 = {
        announcementButtonKey = v281,
        announcementDateKey = v282,
        announcementDescriptionKey = v283,
        announcementHeaderKey = v284,
        announcementLinkKey = v285,
        announcementLinkLocation = v286
    };
    local v288 = nil;
    local v289;
    do
        local l_v288_0 = v288;
        pcall(function()
            l_v288_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v289 = l_v288_0;
    end;
    v287.clientId = v289;
    v287.platformId = 0;
    v288 = nil;
    do
        local l_v288_1 = v288;
        pcall(function()
            l_v288_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v289 = l_v288_1;
    end;
    v287.studioSid = v289;
    v287.userId = v4();
    v1.sendEventImmediately("studio", "Marketplace", "AnnouncementViewed", v287);
end;
v19.AnnouncementLinkClicked = function(v292, v293, v294, v295, v296, v297)
    local v298 = {
        announcementButtonKey = v292,
        announcementDateKey = v293,
        announcementDescriptionKey = v294,
        announcementHeaderKey = v295,
        announcementLinkKey = v296,
        announcementLinkLocation = v297
    };
    local v299 = nil;
    local v300;
    do
        local l_v299_0 = v299;
        pcall(function()
            l_v299_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v300 = l_v299_0;
    end;
    v298.clientId = v300;
    v298.platformId = 0;
    v299 = nil;
    do
        local l_v299_1 = v299;
        pcall(function()
            l_v299_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v300 = l_v299_1;
    end;
    v298.studioSid = v300;
    v298.userId = v4();
    v1.sendEventImmediately("studio", "Marketplace", "AnnouncementLinkClicked", v298);
end;
v19.AnnouncementClosed = function(v303, v304, v305, v306, v307, v308, v309)
    local v310 = {
        announcementButtonKey = v303,
        announcementDateKey = v304,
        announcementDescriptionKey = v305,
        announcementHeaderKey = v306,
        announcementLinkKey = v307,
        announcementLinkLocation = v308,
        durationBeforeClosed = v309
    };
    local v311 = nil;
    local v312;
    do
        local l_v311_0 = v311;
        pcall(function()
            l_v311_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v312 = l_v311_0;
    end;
    v310.clientId = v312;
    v310.platformId = 0;
    v311 = nil;
    do
        local l_v311_1 = v311;
        pcall(function()
            l_v311_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v312 = l_v311_1;
    end;
    v310.studioSid = v312;
    v310.userId = v4();
    v1.sendEventImmediately("studio", "Marketplace", "AnnouncementClosed", v310);
end;
v19.AnnouncementAcknowledged = function(v315, v316, v317, v318, v319, v320, v321)
    local v322 = {
        announcementButtonKey = v315,
        announcementDateKey = v316,
        announcementDescriptionKey = v317,
        announcementHeaderKey = v318,
        announcementLinkKey = v319,
        announcementLinkLocation = v320,
        durationBeforeClosed = v321
    };
    local v323 = nil;
    local v324;
    do
        local l_v323_0 = v323;
        pcall(function()
            l_v323_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v324 = l_v323_0;
    end;
    v322.clientId = v324;
    v322.platformId = 0;
    v323 = nil;
    do
        local l_v323_1 = v323;
        pcall(function()
            l_v323_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v324 = l_v323_1;
    end;
    v322.studioSid = v324;
    v322.userId = v4();
    v1.sendEventImmediately("studio", "Marketplace", "AnnouncementAcknowledged", v322);
end;
v19.AssetMediaItemsUpdated = function(v327, v328, v329)
    local l_sendEventDeferred_3 = v1.sendEventDeferred;
    local v331 = "studio";
    local v332 = "Marketplace";
    local v333 = "AssetMediaItemsUpdated";
    local v334 = {
        assetId = v327,
        assetMediaIds = table.concat(v329, ","),
        assetTypeId = v328
    };
    local v335 = nil;
    local v336;
    do
        local l_v335_0 = v335;
        pcall(function()
            l_v335_0 = l_RbxAnalyticsService_0:GetClientId();
        end);
        v336 = l_v335_0;
    end;
    v334.clientId = v336;
    v334.platformId = 0;
    v335 = nil;
    do
        local l_v335_1 = v335;
        pcall(function()
            l_v335_1 = l_RbxAnalyticsService_0:GetSessionId();
        end);
        v336 = l_v335_1;
    end;
    v334.studioSid = v336;
    v334.userId = v4();
    l_sendEventDeferred_3(v331, v332, v333, v334);
end;
if v6() then
    v19.MarketplaceListViewToggleClicked = function(v339, v340)
        local l_sendEventDeferred_4 = v1.sendEventDeferred;
        local v342 = "studio";
        local v343 = "Marketplace";
        local v344 = "MarketplaceListViewToggleClicked";
        local v345 = {
            assetType = v340.assetType,
            layoutMode = v339,
            searchId = v340.searchId
        };
        local v346 = nil;
        local v347;
        do
            local l_v346_0 = v346;
            pcall(function()
                l_v346_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v347 = l_v346_0;
        end;
        v345.clientId = v347;
        v345.userId = v4();
        l_sendEventDeferred_4(v342, v343, v344, v345);
    end;
end;
if v6() then
    v19.MarketplaceAssetRowExpanded = function(v349, v350, v351, v352)
        local l_sendEventDeferred_5 = v1.sendEventDeferred;
        local v354 = "studio";
        local v355 = "Marketplace";
        local v356 = "MarketplaceAssetRowExpanded";
        local v357 = {
            assetId = v349,
            assetType = v352.assetType,
            pageNumber = v350,
            pagePosition = v351,
            searchId = v352.searchId
        };
        local v358 = nil;
        local v359;
        do
            local l_v358_0 = v358;
            pcall(function()
                l_v358_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v359 = l_v358_0;
        end;
        v357.clientId = v359;
        v357.platformId = 0;
        v357.userId = v4();
        l_sendEventDeferred_5(v354, v355, v356, v357);
    end;
end;
if v6() then
    v19.MarketplaceRecentSearchClicked = function(v361)
        local l_sendEventDeferred_6 = v1.sendEventDeferred;
        local v363 = "studio";
        local v364 = "Marketplace";
        local v365 = "MarketplaceRecentSearchClicked";
        local v366 = {
            keyword = v361
        };
        local v367 = nil;
        local v368;
        do
            local l_v367_0 = v367;
            pcall(function()
                l_v367_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v368 = l_v367_0;
        end;
        v366.clientId = v368;
        v366.userId = v4();
        l_sendEventDeferred_6(v363, v364, v365, v366);
    end;
end;
if v6() then
    v19.MarketplaceSearchFilterOpened = function(v370, v371)
        local l_sendEventDeferred_7 = v1.sendEventDeferred;
        local v373 = "studio";
        local v374 = "Marketplace";
        local v375 = "MarketplaceSearchFilterOpened";
        local v376 = {
            assetTypeId = if not v370 then nil else v370.Value
        };
        local v377 = nil;
        local v378;
        do
            local l_v377_0 = v377;
            pcall(function()
                l_v377_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v378 = l_v377_0;
        end;
        v376.clientId = v378;
        v376.toolboxTab = v371;
        v376.userId = v4();
        l_sendEventDeferred_7(v373, v374, v375, v376);
    end;
end;
if v10() then
    v19.UGCBundleValidationEvent = function(v380, v381, v382)
        local l_sendEventDeferred_8 = v1.sendEventDeferred;
        local v384 = "studio";
        local v385 = "UGCUploadFlow";
        local v386 = "UGCBundleValidationEvent";
        local v387 = {};
        local v388 = nil;
        local v389;
        do
            local l_v388_0 = v388;
            pcall(function()
                l_v388_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v389 = l_v388_0;
        end;
        v387.clientId = v389;
        v387.status = v380;
        v387.bundleType = v381;
        v387.errors = v382;
        l_sendEventDeferred_8(v384, v385, v386, v387);
    end;
    v19.UGCUploadRequestOperationIdEvent = function(v391, v392, v393, v394)
        local l_sendEventDeferred_9 = v1.sendEventDeferred;
        local v396 = "studio";
        local v397 = "UGCUploadFlow";
        local v398 = "UGCUploadRequestOperationIdEvent";
        local v399 = {};
        local v400 = nil;
        local v401;
        do
            local l_v400_0 = v400;
            pcall(function()
                l_v400_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v401 = l_v400_0;
        end;
        v399.clientId = v401;
        v399.status = v391;
        v399.bundleType = v392;
        v399.operationId = v393;
        v399.errors = v394;
        l_sendEventDeferred_9(v396, v397, v398, v399);
    end;
    v19.UGCUploadAssetsEvent = function(v403, v404, v405, v406, v407)
        local l_sendEventDeferred_10 = v1.sendEventDeferred;
        local v409 = "studio";
        local v410 = "UGCUploadFlow";
        local v411 = "UGCUploadAssetsEvent";
        local v412 = {};
        local v413 = nil;
        local v414;
        do
            local l_v413_0 = v413;
            pcall(function()
                l_v413_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v414 = l_v413_0;
        end;
        v412.clientId = v414;
        v412.status = v403;
        v412.bundleType = v404;
        v412.operationId = v405;
        v412.assetIds = v406;
        v412.errors = v407;
        l_sendEventDeferred_10(v409, v410, v411, v412);
    end;
    v19.UGCIndividualAssetUploadEvent = function(v416, v417)
        assert(v11(), "not enabled yet");
        local l_sendEventDeferred_11 = v1.sendEventDeferred;
        local v419 = "studio";
        local v420 = "UGCUploadFlow";
        local v421 = "UGCIndividualAssetUploadEvent";
        local v422 = {
            placeId = v13()
        };
        local v423 = nil;
        local v424;
        do
            local l_v423_0 = v423;
            pcall(function()
                l_v423_0 = l_RbxAnalyticsService_0:GetSessionId();
            end);
            v424 = l_v423_0;
        end;
        v422.studioSid = v424;
        v423 = nil;
        do
            local l_v423_1 = v423;
            pcall(function()
                l_v423_1 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v424 = l_v423_1;
        end;
        v422.clientId = v424;
        v422.assetId = v416;
        v422.underlyingAssetIds = v417;
        l_sendEventDeferred_11(v419, v420, v421, v422);
    end;
    v19.UGCUploadRequestBundleCreationStatusEvent = function(v427, v428, v429, v430, v431, v432)
        local l_sendEventDeferred_12 = v1.sendEventDeferred;
        local v434 = "studio";
        local v435 = "UGCUploadFlow";
        local v436 = "UGCUploadRequestBundleCreationStatusEvent";
        local v437 = {};
        local v438 = nil;
        local v439;
        do
            local l_v438_0 = v438;
            pcall(function()
                l_v438_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v439 = l_v438_0;
        end;
        v437.clientId = v439;
        v437.status = v427;
        v437.bundleType = v428;
        v437.operationId = v429;
        v437.assetIds = v430;
        v437.creationStatusId = v431;
        v437.errors = v432;
        l_sendEventDeferred_12(v434, v435, v436, v437);
    end;
    v19.UGCUploadGetBundleCreationStatusEvent = function(v441, v442, v443, v444, v445, v446, v447)
        local l_sendEventDeferred_13 = v1.sendEventDeferred;
        local v449 = "studio";
        local v450 = "UGCUploadFlow";
        local v451 = "UGCUploadGetBundleCreationStatusEvent";
        local v452 = {};
        local v453 = nil;
        local v454;
        do
            local l_v453_0 = v453;
            pcall(function()
                l_v453_0 = l_RbxAnalyticsService_0:GetClientId();
            end);
            v454 = l_v453_0;
        end;
        v452.clientId = v454;
        v452.status = v441;
        v452.bundleType = v442;
        v452.operationId = v443;
        v452.assetIds = v444;
        v452.creationStatusId = v445;
        v452.bundleId = v446;
        v452.errors = v447;
        l_sendEventDeferred_13(v449, v450, v451, v452);
    end;
end;
if l_game_EngineFeature_0 then
    v19.onAudioAssetGrantedToUserInventoryEvent = function(v456)
        local l_sendEventDeferred_14 = v1.sendEventDeferred;
        local v458 = "studio";
        local v459 = "toolboxInsert";
        local v460 = "AudioGrantedToUserInventory";
        local v461 = {
            assetId = v456,
            placeid = v13()
        };
        local v462 = nil;
        local v463;
        do
            local l_v462_0 = v462;
            pcall(function()
                l_v462_0 = l_RbxAnalyticsService_0:GetSessionId();
            end);
            v463 = l_v462_0;
        end;
        v461.sessionid = v463;
        l_sendEventDeferred_14(v458, v459, v460, v461);
    end;
end;
return v19;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v3 = require(l_Packages_0.Cryo);
local v4 = require(l_Packages_0.Dash);
local _ = require(l_Parent_0.Core.Models.AssetInfo);
local v6 = require(l_Parent_0.Core.Util.getUserId);
local v7 = require(l_Parent_0.Core.Util.Constants);
local v8 = require(l_Parent_0.Core.Util.FiatUtil);
local v9 = require(script.Parent.Analytics);
local v10 = require(script.Parent.Senders);
local v11 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxListviewAnalytics);
local v12 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxFFlagFixBuyerStatusAnalytics);
local v13 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagFixSwimlaneAnalytics);
local v14 = {};
v14.__index = v14;
v14.InsertRemainsCheckDelays = {
    30,
    120,
    600
};
v14.new = function(v15)
    return (setmetatable({
        _searches = {},
        senders = v15 or v10
    }, v14));
end;
v14.mock = function()
    local v16 = {};
    return v14.new({
        sendEventDeferredCalls = v16,
        sendEventDeferred = function(...)
            table.insert(v16, {
                ...
            });
        end
    });
end;
v14.getNavigationContext = function(v17, v18)
    local v19 = v17:getBreadcrumbRoute();
    local v20 = false;
    local v21 = false;
    if v13() then
        local v22 = v17:getNavigationRoute();
        v20 = table.find(v22, v7.NAVIGATION.RESULTS) ~= nil;
        v21 = table.find(v22, v7.NAVIGATION.ALL_SUBCATEGORIES) ~= nil;
    end;
    return {
        navBreadcrumbs = l_HttpService_0:JSONEncode(v19),
        navSwimlane = v18,
        navSeeAll = v20,
        navSeeAllSubcategory = v21
    };
end;
v14.schedule = function(v23, v24)
    delay(v23, v24);
end;
v14.getAssetCategoryName = function(v25)
    for _, v27 in ipairs(Enum.AssetType:GetEnumItems()) do
        if v27.Value == v25 then
            return v27.Name;
        end;
    end;
    return "";
end;
v14.isAssetDataTrackable = function(v28)
    return (v28 and v28.Asset) and v28.Asset.Id;
end;
v14.isAssetTrackable = function(v29, v30)
    return (v14.isAssetDataTrackable(v29) and v30) and v30.searchId;
end;
v14.getTrackingAttributes = function(v31, v32, v33)
    local v34 = v3.Dictionary.join(v32, v31.Context or {});
    local l_searchId_0 = v32.searchId;
    local v36 = nil;
    local l_AssetSubTypes_0 = v31.Asset.AssetSubTypes;
    if l_AssetSubTypes_0 then
        v36 = table.concat(l_AssetSubTypes_0, ",");
    end;
    local v38 = nil;
    if not v33 then
        v38 = v3.Dictionary.join(v34, {
            assetID = v31.Asset.Id,
            assetSubTypes = v36,
            assetType = v14.getAssetCategoryName(v31.Asset.TypeId),
            userID = v6(),
            placeID = v9.getPlaceId(),
            platformID = v9.getPlatformId(),
            clientID = v9.getClientId(),
            searchID = l_searchId_0,
            studioSid = v9.getStudioSessionId(),
            isEditMode = v9.getIsEditMode(),
            isVerifiedCreator = v31.Creator.IsVerifiedCreator,
            label = v31.Asset.Id,
            value = 0,
            isEndorsed = v31.Asset.IsEndorsed,
            hasScripts = v31.Asset.HasScripts
        });
        v38.searchId = nil;
    else
        v38 = v3.Dictionary.join(v34, {
            assetId = v31.Asset.Id,
            assetSubTypes = v36,
            assetType = v14.getAssetCategoryName(v31.Asset.TypeId),
            userId = v6(),
            placeId = v9.getPlaceId(),
            platformId = v9.getPlatformId(),
            clientId = v9.getClientId(),
            searchId = l_searchId_0,
            studioSid = v9.getStudioSessionId(),
            isEditMode = v9.getIsEditMode(),
            isVerifiedCreator = v31.Creator.IsVerifiedCreator,
            label = v31.Asset.Id,
            value = 0,
            isEndorsed = v31.Asset.IsEndorsed,
            hasScripts = v31.Asset.HasScripts
        });
    end;
    for v39, v40 in pairs(v38) do
        v38[v39] = tostring(v40);
    end;
    return v38;
end;
v14.logImpression = function(v41, v42, v43, v44, v45)
    if v14.isAssetTrackable(v42, v43) then
        local l_Id_0 = v42.Asset.Id;
        local l_searchId_1 = v43.searchId;
        if not v41._searches[l_searchId_1] then
            v41._searches[l_searchId_1] = {
                impressions = {}
            };
        end;
        local v48 = v41._searches[l_searchId_1];
        local v49 = v14.getTrackingAttributes(v42, v43);
        if v11() then
            v49 = v4.join(v49, {
                layoutMode = v45
            });
        end;
        v49 = v4.join(v49, v44 or {});
        if not v48.impressions[l_Id_0] then
            v41.senders.sendEventDeferred("studio", "Marketplace", "MarketplaceAssetImpression", v49);
            v9.incrementAssetImpressionCounter();
            v48.impressions[l_Id_0] = true;
        end;
        return ;
    else
        return ;
    end;
end;
v14.logPreview = function(v50, v51, v52, v53)
    if v14.isAssetTrackable(v51, v52) then
        local v54 = v14.getTrackingAttributes(v51, v52);
        local v55 = if not not v12() and v53 then v53.purchaserStatus else nil;
        local v56 = v51.FiatProduct and v51.FiatProduct.PurchasePrice;
        v50.senders.sendEventDeferred("studio", "Marketplace", "MarketplaceAssetPreview", (v3.Dictionary.join(v54, {
            buyerStatus = if not v12() then v53 else v55,
            currencyCode = if not v56 then nil else v56.currencyCode,
            fiatPrice = if not v56 then nil else v8.calculateQuantity(v56)
        })));
        return ;
    else
        return ;
    end;
end;
v14.logInsert = function(v57, v58, v59, v60, v61, v62, v63)
    if v14.isAssetTrackable(v58, v61) then
        local v64 = {
            method = v59
        };
        if v11() then
            v64.layoutMode = v63;
        end;
        local v65 = v4.join(v64, v14.getTrackingAttributes(v58, v61), {
            navSwimlane = v62
        });
        v57.senders.sendEventDeferred("studio", "Marketplace", "MarketplaceInsert", v65);
        if v60 == nil then
            return ;
        else
            for _, v67 in ipairs(v14.InsertRemainsCheckDelays) do
                v14.schedule(v67, function()
                    if type(v60) == "table" then
                        v57:logRemainsOrDeleted(v67, v65, v60[1]);
                        return ;
                    else
                        v57:logRemainsOrDeleted(v67, v65, v60);
                        return ;
                    end;
                end);
            end;
            return ;
        end;
    else
        return ;
    end;
end;
v14.logRemainsOrDeleted = function(v68, v69, v70, v71)
    v68.senders.sendEventDeferred("studio", "Marketplace", ((not not v71 and v71.Parent) and "InsertRemains" or "InsertDeleted") .. tostring(v69), v70);
end;
v14.logNavigationButtonInteraction = function(v72, v73, v74, v75, v76, v77, v78, v79)
    v72.senders.sendEventDeferred("studio", "Marketplace", v73, {
        searchID = v74,
        searchCategory = v75,
        subcategoryName = v76,
        navBreadcrumbs = not not v77 and l_HttpService_0:JSONEncode(v77) or nil,
        toolboxTab = v78,
        assetType = v79
    });
end;
v14.logPageView = function(v80, v81, v82, v83, v84, v85, v86)
    v80:logNavigationButtonInteraction("MarketplaceNavigatePageView", v81, v82, v83, v84, v85, v86);
end;
v14.logGoBack = function(v87, v88, v89, v90, v91, v92, v93)
    v87:logNavigationButtonInteraction("MarketplaceNavigateViewBack", v88, v89, v90, v91, v92, v93);
end;
v14.onCallToActionBannerClicked = function(v94, v95)
    v94.senders.sendEventDeferred("studio", "Marketplace", "CallToActionBannerClicked", {
        creatorId = v95
    });
end;
v14.logAssetMediaImpression = function(v96, v97, v98, v99, v100, v101, v102)
    if v14.isAssetDataTrackable(v97) then
        v96.senders.sendEventDeferred("studio", "Marketplace", "AssetMediaImpression", (v4.join(v14.getTrackingAttributes(v97, {}, true), {
            imageId = v98,
            imageIndex = v99,
            searchId = v100,
            source = v101,
            parentAssetId = v102
        })));
        return ;
    else
        return ;
    end;
end;
v14.onAssetDescriptionLinkClicked = function(v103, v104, v105, v106, v107)
    if v14.isAssetTrackable(v104, v105) then
        v103.senders.sendEventDeferred("studio", "Marketplace", "AssetDescriptionLinkClicked", (v4.join(v14.getTrackingAttributes(v104, v105, true), {
            searchId = v106,
            url = v107
        })));
        return ;
    else
        return ;
    end;
end;
return v14;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_ContextItem_0 = require(l_Parent_0.Packages.Framework).ContextServices.ContextItem;
local v2 = require(l_Parent_0.Core.Util.Analytics.AssetAnalytics);
local v3 = l_ContextItem_0:extend("AssetAnalytics");
v3.new = function(v4)
    local v5 = {
        assetAnalytics = v4 or v2.new()
    };
    setmetatable(v5, v3);
    return v5;
end;
v3.get = function(v6)
    return v6.assetAnalytics;
end;
return v3;


local v0 = require(script.Parent.Parent.Parent.Parent.Core.Util.DebugFlags);
local v1 = {};
local function _(v2)
    print(("[Toolbox Analytics] %s"):format((tostring(v2))));
end;
v1.logAnalytics = function(v4, v5, v6, v7, v8)
    if v0.shouldLogAnalytics() then
        v4 = v4 or "";
        v5 = v5 or "";
        v6 = v6 or "";
        v7 = v7 or "";
        v8 = v8 or {};
        local v9 = {};
        for v10, v11 in pairs(v8) do
            v9[#v9 + 1] = (type(v10) == "string" and v10 or "[" .. tostring(v11) .. "]") .. "=" .. (type(v11) == "string" and "\"" .. v11 .. "\"" or tostring(v11));
        end;
        print(("[Toolbox Analytics] %s"):format((tostring((("%s(target=\"%s\", eventContext=\"%s\", eventName=\"%s\", additionalArgs={%s})"):format(tostring(v4), tostring(v5), tostring(v6), tostring(v7), (table.concat(v9, ", "))))))));
        return ;
    else
        return ;
    end;
end;
v1.logEvent = function(v12, v13, v14, v15, v16)
    if v0.shouldLogAnalytics() then
        print(("[Toolbox Analytics] %s"):format((tostring((("%s(category=\"%s\", action=\"%s\", label=\"%s\", value=%s)"):format(tostring(v12 or ""), tostring(v13 or ""), tostring(v14 or ""), tostring(v15 or ""), (tostring(v16 or 0))))))));
        return ;
    else
        return ;
    end;
end;
v1.logCounterEvent = function(v17, v18, v19)
    if v0.shouldLogAnalytics() then
        print(("[Toolbox Analytics] %s"):format((tostring((("%s(counter=\"%s\", amount=%s)"):format(tostring(v17 or ""), tostring(v18 or ""), (tostring(v19 or 1))))))));
        return ;
    else
        return ;
    end;
end;
return v1;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Core.Util.Analytics.Logs);
local l_sendResultToKibana_0 = require(l_Parent_0.Packages.Framework).Util.sendResultToKibana;
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_NewPackageAnalyticsWithRefactor2_0 = game:GetFastFlag("NewPackageAnalyticsWithRefactor2");
local _ = game:GetFastInt("InfluxReportingPackageAnalyticsHundrethsPercent");
local function _(v6)
    return "ToolboxAnalytics_" .. v6;
end;
return {
    sendEventImmediately = function(v8, v9, v10, v11)
        v1.logAnalytics("sendEventImmediately", v8, v9, v10, v11);
        l_RbxAnalyticsService_0:SendEventImmediately(v8, v9, v10, v11);
    end,
    sendEventDeferred = function(v12, v13, v14, v15)
        v1.logAnalytics("sendEventDeferred", v12, v13, v14, v15);
        l_RbxAnalyticsService_0:SendEventDeferred(v12, v13, v14, v15);
    end,
    reportCounter = function(v16, v17)
        v17 = v17 or 1;
        v1.logCounterEvent("reportCounter", v16, v17);
        l_RbxAnalyticsService_0:ReportCounter(v16, v17);
    end,
    sendResultToKibana = function(v18)
        assert(l_NewPackageAnalyticsWithRefactor2_0);
        l_sendResultToKibana_0(v18);
    end
};


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Analytics_0 = require(l_Parent_0.Packages.Framework).ContextServices.Analytics;
local v2 = require(l_Parent_0.Core.Util.Analytics.Senders);
local function v5(v3, v4)
    v2.sendEventDeferred("studio", "Marketplace", v3, v4);
end;
return function()
    return l_Analytics_0.new(function(_)
        return {
            AssetPreviewPlaySound = v5,
            AssetPreviewPauseSound = v5,
            AssetPreviewPlayVideo = v5,
            AssetPreviewPauseVideo = v5
        };
    end);
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_enumerate_0 = require(l_Parent_0.Packages.Framework).Util.enumerate;
local l_Util_0 = l_Parent_0.Core.Util;
local v3 = require(l_Parent_0.Core.Flags.getFFlagToolboxAddNewUGCAssetTypes);
local v4 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxRestrictAssetConfig);
local v5 = require(l_Util_0.convertArrayToTable);
local v6 = {
    WIDTH = 1100,
    HEIGHT = 860,
    MIN_WIDTH = 900,
    MIN_HEIGHT = 500,
    TERM_OF_USE_URL = "https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use",
    ACCOUNT_SETTING_URL = "https://www.roblox.com/my/account#/info",
    NAME_CHARACTER_LIMIT = 50,
    DESCRIPTION_CHARACTER_LIMIT = 1000,
    PACKAGE_NOTE_CHARACTER_LIMIT = 500,
    TITLE_GUTTER_WIDTH = 180,
    OverrideAssetItemSize = UDim2.new(0, 150, 0, 200),
    PreviewTypes = v5({
        "ImagePicker",
        "Thumbnail",
        "ModelPreview"
    }),
    SIDE_TABS = v5({
        "Sales",
        "General",
        "Versions",
        "Override",
        "Permissions"
    }),
    FIELD_NAMES = v5({
        "Title",
        "Description",
        "Price"
    }),
    GENRE_TYPE = {
        {
            name = Enum.Genre.All.Name
        },
        {
            name = Enum.Genre.TownAndCity.Name
        },
        {
            name = Enum.Genre.Fantasy.Name
        },
        {
            name = Enum.Genre.SciFi.Name
        },
        {
            name = Enum.Genre.Ninja.Name
        },
        {
            name = Enum.Genre.Scary.Name
        },
        {
            name = Enum.Genre.Pirate.Name
        },
        {
            name = Enum.Genre.Adventure.Name
        },
        {
            name = Enum.Genre.Sports.Name
        },
        {
            name = Enum.Genre.Funny.Name
        },
        {
            name = Enum.Genre.WildWest.Name
        },
        {
            name = Enum.Genre.War.Name
        },
        {
            name = Enum.Genre.SkatePark.Name
        },
        {
            name = Enum.Genre.Tutorial.Name
        }
    },
    FLOW_TYPE = v5({
        "EDIT_FLOW",
        "UPLOAD_FLOW",
        "DOWNLOAD_FLOW"
    }),
    SCREENS = v5({
        "ASSET_TYPE_SELECTION",
        "ASSET_VALIDATION",
        "CONFIGURE_ASSET",
        "UPLOADING_ASSET",
        "UPLOAD_ASSET_RESULT"
    }),
    ASSET_STATUS = v5({
        "Unknown",
        "ReviewPending",
        "Moderated",
        "ReviewApproved",
        "OnSale",
        "OffSale",
        "DelayedRelease",
        "Free"
    }),
    RESTRICTION_TYPE = if not v4() then nil else v5({
        "AssetType",
        "Authorization",
        "Invalid",
        "KillSwitch",
        "Quota",
        "SafetyStatus",
        "SellerAccountNotOnboarded",
        "SellerAccountRestricted",
        "UnsupportedAssetOwner",
        "Verification"
    }),
    SALES_STATUS_FOR_PRICE = v5({
        "OnSale"
    })
};
local function _(v7, v8)
    return {
        type = v7,
        isCatalog = true,
        isUploadable = v8 == true
    };
end;
local function _(v10, v11)
    return {
        type = v10,
        isMarketplace = true,
        isBuyable = v11 == true
    };
end;
v6.ASSET_TYPE_INFO = {
    {
        type = Enum.AssetType.Hat,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.TShirt,
        isCatalog = true,
        isUploadable = false
    },
    {
        type = Enum.AssetType.Shirt,
        isCatalog = true,
        isUploadable = false
    },
    {
        type = Enum.AssetType.Pants,
        isCatalog = true,
        isUploadable = false
    },
    {
        type = Enum.AssetType.HairAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.FaceAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.NeckAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.ShoulderAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.FrontAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.BackAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.WaistAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.TShirtAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.ShirtAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.PantsAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.JacketAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.SweaterAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.ShortsAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.LeftShoeAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.RightShoeAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.DressSkirtAccessory,
        isCatalog = true,
        isUploadable = true
    },
    {
        type = Enum.AssetType.Model,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.Decal,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.Mesh,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.MeshPart,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.Audio,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.Animation,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.Video,
        isMarketplace = true,
        isBuyable = false
    },
    {
        type = Enum.AssetType.Plugin,
        isMarketplace = true,
        isBuyable = true
    }
};
table.insert(v6.ASSET_TYPE_INFO, {
    type = Enum.AssetType.Package,
    isMarketplace = true,
    isBuyable = false
});
if v3() then
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.Torso,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.RightArm,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.LeftArm,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.LeftLeg,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.RightLeg,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.DynamicHead,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.EyebrowAccessory,
        isCatalog = true,
        isUploadable = true
    });
    table.insert(v6.ASSET_TYPE_INFO, {
        type = Enum.AssetType.EyelashAccessory,
        isCatalog = true,
        isUploadable = true
    });
end;
for _, v14 in ipairs(v6.ASSET_TYPE_INFO) do
    if next(v14) ~= nil then
        if not (not v14.isCatalog or not v14.isMarketplace) then
            error(tostring(v14.type) .. " cannot be both a catalog and marketplace asset");
        end;
        if v6.ASSET_TYPE_INFO[v14.type] then
            error("AssetConfigConstants.ASSET_TYPE_INFO contains a duplicate of " .. tostring(v14.type));
        end;
        v6.ASSET_TYPE_INFO[v14.type] = v14;
    end;
end;
v6.developCategoryType = v5({
    "WhitelistedPlugins",
    "MyPlugins",
    "GroupPlugins"
});
v6.packagesCategoryType = v5({
    "MyPackages",
    "GroupPackages"
});
v6.rbxThumbTypes = v5({
    "Asset",
    "Avatar",
    "AvatarHeadShot",
    "BadgeIcon",
    "BundleThumbnail",
    "GameIcon",
    "GamePass",
    "GroupIcon",
    "Outfit"
});
v6.rbxThumbSizes = {
    AvatarHeadshotImageSize = 60,
    GroupIconImageSize = 150,
    AssetThumbnailSize = 420
};
v6.additionalImages = {
    MaxThumbnails = 5,
    AspectRatioHeight = 9,
    AspectRatioWidth = 16,
    RecommendedHeight = 432,
    RecommendedWidth = 768
};
v6.IMAGE_TYPES = {
    "jpg",
    "jpeg",
    "png"
};
v6.TAGS_SUGGESTION_SUCCESS = "Success";
v6.MAX_DISPLAY_SUGGESTIONS = 5;
v6.MAX_FETCH_SUGGESTIONS = 10;
v6.AVATAR_MESHPART_ACCESSORY_FORMAT = "avatar_meshpart_accessory";
v6.MULTIPART_FORM_BOUNDARY = "EA0A21C3-8388-4038-9BD5-92C8B1B7BF8E";
v6.OVERRIDE_ASSET_ID = "OverrideAssetId";
v6.SHARING_KEYS = {
    Public = true,
    Private = false
};
v6.UGCBundleTypes = l_enumerate_0("UGCBundleTypes", {
    "Body",
    "DynamicHead"
});
v6.UGCBundleTypeStringToEnumeration = {
    [v6.UGCBundleTypes.Body.rawValue()] = v6.UGCBundleTypes.Body,
    [v6.UGCBundleTypes.DynamicHead.rawValue()] = v6.UGCBundleTypes.DynamicHead
};
v6.AllowedAssetStringsMetadataToAssetTypeMap = {
    DynamicHead = Enum.AssetType.DynamicHead,
    LeftArm = Enum.AssetType.LeftArm,
    LeftLeg = Enum.AssetType.LeftLeg,
    RightArm = Enum.AssetType.RightArm,
    RightLeg = Enum.AssetType.RightLeg,
    Torso = Enum.AssetType.Torso,
    EyebrowAccessory = Enum.AssetType.EyebrowAccessory,
    EyelashAccessory = Enum.AssetType.EyelashAccessory,
    HairAccessory = Enum.AssetType.HairAccessory
};
v6.UGC_BODY_PARTS = {
    Head = "Head",
    UpperTorso = "UpperTorso",
    LowerTorso = "LowerTorso",
    LeftUpperLeg = "LeftUpperLeg",
    LeftLowerLeg = "LeftLowerLeg",
    LeftHand = "LeftHand",
    RightUpperArm = "RightUpperArm",
    RightLowerArm = "RightLowerArm",
    RightHand = "RightHand",
    LeftUpperArm = "LeftUpperArm",
    LeftLowerArm = "LeftLowerArm",
    LeftFoot = "LeftFoot",
    RightUpperLeg = "RightUpperLeg",
    RightLowerLeg = "RightLowerLeg",
    RightFoot = "RightFoot",
    EyebrowAccessory = "EyebrowAccessory",
    EyelashAccessory = "EyelashAccessory",
    HairAccessory = "HairAccessory"
};
v6.UGC_BODY_PART_NAMES_TO_ASSET_TYPE = {
    [v6.UGC_BODY_PARTS.Head] = Enum.AssetType.DynamicHead,
    [v6.UGC_BODY_PARTS.UpperTorso] = Enum.AssetType.Torso,
    [v6.UGC_BODY_PARTS.LowerTorso] = Enum.AssetType.Torso,
    [v6.UGC_BODY_PARTS.LeftUpperArm] = Enum.AssetType.LeftArm,
    [v6.UGC_BODY_PARTS.LeftLowerArm] = Enum.AssetType.LeftArm,
    [v6.UGC_BODY_PARTS.LeftHand] = Enum.AssetType.LeftArm,
    [v6.UGC_BODY_PARTS.RightUpperArm] = Enum.AssetType.RightArm,
    [v6.UGC_BODY_PARTS.RightLowerArm] = Enum.AssetType.RightArm,
    [v6.UGC_BODY_PARTS.RightHand] = Enum.AssetType.RightArm,
    [v6.UGC_BODY_PARTS.LeftUpperLeg] = Enum.AssetType.LeftLeg,
    [v6.UGC_BODY_PARTS.LeftLowerLeg] = Enum.AssetType.LeftLeg,
    [v6.UGC_BODY_PARTS.LeftFoot] = Enum.AssetType.LeftLeg,
    [v6.UGC_BODY_PARTS.RightUpperLeg] = Enum.AssetType.RightLeg,
    [v6.UGC_BODY_PARTS.RightLowerLeg] = Enum.AssetType.RightLeg,
    [v6.UGC_BODY_PARTS.RightFoot] = Enum.AssetType.RightLeg,
    [v6.UGC_BODY_PARTS.EyebrowAccessory] = Enum.AssetType.EyebrowAccessory,
    [v6.UGC_BODY_PARTS.EyelashAccessory] = Enum.AssetType.EyelashAccessory,
    [v6.UGC_BODY_PARTS.HairAccessory] = Enum.AssetType.HairAccessory
};
return v6;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Cryo);
local l_Util_0 = l_Parent_0.Core.Util;
local v3 = require(l_Util_0.Colors);
local v4 = require(l_Util_0.createSignal);
local v5 = require(l_Util_0.wrapStrictTable);
local _ = require(l_Util_0.Images);
local v7 = require(l_Util_0.Test.TestHelpers);
local v8 = {};
v8.__index = v8;
v8.createDummyThemeManager = function()
    return v8.new({
        getTheme = function()
            return {
                GetColor = function()
                    return Color3.fromRGB(0, 0, 0);
                end
            };
        end,
        studioStyleGuideColor = v7.createMockStudioStyleGuideColor(),
        studioStyleGuideModifier = v7.createMockStudioStyleGuideModifier()
    });
end;
v8.new = function(v9)
    local v10 = {
        _externalThemeGetter = v9.getTheme or nil,
        _externalThemeChangedSignal = v9.themeChanged or nil,
        _externalThemeChangedConnection = nil,
        _studioStyleGuideColor = v9.studioStyleGuideColor or Enum.StudioStyleGuideColor,
        _studioStyleGuideModifier = v9.studioStyleGuideModifier or Enum.StudioStyleGuideModifier,
        _values = {},
        _UILibraryTheme = {},
        _signal = v4()
    };
    v10.values = v5(v10._values, "theme");
    setmetatable(v10, v8);
    if v10._externalThemeChangedSignal then
        v10._externalThemeChangedConnection = v10._externalThemeChangedSignal:Connect(function()
            v10:_recalculateTheme();
        end);
    end;
    v10:_recalculateTheme();
    return v10;
end;
v8.subscribe = function(v11, ...)
    return v11._signal:subscribe(...);
end;
v8.destroy = function(v12)
    if v12._externalThemeChangedConnection then
        v12._externalThemeChangedConnection:Disconnect();
        v12._externalThemeChangedConnection = nil;
    end;
end;
v8._update = function(v13, v14)
    v13._values = v1.Dictionary.join(v13._values, v14);
    v13.values = v5(v13._values, "theme");
    v13._signal:fire(v13.values, v13._UILibraryTheme);
end;
v8._getExternalTheme = function(v15)
    local l__externalThemeGetter_0 = v15._externalThemeGetter;
    if type(l__externalThemeGetter_0) == "function" then
        return l__externalThemeGetter_0();
    else
        return l__externalThemeGetter_0;
    end;
end;
v8._isDarkerTheme = function(v17)
    local v18 = false;
    if v17._externalThemeGetter then
        v18 = v17._externalThemeGetter().Name == "Dark";
    end;
    return v18;
end;
v8._recalculateTheme = function(v19)
    local v20 = v19:_getExternalTheme();
    local v21 = v19:_isDarkerTheme();
    local l__studioStyleGuideColor_0 = v19._studioStyleGuideColor;
    local l__studioStyleGuideModifier_0 = v19._studioStyleGuideModifier;
    local function v24(...)
        return v20:GetColor(...);
    end;
    v19:_update({
        isDarkerTheme = v21,
        assetConfig = {
            backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
            textColor = v24(l__studioStyleGuideColor_0.MainText),
            labelTextColor = v24(l__studioStyleGuideColor_0.DimmedText),
            separatorColor = v24(l__studioStyleGuideColor_0.Border),
            errorColor = v24(l__studioStyleGuideColor_0.ErrorText),
            packagePermissions = {
                backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
                subTextColor = v24(l__studioStyleGuideColor_0.SubText),
                collaboratorItem = {
                    collapseStateArrow = not not v21 and Color3.fromRGB(204, 204, 204) or Color3.fromRGB(25, 25, 25),
                    deleteButton = not not v21 and Color3.fromRGB(136, 136, 136) or Color3.fromRGB(184, 184, 184)
                },
                searchBar = {
                    border = v24(l__studioStyleGuideColor_0.InputFieldBorder),
                    borderHover = not not v21 and v24(l__studioStyleGuideColor_0.MainButton) or v24(l__studioStyleGuideColor_0.CurrentMarker),
                    borderSelected = not not v21 and v24(l__studioStyleGuideColor_0.MainButton) or v24(l__studioStyleGuideColor_0.CurrentMarker),
                    placeholderText = v24(l__studioStyleGuideColor_0.DimmedText),
                    backgroundColor = v24(l__studioStyleGuideColor_0.InputFieldBackground),
                    searchIcon = v24(l__studioStyleGuideColor_0.SubText),
                    clearButton = {
                        image = v24(l__studioStyleGuideColor_0.SubText)
                    },
                    dropDown = {
                        backgroundColor = v24(l__studioStyleGuideColor_0.InputFieldBackground),
                        itemText = v24(l__studioStyleGuideColor_0.MainText),
                        headerText = v24(l__studioStyleGuideColor_0.SubText),
                        hovered = {
                            backgroundColor = v24(l__studioStyleGuideColor_0.Item, l__studioStyleGuideModifier_0.Hover),
                            itemText = v24(l__studioStyleGuideColor_0.ButtonText, l__studioStyleGuideModifier_0.Hover)
                        },
                        selected = {
                            backgroundColor = v24(l__studioStyleGuideColor_0.Button, l__studioStyleGuideModifier_0.Selected)
                        }
                    }
                }
            }
        },
        publishAsset = {
            backgroundColor = not not v21 and v24(l__studioStyleGuideColor_0.MainBackground) or Color3.fromRGB(46, 46, 46),
            titleTextColor = v24(l__studioStyleGuideColor_0.SubText),
            textColor = v24(l__studioStyleGuideColor_0.MainText),
            tipsTextColor = not not v21 and Color3.fromRGB(102, 102, 102) or v3.GRAY_3
        },
        divider = {
            horizontalLineColor = not not v21 and Color3.fromRGB(34, 34, 34) or Color3.fromRGB(227, 227, 227)
        },
        dropdownMenu = {
            currentSelection = {
                backgroundColor = v24(l__studioStyleGuideColor_0.Dropdown),
                backgroundSelectedColor = v24(l__studioStyleGuideColor_0.CurrentMarker),
                borderColor = v24(l__studioStyleGuideColor_0.Border),
                borderSelectedColor = v24(l__studioStyleGuideColor_0.CurrentMarker),
                textColor = v24(l__studioStyleGuideColor_0.MainText),
                textSelectedColor = v24(l__studioStyleGuideColor_0.MainText, l__studioStyleGuideModifier_0.Selected),
                iconColor = not not v21 and Color3.fromRGB(242, 242, 242) or Color3.fromRGB(25, 25, 25),
                iconSelectedColor = Color3.fromRGB(255, 255, 255)
            },
            item = {
                backgroundColor = v24(l__studioStyleGuideColor_0.Item),
                backgroundSelectedColor = not not v21 and v24(l__studioStyleGuideColor_0.Item, l__studioStyleGuideModifier_0.Selected) or v24(l__studioStyleGuideColor_0.Tab),
                selectedBarColor = v24(l__studioStyleGuideColor_0.CurrentMarker),
                textColor = v24(l__studioStyleGuideColor_0.MainText),
                labelTextColor = v24(l__studioStyleGuideColor_0.DimmedText)
            },
            dropdownFrame = {
                borderColor = v24(l__studioStyleGuideColor_0.Border)
            }
        },
        textField = {
            backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
            borderColor = v24(l__studioStyleGuideColor_0.Border),
            borderHoveredColor = v24(l__studioStyleGuideColor_0.CurrentMarker),
            borderSelectedColor = v3.BLUE_PRIMARY
        },
        footer = {
            backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
            borderColor = v24(l__studioStyleGuideColor_0.Border)
        },
        scrollingFrame = {
            scrollbarBackgroundColor = not not v21 and Color3.fromRGB(41, 41, 41) or Color3.fromRGB(245, 245, 245),
            scrollbarImageColor = not not v21 and Color3.fromRGB(85, 85, 85) or Color3.fromRGB(245, 245, 245)
        },
        messageBox = {
            backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
            textColor = v24(l__studioStyleGuideColor_0.MainText),
            informativeTextColor = v24(l__studioStyleGuideColor_0.SubText),
            button = {
                textColor = v24(l__studioStyleGuideColor_0.MainText),
                textSelectedColor = v24(l__studioStyleGuideColor_0.MainText, l__studioStyleGuideModifier_0.Selected),
                backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
                backgroundSelectedColor = v24(l__studioStyleGuideColor_0.CurrentMarker),
                borderColor = v24(l__studioStyleGuideColor_0.Border),
                borderSelectedColor = v24(l__studioStyleGuideColor_0.CurrentMarker)
            }
        },
        cancelButton = {
            ButtonColor = v24(l__studioStyleGuideColor_0.Button),
            ButtonColor_Hover = v24(l__studioStyleGuideColor_0.Button, l__studioStyleGuideModifier_0.Hover),
            ButtonColor_Disabled = v24(l__studioStyleGuideColor_0.Button, l__studioStyleGuideModifier_0.Disabled),
            TextColor = v24(l__studioStyleGuideColor_0.MainText),
            TextColor_Disabled = v24(l__studioStyleGuideColor_0.DimmedText),
            BorderColor = v24(l__studioStyleGuideColor_0.Border)
        },
        defaultButton = {
            ButtonColor = not not v21 and v24(l__studioStyleGuideColor_0.MainButton) or v24(l__studioStyleGuideColor_0.CurrentMarker),
            ButtonColor_Hover = v24(l__studioStyleGuideColor_0.LinkText),
            ButtonColor_Disabled = not not v21 and v24(l__studioStyleGuideColor_0.Button, l__studioStyleGuideModifier_0.Disabled) or v3.BLUE_DISABLED,
            TextColor = Color3.new(1, 1, 1),
            TextColor_Disabled = not not v21 and v24(l__studioStyleGuideColor_0.ButtonText, l__studioStyleGuideModifier_0.Disabled) or Color3.new(1, 1, 1),
            BorderColor = v24(l__studioStyleGuideColor_0.Light)
        },
        loading = {
            text = v24(l__studioStyleGuideColor_0.MainText),
            backgroundBar = v24(l__studioStyleGuideColor_0.Midlight),
            bar = v24(l__studioStyleGuideColor_0.CurrentMarker)
        },
        uploadResult = {
            greenText = Color3.fromRGB(2, 183, 87),
            redText = Color3.fromRGB(255, 68, 68),
            text = v24(l__studioStyleGuideColor_0.MainText),
            buttonColor = not not v21 and v24(l__studioStyleGuideColor_0.MainText) or v24(l__studioStyleGuideColor_0.DimmedText),
            idText = v24(l__studioStyleGuideColor_0.DimmedText),
            background = v24(l__studioStyleGuideColor_0.TableItem),
            link = v24(l__studioStyleGuideColor_0.LinkText)
        },
        inputFields = {
            backgroundColor = v24(l__studioStyleGuideColor_0.InputFieldBackground),
            backgroundColorDisabled = v24(l__studioStyleGuideColor_0.InputFieldBackground, l__studioStyleGuideModifier_0.Disabled),
            borderColorActive = v24(l__studioStyleGuideColor_0.InputFieldBorder, l__studioStyleGuideModifier_0.Selected),
            borderColorDisabled = v24(l__studioStyleGuideColor_0.InputFieldBorder, l__studioStyleGuideModifier_0.Disabled),
            borderColor = v24(l__studioStyleGuideColor_0.InputFieldBorder),
            toolTip = v24(l__studioStyleGuideColor_0.DimmedText),
            error = v24(l__studioStyleGuideColor_0.ErrorText)
        },
        tags = {
            textColor = v24(l__studioStyleGuideColor_0.MainText),
            backgroundColor = v24(l__studioStyleGuideColor_0.MainBackground),
            borderColor = v24(l__studioStyleGuideColor_0.InputFieldBorder)
        }
    });
end;
return v8;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_webKeys_0 = require(l_Parent_0.Core.Util.Permissions.Constants).webKeys;
local _ = require(l_Parent_0.Core.Types.PermissionTypes);
return {
    isAssetPublic = function(v3)
        local v4 = false;
        if v3 then
            for _, v6 in pairs(v3) do
                if v6[l_webKeys_0.SubjectType] == l_webKeys_0.All and v6[l_webKeys_0.Action] == l_webKeys_0.UseAction then
                    return true;
                end;
            end;
        end;
        return v4;
    end
};


return {
    convertQualityFilterDataToTagsCSV = function(v0)
        local v1 = nil;
        if v0 then
            local v2 = {};
            for v3, v4 in pairs(v0) do
                if v4 then
                    table.insert(v2, v3);
                end;
            end;
            v1 = table.concat(v2, ",");
        end;
        return v1;
    end,
    convertQualityFilterDataToQueryStrings = function(v5)
        local v6 = nil;
        if v5 then
            local v7 = {};
            for v8, v9 in pairs(v5) do
                if v9 then
                    table.insert(v7, v8);
                end;
            end;
            local v10 = 0;
            for _, v12 in ipairs(v7) do
                local v13 = {};
                for v14 in string.gmatch(v12, "[^.]+") do
                    table.insert(v13, v14);
                end;
                if #v13 == 2 then
                    if not v6 then
                        v6 = {};
                    end;
                    v6["qualityFilter[" .. v10 .. "].category"] = v13[1];
                    v6["qualityFilter[" .. v10 .. "].value"] = v13[2];
                    v10 = v10 + 1;
                end;
            end;
        end;
        return v6;
    end
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Toolbox");
local l_EnableUGCBundleUnknownMeshPartFiltering_0 = game:GetFastFlag("EnableUGCBundleUnknownMeshPartFiltering");
local v2 = require(l_script_FirstAncestor_0.Core.Util.AssetConfigConstants);
local v3 = require(l_script_FirstAncestor_0.Core.Util.AssetConfigUtil);
local v4 = {};
if l_EnableUGCBundleUnknownMeshPartFiltering_0 then
    v4.removeAllUGCBUndleUnknownMeshParts = function(v5, v6, v7)
        if not (v6 ~= nil) or v7 == nil then
            return ;
        elseif v3.isUGCBundleType(v6) == false then
            return ;
        else
            local v8 = v3.getAllowedAssetTypesByBundleType(v7, v6);
            for _, v10 in pairs(v5:GetChildren()) do
                if not (not (v8[v2.UGC_BODY_PART_NAMES_TO_ASSET_TYPE[v10.Name]] == nil) or not v10:IsA("MeshPart")) then
                    v10:Destroy();
                end;
            end;
            v3.sanitizeForValidation(v5);
            return ;
        end;
    end;
end;
return v4;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Toolbox");
local v1 = require(l_script_FirstAncestor_0.Core.Types.Category);
local v2 = require(l_script_FirstAncestor_0.Core.Util.Constants);
return {
    getAssetSize = function(v3)
        local _ = nil;
        if not v1.shouldShowPrices(v3) then
            return (UDim2.new(0, v2.ASSET_WIDTH_NO_PADDING, 0, v2.ASSET_HEIGHT));
        else
            return (UDim2.new(0, v2.ASSET_WIDTH_NO_PADDING, 0, v2.ASSET_HEIGHT + v2.PRICE_HEIGHT));
        end;
    end
};


return require(script.Parent.Parent.Parent.Core.Util.wrapStrictTable)({
    BLUE_PRIMARY = Color3.fromRGB(0, 162, 255),
    BLUE_DISABLED = Color3.fromRGB(153, 218, 255),
    GRAY_1 = Color3.fromRGB(25, 25, 25),
    GRAY_2 = Color3.fromRGB(117, 117, 117),
    GRAY_3 = Color3.fromRGB(184, 184, 184),
    GRAY_5 = Color3.fromRGB(242, 242, 242),
    GRAY_6 = Color3.fromRGB(245, 245, 245),
    WHITE = Color3.fromRGB(255, 255, 255),
    BLACK = Color3.fromRGB(0, 0, 0),
    HEADER_BACKGROUND_COLOR = Color3.fromRGB(242, 242, 242),
    HEADER_BORDER_COLOR = Color3.fromRGB(184, 184, 184),
    FOOTER_BACKGROUND_COLOR = Color3.fromRGB(227, 227, 227),
    FOOTER_BORDER_COLOR = Color3.fromRGB(184, 184, 184),
    LIGHT_ASSETNAME_TEXT_COLOR = Color3.fromRGB(65, 105, 225),
    DARK_BORDER_COLOR = Color3.fromRGB(34, 34, 34),
    DARK_SCROLL_BAR_BACKGROUND_COLOR = Color3.fromRGB(41, 41, 41),
    DARK_BACKGROUND_COLOR = Color3.fromRGB(53, 53, 53),
    DARK_MAIN_SECTION_COLOR = Color3.fromRGB(46, 46, 46),
    DARK_SCROLL_BAR_COLOR = Color3.fromRGB(56, 56, 56),
    DARK_DISABLED_TEXT_COLOR = Color3.fromRGB(85, 85, 85),
    DARK_DIMMER_TEXT_COLOR = Color3.fromRGB(102, 102, 102),
    DARK_TITLE_COLOR = Color3.fromRGB(170, 170, 170),
    DARK_MAIN_TEXT_COLOR = Color3.fromRGB(204, 204, 204),
    DARK_RIBBON_BAR_ICON_HOVER_COLOR = Color3.fromRGB(37, 37, 37),
    DARK_WIDGET_SELECTED_COLOR = Color3.fromRGB(11, 90, 175),
    DARK_WIDGET_HOVER_COLOR = Color3.fromRGB(66, 66, 66),
    DARK_GREY_BUTTON_DEFAULT_COLOR = Color3.fromRGB(58, 58, 58),
    VOTING_GREEN = Color3.fromRGB(82, 168, 70),
    VOTING_RED = Color3.fromRGB(206, 100, 91),
    INSTALL_GREEN = Color3.new(0, 0.7, 0),
    INSTALL_RED = Color3.new(0.9, 0, 0),
    BUTTON_CTA_BG_DISABLED_DARK = Color3.fromRGB(60, 60, 60),
    WARNING_TEXT_COLOR = Color3.fromRGB(244, 100, 93)
}, "Colors");


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxEnableAssetRows);
local v2 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxRefactorAudioConstantsForItemRow);
local v3 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagEnableUGCUploadingDataSharing);
local v4 = require(l_Parent_0.Core.Util.wrapStrictTable);
local l_showRobloxCreatedAssets_0 = require(l_Parent_0.Core.Util.ToolboxUtilities).showRobloxCreatedAssets;
local l_getMaxAudioLength_0 = require(l_Parent_0.Core.Util.ToolboxUtilities).getMaxAudioLength;
local l_StudioService_0 = game:GetService("StudioService");
local _ = require(l_Parent_0.Core.Types.Category);
local v11 = {
    CREATOR_DASHBOARD_LINK_PLACEHOLDER = "{creatorDashboardLink}",
    TOOLTIP_LINE_HEIGHT = 1.3,
    TOOLTIP_PADDING = 3,
    TOOLTIP_TEXT_SIZE = 12,
    FONT = Enum.Font.SourceSans,
    FONT_BOLD = Enum.Font.SourceSansBold,
    FONT_SIZE_SMALL = 14,
    FONT_SIZE_MEDIUM = 16,
    FONT_SIZE_LARGE = 18,
    FONT_SIZE_TITLE = 22,
    FONT_SIZE_ASSET_CONFIG_INPUT = 20,
    FONT_TILE_HEIGHT = 90,
    NAVIGATION = {
        HOME = "Home",
        SUBCATEGORY = "Subcategory",
        ALL_SUBCATEGORIES = "All_Subcategories",
        RESULTS = "Results"
    },
    HOMEVIEW_SEARCH_CATEGORY = "Category",
    getClassIcon = function(v9)
        local l_ClassName_0 = v9.ClassName;
        if not (not v9:IsA("JointInstance") or l_ClassName_0 ~= "ManualWeld") or l_ClassName_0 == "ManualGlue" then
            return l_StudioService_0:GetClassIcon("JointInstance");
        else
            return l_StudioService_0:GetClassIcon(l_ClassName_0);
        end;
    end,
    ROUNDED_FRAME_SLICE = Rect.new(3, 3, 13, 13),
    SCROLLBAR_THICKNESS = 8,
    SCROLLBAR_PADDING = 2
};
v11.SCROLLBAR_BACKGROUND_THICKNESS = v11.SCROLLBAR_THICKNESS + 2 * v11.SCROLLBAR_PADDING;
v11.CONTEXTUAL_RECOMMENDATIONS_HOME_CONFIG_SECTION_NAME = "scenesuggestions";
v11.CONTEXTUAL_RECOMMENDATIONS_POLLING_FREQUENCY_DEFAULT = 15;
v11.THUMB_ICON_PADDING = 1;
v11.SMALL_THUMB_ICON_HEIGHT = 13;
v11.SMALL_THUMB_ICON_WIDTH = 10;
v11.THUMB_ICON_HEIGHT = 18;
v11.THUMB_ICON_WIDTH = 15;
v11.DROP_SHADOW_IMAGE_SIZE = 16;
v11.DROP_SHADOW_IMAGE_SLICE_0 = 8;
v11.DROP_SHADOW_IMAGE_SLICE_1 = v11.DROP_SHADOW_IMAGE_SIZE - v11.DROP_SHADOW_IMAGE_SLICE_0;
v11.DROP_SHADOW_SLICE_CENTER = Rect.new(v11.DROP_SHADOW_IMAGE_SLICE_0, v11.DROP_SHADOW_IMAGE_SLICE_0, v11.DROP_SHADOW_IMAGE_SLICE_1, v11.DROP_SHADOW_IMAGE_SLICE_1);
v11.DROP_SHADOW_TRANSPARENCY = 0.8;
v11.DROP_SHADOW_COLOR = Color3.fromRGB(0, 0, 0);
v11.DEFAULT_PADDING = 8;
v11.DROPDOWN_WIDTH = 80;
v11.DROPDOWN_ITEM_WIDTH = 120;
v11.DROPDOWN_HEIGHT = 25;
v11.DROPDOWN_SELECTED_BAR = 5;
v11.DROPDOWN_TEXT_INSET = 3;
v11.DROPDOWN_ICON_SIZE = 12;
v11.DROPDOWN_ICON_FROM_RIGHT = 4;
v11.HEADER_HEIGHT = 43;
v11.HEADER_OUTER_PADDING = (v11.HEADER_HEIGHT - v11.DROPDOWN_HEIGHT) / 2;
v11.HEADER_INNER_PADDING = 7;
v11.HEADER_DROPDOWN_MIN_WIDTH = v11.DROPDOWN_WIDTH;
v11.HEADER_DROPDOWN_MAX_WIDTH = 125;
v11.FOOTER_HEIGHT = 35;
v11.BACKGROUND_BUTTON_ICON_SIZE = 10;
v11.BACKGROUND_BUTTON_FONT_SIZE = v11.FONT_SIZE_SMALL;
v11.MAIN_VIEW_PADDING = 10;
v11.SUGGESTIONS_INNER_PADDING = 6;
v11.SUGGESTIONS_OUTER_PADDING = 6;
v11.SUGGESTIONS_FONT_SIZE = v11.FONT_SIZE_MEDIUM;
v11.SUGGESTIONS_ROW_HEIGHT = v11.SUGGESTIONS_FONT_SIZE + 4;
v11.SUGGESTIONS_ROW_PADDING = 2;
v11.MAIN_VIEW_VERTICAL_PADDING = v11.MAIN_VIEW_PADDING;
v11.MAIN_VIEW_NO_HEADER_HEIGHT = 4;
v11.TIME_BETWEEN_ASSET_INSERTION = 0.3;
v11.ASSET_WIDTH_NO_PADDING = 75;
v11.ASSET_INNER_PADDING = 4;
v11.ASSET_THUMBNAIL_SIZE = v11.ASSET_WIDTH_NO_PADDING;
v11.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE = 150;
v11.THUMBNAIL_SIZE_LARGE = 420;
v11.ASSET_ENDORSED_BADGE_ICON_SIZE = 20;
v11.ASSET_TILE_LOCATION = {
    MORE_FROM = "MORE_FROM",
    BROWSE = "BROWSE",
    ASSET_PREVIEW = "ASSET_PREVIEW"
};
v11.ASSET_TILE_IMAGE_CAROUSEL_AUTO_ADVANCE_TIMER = 1000;
v11.ASSET_PREVIEW_IMAGE_CAROUSEL_AUTO_ADVANCE_TIMER = 7500;
v11.IMAGE_CAROUSEL_ON_IMAGE_CHANGE_TRANSPARENCY_THRESHOLD = 0.85;
v11.ASSET_MEDIA_IMPRESSION_SOURCE = {
    ON_HOVER_MORE_FROM = "onHoverMoreFrom",
    ON_HOVER_BROWSE = "onHoverBrowse",
    IMAGE_PREVIEW_PASSIVE = "ImagePreviewPassive",
    IMAGE_PREVIEW_ACTIVE = "ImagePreviewActive"
};
v11.ASSET_PLAY_AUDIO_ICON_SIZE = 28;
v11.ASSET_NAME_FONT_SIZE = v11.FONT_SIZE_MEDIUM;
v11.ASSET_NAME_ONE_LINE_HEIGHT = v11.ASSET_NAME_FONT_SIZE;
v11.ASSET_NAME_HEIGHT = v11.ASSET_NAME_ONE_LINE_HEIGHT * 2;
v11.ASSET_CREATOR_NAME_FONT_SIZE = v11.FONT_SIZE_SMALL;
v11.ASSET_CREATOR_NAME_HEIGHT = v11.ASSET_CREATOR_NAME_FONT_SIZE;
v11.STATUS_NAME_FONT_SIZE = v11.FONT_SIZE_SMALL;
v11.STATUS_NAME_HEIGHT = v11.STATUS_NAME_FONT_SIZE;
v11.PRICE_FONT_SIZE = v11.FONT_SIZE_MEDIUM;
v11.PRICE_HEIGHT = v11.PRICE_FONT_SIZE;
v11.AUDIO_LENGTH_HEIGHT = v11.FONT_SIZE_MEDIUM;
v11.ASSET_VOTE_BAR_HEIGHT = 5;
v11.ASSET_VOTE_BAR_OUTER_HEIGHT = 0;
v11.ASSET_VOTE_COUNT_FONT_SIZE = v11.FONT_SIZE_SMALL;
v11.ASSET_VOTE_COUNT_HEIGHT = v11.ASSET_VOTE_COUNT_FONT_SIZE + v11.THUMB_ICON_PADDING;
v11.ASSET_VOTING_HEIGHT = v11.ASSET_VOTE_BAR_OUTER_HEIGHT + v11.ASSET_VOTE_COUNT_HEIGHT;
v11.ASSET_VOTE_COUNT_HORIZONTAL_PADDING = 3;
v11.ASSET_VOTING_BUTTONS_BACKGROUND_BOX_PADDING = 2;
v11.ASSET_VOTING_BUTTONS_BACKGROUND_BOX_CORNER_RADIUS = 3;
v11.ASSET_VOTING_BUTTONS_HEIGHT = v11.THUMB_ICON_HEIGHT + v11.ASSET_VOTING_BUTTONS_BACKGROUND_BOX_PADDING * 2;
v11.ASSET_VOTE_BUTTONS_TEXT_PADDING = 4;
v11.ASSET_VOTE_BUTTONS_HORIZONTAL_PADDING = 1;
v11.ASSET_VOTE_BUTTONS_SCRIPT_PADDING = 3;
v11.PACKAGE_BACKGROUND_SIZE = UDim2.new(0, 16, 0, 16);
v11.PACKAGE_DETAIL_SIZE = UDim2.fromOffset(12, 12);
v11.PACKAGE_BACKGROUND_CORNER_RADIUS = 3;
v11.ASSET_CORNER_RADIUS = 5;
v11.ASSET_HEIGHT = (v11.ASSET_THUMBNAIL_SIZE + v11.ASSET_INNER_PADDING) + v11.ASSET_NAME_HEIGHT;
v11.ASSET_OUTLINE_PADDING = 8;
v11.ASSET_OUTLINE_EXTRA_HEIGHT = (v11.ASSET_CREATOR_NAME_HEIGHT + v11.ASSET_INNER_PADDING) + 2 * v11.ASSET_OUTLINE_PADDING;
v11.ASSET_OUTLINE_EXTRA_HEIGHT_WITH_VOTING = (v11.ASSET_OUTLINE_EXTRA_HEIGHT + v11.ASSET_VOTING_HEIGHT) + v11.ASSET_INNER_PADDING;
v11.ASSET_OUTLINE_EXTRA_HEIGHT_WITH_VOTING_COUNT = (v11.ASSET_OUTLINE_EXTRA_HEIGHT + v11.ASSET_VOTING_HEIGHT) + v11.ASSET_INNER_PADDING;
v11.ASSET_OUTLINE_EXTRA_HEIGHT_WITH_VOTE_BUTTONS_HOVERED = (v11.ASSET_OUTLINE_EXTRA_HEIGHT + v11.ASSET_VOTING_BUTTONS_HEIGHT) + v11.THUMB_ICON_PADDING;
v11.BETWEEN_ASSETS_HORIZONTAL_PADDING = 8;
v11.BETWEEN_ASSETS_VERTICAL_PADDING = 16;
v11.MIN_ASSETS_PER_ROW = 3;
v11.TOOLBOX_MIN_WIDTH = math.max((((v11.MAIN_VIEW_PADDING * 2 - v11.BETWEEN_ASSETS_HORIZONTAL_PADDING) + v11.SCROLLBAR_BACKGROUND_THICKNESS) + v11.SCROLLBAR_PADDING) + (v11.ASSET_WIDTH_NO_PADDING + v11.BETWEEN_ASSETS_HORIZONTAL_PADDING) * v11.MIN_ASSETS_PER_ROW, 270);
v11.SEARCH_BAR_WIDTH = v11.TOOLBOX_MIN_WIDTH - v11.MAIN_VIEW_PADDING * 2;
v11.TAB_ICON_SIZE = 16;
v11.TAB_INNER_PADDING = 3;
v11.TAB_OUTER_PADDING = 8;
v11.TOOLBOX_MIN_HEIGHT = 380;
v11.DIST_FROM_BOTTOM_BEFORE_NEXT_PAGE = v11.ASSET_HEIGHT * 1.2;
v11.DEFAULT_TOOLTIP_WIDTH = 100;
v11.SCROLLING_FRAME_VIEW_PADDING = 16;
v11.GET_ITEMS_PAGE_SIZE = 30;
v11.GET_ITEMS_DETAILS_PAGE_SIZE_LIMIT = 25;
v11.GET_ASSET_CREATIONS_PAGE_SIZE_LIMIT = 50;
v11.GET_ASSET_CREATIONS_DETAILS_LIMIT = 50;
assert(v11.GET_ASSET_CREATIONS_PAGE_SIZE_LIMIT <= v11.GET_ASSET_CREATIONS_DETAILS_LIMIT, "Constants.GET_ASSET_CREATIONS_PAGE_SIZE_LIMIT cannot be more than Constants.GET_ASSET_CREATIONS_DETAILS_LIMIT");
v11.SEARCH_BAR_BUTTON_ICON_SIZE = 14;
v11.SEARCH_BAR_BUTTON_WIDTH = 28;
v11.SEARCH_BAR_BUTTON_INSET = 2;
v11.INFO_BANNER_PADDING = 12;
v11.TOOLTIP_TYPE = {
    ASSET_ICON = 1,
    ASSET_NAME = 2,
    CREATOR_NAME = 3,
    HIGH_QUALITY_BADGE = 4
};
v11.MESSAGE_BOX_BUTTON_WIDTH = 72;
v11.TREE_ITEM_HEIGHT = 16;
v11.TREE_VIEW_INDENT = 20;
v11.SEARCH_TAG_HEIGHT = 20;
v11.CAPSULE_SLICE = 25;
v11.CAPSULE_SLICE_CENTER = Rect.new(v11.CAPSULE_SLICE, v11.CAPSULE_SLICE, v11.CAPSULE_SLICE, v11.CAPSULE_SLICE);
v11.MODEL_PREVIEW_BG_COLOR = Color3.fromRGB(216, 216, 216);
v11.HEADER_OPTIONSBUTTON_WIDTH = 16;
v11.HEADER_OPTIONSBUTTON_HEIGHT = 25;
v11.SEARCH_ENTRY_HEIGHT = 35;
v11.SEARCH_TERMS_HEIGHT = 50;
v11.FOOTER_BUTTON_HEIGHT = 24;
v11.ASSET_PREVIEW_MAX_WIDTH = 640;
v11.ASSET_PREVIEW_MAX_Height = 800;
v11.ASSET_PREVIEW_PADDING = 12;
v11.ASSET_DESCRIPTION_HEIGHT = 28;
v11.MINIMAL_PREVIEW_WIDTH = 100;
v11.MINIMAL_PREVIEW_HEIGHT = 200;
v11.MAINVIEW_BUTTON_WIDTH = 28;
v11.MAINVIEW_BUTTON_HEIGHT = 28;
v11.TAB_WIDGET_HEIGHT = 36;
v11.PERMISSIONS_TAB_LIST_PADDING = 18;
v11.PERMISSIONS_UI_EDGE_PADDING = 24;
v11.VERSIONS_TITLE_HEIGHT = 30;
v11.VERSIONS_ITEM_HEIGHT = 80;
v11.VERSIONS_ROW_HEIGHT = 60;
v11.VERSIONS_CHARS_PER_LINE = 95;
v11.VERSIONS_LINE_HEIGHT = 20;
v11.VERSIONS_INPUT_ROW_HEIGHT = 200;
v11.VERSIONS_ROWS_PER_PAGE = 10;
v11.Dialog = {
    SIZE = Vector2.new(400, 186),
    BUTTON_SIZE = Vector2.new(120, 32),
    BUTTON_PADDING = 20,
    IMAGE_SIZE = UDim2.fromOffset(40, 40),
    PROMPT_SIZE = UDim2.fromOffset(260, 40),
    HEADER_SIZE = UDim2.new(1, 0, 0, 18),
    DETAILS_SIZE = UDim2.new(1, 0, 0, 40),
    DETAILS_POSITION = UDim2.fromOffset(0, 56),
    BALANCE_SIZE = UDim2.fromOffset(260, 18),
    BALANCE_POSITION = UDim2.new(1, 0, 0, 64),
    BALANCE_PADDING = UDim.new(0, 3),
    ROBUX_SIZE = UDim2.fromOffset(16, 16),
    SCRIPT_SIZE = UDim2.fromOffset(12, 12)
};
v11.MIN_AUDIO_SEARCH_DURATION = 0;
v11.MAX_AUDIO_SEARCH_DURATION = 420;
v11.SEARCH_SOURCE = {
    KEYWORD = "keyword",
    CATEGORY = "category"
};
if l_showRobloxCreatedAssets_0() then
    v11.MAX_AUDIO_SEARCH_DURATION = l_getMaxAudioLength_0();
end;
v11.TOOLBOX_ITEM_SEARCH_LIMIT = 30;
v11.PLUGIN_LIBRARY_URL = "https://www.roblox.com/develop/library?CatalogContext=2&SortAggregation=5&LegendExpanded=true&Category=7";
v11.AUDIO_TABS_HEIGHT = 30;
v11.AUDIO_CATEGORY_HEIGHT = 40;
v11.LOAD_SCROLL_PADDING = 11;
v11.OPEN_MARKETPLACE_VIEW_FOR_ASSET_TYPE = "OpenToolboxMarketplaceView";
v11.AUDIO_ROW = {
    COLUMNS = {
        ICON = 0,
        TITLE = 1,
        CREATOR = 2,
        TAGS = 3,
        LENGTH = 4
    },
    ICON_SIZE = 18,
    ROW_HEIGHT = 30,
    EXPANDED_ROW_HEIGHT = 121,
    LEFT_RIGHT_PADDING = not v2() and 10 or nil,
    TOP_BUTTON_PADDING = not v2() and 6 or nil,
    BORDER_SIZE = not v2() and 2 or nil
};
if v1() then
    v11.ASSET_ROW = {
        ICON_SIZE = 14,
        LEFT_MOST_PADDING = 5
    };
    v11.ASSET_ROW_COLUMNS = {
        ICON = "ICON",
        NAME = "NAME",
        CREATOR = "CREATOR",
        DATE_CREATED = "DATE_CREATED",
        DATE_UPDATED = "DATE_UPDATED"
    };
end;
if not (not v1() and not v2()) then
    v11.ITEM_ROW = {
        BORDER_SIZE = 2,
        LEFT_RIGHT_PADDING = 10,
        TOP_BUTTON_PADDING = 6
    };
end;
v11.ADDITIONAL_AUDIO_SEARCH_KEYS = {
    ARTIST = "artist",
    CATEGORIES = "categories",
    GENRE = "genre",
    ALBUM = "album"
};
if v3() then
    v11.DataSharingLicenseTypes = {
        RobloxGlobal = "RobloxGlobal"
    };
end;
return v4(v11, "Constants");