Panel gui
Key RequiredUniversal

Panel gui

Universal Scriptysfr_666ysfr_666 1.6K views 95 executesUpdated Oct 12, 2025
2.5/ 5(2 votes)
1150% Positive
Lua Script•568 lines (19872 chars)
-- HD Admin Style Panel GUI with Login
-- Client-Side Executor Script

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

-- ScreenGui Oluştur
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "AdminPanelGUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")

-- ============================================
-- LOGIN PANEL
-- ============================================

local LoginFrame = Instance.new("Frame")
LoginFrame.Name = "LoginFrame"
LoginFrame.Size = UDim2.new(0, 350, 0, 250)
LoginFrame.Position = UDim2.new(0.5, -175, 0.5, -125)
LoginFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
LoginFrame.BorderSizePixel = 0
LoginFrame.Parent = ScreenGui

local LoginCorner = Instance.new("UICorner")
LoginCorner.CornerRadius = UDim.new(0, 15)
LoginCorner.Parent = LoginFrame

-- Login Başlık
local LoginTitle = Instance.new("Frame")
LoginTitle.Size = UDim2.new(1, 0, 0, 60)
LoginTitle.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
LoginTitle.BorderSizePixel = 0
LoginTitle.Parent = LoginFrame

local LoginTitleCorner = Instance.new("UICorner")
LoginTitleCorner.CornerRadius = UDim.new(0, 15)
LoginTitleCorner.Parent = LoginTitle

local LoginTitleFix = Instance.new("Frame")
LoginTitleFix.Size = UDim2.new(1, 0, 0, 30)
LoginTitleFix.Position = UDim2.new(0, 0, 1, -30)
LoginTitleFix.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
LoginTitleFix.BorderSizePixel = 0
LoginTitleFix.Parent = LoginTitle

local LoginTitleText = Instance.new("TextLabel")
LoginTitleText.Size = UDim2.new(1, 0, 1, 0)
LoginTitleText.BackgroundTransparency = 1
LoginTitleText.Text = "🔐 ADMIN LOGIN"
LoginTitleText.TextColor3 = Color3.fromRGB(100, 200, 255)
LoginTitleText.TextSize = 22
LoginTitleText.Font = Enum.Font.GothamBold
LoginTitleText.Parent = LoginTitle

-- Kullanıcı Adı Label
local UsernameLabel = Instance.new("TextLabel")
UsernameLabel.Size = UDim2.new(0, 300, 0, 25)
UsernameLabel.Position = UDim2.new(0.5, -150, 0, 80)
UsernameLabel.BackgroundTransparency = 1
UsernameLabel.Text = "Kullanıcı Adınızı Girin:"
UsernameLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
UsernameLabel.TextSize = 14
UsernameLabel.Font = Enum.Font.Gotham
UsernameLabel.TextXAlignment = Enum.TextXAlignment.Left
UsernameLabel.Parent = LoginFrame

-- Kullanıcı Adı TextBox
local UsernameBox = Instance.new("TextBox")
UsernameBox.Size = UDim2.new(0, 300, 0, 40)
UsernameBox.Position = UDim2.new(0.5, -150, 0, 110)
UsernameBox.BackgroundColor3 = Color3.fromRGB(40, 40, 55)
UsernameBox.BorderSizePixel = 0
UsernameBox.Text = ""
UsernameBox.PlaceholderText = LocalPlayer.Name
UsernameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150)
UsernameBox.TextSize = 16
UsernameBox.Font = Enum.Font.Gotham
UsernameBox.Parent = LoginFrame

local UsernameCorner = Instance.new("UICorner")
UsernameCorner.CornerRadius = UDim.new(0, 8)
UsernameCorner.Parent = UsernameBox

-- Login Butonu
local LoginButton = Instance.new("TextButton")
LoginButton.Size = UDim2.new(0, 300, 0, 45)
LoginButton.Position = UDim2.new(0.5, -150, 0, 170)
LoginButton.BackgroundColor3 = Color3.fromRGB(50, 150, 255)
LoginButton.BorderSizePixel = 0
LoginButton.Text = "GİRİŞ YAP"
LoginButton.TextColor3 = Color3.fromRGB(255, 255, 255)
LoginButton.TextSize = 18
LoginButton.Font = Enum.Font.GothamBold
LoginButton.Parent = LoginFrame

local LoginBtnCorner = Instance.new("UICorner")
LoginBtnCorner.CornerRadius = UDim.new(0, 10)
LoginBtnCorner.Parent = LoginButton

-- ============================================
-- ADMIN PANEL (Gizli başlangıçta)
-- ============================================

local AdminPanel = Instance.new("Frame")
AdminPanel.Name = "AdminPanel"
AdminPanel.Size = UDim2.new(0, 400, 0, 500)
AdminPanel.Position = UDim2.new(0.5, -200, 0.5, -250)
AdminPanel.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
AdminPanel.BorderSizePixel = 0
AdminPanel.Visible = false
AdminPanel.Active = true
AdminPanel.Parent = ScreenGui

local PanelCorner = Instance.new("UICorner")
PanelCorner.CornerRadius = UDim.new(0, 12)
PanelCorner.Parent = AdminPanel

-- Panel Başlık
local PanelTitle = Instance.new("Frame")
PanelTitle.Size = UDim2.new(1, 0, 0, 50)
PanelTitle.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
PanelTitle.BorderSizePixel = 0
PanelTitle.Parent = AdminPanel

local PanelTitleCorner = Instance.new("UICorner")
PanelTitleCorner.CornerRadius = UDim.new(0, 12)
PanelTitleCorner.Parent = PanelTitle

local PanelTitleFix = Instance.new("Frame")
PanelTitleFix.Size = UDim2.new(1, 0, 0, 25)
PanelTitleFix.Position = UDim2.new(0, 0, 1, -25)
PanelTitleFix.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
PanelTitleFix.BorderSizePixel = 0
PanelTitleFix.Parent = PanelTitle

local TitleText = Instance.new("TextLabel")
TitleText.Size = UDim2.new(1, -100, 1, 0)
TitleText.Position = UDim2.new(0, 15, 0, 0)
TitleText.BackgroundTransparency = 1
TitleText.Text = "⚡ HD ADMIN PANEL"
TitleText.TextColor3 = Color3.fromRGB(100, 200, 255)
TitleText.TextSize = 18
TitleText.Font = Enum.Font.GothamBold
TitleText.TextXAlignment = Enum.TextXAlignment.Left
TitleText.Parent = PanelTitle

-- Kullanıcı adı gösterimi
local UserDisplay = Instance.new("TextLabel")
UserDisplay.Size = UDim2.new(1, -20, 0, 20)
UserDisplay.Position = UDim2.new(0, 10, 0, 55)
UserDisplay.BackgroundTransparency = 1
UserDisplay.Text = "Kullanıcı: " .. LocalPlayer.Name
UserDisplay.TextColor3 = Color3.fromRGB(150, 150, 150)
UserDisplay.TextSize = 12
UserDisplay.Font = Enum.Font.Gotham
UserDisplay.TextXAlignment = Enum.TextXAlignment.Left
UserDisplay.Parent = AdminPanel

-- Kapat Butonu kaldırıldı - Toggle butonu ile değiştirildi

-- Toggle Butonu (Küçük Kare)
local ToggleButton = Instance.new("TextButton")
ToggleButton.Name = "ToggleButton"
ToggleButton.Size = UDim2.new(0, 40, 0, 40)
ToggleButton.Position = UDim2.new(0, 10, 0, 10)
ToggleButton.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
ToggleButton.BorderSizePixel = 0
ToggleButton.Text = "☰"
ToggleButton.TextColor3 = Color3.fromRGB(100, 200, 255)
ToggleButton.TextSize = 20
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.Visible = false
ToggleButton.Parent = ScreenGui

local ToggleBtnCorner = Instance.new("UICorner")
ToggleBtnCorner.CornerRadius = UDim.new(0, 10)
ToggleBtnCorner.Parent = ToggleButton

-- Toggle butonu işlevi
ToggleButton.MouseButton1Click:Connect(function()
    AdminPanel.Visible = not AdminPanel.Visible
    if AdminPanel.Visible then
        ToggleButton.BackgroundColor3 = Color3.fromRGB(100, 200, 255)
        ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    else
        ToggleButton.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
        ToggleButton.TextColor3 = Color3.fromRGB(100, 200, 255)
    end
end)

-- ScrollingFrame (HD Admin tarzı)
local CommandsScroll = Instance.new("ScrollingFrame")
CommandsScroll.Size = UDim2.new(1, -20, 1, -90)
CommandsScroll.Position = UDim2.new(0, 10, 0, 80)
CommandsScroll.BackgroundTransparency = 1
CommandsScroll.BorderSizePixel = 0
CommandsScroll.ScrollBarThickness = 6
CommandsScroll.ScrollBarImageColor3 = Color3.fromRGB(100, 200, 255)
CommandsScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
CommandsScroll.Parent = AdminPanel

local ScrollList = Instance.new("UIListLayout")
ScrollList.Padding = UDim.new(0, 5)
ScrollList.SortOrder = Enum.SortOrder.LayoutOrder
ScrollList.Parent = CommandsScroll

ScrollList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    CommandsScroll.CanvasSize = UDim2.new(0, 0, 0, ScrollList.AbsoluteContentSize.Y + 10)
end)

-- HD Admin Buton Oluşturma Fonksiyonu
local function createCommand(name, description, callback)
    local CmdFrame = Instance.new("Frame")
    CmdFrame.Size = UDim2.new(1, 0, 0, 50)
    CmdFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
    CmdFrame.BorderSizePixel = 0
    CmdFrame.Parent = CommandsScroll
    
    local CmdCorner = Instance.new("UICorner")
    CmdCorner.CornerRadius = UDim.new(0, 8)
    CmdCorner.Parent = CmdFrame
    
    local CmdButton = Instance.new("TextButton")
    CmdButton.Size = UDim2.new(1, 0, 1, 0)
    CmdButton.BackgroundTransparency = 1
    CmdButton.Text = ""
    CmdButton.Parent = CmdFrame
    
    local CmdName = Instance.new("TextLabel")
    CmdName.Size = UDim2.new(1, -20, 0, 20)
    CmdName.Position = UDim2.new(0, 10, 0, 5)
    CmdName.BackgroundTransparency = 1
    CmdName.Text = "• " .. name
    CmdName.TextColor3 = Color3.fromRGB(100, 200, 255)
    CmdName.TextSize = 15
    CmdName.Font = Enum.Font.GothamBold
    CmdName.TextXAlignment = Enum.TextXAlignment.Left
    CmdName.Parent = CmdFrame
    
    local CmdDesc = Instance.new("TextLabel")
    CmdDesc.Size = UDim2.new(1, -20, 0, 18)
    CmdDesc.Position = UDim2.new(0, 10, 0, 27)
    CmdDesc.BackgroundTransparency = 1
    CmdDesc.Text = description
    CmdDesc.TextColor3 = Color3.fromRGB(150, 150, 150)
    CmdDesc.TextSize = 11
    CmdDesc.Font = Enum.Font.Gotham
    CmdDesc.TextXAlignment = Enum.TextXAlignment.Left
    CmdDesc.Parent = CmdFrame
    
    -- Hover efekti
    CmdButton.MouseEnter:Connect(function()
        TweenService:Create(CmdFrame, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(45, 45, 65)}):Play()
    end)
    
    CmdButton.MouseLeave:Connect(function()
        TweenService:Create(CmdFrame, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(35, 35, 50)}):Play()
    end)
    
    CmdButton.MouseButton1Click:Connect(callback)
    
    return CmdFrame
end

-- Değişkenler
local speedEnabled = false
local flyEnabled = false
local noclipEnabled = false
local flyConnection
local noclipConnection

-- KOMUTLAR (HD Admin Tarzı)
createCommand("Speed", "Karakterin hızını arttırır (32)", function()
    speedEnabled = not speedEnabled
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.WalkSpeed = speedEnabled and 32 or 16
    end
    print(speedEnabled and "Hız aktif!" or "Hız normal!")
end)

createCommand("Jump", "Zıplama gücünü arttırır (100)", function()
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.JumpPower = char.Humanoid.JumpPower == 50 and 100 or 50
    end
    print("Zıplama gücü değiştirildi!")
end)

createCommand("Fly", "Uçma modunu aktifleştirir", function()
    flyEnabled = not flyEnabled
    local char = LocalPlayer.Character
    
    if flyEnabled and char and char:FindFirstChild("HumanoidRootPart") then
        local hrp = char.HumanoidRootPart
        local bg = Instance.new("BodyGyro", hrp)
        bg.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
        bg.P = 9e4
        
        local bv = Instance.new("BodyVelocity", hrp)
        bv.Velocity = Vector3.new(0, 0, 0)
        bv.MaxForce = Vector3.new(9e9, 9e9, 9e9)
        
        flyConnection = RunService.Heartbeat:Connect(function()
            if not char or not char:FindFirstChild("HumanoidRootPart") then return end
            
            local cam = workspace.CurrentCamera
            bg.CFrame = cam.CFrame
            
            local speed = 50
            local velocity = Vector3.new(0, 0, 0)
            
            if UserInputService:IsKeyDown(Enum.KeyCode.W) then
                velocity = velocity + (cam.CFrame.LookVector * speed)
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.S) then
                velocity = velocity - (cam.CFrame.LookVector * speed)
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.A) then
                velocity = velocity - (cam.CFrame.RightVector * speed)
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.D) then
                velocity = velocity + (cam.CFrame.RightVector * speed)
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
                velocity = velocity + Vector3.new(0, speed, 0)
            end
            if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
                velocity = velocity - Vector3.new(0, speed, 0)
            end
            
            bv.Velocity = velocity
        end)
        print("Fly aktif! WASD: Hareket, Space: Yukarı, Shift: Aşağı")
    else
        if flyConnection then flyConnection:Disconnect() end
        if char and char:FindFirstChild("HumanoidRootPart") then
            for _, v in pairs(char.HumanoidRootPart:GetChildren()) do
                if v:IsA("BodyGyro") or v:IsA("BodyVelocity") then
                    v:Destroy()
                end
            end
        end
        print("Fly kapatıldı!")
    end
end)

createCommand("Ghost (Noclip)", "Duvarlardan geçme modu", function()
    noclipEnabled = not noclipEnabled
    
    if noclipEnabled then
        noclipConnection = RunService.Stepped:Connect(function()
            local char = LocalPlayer.Character
            if char then
                for _, part in pairs(char:GetDescendants()) do
                    if part:IsA("BasePart") then
                        part.CanCollide = false
                    end
                end
            end
        end)
        print("Noclip aktif!")
    else
        if noclipConnection then noclipConnection:Disconnect() end
        local char = LocalPlayer.Character
        if char then
            for _, part in pairs(char:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = true
                end
            end
        end
        print("Noclip kapatıldı!")
    end
end)

createCommand("God Mode", "Ölümsüzlük modu (Client)", function()
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.MaxHealth = math.huge
        char.Humanoid.Health = math.huge
        print("God Mode aktif!")
    end
end)

createCommand("Kill All", "Tüm oyuncuları öldürür (Client)", function()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character then
            local hum = player.Character:FindFirstChild("Humanoid")
            if hum then
                hum.Health = 0
            end
        end
    end
    print("Kill All çalıştırıldı! (Client-side)")
end)

createCommand("Invisible", "Karakteri görünmez yapar", function()
    local char = LocalPlayer.Character
    if char then
        for _, part in pairs(char:GetDescendants()) do
            if part:IsA("BasePart") or part:IsA("Decal") then
                part.Transparency = part.Transparency == 0 and 1 or 0
            end
        end
        if char:FindFirstChild("Head") and char.Head:FindFirstChild("face") then
            char.Head.face.Transparency = char.Head.face.Transparency == 0 and 1 or 0
        end
        print("Görünürlük değiştirildi!")
    end
end)

createCommand("Reset Character", "Karakteri yeniden başlatır", function()
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.Health = 0
        print("Karakter sıfırlandı!")
    end
end)

createCommand("Remove Fog", "Sisli ortamı temizler", function()
    local Lighting = game:GetService("Lighting")
    Lighting.FogEnd = 100000
    Lighting.FogStart = 0
    print("Sis kaldırıldı!")
end)

createCommand("Full Bright", "Tam aydınlatma modu", function()
    local Lighting = game:GetService("Lighting")
    Lighting.Brightness = 2
    Lighting.ClockTime = 14
    Lighting.GlobalShadows = false
    Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255)
    print("Full Bright aktif!")
end)

createCommand("Teleport to Spawn", "Spawn noktasına ışınlan", function()
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("HumanoidRootPart") then
        local spawnLocation = workspace:FindFirstChild("SpawnLocation")
        if spawnLocation then
            char.HumanoidRootPart.CFrame = spawnLocation.CFrame + Vector3.new(0, 5, 0)
        else
            char.HumanoidRootPart.CFrame = CFrame.new(0, 50, 0)
        end
        print("Spawn'a ışınlandı!")
    end
end)

createCommand("Infinite Jump", "Sonsuz zıplama modu", function()
    local InfiniteJumpEnabled = true
    game:GetService("UserInputService").JumpRequest:Connect(function()
        if InfiniteJumpEnabled then
            local char = LocalPlayer.Character
            if char and char:FindFirstChild("Humanoid") then
                char:FindFirstChildOfClass("Humanoid"):ChangeState("Jumping")
            end
        end
    end)
    print("Sonsuz zıplama aktif!")
end)

createCommand("Sit", "Karakteri oturttur", function()
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.Sit = true
    end
end)

createCommand("Remove Accessories", "Tüm aksesuarları kaldır", function()
    local char = LocalPlayer.Character
    if char then
        for _, v in pairs(char:GetChildren()) do
            if v:IsA("Accessory") then
                v:Destroy()
            end
        end
        print("Aksesuarlar kaldırıldı!")
    end
end)

createCommand("Anti-AFK", "AFK olmanı engeller", function()
    local VirtualUser = game:GetService("VirtualUser")
    LocalPlayer.Idled:Connect(function()
        VirtualUser:CaptureController()
        VirtualUser:ClickButton2(Vector2.new())
    end)
    print("Anti-AFK aktif!")
end)

-- Drag özelliği (Admin Panel için)
local dragging = false
local dragInput
local dragStart
local startPos

PanelTitle.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = AdminPanel.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

PanelTitle.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if dragging and input == dragInput then
        local delta = input.Position - dragStart
        AdminPanel.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)

-- Login Butonu İşlevi
LoginButton.MouseButton1Click:Connect(function()
    local username = UsernameBox.Text
    if username == "" then
        username = LocalPlayer.Name
    end
    
    -- Login animasyonu
    TweenService:Create(LoginFrame, TweenInfo.new(0.3), {Size = UDim2.new(0, 0, 0, 0)}):Play()
    wait(0.3)
    LoginFrame:Destroy()
    
    -- Admin panel göster
    UserDisplay.Text = "👤 Kullanıcı: " .. username
    AdminPanel.Visible = true
    ToggleButton.Visible = true
    AdminPanel.Size = UDim2.new(0, 0, 0, 0)
    TweenService:Create(AdminPanel, TweenInfo.new(0.4, Enum.EasingStyle.Back), {Size = UDim2.new(0, 400, 0, 500)}):Play()
end)

-- Enter tuşu ile login
UsernameBox.FocusLost:Connect(function(enterPressed)
    if enterPressed then
        LoginButton.MouseButton1Click:Fire()
    end
end)

-- Toggle Key (INSERT) - Sadece toggle butonu ile değiştirildi
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == Enum.KeyCode.Insert then
        if ToggleButton.Visible then
            ToggleButton.MouseButton1Click:Fire()
        end
    end
end)

print("HD Admin Panel yüklendi!")
print("Login ekranından giriş yapın.")
print("Giriş yaptıktan sonra sol üst köşedeki küçük kare buton ile paneli açıp kapatabilirsiniz!")

Features & Information

My New panel gui is good

Community Comments (11)

ysfr_666ysfr_666Oct 12, 2025

Good script

Replying to @ysfr_666
abdulqaddo188abdulqaddo188Oct 12, 2025

@nurdansen32 stop lieing

abdulqaddo188abdulqaddo188Oct 12, 2025

Does not work

Replying to @abdulqaddo188
ysfr_666ysfr_666Oct 12, 2025

@abdulqaddo188 what your executor

Replying to @ysfr_666
abdulqaddo188abdulqaddo188Oct 14, 2025

@nurdansen32 delta

Replying to @abdulqaddo188
ysfr_666ysfr_666Oct 18, 2025

@abdulqaddo188 pls use krnl is good

Replying to @ysfr_666
abdulqaddo188abdulqaddo188Oct 19, 2025

@nurdansen32 l prefer de,lta

DoggoJDoggoJOct 12, 2025

its ai

Replying to @DoggoJ
ysfr_666ysfr_666Oct 12, 2025

@Jardin yes

Replying to @ysfr_666
DoggoJDoggoJOct 13, 2025

@nurdansen32 stay strong learn how to code your self

abdulqaddo188abdulqaddo188Oct 19, 2025

Delta

More Scripts for Universal Scripts