local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Core_0 = l_Parent_1.Core;
local l_Parent_2 = l_Parent_1.Parent;
local v4 = require(l_Parent_2.Cryo);
local v5 = require(l_Parent_2.t);
local v6 = require(l_Parent_2.Roact);
local v7 = require(l_Parent_2.enumerate);
local v8 = require(l_Core_0.Utility.bindingValidator);
local v9 = require(l_Core_0.Style.withStyle);
local v10 = require(l_Parent_0.SelectionImage.withSelectionCursorProvider);
local v11 = require(l_Parent_0.SelectionImage.CursorKind);
local v12 = require(l_Core_0.Control.Interactable);
local v13 = require(l_Core_0.Control.Enum.ControlState);
local v14 = require(l_Parent_0.SelectionCursor.useCursorByType);
local v15 = require(l_Parent_0.SelectionCursor.CursorType);
local v16 = require(l_Parent_1.UIBloxConfig);
local v17 = v6.PureComponent:extend("Cell");
v17.debugProps = v7("debugProps", {
    "controlState"
});
v17.validateProps = v5.strictInterface({
    head = v5.table,
    tail = v5.optional(v5.table),
    background = v5.optional(v5.table),
    layoutOrder = v5.optional(v5.union(v5.integer, v8(v5.number))),
    size = v5.optional(v5.UDim2),
    anchorPoint = v5.optional(v5.Vector2),
    position = v5.optional(v5.UDim2),
    horizontalPadding = v5.optional(v5.number),
    selectable = v5.optional(v5.boolean),
    isDisabled = v5.optional(v5.boolean),
    userInteractionEnabled = v5.optional(v5.boolean),
    onStateChanged = v5.optional(v5.callback),
    onActivated = v5.optional(v5.callback),
    onTouchTapped = v5.optional(v5.callback),
    [v17.debugProps.controlState] = v5.optional(v13.isEnumValue),
    [v6.Change.AbsolutePosition] = v5.optional(v5.callback),
    [v6.Ref] = v5.optional(v5.union(v5.callback, v5.table)),
    forwardRef = v5.optional(v5.union(v5.callback, v5.table)),
    selectionCursor = if not v16.migrateToNewSelectionCursor then nil else v5.optional(v5.any)
});
v17.defaultProps = {
    isDisabled = false,
    userInteractionEnabled = true,
    horizontalPadding = 24
};
v17.init = function(v18)
    v18:setState({
        controlState = v13.Initialize
    });
    v18.stateStyleMap = {
        [v13.Default] = "BackgroundDefault",
        [v13.Hover] = "BackgroundOnHover",
        [v13.Pressed] = "BackgroundOnPress"
    };
    v18.getBackgroundStyle = function(v19, v20)
        local v21 = v18.stateStyleMap[v19] or v18.stateStyleMap[v13.Default];
        local v22 = {
            Color = v20.Theme[v21].Color,
            Transparency = v20.Theme[v21].Transparency
        };
        if v19 == v13.Disabled then
            v22.Transparency = 1;
        end;
        return v22;
    end;
    v18.onStateChanged = function(v23, v24)
        v18:setState({
            controlState = v24
        });
        if v18.props.onStateChanged then
            v18.props.onStateChanged(v23, v24);
        end;
    end;
end;
v17.render = function(v25)
    return v9(function(v26)
        return v10(function(v27)
            return v25:renderWithProviders(v26, v27);
        end);
    end);
end;
v17.renderWithProviders = function(v28, v29, v30)
    local l_anchorPoint_0 = v28.props.anchorPoint;
    local l_layoutOrder_0 = v28.props.layoutOrder;
    local l_position_0 = v28.props.position;
    local v34 = v28.props.size or UDim2.fromScale(1, 1);
    local l_head_0 = v28.props.head;
    local l_tail_0 = v28.props.tail;
    local l_background_0 = v28.props.background;
    local v38 = not not l_tail_0 and (v28.props.userInteractionEnabled and true or false);
    local l_isDisabled_0 = v28.props.isDisabled;
    local l_onActivated_0 = v28.props.onActivated;
    local l_onTouchTapped_0 = v28.props.onTouchTapped;
    local v42 = v28.props[v17.debugProps.controlState] or v28.state.controlState;
    local v43 = v28.getBackgroundStyle(v42, v29);
    return v6.createElement(v12, {
        AnchorPoint = l_anchorPoint_0,
        LayoutOrder = l_layoutOrder_0,
        Position = l_position_0,
        Size = v34,
        BackgroundTransparency = 1,
        AutoButtonColor = false,
        Selectable = v28.props.selectable,
        SelectionImageObject = if not v16.migrateToNewSelectionCursor then v30 and v30(v11.RoundedRectNoInset) else v28.props.selectionCursor,
        isDisabled = l_isDisabled_0,
        onStateChanged = v28.onStateChanged,
        userInteractionEnabled = v38,
        [v6.Event.Activated] = l_onActivated_0,
        [v6.Event.TouchTap] = l_onTouchTapped_0,
        [v6.Change.AbsolutePosition] = v28.props[v6.Change.AbsolutePosition],
        [v6.Ref] = v28.props.forwardRef
    }, {
        CellBackground = v6.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1,
            ZIndex = -1
        }, {
            Background = l_background_0 or v6.createElement("Frame", {
                Size = UDim2.fromScale(1, 1),
                BackgroundColor3 = v43.Color,
                BackgroundTransparency = v43.Transparency,
                BorderSizePixel = 0
            })
        }),
        CellContent = v6.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1,
            BorderSizePixel = 0
        }, {
            Padding = v6.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, v28.props.horizontalPadding),
                PaddingRight = UDim.new(0, v28.props.horizontalPadding)
            }),
            CellHead = v6.createElement("Frame", {
                AnchorPoint = Vector2.new(0, 0.5),
                Position = UDim2.fromScale(0, 0.5),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.XY
            }, {
                Head = l_head_0
            }),
            CellTail = not not l_tail_0 and v6.createElement("Frame", {
                AnchorPoint = Vector2.new(1, 0.5),
                Position = UDim2.fromScale(1, 0.5),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.XY
            }, {
                Tail = l_tail_0
            }) or nil
        }),
        DisabledMask = v42 == v13.Disabled and v6.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BorderSizePixel = 0,
            BackgroundColor3 = v43.Color,
            BackgroundTransparency = 0.5,
            ZIndex = 100
        }) or nil
    });
end;
return v6.forwardRef(function(v44, v45)
    local v46 = v14(v15.RoundedRectNoInset);
    if v16.migrateToNewSelectionCursor then
        v44 = v4.Dictionary.join({
            selectionCursor = v46
        }, v44);
    end;
    return v6.createElement(v17, v4.Dictionary.join(v44, {
        forwardRef = v45
    }));
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Core_0 = l_Parent_0.Core;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.t);
local v4 = require(l_Core_0.Style.Validator.validateColorInfo);
local v5 = require(l_Core_0.Style.Validator.validateFontInfo);
local v6 = require(l_Core_0.Style.Validator.validateTypographyInfo);
local v7 = require(l_Parent_1.Roact);
local v8 = require(l_Core_0.Style.withStyle);
local v9 = require(l_Parent_0.Core.Text.GenericTextLabel.GenericTextLabel);
local v10 = v7.PureComponent:extend("CellHeadDetail");
v10.validateProps = v3.strictInterface({
    labelText = v3.string,
    labelTextColor = v3.optional(v4),
    labelTextFont = v3.optional(v3.union(v5, v6)),
    subLabelText = v3.optional(v3.string),
    subLabelTextColor = v3.optional(v4),
    subLabelTextFont = v3.optional(v3.union(v5, v6))
});
v10.render = function(v11)
    return v8(function(v12)
        local l_labelText_0 = v11.props.labelText;
        local v14 = v11.props.labelTextColor or v12.Theme.TextEmphasis;
        local v15 = v11.props.labelTextFont or v12.Font.Header2;
        local l_subLabelText_0 = v11.props.subLabelText;
        return v7.createElement("Frame", {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            AutomaticSize = Enum.AutomaticSize.XY
        }, {
            ListLayout = v7.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical
            }),
            Label = v7.createElement(v9, {
                LayoutOrder = 1,
                AutomaticSize = Enum.AutomaticSize.XY,
                Text = l_labelText_0,
                colorStyle = v14,
                fontStyle = v15,
                BackgroundTransparency = 1
            }),
            SubLabel = not not l_subLabelText_0 and v7.createElement(v9, {
                LayoutOrder = 2,
                AutomaticSize = Enum.AutomaticSize.XY,
                Text = l_subLabelText_0,
                colorStyle = v11.props.subLabelTextColor or v12.Theme.TextDefault,
                fontStyle = v11.props.subLabelTextFont or v12.Font.CaptionBody,
                BackgroundTransparency = 1
            }) or nil
        });
    end);
end;
return v10;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Core_0 = l_Parent_1.Core;
local l_Parent_2 = l_Parent_1.Parent;
local v4 = require(l_Parent_2.t);
local v5 = require(l_Core_0.Style.Validator.validateColorInfo);
local v6 = require(l_Core_0.Style.Validator.validateFontInfo);
local v7 = require(l_Core_0.Style.Validator.validateTypographyInfo);
local v8 = require(l_Parent_2.Roact);
local v9 = require(l_Core_0.Style.withStyle);
local v10 = require(l_Parent_1.Core.Text.GenericTextLabel.GenericTextLabel);
local v11 = require(l_Core_0.ImageSet.ImageSetComponent);
local v12 = require(l_Parent_0.ImageSet.Enum.IconSize);
local v13 = require(l_Parent_0.ImageSet.getIconSize);
local v14 = require(l_Parent_0.ImageSet.Images);
local v15 = v8.PureComponent:extend("CellTailDescription");
v15.validateProps = v4.strictInterface({
    text = v4.optional(v4.string),
    textColor = v4.optional(v5),
    textFont = v4.optional(v4.union(v6, v7)),
    renderTextOverride = v4.optional(v4.callback),
    showArrow = v4.optional(v4.boolean),
    infoIcon = v4.optional(v4.string)
});
v15.defaultProps = {
    showArrow = false,
    infoIcon = nil
};
v15.init = function(v16)
    v16.getDescription = function(v17, v18, v19, v20, v21)
        local v22 = nil;
        if v17 then
            if v21 then
                v22 = v21();
            end;
            if not v22 then
                v22 = v8.createElement(v10, {
                    LayoutOrder = v20,
                    AutomaticSize = Enum.AutomaticSize.XY,
                    Text = v17,
                    colorStyle = v18,
                    fontStyle = v19,
                    BackgroundTransparency = 1
                });
            end;
        end;
        return v22;
    end;
end;
v15.render = function(v23)
    local l_text_0 = v23.props.text;
    local l_renderTextOverride_0 = v23.props.renderTextOverride;
    local l_showArrow_0 = v23.props.showArrow;
    local v27 = v23.props.infoIcon ~= nil;
    if (l_text_0 or l_showArrow_0) or v27 then
        return v9(function(v28)
            return v8.createElement("Frame", {
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.XY
            }, {
                ListLayout = v8.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Horizontal,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = UDim.new(0, 8)
                }),
                Description = v23.getDescription(l_text_0, v23.props.textColor or v28.Theme.TextDefault, v23.props.textFont or v28.Font.Body, 1, l_renderTextOverride_0),
                RightArrow = not not l_showArrow_0 and v8.createElement(v11.Label, {
                    LayoutOrder = 2,
                    Size = UDim2.fromOffset(v13(v12.Small), v13(v12.Small)),
                    BackgroundTransparency = 1,
                    Image = v14["icons/navigation/pushRight_small"],
                    ImageColor3 = v28.Theme.TextEmphasis.Color,
                    ImageTransparency = v28.Theme.TextEmphasis.Transparency
                }) or nil,
                InfoIcon = not not v27 and v8.createElement(v11.Label, {
                    LayoutOrder = 2,
                    Size = UDim2.fromOffset(v13(v12.Small), v13(v12.Small)),
                    Image = v23.props.infoIcon,
                    ImageColor3 = v28.Theme.IconEmphasis.Color,
                    ImageTransparency = v28.Theme.IconEmphasis.Transparency,
                    BorderSizePixel = 0,
                    BackgroundTransparency = 1
                }) or nil
            });
        end);
    else
        return nil;
    end;
end;
return v15;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Core_0 = l_Parent_0.Core;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_1.Roact);
local v5 = require(l_Core_0.Style.withStyle);
local v6 = v4.PureComponent:extend("ListTable");
v6.validateProps = v3.strictInterface({
    layoutOrder = v3.optional(v3.integer),
    size = v3.optional(v3.UDim2),
    showDividers = v3.optional(v3.boolean),
    anchorPoint = v3.optional(v3.Vector2),
    position = v3.optional(v3.UDim2),
    automaticSize = v3.optional(v3.enum(Enum.AutomaticSize)),
    cells = v3.array(v3.table)
});
v6.defaultProps = {
    showDividers = true
};
v6.render = function(v7)
    return v5(function(v8)
        local l_size_0 = v7.props.size;
        local l_automaticSize_0 = v7.props.automaticSize;
        if not l_size_0 then
            l_size_0 = if not l_automaticSize_0 then UDim2.fromScale(1, 1) else if l_automaticSize_0 == Enum.AutomaticSize.X then UDim2.fromScale(0, 1) else if l_automaticSize_0 == Enum.AutomaticSize.Y then UDim2.fromScale(1, 0) else if l_automaticSize_0 == Enum.AutomaticSize.XY then UDim2.fromScale(0, 0) else UDim2.fromScale(1, 1);
        end;
        local v11 = {
            ListLayout = v4.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical
            })
        };
        local l_cells_0 = v7.props.cells;
        for v13, v14 in ipairs(l_cells_0) do
            v11["Cell " .. v13] = v4.createElement("Frame", {
                LayoutOrder = v13,
                Size = UDim2.fromScale(1, 0),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                Content = v14,
                Divider = not not (v7.props.showDividers and v13 < #l_cells_0) and v4.createElement("Frame", {
                    Size = UDim2.new(1, -24, 0, 1),
                    Position = UDim2.new(0, 24, 1, -1),
                    BorderSizePixel = 0,
                    BackgroundColor3 = v8.Theme.Divider.Color,
                    BackgroundTransparency = v8.Theme.Divider.Transparency,
                    ZIndex = 100
                }) or nil
            });
        end;
        return v4.createElement("Frame", {
            LayoutOrder = v7.props.layoutOrder,
            Size = l_size_0,
            AutomaticSize = l_automaticSize_0,
            AnchorPoint = v7.props.anchorPoint,
            Position = v7.props.position,
            BackgroundTransparency = 1
        }, v11);
    end);
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Core_0 = l_Parent_0.Core;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.React);
local l_VirtualizedList_0 = require(l_Parent_1.VirtualizedList).VirtualizedList;
local v5 = require(l_Parent_1.Cryo);
local v6 = require(l_Core_0.Style.withStyle);
local v7 = {
    selectable = true,
    size = UDim2.fromScale(1, 1)
};
return function(v8)
    return v6(function(v9)
        local v10 = v5.Dictionary.join(v7, v8);
        local v11 = {};
        local l_cells_0 = v10.cells;
        for v13, v14 in ipairs(l_cells_0) do
            local v15 = "Cell " .. v13;
            v11[v15] = v3.createElement("Frame", {
                LayoutOrder = v13,
                Size = UDim2.fromScale(1, 0),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.Y,
                Name = v15
            }, {
                Content = v14,
                Divider = v13 < #l_cells_0 and v3.createElement("Frame", {
                    Size = UDim2.new(1, -24, 0, 1),
                    Position = UDim2.new(0, 24, 1, -1),
                    BorderSizePixel = 0,
                    BackgroundColor3 = v9.Theme.Divider.Color,
                    BackgroundTransparency = v9.Theme.Divider.Transparency,
                    ZIndex = 100
                }) or nil
            });
        end;
        return v3.createElement(l_VirtualizedList_0, {
            Size = v10.size,
            data = v11,
            renderItem = function(v16)
                return v16.item;
            end,
            getItemCount = function(_)
                return #l_cells_0;
            end,
            getItem = function(v18, v19)
                return v18["Cell " .. tostring(v19)];
            end,
            keyExtractor = function(_, v21)
                return "Cell " .. tostring(v21);
            end,
            style = {
                AnchorPoint = v10.anchorPoint,
                Position = v10.position,
                BackgroundTransparency = 1,
                LayoutOrder = v10.layoutOrder,
                Name = v10.Name or "ListTable",
                ScrollBarThickness = 0,
                Selectable = v10.selectable
            },
            contentContainerStyle = {
                BackgroundTransparency = 1
            }
        });
    end);
end;


return {
    HeaderBarBackgroundHeight = {
        Desktop = 80,
        Mobile = 24
    },
    SideMargin = {
        Desktop = 48,
        Mobile = 24
    }
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent.Parent;
local v3 = require(l_Parent_0.Enum.ContentPosition);
local v4 = require(l_Parent_0.validateDetailsPageComponentList);
local l_DeviceType_0 = require(l_Parent_1.Style.Constants).DeviceType;
local v6 = require(l_Parent_0.getPlatformConfig);
local v7 = require(l_Parent_0.DetailsPageTitleContent);
local v8 = require(l_Parent_2.Roact);
local v9 = require(l_Parent_2.t);
local v10 = v8.PureComponent:extend("DetailsPageBody");
v10.validateProps = v9.strictInterface({
    titleText = v9.optional(v9.string),
    subTitleText = v9.optional(v9.string),
    renderInfoContent = v9.optional(v9.callback),
    componentList = v9.optional(v4),
    dualPanelBreakpoint = v9.optional(v9.number),
    sideMargin = v9.optional(v9.number),
    bodyClipsDescendants = v9.optional(v9.boolean),
    deviceType = v9.optional(v9.string)
});
v10.defaultProps = {
    bodyClipsDescendants = true
};
v10.init = function(v11)
    v11.state = {
        containerWidth = nil
    };
    v11.containerFrameRef = v8.createRef();
    v11.mounted = false;
    v11.onContainerSizeChange = function(v12)
        if v11.mounted then
            v11:setState(function(v13, _)
                if v13.containerWidth ~= v12.AbsoluteSize.x then
                    return {
                        containerWidth = v12.AbsoluteSize.x
                    };
                else
                    return nil;
                end;
            end);
            return ;
        else
            return ;
        end;
    end;
end;
v10.renderSinglePanel = function(v15)
    local v16 = {
        Layout = v8.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, 24)
        })
    };
    for v17, v18 in pairs(v15.props.componentList) do
        v16[v17 .. "Container"] = v8.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v18.portraitLayoutOrder
        }, {
            [v17] = v18.renderComponent()
        });
    end;
    return {
        Panel = v8.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            ClipsDescendants = false,
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1
        }, v16)
    };
end;
v10.renderDualPanel = function(v19)
    local v20 = v19.state.containerWidth < 1920 and 48 or 96;
    local v21 = {
        Layout = v8.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, 24)
        })
    };
    local v22 = {
        Layout = v8.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, 24)
        })
    };
    for v23, v24 in pairs(v19.props.componentList) do
        local l_v21_0 = v21;
        if v24.landscapePosition == v3.Right then
            l_v21_0 = v22;
        end;
        l_v21_0[v23 .. "Container"] = v8.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v24.landscapeLayoutOrder
        }, {
            [v23] = v24.renderComponent()
        });
    end;
    return {
        Layout = v8.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, v20)
        }),
        LeftPanel = v8.createElement("Frame", {
            Size = UDim2.new(0.5, -v20 / 2, 0, 0),
            ClipsDescendants = true,
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = 1
        }, v21),
        RightPanel = v8.createElement("Frame", {
            Size = UDim2.new(0.5, -v20 / 2, 0, 0),
            ClipsDescendants = true,
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = 2
        }, v22)
    };
end;
v10.renderBodyContent = function(v26)
    local v27 = v26.props.dualPanelBreakpoint or 1280;
    if not v26.state.containerWidth or not v26.props.componentList then
        return {};
    elseif v26.state.containerWidth < v27 then
        return v26:renderSinglePanel();
    else
        return v26:renderDualPanel();
    end;
end;
v10.render = function(v28)
    local v29 = v28.props.deviceType == l_DeviceType_0.Phone;
    local v30 = if not v28.props.sideMargin then v6(v28.props.deviceType).sideMargin else v28.props.sideMargin;
    return v8.createElement("Frame", {
        Size = UDim2.fromScale(1, 0),
        BackgroundTransparency = 1,
        ClipsDescendants = v28.props.bodyClipsDescendants,
        AutomaticSize = Enum.AutomaticSize.Y,
        [v8.Ref] = v28.containerFrameRef,
        [v8.Change.AbsoluteSize] = v28.onContainerSizeChange
    }, {
        Layout = v8.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            HorizontalAlignment = Enum.HorizontalAlignment.Left
        }),
        UIPadding = v8.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v30),
            PaddingRight = UDim.new(0, v30)
        }),
        TitleInfo = v29 and v8.createElement(v7, {
            titleText = v28.props.titleText,
            subTitleText = v28.props.subTitleText,
            renderInfoContent = v28.props.renderInfoContent,
            verticalAlignment = Enum.VerticalAlignment.Top,
            layoutOrder = 1
        } or nil),
        Padding = v8.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, v30),
            BackgroundTransparency = 1,
            LayoutOrder = 2
        }),
        ContentFrame = v8.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = 3
        }, v28:renderBodyContent()),
        BottomPadding = v8.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 3 * v30),
            BackgroundTransparency = 1,
            LayoutOrder = 4
        })
    });
end;
v10.didMount = function(v31)
    v31.mounted = true;
    if v31.containerFrameRef.current then
        v31.onContainerSizeChange(v31.containerFrameRef.current);
    end;
end;
v10.willUnmount = function(v32)
    v32.mounted = false;
end;
return v10;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_Parent_3 = l_Parent_2.Parent;
local v4 = require(l_Parent_2.Core.Style.withStyle);
local l_Label_0 = require(l_Parent_2.Core.ImageSet.ImageSetComponent).Label;
local v6 = require(l_Parent_2.App.ImageSet.Images);
local v7 = require(l_Parent_1.Loading.LoadableImage);
local v8 = require(l_Parent_1.Button.ActionBar);
local l_DeviceType_0 = require(l_Parent_1.Style.Constants).DeviceType;
local v10 = require(l_Parent_3.Roact);
local v11 = require(l_Parent_3.t);
local v12 = require(l_Parent_0.DetailsPageTitleContent);
local v13 = v10.PureComponent:extend("DetailsPageHeader");
v13.defaultProps = {
    thumbnailHeight = 200,
    thumbnailAspectRatio = Vector2.new(1, 1),
    actionBarHeight = 48,
    actionBarWidth = 380
};
v13.validateProps = v11.strictInterface({
    thumbnailImageUrl = v11.optional(v11.string),
    thumbnailAspectRatio = v11.optional(v11.Vector2),
    thumbnailHeight = v11.optional(v11.number),
    titleText = v11.optional(v11.string),
    subTitleText = v11.optional(v11.string),
    renderInfoContent = v11.optional(v11.callback),
    headerBarBackgroundHeight = v11.optional(v11.number),
    sideMargin = v11.optional(v11.number),
    itemPadding = v11.optional(v11.number),
    bottomMargin = v11.optional(v11.number),
    gradientHeight = v11.optional(v11.number),
    thumbnailShadowHeight = v11.optional(v11.number),
    actionBarHeight = v11.optional(v11.number),
    actionBarWidth = v11.optional(v11.number),
    actionBarProps = v11.optional(v8.validateProps),
    deviceType = v11.optional(v11.string)
});
v13.renderThumbnail = function(v14, v15, v16, v17, v18)
    return v10.createElement("Frame", {
        Size = UDim2.fromOffset(v17, v18),
        LayoutOrder = 1,
        AnchorPoint = Vector2.new(0, 1),
        Position = UDim2.new(0, 0, 1, 0),
        BackgroundTransparency = 1
    }, {
        ThumbnailTile = v10.createElement(v7, {
            cornerRadius = UDim.new(0, 8),
            Size = UDim2.fromScale(1, 1),
            Image = v14.props.thumbnailImageUrl
        }),
        DropShadow = if v16 > 0 then v10.createElement(l_Label_0, {
            Size = UDim2.new(1, 0, 0, 28),
            Position = UDim2.fromScale(0, 1),
            BackgroundTransparency = 1,
            Image = v6["component_assets/dropshadow_thumbnail_28"],
            ImageColor3 = v15.Theme.DropShadow.Color,
            ImageTransparency = v15.Theme.DropShadow.Transparency,
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = Rect.new(32, 0, 33, 28)
        }) else nil
    });
end;
v13.renderDesktopMode = function(v19, v20)
    local l_thumbnailHeight_0 = v19.props.thumbnailHeight;
    local v22 = l_thumbnailHeight_0 * (v19.props.thumbnailAspectRatio.X / v19.props.thumbnailAspectRatio.Y);
    local v23 = v19.props.sideMargin or 48;
    local v24 = v19.props.itemPadding or 24;
    local v25 = 28;
    if v19.props.thumbnailShadowHeight ~= nil then
        v25 = v19.props.thumbnailShadowHeight;
    end;
    return {
        Padding = v10.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v23),
            PaddingRight = UDim.new(0, v23),
            PaddingBottom = UDim.new(0, 16)
        }),
        Layout = v10.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Bottom,
            Padding = UDim.new(0, v24)
        }),
        ThumbnailTileFrame = v19:renderThumbnail(v20, v25, v22, l_thumbnailHeight_0),
        InfoFrame = v10.createElement("Frame", {
            Size = UDim2.new(1, -(v22 + v23 * 2), 1, 0),
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = 2
        }, {
            Layout = v10.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                VerticalAlignment = Enum.VerticalAlignment.Top
            }),
            TitleInfo = v10.createElement(v12, {
                titleText = v19.props.titleText,
                subTitleText = v19.props.subTitleText,
                renderInfoContent = v19.props.renderInfoContent,
                verticalAlignment = Enum.VerticalAlignment.Top,
                layoutOrder = 1
            }),
            Padding = v10.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, 16),
                BackgroundTransparency = 1,
                LayoutOrder = 2
            }),
            ActonBarFrame = v10.createElement("Frame", {
                Size = UDim2.fromOffset(v19.props.actionBarWidth, v19.props.actionBarHeight),
                BackgroundTransparency = 1,
                LayoutOrder = 3
            }, {
                ActionBar = not not v19.props.actionBarProps and v10.createElement(v8, {
                    button = v19.props.actionBarProps.button,
                    icons = v19.props.actionBarProps.icons,
                    iconSize = v19.props.actionBarProps.iconSize,
                    buttonHeight = v19.props.actionBarProps.buttonHeight,
                    buttonPadding = v19.props.actionBarProps.buttonPadding,
                    textButtons = v19.props.actionBarProps.textButtons,
                    enableButtonAtStart = true,
                    marginOverride = {
                        left = 0,
                        right = 0,
                        top = 0,
                        bottom = 0
                    },
                    horizontalAlignment = Enum.HorizontalAlignment.Left
                }) or nil
            })
        })
    };
end;
v13.renderisPhone = function(v26, v27)
    local l_thumbnailHeight_1 = v26.props.thumbnailHeight;
    local v29 = l_thumbnailHeight_1 * (v26.props.thumbnailAspectRatio.X / v26.props.thumbnailAspectRatio.Y);
    local v30 = v26.props.sideMargin or 24;
    return {
        Padding = v10.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v30),
            PaddingRight = UDim.new(0, v30),
            PaddingBottom = UDim.new(0, 16)
        }),
        ThumbnailTileFrame = v26:renderThumbnail(v27, v29, l_thumbnailHeight_1)
    };
end;
v13.render = function(v31)
    local v32 = v31.props.deviceType == l_DeviceType_0.Phone;
    local l_thumbnailHeight_2 = v31.props.thumbnailHeight;
    local v34 = v31.props.headerBarBackgroundHeight or 80;
    local v35 = v31.props.gradientHeight or ((l_thumbnailHeight_2 + 16) - v34) + 44;
    local l_bottomMargin_0 = v31.props.bottomMargin;
    return v4(function(v37)
        local l_Theme_0 = v37.Theme;
        return v10.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1
        }, {
            Layout = v10.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                VerticalAlignment = Enum.VerticalAlignment.Bottom,
                HorizontalAlignment = Enum.HorizontalAlignment.Left
            }),
            GradientBar = v10.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, v35),
                BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                AnchorPoint = Vector2.new(0, 1),
                BorderSizePixel = 0,
                LayoutOrder = 1
            }, {
                Gradient = v10.createElement("UIGradient", {
                    Rotation = 270,
                    Transparency = NumberSequence.new({
                        NumberSequenceKeypoint.new(0, 0),
                        NumberSequenceKeypoint.new(0.5, 0.25),
                        NumberSequenceKeypoint.new(1, 1)
                    })
                })
            }),
            BackgroundBar = v10.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, v34),
                Position = UDim2.fromScale(0, 1),
                AnchorPoint = Vector2.new(0, 1),
                BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
                BorderSizePixel = 0,
                LayoutOrder = 2
            }, not not v32 and v31:renderisPhone(v37, l_thumbnailHeight_2) or v31:renderDesktopMode(v37, l_thumbnailHeight_2)),
            Padding = if not l_bottomMargin_0 then nil else v10.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_bottomMargin_0),
                BackgroundTransparency = 1,
                LayoutOrder = 3
            })
        });
    end);
end;
return v13;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_Parent_3 = l_Parent_2.Parent;
local l_GuiService_0 = game:GetService("GuiService");
local v5 = require(l_Parent_2.App.SelectionImage.useSelectionCursor);
local v6 = require(l_Parent_2.App.SelectionImage.CursorKind);
local v7 = require(l_Parent_1.SelectionCursor.useCursorByType);
local v8 = require(l_Parent_1.SelectionCursor.CursorType);
local v9 = require(l_Parent_2.UIBloxConfig);
local _ = require(l_Parent_0.Types);
local v11 = require(l_Parent_3.React);
local function v13(v12)
    l_GuiService_0:Select(v12);
end;
return function(v14)
    local l_item_0 = v14.item;
    local l_safeArea_0 = v14.safeArea;
    local l_itemPadding_0 = v14.itemPadding;
    local v18 = v11.useMemo(function()
        return l_item_0.renderComponent();
    end, {
        l_item_0.renderComponent
    });
    local v19, v20 = v11.useBinding(0);
    return v11.createElement("CanvasGroup", {
        key = l_item_0.key,
        Size = UDim2.new(1, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        ref = v11.useRef(nil),
        [v11.Change.AbsolutePosition] = v11.useCallback(function(v21)
            local l_v21_FirstAncestorOfClass_0 = v21:FindFirstAncestorOfClass("ScrollingFrame");
            if l_v21_FirstAncestorOfClass_0 == nil then
                return nil;
            else
                local v23 = (v21.AbsolutePosition.Y - l_v21_FirstAncestorOfClass_0.AbsolutePosition.Y) - l_safeArea_0.Y;
                local v24 = -(v21.AbsoluteSize.Y + l_itemPadding_0);
                if v23 < 1 and v24 < (v23 + l_safeArea_0.Y) + 1 then
                    v20(v23 / v24);
                else
                    v20(0);
                end;
                return nil;
            end;
        end, {
            l_safeArea_0,
            l_itemPadding_0
        }),
        GroupTransparency = v19,
        BackgroundTransparency = 1,
        Selectable = l_item_0.useSelectionBumper,
        SelectionImageObject = if not v9.migrateToNewSelectionCursor then v5(v6.Invisible) else v7(v8.Invisible),
        [v11.Event.SelectionGained] = v13
    }, {
        Padding = v11.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, l_safeArea_0.X),
            PaddingRight = UDim.new(0, l_safeArea_0.X)
        }),
        View = v18
    });
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent.Parent;
local v3 = require(l_Parent_0.DetailsPageTemplate);
local v4 = require(l_Parent_0.DetailsPageTenfootTemplate);
local l_DeviceType_0 = require(l_Parent_1.Style.Constants).DeviceType;
local v6 = require(l_Parent_2.React);
local v7 = {
    [l_DeviceType_0.Console] = v4,
    [l_DeviceType_0.Phone] = v3,
    [l_DeviceType_0.Desktop] = v3,
    [l_DeviceType_0.Unknown] = v3,
    [l_DeviceType_0.Tablet] = v3,
    [l_DeviceType_0.VR] = v3
};
return function(v8)
    return v6.createElement(v7[v8.deviceType] or v3, v8.detailsPageProps);
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_Parent_3 = l_Parent_2.Parent;
local v4 = require(l_Parent_3.Roact);
local v5 = require(l_Parent_3.t);
local v6 = require(l_Parent_2.UIBloxConfig);
local v7 = require(l_Parent_2.Core.Style.withStyle);
local v8 = require(l_Parent_1.Loading.LoadableImage);
local v9 = require(l_Parent_1.ImageSet.Images);
local v10 = require(l_Parent_1.Button.IconButton);
local v11 = require(l_Parent_1.ImageSet.Enum.IconSize);
local v12 = require(l_Parent_1.ImageSet.getIconSize);
local v13 = require(l_Parent_1.ImageSet.getIconSizeUDim2);
local v14 = require(l_Parent_1.Container.VerticalScrollView);
local v15 = require(l_Parent_1.Button.ActionBar);
local v16 = require(l_Parent_1.Button.StickyActionBar);
local l_DeviceType_0 = require(l_Parent_1.Style.Constants).DeviceType;
local v18 = require(l_Parent_0.getPlatformConfig);
local v19 = require(l_Parent_0.DetailsPageHeader);
local v20 = require(l_Parent_0.DetailsPageBody);
local v21 = require(l_Parent_0.validateDetailsPageComponentList);
local v22 = v4.PureComponent:extend("DetailsPageTemplate");
v22.validateProps = v5.strictInterface({
    thumbnailImageUrl = v5.optional(v5.string),
    thumbnailHeight = v5.optional(v5.number),
    thumbnailAspectRatio = v5.optional(v5.Vector2),
    titleText = v5.optional(v5.string),
    subTitleText = v5.optional(v5.string),
    renderInfoContent = v5.optional(v5.callback),
    actionBarProps = v5.optional(v15.validateProps),
    componentList = v5.optional(v21),
    dualPanelBreakpoint = v5.optional(v5.number),
    sideMargin = v5.optional(v5.number),
    bodyClipsDescendants = v5.optional(v5.boolean),
    startingOffsetPosition = v5.optional(v5.number),
    headerBarBackgroundHeight = v5.optional(v5.number),
    onClose = v5.callback,
    bannerPlaceholderGradient = v5.optional(v5.table),
    bannerImageUrl = v5.optional(v5.string),
    isFullscreen = v5.optional(v5.boolean),
    renderFullscreenContent = v5.optional(v5.callback),
    deviceType = v5.optional(v5.string),
    isMobile = v5.optional(v5.boolean),
    tokens = v5.optional(v5.table)
});
v22.defaultProps = {
    deviceType = l_DeviceType_0.Desktop,
    isFullscreen = false
};
local function _(v23, v24)
    return v24 - if not v23.headerBarBackgroundHeight then v18(v23.deviceType).headerBarBackgroundHeight else v23.headerBarBackgroundHeight;
end;
v22.init = function(v26)
    v26.containerRef = v4.createRef();
    v26.scrollingFrameRef = v4.createRef();
    v26.scrolled = false;
    v26.state = {
        showStickyActionTopBar = false,
        backgroundHeight = 500,
        containerSize = Vector2.new(500, 500),
        backgroundComponentPosition = 250
    };
    v26.onContainerSizeChange = function(v27)
        v26:setState({
            containerSize = v27.AbsoluteSize
        });
    end;
    v26.onBackgroundComponentFrameSizeChange = function(v28)
        v26:setState(function(_, v30)
            local l_Y_0 = v28.AbsoluteSize.Y;
            return {
                backgroundHeight = l_Y_0,
                backgroundComponentPosition = math.max(0, l_Y_0 - if not v30.headerBarBackgroundHeight then v18(v30.deviceType).headerBarBackgroundHeight else v30.headerBarBackgroundHeight) / 2
            };
        end);
    end;
    v26.canvasPositionChange = function(v32)
        v26.scrolled = true;
        v26:setState(function(v33, v34)
            local v35 = v33.backgroundHeight - if not v34.headerBarBackgroundHeight then v18(v34.deviceType).headerBarBackgroundHeight else v34.headerBarBackgroundHeight;
            local v36 = math.max(0, v35 - v32.CanvasPosition.Y) / 2;
            if v35 < v32.CanvasPosition.Y then
                if v33.showStickyActionTopBar == false and v26.props.deviceType ~= l_DeviceType_0.Phone then
                    return {
                        showStickyActionTopBar = true
                    };
                else
                    return nil;
                end;
            elseif v33.showStickyActionTopBar == true then
                return {
                    showStickyActionTopBar = false,
                    backgroundComponentPosition = v36
                };
            else
                return {
                    backgroundComponentPosition = v36
                };
            end;
        end);
    end;
end;
v22.render = function(v37)
    local v38 = v37.props.deviceType == l_DeviceType_0.Phone;
    local v39 = v18(v37.props.deviceType);
    local v40 = if not v37.props.thumbnailHeight then v39.thumbnailHeight else v37.props.thumbnailHeight;
    local v41 = if not v37.props.headerBarBackgroundHeight then v39.headerBarBackgroundHeight else v37.props.headerBarBackgroundHeight;
    local v42 = if not v37.props.sideMargin then v39.sideMargin else v37.props.sideMargin;
    local v43 = if not v37.props.dualPanelBreakpoint then v39.dualPanelBreakpoint else v37.props.dualPanelBreakpoint;
    local l_props_0 = v37.props;
    local v45 = v37.state.backgroundHeight - if not l_props_0.headerBarBackgroundHeight then v18(l_props_0.deviceType).headerBarBackgroundHeight else l_props_0.headerBarBackgroundHeight;
    l_props_0 = v37.state.backgroundComponentPosition;
    local l_containerSize_0 = v37.state.containerSize;
    local l_isFullscreen_0 = v37.props.isFullscreen;
    local l_renderFullscreenContent_0 = v37.props.renderFullscreenContent;
    local v49 = not v38 and ((l_isFullscreen_0 and l_renderFullscreenContent_0) and true or false);
    return v7(function(v50)
        local l_Theme_0 = v50.Theme;
        local v52 = v37.props.bannerImageUrl == nil;
        local v53 = v37.props.bannerPlaceholderGradient or {
            Rotation = 90,
            Color = ColorSequence.new({
                ColorSequenceKeypoint.new(0, l_Theme_0.BackgroundMuted.Color),
                ColorSequenceKeypoint.new(1, l_Theme_0.BackgroundUIDefault.Color)
            })
        };
        local v54 = not not v38 and (v12(v11.Large) + 22) / 2 or v41 / 2;
        local v55 = v38 and v37.props.actionBarProps;
        return v4.createElement("TextButton", {
            Text = "",
            AutoButtonColor = false,
            Size = UDim2.fromScale(1, 1),
            BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
            BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
            BorderSizePixel = 0,
            ClipsDescendants = true,
            [v4.Ref] = v37.containerRef,
            [v4.Change.AbsoluteSize] = v37.onContainerSizeChange
        }, {
            CloseButtonFrame = v4.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = v13(v11.Large),
                AnchorPoint = Vector2.new(0, 0.5),
                Position = UDim2.new(0, 22, 0, v54),
                ZIndex = 2
            }, {
                CloseButton = v4.createElement(v10, {
                    size = UDim2.fromScale(1, 1),
                    icon = not not v49 and v9["icons/navigation/pushBack"] or v9["icons/navigation/close"],
                    iconColor3 = if not v6.useNewThemeColorPalettes then v50.Theme.UIEmphasis.Color else nil,
                    iconSize = v11.Medium,
                    onActivated = v37.props.onClose,
                    showBackground = v37.state.showStickyActionTopBar == false,
                    backgroundColor = if not v6.useNewThemeColorPalettes then v50.Theme.BackgroundUIDefault else nil
                })
            }),
            BackgroundDetailsFrame = v4.createElement("Frame", {
                BackgroundColor3 = l_Theme_0.BackgroundMuted.Color,
                BackgroundTransparency = l_Theme_0.BackgroundMuted.Transparency,
                Size = UDim2.fromScale(1, 1),
                AnchorPoint = Vector2.new(0.5, 0),
                Position = UDim2.fromScale(0.5, 0),
                [v4.Change.AbsoluteSize] = v37.onBackgroundComponentFrameSizeChange
            }, {
                GradientPlaceholder = not not v52 and v4.createElement("UIGradient", v53) or nil,
                UIAspectRatioConstraint = v4.createElement("UIAspectRatioConstraint", {
                    AspectRatio = 1.7777777777777777
                }),
                BackgroundImage = v52 == false and v4.createElement(v8, {
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Position = UDim2.new(0.5, 0, 0, l_props_0),
                    Size = UDim2.new(0, l_containerSize_0.x, 1, 0),
                    Image = v37.props.bannerImageUrl,
                    ScaleType = Enum.ScaleType.Crop
                }) or nil
            }),
            StickyActionBarFrame = (v37.state.showStickyActionTopBar or v49) and v4.createElement("TextButton", {
                Text = "",
                AutoButtonColor = false,
                Size = UDim2.new(1, 0, 0, v41),
                BackgroundColor3 = l_Theme_0.BackgroundUIDefault.Color,
                BackgroundTransparency = l_Theme_0.BackgroundUIDefault.Transparency,
                BorderSizePixel = 0
            }, {
                StickyActionBar = v4.createElement(v16, {
                    actionBarProps = v37.props.actionBarProps,
                    infoProps = {
                        icon = v37.props.thumbnailImageUrl,
                        title = v37.props.titleText
                    }
                })
            }) or nil,
            ContentScrollingFrame = v4.createElement(v14, {
                size = UDim2.fromScale(1, 1),
                canvasSizeY = UDim.new(1, 0),
                useAutomaticCanvasSize = true,
                scrollingEnabled = not v49,
                [v4.Change.CanvasPosition] = v37.canvasPositionChange,
                scrollingFrameRef = v37.scrollingFrameRef
            }, {
                Layout = v4.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Vertical
                }),
                Padding = v4.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, v45),
                    BackgroundTransparency = 1,
                    LayoutOrder = 1
                }),
                MainView = v4.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 0),
                    BackgroundTransparency = 1,
                    LayoutOrder = 2,
                    AutomaticSize = Enum.AutomaticSize.Y
                }, {
                    Layout = v4.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        FillDirection = Enum.FillDirection.Vertical
                    }),
                    HeaderContainer = v4.createElement("Frame", {
                        Size = UDim2.new(1, 0, 0, v41),
                        BackgroundTransparency = 1,
                        LayoutOrder = 1
                    }, {
                        DetailsPageHeader = v4.createElement(v19, {
                            thumbnailImageUrl = v37.props.thumbnailImageUrl,
                            thumbnailAspectRatio = v37.props.thumbnailAspectRatio,
                            thumbnailHeight = v40,
                            titleText = v37.props.titleText,
                            subTitleText = v37.props.subTitleText,
                            renderInfoContent = v37.props.renderInfoContent,
                            actionBarProps = if not v6.hideHeaderActionBarWhenStickyBarActive then v37.props.actionBarProps else if v37.state.showStickyActionTopBar or v49 then nil else v37.props.actionBarProps,
                            headerBarBackgroundHeight = v41,
                            sideMargin = v42,
                            deviceType = v37.props.deviceType
                        })
                    }),
                    BodyContainer = v4.createElement("Frame", {
                        Size = UDim2.fromScale(1, 0),
                        LayoutOrder = 2,
                        BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                        BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
                        BorderSizePixel = 0,
                        AutomaticSize = Enum.AutomaticSize.Y
                    }, {
                        BodyContainerSafeArea = v4.createElement("Frame", {
                            Size = UDim2.fromOffset(math.min(l_containerSize_0.x, l_containerSize_0.y * 1.7777777777777777), 0),
                            AnchorPoint = Vector2.new(0.5, 0),
                            Position = UDim2.fromScale(0.5, 0),
                            BackgroundTransparency = 1,
                            AutomaticSize = Enum.AutomaticSize.Y
                        }, {
                            DetailsPageBody = v4.createElement(v20, {
                                titleText = v37.props.titleText,
                                subTitleText = v37.props.subTitleText,
                                renderInfoContent = v37.props.renderInfoContent,
                                bodyClipsDescendants = v37.props.bodyClipsDescendants,
                                componentList = v37.props.componentList,
                                dualPanelBreakpoint = v43,
                                sideMargin = v42,
                                deviceType = v37.props.deviceType
                            })
                        })
                    })
                }),
                MobileActionViewPadding = v55 and v4.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 72),
                    BackgroundTransparency = 1,
                    LayoutOrder = 3
                })
            }),
            FullscreenFrame = not not v49 and v4.createElement("TextButton", {
                Size = UDim2.new(1, 0, 1, -v41),
                Position = UDim2.fromOffset(0, v41),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutoButtonColor = false,
                ClipsDescendants = true,
                ZIndex = 2
            }, {
                FullscreenContent = l_renderFullscreenContent_0()
            }) or nil,
            MobileActionBarFrame = v55 and v4.createElement("TextButton", {
                Text = "",
                AutoButtonColor = false,
                AnchorPoint = Vector2.new(0, 1),
                Position = UDim2.fromScale(0, 1),
                Size = UDim2.new(1, 0, 0, 72),
                BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
                BorderSizePixel = 0,
                ZIndex = 3
            }, {
                GradientBar = v4.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 24),
                    BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                    AnchorPoint = Vector2.new(0, 1),
                    BorderSizePixel = 0,
                    LayoutOrder = 1
                }, {
                    Gradient = v4.createElement("UIGradient", {
                        Rotation = 270,
                        Transparency = NumberSequence.new({
                            NumberSequenceKeypoint.new(0, 0.25),
                            NumberSequenceKeypoint.new(1, 0.9999)
                        })
                    })
                }),
                ActionBar = v4.createElement(v15, {
                    button = v37.props.actionBarProps.button,
                    icons = v37.props.actionBarProps.icons
                })
            })
        });
    end);
end;
v22.didMount = function(v56)
    if v56.containerRef.current then
        v56.onContainerSizeChange(v56.containerRef.current);
    end;
end;
v22.didUpdate = function(v57)
    local v58 = v18(v57.props.deviceType);
    if not (not (v57.scrolled == false) or not v57.scrollingFrameRef.current) then
        local v59 = if not v57.props.startingOffsetPosition then v58.startingOffsetPosition else v57.props.startingOffsetPosition;
        local v60 = 0;
        local l_props_1 = v57.props;
        v57.scrollingFrameRef.current.CanvasPosition = Vector2.new(0, (math.max(v60, (v57.state.backgroundHeight - if not l_props_1.headerBarBackgroundHeight then v18(l_props_1.deviceType).headerBarBackgroundHeight else l_props_1.headerBarBackgroundHeight) - v59)));
    end;
end;
return v22;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_1.Core.Style.withStyle);
local v4 = require(l_Parent_0.Text.StyledTextLabel);
local v5 = require(l_Parent_1.Core.Text.GetTextSize);
local v6 = require(l_Parent_2.Roact);
local v7 = require(l_Parent_2.t);
local v8 = v6.PureComponent:extend("DetailsPageTitleContent");
v8.validateProps = v7.strictInterface({
    titleText = v7.optional(v7.string),
    subTitleText = v7.optional(v7.string),
    renderInfoContent = v7.optional(v7.callback),
    layoutOrder = v7.optional(v7.number),
    verticalAlignment = v7.optional(v7.enum(Enum.VerticalAlignment))
});
v8.init = function(v9)
    v9.state = {
        containerWidth = nil
    };
    v9.onContainerSizeChange = function(v10)
        v9:setState(function(_, _)
            return {
                containerWidth = v10.AbsoluteSize.X
            };
        end);
    end;
    v9.getTextSize = function(v13, v14, v15)
        return v5(v13, v14.RelativeSize * v15.Font.BaseSize, v14.Font, (Vector2.new(10000, 10000)));
    end;
end;
v8.render = function(v16)
    return v3(function(v17)
        local l_Theme_0 = v17.Theme;
        local l_Font_0 = v17.Font;
        local v20 = UDim2.new(0, 0, 1, 0);
        if v16.props.titleText then
            local v21 = v16.getTextSize(v16.props.titleText, l_Font_0.Title, v17);
            local v22 = v21.Y * 1;
            v20 = if v16.state.containerWidth ~= nil and v16.state.containerWidth <= v21.X then UDim2.new(0, 0, 0, v22 * 2) else UDim2.new(0, 0, 0, v22);
        end;
        return v6.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            BackgroundTransparency = 1,
            [v6.Change.AbsoluteSize] = v16.onContainerSizeChange,
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = v16.props.layoutOrder
        }, {
            ListLayout = v6.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                VerticalAlignment = v16.props.verticalAlignment
            }),
            Title = not not v16.props.titleText and v6.createElement(v4, {
                text = v16.props.titleText,
                size = v20,
                automaticSize = Enum.AutomaticSize.X,
                fontStyle = l_Font_0.Title,
                colorStyle = l_Theme_0.TextEmphasis,
                textTruncate = Enum.TextTruncate.AtEnd,
                lineHeight = 1,
                fluidSizing = false,
                layoutOrder = 1,
                richText = false
            }) or nil,
            SubTitle = not not v16.props.subTitleText and v6.createElement(v4, {
                text = v16.props.subTitleText,
                fontStyle = l_Font_0.Header2,
                colorStyle = l_Theme_0.TextMuted,
                automaticSize = Enum.AutomaticSize.XY,
                layoutOrder = 2,
                richText = false
            }) or nil,
            CustomContentComponentFrame = not not v16.props.renderInfoContent and v6.createElement("Frame", {
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1,
                LayoutOrder = 3
            }, {
                CustomContent = v16.props.renderInfoContent()
            }) or nil
        });
    end);
end;
return v8;


return require(script.Parent.Parent.Parent.Parent.Parent.Parent.enumerate)("ContentPosition", {
    "Left",
    "Right"
});


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.ReactOtter);
return function(v3, v4, v5)
    local v6 = v4 ~= nil;
    local v7 = (not not v3 and v6) and 0 or 1;
    local v8, v9 = v1.useState(v7);
    local v10, v11 = v1.useState(false);
    local v12, v13 = v2.useAnimatedBinding(v7, (v1.useCallback(function()
        v11(false);
    end, {})));
    v1.useEffect(function()
        if v7 == v8 then
            return nil;
        else
            v9(v7);
            v11(true);
            v13(v2.spring(v7, v5));
            return nil;
        end;
    end, {
        v7,
        v8,
        v5
    });
    return (v10 or v3) and v6, v12;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Parent.Parent.Parent.Parent.React);
local _ = require(l_Parent_0.Types);
return function(v3, v4, v5, v6)
    local v12 = v1.useMemo(function()
        local v7 = {};
        for v8, v9 in v3, nil, nil do
            table.insert(v7, {
                index = v9.portraitLayoutOrder + 1,
                renderComponent = v9.renderComponent,
                showCornerGradient = v9.showCornerGradient,
                useSelectionBumper = v9.useSelectionBumper,
                key = v8
            });
        end;
        table.sort(v7, function(v10, v11)
            if v11.index then
                if v10.index then
                    return v10.index <= v11.index;
                else
                    return false;
                end;
            else
                return true;
            end;
        end);
        return v7;
    end, {
        v3
    });
    return (v1.useMemo(function()
        local v13 = table.clone(v12);
        table.insert(v13, 1, {
            index = 1,
            key = "Header",
            showCornerGradient = true,
            renderComponent = function()
                return v1.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, v5.Y - v6.Y * 2),
                    BackgroundTransparency = 1
                }, {
                    Layout = v1.createElement("UIListLayout", {
                        VerticalAlignment = Enum.VerticalAlignment.Bottom
                    }),
                    HeaderContainer = v4
                });
            end
        });
        return v13;
    end, {
        v12,
        v4,
        v5.Y,
        v6.Y
    }));
end;


local _ = require(script.Parent.Parent.Parent.Parent.Parent.React);
return {};


local l_DeviceType_0 = require(script.Parent.Parent.Parent.Style.Constants).DeviceType;
local v1 = {
    [l_DeviceType_0.Desktop] = {
        startingOffsetPosition = 500,
        thumbnailHeight = 200,
        dualPanelBreakpoint = 1280,
        headerBarBackgroundHeight = 80,
        sideMargin = 48
    },
    [l_DeviceType_0.Tablet] = {
        startingOffsetPosition = 200,
        thumbnailHeight = 150,
        dualPanelBreakpoint = math.huge,
        headerBarBackgroundHeight = 80,
        sideMargin = 48
    },
    [l_DeviceType_0.Phone] = {
        startingOffsetPosition = 250,
        thumbnailHeight = 100,
        dualPanelBreakpoint = math.huge,
        headerBarBackgroundHeight = 24,
        sideMargin = 24
    },
    [l_DeviceType_0.Console] = {
        startingOffsetPosition = 500,
        thumbnailHeight = 200,
        dualPanelBreakpoint = 1280,
        headerBarBackgroundHeight = 80,
        sideMargin = 48
    },
    [l_DeviceType_0.VR] = {
        startingOffsetPosition = 500,
        thumbnailHeight = 200,
        dualPanelBreakpoint = 1280,
        headerBarBackgroundHeight = 80,
        sideMargin = 48
    }
};
return function(v2)
    local v3 = v1[v2];
    if v3 == nil then
        return v1[l_DeviceType_0.Desktop];
    else
        return v3;
    end;
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Enum.ContentPosition);
local v3 = require(l_Parent_1.t);
return v3.map(v3.string, v3.strictInterface({
    portraitLayoutOrder = v3.integer,
    landscapeLayoutOrder = v3.integer,
    landscapePosition = v2.isEnumValue,
    renderComponent = v3.callback,
    showCornerGradient = v3.optional(v3.boolean),
    useSelectionBumper = v3.optional(v3.boolean)
}));


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.Cryo);
local v5 = require(l_Parent_2.RoactGamepad);
local v6 = require(l_Parent_2.t);
local v7 = require(l_Parent_1.Core.Style.withStyle);
local v8 = require(l_Parent_1.Utility.SpringAnimatedItem);
local v9 = require(l_Parent_1.Core.ImageSet.ImageSetComponent);
local v10 = require(l_Parent_1.App.ImageSet.Images);
local v11 = require(l_Parent_1.Core.Text.GenericTextLabel.GenericTextLabel);
local v12 = require(l_Parent_1.Core.Text.ExpandableText.ExpandableTextUtils);
local v13 = require(l_Parent_0.SelectionImage.CursorKind);
local v14 = require(l_Parent_0.SelectionImage.withSelectionCursorProvider);
local v15 = require(l_Parent_0.SelectionCursor.useCursorByType);
local v16 = require(l_Parent_0.SelectionCursor.CursorType);
local v17 = require(l_Parent_1.UIBloxConfig);
local v18 = 30;
local v19 = 5;
local v20 = UDim2.new(0, 36, 0, 36);
local v21 = UDim2.new(1, 0, 0, 36);
local v22 = v10["gradient/gradient_0_100"];
local v23 = v10["truncate_arrows/actions_truncationExpand"];
local v24 = v10["truncate_arrows/actions_truncationCollapse"];
local v25 = {
    dampingRatio = 1,
    frequency = 3.5
};
local v26 = {
    dampingRatio = 1,
    frequency = 3.5
};
local v27 = v8.wrap(v9.Label);
local v28 = v3.PureComponent:extend("ExpandableTextArea");
v28.validateProps = v6.strictInterface({
    Text = v6.optional(v6.string),
    Position = v6.optional(v6.UDim2),
    compactNumberOfLines = v6.optional(v6.number),
    LayoutOrder = v6.optional(v6.number),
    width = v6.optional(v6.UDim),
    padding = v6.optional(v6.Vector2),
    onClick = v6.optional(v6.callback),
    NextSelectionUp = v6.optional(v6.table),
    NextSelectionDown = v6.optional(v6.table),
    NextSelectionLeft = v6.optional(v6.table),
    NextSelectionRight = v6.optional(v6.table),
    frameRef = v6.optional(v6.table),
    selectionCursor = if not v17.migrateToNewSelectionCursor then nil else v6.optional(v6.any)
});
v28.defaultProps = {
    compactNumberOfLines = 2,
    Text = ""
};
v28.init = function(v29)
    v29.state = {
        isExpanded = false,
        frameWidth = 0
    };
    v29.onClick = function()
        v29:setState(function(v30)
            return {
                isExpanded = not v30.isExpanded
            };
        end);
        if v29.props.onClick then
            v29.props.onClick(v29.state.isExpanded);
        end;
    end;
    v29.ref = v3.createRef();
    v29.layoutRef = v3.createRef();
end;
v28.getRef = function(v31)
    return v31.props.frameRef or v31.ref;
end;
v28.applyFit = function(v32, v33)
    local v34 = v32:getRef();
    if v34.current then
        local l_current_0 = v34.current;
        local v36 = (v33 + v18) + v19;
        local l_width_0 = v32.props.width;
        if not l_width_0 then
            l_current_0.Size = UDim2.new(1, 0, 0, v36);
            return ;
        else
            l_current_0.Size = UDim2.new(l_width_0.Scale, l_width_0.Offset, 0, v36);
            return ;
        end;
    else
        return ;
    end;
end;
v28.didMount = function(v38)
    v38.isMounted = true;
    local l_current_1 = v38.layoutRef.current;
    if l_current_1 then
        v38:applyFit(l_current_1.AbsoluteContentSize.y);
    end;
end;
v28.willUnmount = function(v40)
    v40.isMounted = false;
end;
v28.render = function(v41)
    local l_Text_0 = v41.props.Text;
    local l_Position_0 = v41.props.Position;
    local l_compactNumberOfLines_0 = v41.props.compactNumberOfLines;
    local l_LayoutOrder_0 = v41.props.LayoutOrder;
    local l_width_1 = v41.props.width;
    local l_padding_0 = v41.props.padding;
    local v48 = v41:getRef();
    v18 = not not l_padding_0 and l_padding_0.Y or 30;
    v19 = not not l_padding_0 and l_padding_0.X or 5;
    return v7(function(v49)
        return v14(function(v50)
            local l_Theme_0 = v49.Theme;
            local l_Font_0 = v49.Font;
            local v53 = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize;
            local v54, v55 = v12.getExpandableTextHeights(l_Font_0, v41.state.frameWidth, l_Text_0, l_compactNumberOfLines_0);
            local v56 = UDim2.new(1, 0, 0, v55 + v19);
            local v57 = UDim2.new(1, 0, 0, v54 + v19);
            local v58 = v55 < v54;
            local v59 = not v58 or v41.state.isExpanded;
            local v60 = not not v59 and v57 or v56;
            return v3.createElement(not not v58 and v5.Focusable.Frame or "Frame", {
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                LayoutOrder = l_LayoutOrder_0,
                Position = l_Position_0,
                Size = not not l_width_1 and UDim2.new(l_width_1.Scale, l_width_1.Offset, 0, 0) or UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                SelectionImageObject = if not v17.migrateToNewSelectionCursor then v50(v13.RoundedRect) else v41.props.selectionCursor,
                [v3.Ref] = v48,
                [v3.Change.AbsoluteSize] = function(v61)
                    if v41.state.frameWidth ~= v61.AbsoluteSize.X then
                        v41:setState({
                            frameWidth = v61.AbsoluteSize.X
                        });
                    end;
                end,
                NextSelectionUp = v41.props.NextSelectionUp,
                NextSelectionDown = v41.props.NextSelectionDown,
                NextSelectionLeft = v41.props.NextSelectionLeft,
                NextSelectionRight = v41.props.NextSelectionRight,
                inputBindings = not not v58 and {
                    Activated = v5.Input.onBegin(Enum.KeyCode.ButtonA, v41.onClick)
                } or nil
            }, {
                Layout = v3.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Vertical,
                    Padding = UDim.new(0, 10),
                    [v3.Change.AbsoluteContentSize] = function(v62)
                        v41:applyFit(v62.AbsoluteContentSize.y);
                    end,
                    [v3.Ref] = v41.layoutRef
                }),
                UIPadding = v3.createElement("UIPadding", {
                    PaddingTop = UDim.new(0, v18)
                }),
                ExpandableContainer = v3.createElement(v8.AnimatedFrame, {
                    animatedValues = {
                        height = v60.Y.Offset
                    },
                    mapValuesToProps = function(v63)
                        return {
                            Size = UDim2.new(1, 0, v60.Y.Scale, v63.height)
                        };
                    end,
                    regularProps = {
                        BackgroundTransparency = 1,
                        BorderSizePixel = 0,
                        ClipsDescendants = true,
                        Size = v60,
                        LayoutOrder = 0
                    },
                    springOptions = v25
                }, {
                    DescriptionText = v3.createElement(v11, {
                        colorStyle = l_Theme_0.TextDefault,
                        fontStyle = l_Font_0.Body,
                        Size = v60,
                        Text = l_Text_0,
                        TextSize = v53,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextWrapped = true,
                        BackgroundTransparency = 1
                    }),
                    Gradient = v58 and v3.createElement(v27, {
                        animatedValues = {
                            height = not v59 and 30 or 0
                        },
                        mapValuesToProps = function(v64)
                            return {
                                Size = UDim2.new(1, 0, 0, v64.height)
                            };
                        end,
                        regularProps = {
                            Size = UDim2.new(1, 0, 0, 30),
                            Position = UDim2.new(0, 0, 1, 0),
                            AnchorPoint = Vector2.new(0, 1),
                            BackgroundTransparency = 1,
                            Image = v22,
                            ImageColor3 = l_Theme_0.BackgroundDefault.Color
                        },
                        springOptions = v26
                    })
                }),
                ButtonContainer = v58 and v3.createElement("Frame", {
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 10),
                    LayoutOrder = 1
                }, {
                    PressableButton = v3.createElement("TextButton", {
                        Position = UDim2.new(0, 0, 0, -24),
                        BackgroundTransparency = 1,
                        BorderSizePixel = 0,
                        Size = v21,
                        Text = "",
                        [v3.Event.Activated] = v41.onClick
                    }, {
                        DownArrow = v3.createElement(v9.Label, {
                            AnchorPoint = Vector2.new(0.5, 0),
                            BackgroundTransparency = 1,
                            BorderSizePixel = 0,
                            Position = UDim2.new(0.5, 0, 0, 0),
                            Image = v60 == v57 and v24 or v23,
                            ImageColor3 = l_Theme_0.IconEmphasis.Color,
                            ImageTransparency = l_Theme_0.IconEmphasis.Transparency,
                            Size = v20
                        })
                    })
                })
            });
        end);
    end);
end;
return v3.forwardRef(function(v65, v66)
    local v67 = v15(v16.RoundedRect);
    if v17.migrateToNewSelectionCursor then
        v65 = v4.Dictionary.join({
            selectionCursor = v67
        }, v65);
    end;
    return v3.createElement(v28, v4.Dictionary.join(v65, {
        frameRef = v66
    }));
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.Core.Text.GenericTextLabel.GenericTextLabel);
local v3 = require(l_Parent_0.Core.Style.Validator.validateFontInfo);
local v4 = require(l_Parent_0.Core.Style.Validator.validateColorInfo);
local v5 = require(l_Parent_0.Core.Style.Validator.validateColorToken);
local v6 = require(l_Parent_0.Core.Style.Validator.validateTypographyInfo);
local v7 = require(l_Parent_1.Roact);
local v8 = require(l_Parent_1.t);
local v9 = v7.PureComponent:extend("StyledTextLabel");
v9.validateProps = v8.strictInterface({
    text = v8.string,
    fontStyle = v8.union(v3, v6),
    colorStyle = v8.union(v4, v5),
    textTruncate = v8.optional(v8.EnumItem),
    textWrapped = v8.optional(v8.boolean),
    textXAlignment = v8.optional(v8.EnumItem),
    textYAlignment = v8.optional(v8.EnumItem),
    size = v8.optional(v8.UDim2),
    maxSize = v8.optional(v8.Vector2),
    richText = v8.optional(v8.boolean),
    layoutOrder = v8.optional(v8.number),
    fluidSizing = v8.optional(v8.boolean),
    automaticSize = v8.optional(v8.EnumItem),
    lineHeight = v8.optional(v8.number),
    clipsDescendants = v8.optional(v8.boolean),
    onAbsoluteSizeChange = v8.optional(v8.callback)
});
v9.defaultProps = {
    textXAlignment = Enum.TextXAlignment.Left,
    textYAlignment = Enum.TextYAlignment.Center,
    richText = true,
    fluidSizing = true,
    automaticSize = Enum.AutomaticSize.None,
    lineHeight = 1.4,
    clipsDescendants = false
};
v9.render = function(v10)
    return v7.createElement(v2, {
        maxSize = v10.props.maxSize,
        fontStyle = v10.props.fontStyle,
        colorStyle = v10.props.colorStyle,
        fluidSizing = v10.props.fluidSizing,
        Size = v10.props.size,
        Text = v10.props.text,
        TextXAlignment = v10.props.textXAlignment,
        TextYAlignment = v10.props.textYAlignment,
        TextTruncate = v10.props.textTruncate,
        TextWrapped = v10.props.textWrapped,
        LayoutOrder = v10.props.layoutOrder,
        RichText = v10.props.richText,
        AutomaticSize = v10.props.automaticSize,
        LineHeight = v10.props.lineHeight,
        ClipsDescendants = v10.props.clipsDescendants,
        [v7.Change.AbsoluteSize] = v10.props.onAbsoluteSizeChange
    });
end;
return v9;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.Core.Style.withStyle);
local v5 = v2.PureComponent:extend("TileBanner");
v5.validateProps = v3.strictInterface({
    bannerText = v3.string
});
v5.render = function(v6)
    local l_bannerText_0 = v6.props.bannerText;
    return v4(function(v8)
        local l_Font_0 = v8.Font;
        local l_Theme_0 = v8.Theme;
        return v2.createElement("Frame", {
            BackgroundColor3 = l_Theme_0.SystemPrimaryDefault.Color,
            BackgroundTransparency = l_Theme_0.SystemPrimaryDefault.Transparency,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 0, 6 + l_Font_0.CaptionBody.RelativeSize * l_Font_0.BaseSize)
        }, {
            TextLabel = v2.createElement("TextLabel", {
                BackgroundTransparency = 1,
                Font = l_Font_0.CaptionBody.Font,
                TextSize = l_Font_0.CaptionBody.RelativeSize * l_Font_0.BaseSize,
                Text = l_bannerText_0,
                TextColor3 = l_Theme_0.SystemPrimaryContent.Color,
                TextTransparency = l_Theme_0.SystemPrimaryContent.Transparency,
                TextTruncate = Enum.TextTruncate.AtEnd,
                TextXAlignment = Enum.TextXAlignment.Center,
                Size = UDim2.new(1, 0, 1, 0)
            })
        });
    end);
end;
return v5;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.Core.Style.withStyle);
local v5 = require(l_Parent_0.App.ImageSet.Images);
local v6 = require(l_Parent_0.App.Loading.ShimmerPanel);
local v7 = require(l_Parent_0.Core.Text.ImageTextLabel.ImageTextLabel);
local v8 = require(l_Parent_0.Core.Text.EmojiTextLabel.EmojiTextLabel);
local v9 = require(l_Parent_0.Core.Emoji.Enum.Emoji);
local v10 = require(l_Parent_0.Core.Style.Validator.validateFontInfo);
local v11 = require(l_Parent_0.Core.Style.Validator.validateTypographyInfo);
local v12 = v2.PureComponent:extend("ItemTileName");
v12.validateProps = v3.strictInterface({
    LayoutOrder = v3.optional(v3.integer),
    maxHeight = v3.intersection(v3.number, v3.numberMin(0)),
    maxWidth = v3.intersection(v3.number, v3.numberMin(0)),
    name = v3.optional(v3.string),
    titleIcon = v3.optional(v3.table),
    nameTextColor = v3.optional(v3.Color3),
    hasVerifiedBadge = v3.optional(v3.boolean),
    useMaxHeight = v3.optional(v3.boolean),
    fluidSizing = v3.optional(v3.boolean),
    titleFontStyle = v3.optional(v3.union(v10, v11))
});
v12.render = function(v13)
    local l_LayoutOrder_0 = v13.props.LayoutOrder;
    local l_maxHeight_0 = v13.props.maxHeight;
    local l_maxWidth_0 = v13.props.maxWidth;
    local l_name_0 = v13.props.name;
    local l_titleIcon_0 = v13.props.titleIcon;
    local l_useMaxHeight_0 = v13.props.useMaxHeight;
    local l_fluidSizing_0 = v13.props.fluidSizing;
    local l_hasVerifiedBadge_0 = v13.props.hasVerifiedBadge;
    return v4(function(v22)
        local l_Theme_0 = v22.Theme;
        local l_Font_0 = v22.Font;
        local v25 = v13.props.titleFontStyle or l_Font_0.Header2;
        local v26 = if not v25.RelativeSize then v25.FontSize else l_Font_0.BaseSize * v25.RelativeSize;
        if l_name_0 ~= nil then
            local v27 = Vector2.new(l_maxWidth_0, l_maxHeight_0);
            if not l_hasVerifiedBadge_0 then
                local v28 = not not l_titleIcon_0 and l_titleIcon_0.ImageRectSize / v5.ImagesResolutionScale or Vector2.new(0, 0);
                return v2.createElement(v7, {
                    imageProps = not not l_titleIcon_0 and {
                        BackgroundTransparency = 1,
                        Image = l_titleIcon_0,
                        ImageColor3 = l_Theme_0.IconEmphasis.Color,
                        ImageTransparency = l_Theme_0.IconEmphasis.Transparency,
                        Size = UDim2.new(0, v28.X, 0, v28.Y),
                        AnchorPoint = Vector2.new(0, 0),
                        Position = UDim2.new(0, 0, 0, 0)
                    } or nil,
                    genericTextLabelProps = {
                        fluidSizing = l_fluidSizing_0,
                        fontStyle = v25,
                        colorStyle = if not v13.props.nameTextColor then l_Theme_0.TextEmphasis else {
                            Color = v13.props.nameTextColor,
                            Transparency = 0
                        },
                        Text = l_name_0,
                        TextTruncate = Enum.TextTruncate.AtEnd
                    },
                    frameProps = {
                        BackgroundTransparency = 1,
                        LayoutOrder = l_LayoutOrder_0
                    },
                    maxSize = v27,
                    padding = 4,
                    useMaxHeight = l_useMaxHeight_0
                });
            else
                return v2.createElement(v8, {
                    maxSize = v27,
                    fluidSizing = l_fluidSizing_0,
                    emoji = v9.Verified,
                    fontStyle = v25,
                    colorStyle = l_Theme_0.TextEmphasis,
                    Text = l_name_0,
                    TextTruncate = Enum.TextTruncate.AtEnd,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextYAlignment = Enum.TextYAlignment.Top,
                    LayoutOrder = l_LayoutOrder_0
                });
            end;
        else
            return v2.createElement("Frame", {
                BackgroundTransparency = 1,
                LayoutOrder = l_LayoutOrder_0,
                Size = UDim2.new(0, l_maxWidth_0, 0, l_maxHeight_0)
            }, {
                FirstLine = v2.createElement(v6, {
                    Size = UDim2.new(1, 0, 0, v26)
                }),
                SecondLine = v2.createElement(v6, {
                    Position = UDim2.new(0, 0, 0, v26 + 4),
                    Size = UDim2.new(0.4, 0, 0, v26)
                })
            });
        end;
    end);
end;
return v12;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.Core.Style.withStyle);
local v5 = require(l_Parent_0.App.ImageSet.Images);
local v6 = require(l_Parent_0.Core.ImageSet.ImageSetComponent);
local v7 = v2.PureComponent:extend("TileSelectionOverlay");
v7.validateProps = v3.strictInterface({
    ZIndex = v3.optional(v3.integer),
    cornerRadius = v3.optional(v3.UDim)
});
v7.defaultProps = {
    cornerRadius = UDim.new(0, 0)
};
v7.render = function(v8)
    local l_ZIndex_0 = v8.props.ZIndex;
    local l_cornerRadius_0 = v8.props.cornerRadius;
    local v11 = v5["icons/actions/selectOn"];
    local v12 = v11.ImageRectSize / v5.ImagesResolutionScale;
    return v4(function(v13)
        local l_Theme_0 = v13.Theme;
        return v2.createElement("Frame", {
            BackgroundColor3 = l_Theme_0.Overlay.Color,
            BackgroundTransparency = l_Theme_0.Overlay.Transparency,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 1, 0),
            ZIndex = l_ZIndex_0
        }, {
            SelectionImage = v2.createElement(v6.Label, {
                AnchorPoint = Vector2.new(1, 0),
                BackgroundTransparency = 1,
                Image = v11,
                Position = UDim2.new(1, -6, 0, 6),
                Size = UDim2.new(0, v12.X, 0, v12.Y)
            }),
            UICorner = l_cornerRadius_0 ~= UDim.new(0, 0) and v2.createElement("UICorner", {
                CornerRadius = l_cornerRadius_0
            }) or nil
        });
    end);
end;
return v7;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.t);
local v5 = require(l_Parent_1.Core.Style.withStyle);
local v6 = require(l_Parent_1.Core.ImageSet.ImageSetComponent);
local v7 = require(l_Parent_1.App.Loading.LoadableImage);
local v8 = require(l_Parent_0.TileSelectionOverlay);
local v9 = require(l_Parent_0.TileUnselectedOverlay);
local v10 = v3.PureComponent:extend("TileThumbnail");
v10.validateProps = v4.strictInterface({
    hasRoundedCorners = v4.optional(v4.boolean),
    cornerRadius = v4.optional(v4.UDim),
    Image = v4.optional(v4.union(v4.string, v4.table)),
    imageSize = v4.optional(v4.UDim2),
    imageColor = v4.optional(v4.Color3),
    imageTransparency = v4.optional(v4.number),
    isSelected = v4.optional(v4.boolean),
    multiSelect = v4.optional(v4.boolean),
    overlayComponents = v4.optional(v4.table),
    backgroundImage = v4.optional(v4.union(v4.string, v4.table)),
    scaleType = v4.optional(v4.enum(Enum.ScaleType))
});
v10.defaultProps = {
    imageSize = UDim2.fromScale(1, 1),
    imageTransparency = 0,
    cornerRadius = UDim.new(0, 10),
    scaleType = Enum.ScaleType.Stretch
};
v10.render = function(v11)
    local l_hasRoundedCorners_0 = v11.props.hasRoundedCorners;
    local l_Image_0 = v11.props.Image;
    local l_imageSize_0 = v11.props.imageSize;
    local l_imageColor_0 = v11.props.imageColor;
    local l_imageTransparency_0 = v11.props.imageTransparency;
    local l_isSelected_0 = v11.props.isSelected;
    local l_multiSelect_0 = v11.props.multiSelect;
    local l_overlayComponents_0 = v11.props.overlayComponents;
    local l_backgroundImage_0 = v11.props.backgroundImage;
    local l_cornerRadius_0 = v11.props.cornerRadius;
    local l_scaleType_0 = v11.props.scaleType;
    local v23 = typeof(l_Image_0) == "table";
    return v5(function(v24)
        local l_Theme_0 = v24.Theme;
        return v3.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.fromScale(1, 1)
        }, {
            ImageContainer = v3.createElement("Frame", {
                BackgroundColor3 = l_Theme_0.PlaceHolder.Color,
                BackgroundTransparency = l_Theme_0.PlaceHolder.Transparency,
                BorderSizePixel = 0,
                Size = UDim2.fromScale(1, 1),
                ZIndex = 0
            }, {
                BackgroundImage = v3.createElement(v6.Label, {
                    Image = l_backgroundImage_0,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Position = UDim2.fromScale(0.5, 0.5),
                    Size = UDim2.fromScale(1, 1),
                    ZIndex = 0
                }, {
                    ImageSetImage = not not v23 and v3.createElement(v6.Label, {
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        BackgroundTransparency = 1,
                        Image = l_Image_0,
                        ImageColor3 = l_imageColor_0 or l_Theme_0.UIEmphasis.Color,
                        ImageTransparency = l_imageTransparency_0,
                        Position = UDim2.fromScale(0.5, 0.5),
                        Size = l_imageSize_0,
                        ScaleType = l_scaleType_0
                    }, {
                        UICorner = not not l_hasRoundedCorners_0 and v3.createElement("UICorner", {
                            CornerRadius = l_cornerRadius_0
                        }) or nil
                    }) or v3.createElement(v7, {
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        BackgroundColor3 = l_Theme_0.PlaceHolder.Color,
                        BackgroundTransparency = 1,
                        Image = l_Image_0,
                        Position = UDim2.fromScale(0.5, 0.5),
                        Size = l_imageSize_0,
                        cornerRadius = not not l_hasRoundedCorners_0 and l_cornerRadius_0 or nil,
                        showFailedStateWhenLoadingFailed = true,
                        useShimmerAnimationWhileLoading = true,
                        ScaleType = l_scaleType_0
                    }),
                    UICorner = not not l_hasRoundedCorners_0 and v3.createElement("UICorner", {
                        CornerRadius = l_cornerRadius_0
                    }) or nil
                }),
                UICorner = not not l_hasRoundedCorners_0 and v3.createElement("UICorner", {
                    CornerRadius = l_cornerRadius_0
                }) or nil
            }),
            ComponentsFrame = l_overlayComponents_0 and v3.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 1, 0),
                ZIndex = 1
            }, l_overlayComponents_0),
            SelectionOverlay = l_isSelected_0 and v3.createElement(v8, {
                ZIndex = 2,
                cornerRadius = not not l_hasRoundedCorners_0 and l_cornerRadius_0 or nil
            }),
            UnselectedOverlay = (l_multiSelect_0 and not l_isSelected_0) and v3.createElement(v9, {
                ZIndex = 2
            })
        });
    end);
end;
return v10;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.App.ImageSet.Images);
local v5 = require(l_Parent_0.Core.ImageSet.ImageSetComponent);
local v6 = v2.PureComponent:extend("TileUnselectedOverlay");
local v7 = v4["squircles/hollow"];
v6.validateProps = v3.strictInterface({
    ZIndex = v3.optional(v3.integer)
});
v6.render = function(v8)
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        Size = UDim2.new(1, 0, 1, 0),
        ZIndex = v8.props.ZIndex
    }, {
        SelectionImage = v2.createElement(v5.Label, {
            AnchorPoint = Vector2.new(1, 0),
            BackgroundTransparency = 1,
            Image = v7,
            Position = UDim2.new(1, -12, 0, 12),
            Size = UDim2.fromOffset(24, 24)
        })
    });
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Parent.enumerate);
local v2 = require(l_Parent_0.Utility.strict);
local _ = nil;
return v2({
    ItemIconType = v1("ItemIconType", {
        "AnimationBundle",
        "Bundle",
        "DynamicHead"
    }),
    StatusStyle = v1("StatusStyle", {
        "Alert",
        "Info"
    }),
    Restriction = v1("Restriction", {
        "Limited",
        "LimitedUnique",
        "Collectible"
    })
}, script.Name);


return require(script.Parent.Parent.Parent.Parent.Parent.enumerate)("TileMenuState", {
    "Friends",
    "More"
});


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.Cryo);
local v3 = {
    size = UDim2.fromScale(1, 1)
};
return function(v4)
    local v5 = v2.Dictionary.join(v3, v4);
    return v1.createElement("Frame", {
        Size = v5.size,
        Position = v5.position,
        AnchorPoint = v5.anchorPoint,
        LayoutOrder = v5.layoutOrder,
        BorderSizePixel = 0,
        BackgroundTransparency = 1
    }, v5.children);
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local v2 = require(l_Parent_1.Parent.Parent.React);
local v3 = require(l_Parent_1.Indicator.StatGroup);
local v4 = require(l_Parent_0.FooterFrame);
return function(v5)
    return v2.createElement(v4, v5, {
        Stats = v2.createElement(v3, {
            ratingText = v5.ratingText,
            playingText = v5.playingText
        })
    });
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Parent.React);
local v4 = require(l_Parent_2.Core.Style.useStyle);
local _ = require(l_Parent_1.Style.StyleTypes);
local _ = require(l_Parent_1.Style.Fonts);
local v7 = require(l_Parent_0.FooterFrame);
local function v11(v8, v9)
    local v10 = v8 or {};
    return {
        cornerRadius = v10.cornerRadius,
        textColor = v10.textColor or v9.Theme.TextMuted,
        backgroundColor = v10.backgroundColor,
        textXAlignment = v10.textXAlignment or Enum.TextXAlignment.Left,
        textFont = v10.textFont or v9.Font.CaptionBody
    };
end;
return function(v12)
    local v13 = v4();
    local l_Font_0 = v13.Font;
    local v15 = v11(v12.styleProps, v13);
    local l_cornerRadius_0 = v15.cornerRadius;
    local l_textColor_0 = v15.textColor;
    local l_backgroundColor_0 = v15.backgroundColor;
    local l_textXAlignment_0 = v15.textXAlignment;
    local l_textFont_0 = v15.textFont;
    return v3.createElement(v7, v12, {
        Text = v3.createElement("TextLabel", {
            Size = UDim2.fromScale(1, 1),
            BackgroundColor3 = if not l_backgroundColor_0 then nil else l_backgroundColor_0.Color,
            BackgroundTransparency = not l_backgroundColor_0 and 1 or l_backgroundColor_0.Transparency,
            BorderSizePixel = 0,
            Text = v12.text,
            TextXAlignment = l_textXAlignment_0,
            TextYAlignment = Enum.TextYAlignment.Center,
            Font = l_textFont_0.Font,
            TextSize = l_Font_0.BaseSize * l_textFont_0.RelativeSize,
            TextColor3 = l_textColor_0.Color,
            TextTransparency = l_textColor_0.Transparency
        }, {
            UICorner = if not l_cornerRadius_0 then nil else v3.createElement("UICorner", {
                CornerRadius = UDim.new(0, l_cornerRadius_0)
            })
        })
    });
end;