local U=game:GetService("\082\117\110\083\101\114\118\105\099\101")local c=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local t=game:GetService("\067\104\097\116")local d=game:GetService("\083\116\097\114\116\101\114\071\117\105")local u=c:WaitForChild("\068\101\102\097\117\108\116\067\104\097\116\083\121\115\116\101\109\067\104\097\116\069\118\101\110\116\115")local j=c:WaitForChild("\068\101\102\097\117\108\116\067\104\097\116\083\121\115\116\101\109\067\104\097\116\069\118\101\110\116\115")local a=t:WaitForChild("\067\108\105\101\110\116\067\104\097\116\077\111\100\117\108\101\115")local w=require(a:WaitForChild("\067\104\097\116\067\111\110\115\116\097\110\116\115"))local q=require(a:WaitForChild("\067\104\097\116\083\101\116\116\105\110\103\115"))local R=require((a:WaitForChild("\077\101\115\115\097\103\101\067\114\101\097\116\111\114\077\111\100\117\108\101\115")):WaitForChild("\085\116\105\108"))local T=nil pcall(function()T=require((game:GetService("\067\104\097\116")).ClientChatModules.ChatLocalization)end)if T==nil then T={Get=function(U,c,t)return t end}end local o=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")local e={OnNewMessage="\082\101\109\111\116\101\069\118\101\110\116";OnMessageDoneFiltering="\082\101\109\111\116\101\069\118\101\110\116";OnNewSystemMessage="\082\101\109\111\116\101\069\118\101\110\116";OnChannelJoined="\082\101\109\111\116\101\069\118\101\110\116";OnChannelLeft="\082\101\109\111\116\101\069\118\101\110\116";OnMuted="\082\101\109\111\116\101\069\118\101\110\116",OnUnmuted="\082\101\109\111\116\101\069\118\101\110\116";OnMainChannelSet="\082\101\109\111\116\101\069\118\101\110\116",SayMessageRequest="\082\101\109\111\116\101\069\118\101\110\116";GetInitDataRequest="\082\101\109\111\116\101\070\117\110\099\116\105\111\110"}local D={}local k=10 function TryRemoveChildWithVerifyingIsCorrectType(U)if e[U.Name]then if U:IsA(e[U.Name])then e[U.Name]=nil D[U.Name]=U k=k-1 end end end for U,c in pairs(j:GetChildren())do TryRemoveChildWithVerifyingIsCorrectType(c)end if k>0 then local U=j.ChildAdded:connect(function(U)TryRemoveChildWithVerifyingIsCorrectType(U)if k<1 then o:Fire()end end)o.Event:wait()U:disconnect()o:Destroy()end local L=game:GetService("\085\115\101\114\073\110\112\117\116\083\101\114\118\105\099\101")local N=game:GetService("\082\117\110\083\101\114\118\105\099\101")local J=game:GetService("\080\108\097\121\101\114\115")local z=J.LocalPlayer while not z do J.ChildAdded:wait()z=J.LocalPlayer end local M=6 if q.ScreenGuiDisplayOrder~=nil then M=q.ScreenGuiDisplayOrder end local m=Instance.new("\083\099\114\101\101\110\071\117\105")m.Name="\067\104\097\116"m.ResetOnSpawn=false m.DisplayOrder=M m.Parent=z:WaitForChild("\080\108\097\121\101\114\071\117\105")local Y=require(script:WaitForChild("\077\101\115\115\097\103\101\076\097\098\101\108\067\114\101\097\116\111\114"))local K=require(script:WaitForChild("\077\101\115\115\097\103\101\076\111\103\068\105\115\112\108\097\121"))local F=require(script:WaitForChild("\067\104\097\116\067\104\097\110\110\101\108"))local H=(require(script:WaitForChild("\067\104\097\116\087\105\110\100\111\119"))).new()local Q=(require(script:WaitForChild("\067\104\097\110\110\101\108\115\066\097\114"))).new()local P=K.new()local A=(require(script:WaitForChild("\067\111\109\109\097\110\100\080\114\111\099\101\115\115\111\114"))).new()local O=(require(script:WaitForChild("\067\104\097\116\066\097\114"))).new(A,H)H:CreateGuiObjects(m)H:RegisterChatBar(O)H:RegisterChannelsBar(Q)H:RegisterMessageLogDisplay(P)R:RegisterChatWindow(H)local W=require(script:WaitForChild("\077\101\115\115\097\103\101\083\101\110\100\101\114"))W:RegisterSayMessageFunction(D.SayMessageRequest)if L.TouchEnabled then O:SetTextLabelText(T:Get("\071\097\109\101\067\104\097\116\095\067\104\097\116\077\097\105\110\095\067\104\097\116\066\097\114\084\101\120\116","\084\097\112 \104\101\114\101 \116\111 \099\104\097\116"))else O:SetTextLabelText(T:Get("\071\097\109\101\067\104\097\116\095\067\104\097\116\077\097\105\110\095\067\104\097\116\066\097\114\084\101\120\116\084\111\117\099\104","\084\111 \099\104\097\116 \099\108\105\099\107 \104\101\114\101 \111\114 \112\114\101\115\115 \"\047\" \107\101\121"))end local h=script spawn(function()local U=require(h:WaitForChild("\067\117\114\118\101\085\116\105\108"))local c=1/(q.ChatAnimationFPS and 20)local t=tick()while true do local d=tick()local u=U:DeltaTimeToTimescale(d-t)if u~=0 then H:Update(u)end t=d wait(c)end end)function CheckIfPointIsInSquare(U,c,t)local d=false if c.X<=U.X then d=false if U.X<=t.X then d=false if c.Y<=U.Y then d=U.Y<=t.Y end end end return d end local g=0 local V=false local r=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")function DoBackgroundFadeIn(U)g=tick()V=false r:Fire()H:FadeInBackground(U or q.ChatDefaultFadeDuration)if H:GetCurrentChannel()then local U=P.Scroller U.ScrollingEnabled=true U.ScrollBarThickness=K.ScrollBarThickness end end function DoBackgroundFadeOut(U)g=tick()V=true r:Fire()H:FadeOutBackground(U or q.ChatDefaultFadeDuration)if H:GetCurrentChannel()then local U=P.Scroller U.ScrollingEnabled=false U.ScrollBarThickness=0 end end local C=0 local G=false function DoTextFadeIn(U)C=tick()G=false r:Fire()H:FadeInText((U or q.ChatDefaultFadeDuration)*0)end function DoTextFadeOut(U)C=tick()G=true r:Fire()H:FadeOutText(U or q.ChatDefaultFadeDuration)end function DoFadeInFromNewInformation()DoTextFadeIn()if q.ChatShouldFadeInFromNewInformation then DoBackgroundFadeIn()end end function InstantFadeIn()DoBackgroundFadeIn(0)DoTextFadeIn(0)end function InstantFadeOut()DoBackgroundFadeOut(0)DoTextFadeOut(0)end local E=nil local s=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")function UpdateFadingForMouseState(U)E=U s:Fire()if O:IsFocused()then return end if U then else DoBackgroundFadeIn()return end DoBackgroundFadeIn()DoTextFadeIn()end local Z=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")spawn(function()while true do N.RenderStepped:wait()while not(not E)or not(not O:IsFocused())do if E then s.Event:wait()end if O:IsFocused()then Z.Event:wait()end end if not V then if q.ChatWindowBackgroundFadeOutTime<tick()-g then DoBackgroundFadeOut()end elseif not G then if q.ChatWindowTextFadeOutTime<tick()-C then DoTextFadeOut()end else r.Event:wait()end end end)function getClassicChatEnabled()if q.ClassicChatEnabled~=nil then return q.ClassicChatEnabled end return J.ClassicChat end function getBubbleChatEnabled()if q.BubbleChatEnabled~=nil then return q.BubbleChatEnabled end return J.BubbleChat end function bubbleChatOnly()return not getClassicChatEnabled()and getBubbleChatEnabled()end local n={}function UpdateMousePosition(U)if n.Visible then if n.IsCoreGuiEnabled then if not n.TopbarEnabled then if not q.ChatOnWithTopBarOff then return end end else return end else return end if bubbleChatOnly()then return end local c=H.GuiObject.AbsolutePosition local t=CheckIfPointIsInSquare(U,c,c+H.GuiObject.AbsoluteSize)if t~=E then UpdateFadingForMouseState(t)end end L.InputChanged:connect(function(U)if U.UserInputType==Enum.UserInputType.MouseMovement then UpdateMousePosition(Vector2.new(U.Position.X,U.Position.Y))end end)L.TouchTap:connect(function(U,c)UpdateMousePosition(U[1])end)L.TouchMoved:connect(function(U,c)UpdateMousePosition(Vector2.new(U.Position.X,U.Position.Y))end)L.Changed:connect(function(U)if U=="\077\111\117\115\101\066\101\104\097\118\105\111\114"and L.MouseBehavior==Enum.MouseBehavior.LockCenter then local U=H.GuiObject.AbsolutePosition if CheckIfPointIsInSquare(m.AbsoluteSize/2,U,U+H.GuiObject.AbsoluteSize)then L.MouseBehavior=Enum.MouseBehavior.Default end end end)UpdateFadingForMouseState(true)UpdateFadingForMouseState(false)local S={Signal=function()local U={}local c=nil local t=nil local d=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")function U.fire(U,...)c={...}t=select("\035",...)d:Fire()end function U.connect(U,u)if not u then error("\099\111\110\110\101\099\116\040\110\105\108\041",2)end return d.Event:connect(function()u(unpack(c,1,t))end)end function U.wait(U)d.Event:wait()assert(c,"\077\105\115\115\105\110\103 \097\114\103 \100\097\116\097\044 \108\105\107\101\108\121 \100\117\101 \116\111 \058\084\119\101\101\110\083\105\122\101\047\080\111\115\105\116\105\111\110 \099\111\114\114\117\112\116\105\110\103 \116\104\114\101\097\100\114\101\102\115\046")return unpack(c,1,t)end return U end}function SetVisibility(U)H:SetVisible(U)n.VisibilityStateChanged:fire(U)n.Visible=U if n.IsCoreGuiEnabled then if U then else InstantFadeOut()return end else return end InstantFadeIn()end n.TopbarEnabled=true n.MessageCount=0 n.Visible=true n.IsCoreGuiEnabled=true function n.ToggleVisibility(U)SetVisibility(not H:GetVisible())end function n.SetVisible(U,c)if H:GetVisible()~=c then SetVisibility(c)end end function n.FocusChatBar(U)O:CaptureFocus()end function n.GetVisibility(U)return H:GetVisible()end function n.GetMessageCount(U)return U.MessageCount end function n.TopbarEnabledChanged(U,c)U.TopbarEnabled=c U.CoreGuiEnabled:fire((game:GetService("\083\116\097\114\116\101\114\071\117\105")):GetCoreGuiEnabled(Enum.CoreGuiType.Chat))end function n.IsFocused(U,c)return O:IsFocused()end n.ChatBarFocusChanged=S.Signal()n.VisibilityStateChanged=S.Signal()n.MessagesChanged=S.Signal()n.MessagePosted=S.Signal()n.CoreGuiEnabled=S.Signal()n.ChatMakeSystemMessageEvent=S.Signal()n.ChatWindowPositionEvent=S.Signal()n.ChatWindowSizeEvent=S.Signal()n.ChatBarDisabledEvent=S.Signal()function n.fChatWindowPosition(U)return H.GuiObject.Position end function n.fChatWindowSize(U)return H.GuiObject.Size end function n.fChatBarDisabled(U)return not O:GetEnabled()end local v=true function n.SpecialKeyPressed(U,c,t)if c==Enum.SpecialKey.ChatHotkey and v then DoChatBarFocus()end end n.CoreGuiEnabled:connect(function(U)n.IsCoreGuiEnabled=U U=U and(n.TopbarEnabled or q.ChatOnWithTopBarOff)H:SetCoreGuiEnabled(U)if U then InstantFadeIn()return end O:ReleaseFocus()InstantFadeOut()end)function trimTrailingSpaces(U)local c=#U while true do if 0<c then else break end if U:find("\094\037\115",c)then else break end c=c-1 end return U:sub(1,c)end local X=false n.ChatMakeSystemMessageEvent:connect(function(U)if U.Text and type(U.Text)=="\115\116\114\105\110\103"then while not X do wait()end local c=q.GeneralChannelName local t=H:GetChannel(c)if t then t:AddMessageToChannel({ID=-1;FromSpeaker=nil;SpeakerUserId=0;OriginalChannel=c,IsFiltered=true;MessageLength=string.len(U.Text),Message=trimTrailingSpaces(U.Text),MessageType=w.MessageTypeSetCore,Time=os.time();ExtraData=U})Q:UpdateMessagePostedInChannel(c)n.MessageCount=n.MessageCount+1 n.MessagesChanged:fire(n.MessageCount)end end end)n.ChatBarDisabledEvent:connect(function(U)if v then O:SetEnabled(not U)if U then O:ReleaseFocus()end end end)n.ChatWindowSizeEvent:connect(function(U)H.GuiObject.Size=U end)n.ChatWindowPositionEvent:connect(function(U)H.GuiObject.Position=U end)function DoChatBarFocus()if not H:GetCoreGuiEnabled()then return end if not O:GetEnabled()then return end if not O:IsFocused()then if O:GetVisible()then n:SetVisible(true)InstantFadeIn()O:CaptureFocus()n.ChatBarFocusChanged:fire(true)end end end Z.Event:connect(function(U)n.ChatBarFocusChanged:fire(U)end)function DoSwitchCurrentChannel(U)if H:GetChannel(U)then H:SwitchCurrentChannel(U)end end function SendMessageToSelfInTargetChannel(U,c,t)local d=H:GetChannel(c)if d then d:AddMessageToChannel({ID=-1,FromSpeaker=nil;SpeakerUserId=0,OriginalChannel=c,IsFiltered=true;MessageLength=string.len(U);Message=trimTrailingSpaces(U),MessageType=w.MessageTypeSystem;Time=os.time();ExtraData=t})end end function chatBarFocused()if not E then DoBackgroundFadeIn()if G then DoTextFadeIn()end end Z:Fire(true)end function chatBarFocusLost(U,c)DoBackgroundFadeIn()Z:Fire(false)if U then local U=(O:GetTextBox()).Text if O:IsInCustomState()then local c=O:GetCustomMessage()if c then U=c end local t=O:CustomStateProcessCompletedMessage(U)O:ResetCustomState()if t then return end end local c=string.sub(U,1,q.MaximumMessageLength);(O:GetTextBox()).Text=""if c~=""then n.MessagePosted:fire(c)if not A:ProcessCompletedChatMessage(c,H)then local U=nil if q.DisallowedWhiteSpace then local U=#q.DisallowedWhiteSpace local t=0 while true do if q.DisallowedWhiteSpace[t]=="\t"then c=string.gsub(c,q.DisallowedWhiteSpace[t]," ")else c=string.gsub(c,q.DisallowedWhiteSpace[t],"")end if true then if t<U then else break end elseif U<t then else break end t=t+1 end end U=string.gsub(string.gsub(c,"\n",""),"\091 \093\043"," ")local t=H:GetTargetMessageChannel()if t then W:SendMessage(U,t)return end W:SendMessage(U,nil)end end end end local I={}function setupChatBarConnections()local U=#I local c=0 while true do I[c]:Disconnect()if true then if c<U then else break end elseif U<c then else break end c=c+1 end I={}table.insert(I,(O:GetTextBox()).FocusLost:connect(chatBarFocusLost))table.insert(I,(O:GetTextBox()).Focused:connect(chatBarFocused))end setupChatBarConnections()O.GuiObjectsChanged:connect(setupChatBarConnections)function getEchoMessagesInGeneral()if q.EchoMessagesInGeneralChannel==nil then return true end return q.EchoMessagesInGeneralChannel end D.OnMessageDoneFiltering.OnClientEvent:connect(function(U)if not q.ShowUserOwnFilteredMessage and U.FromSpeaker==z.Name then return end local c=U.OriginalChannel local t=H:GetChannel(c)if t then t:UpdateMessageFiltered(U)end if getEchoMessagesInGeneral()and(q.GeneralChannelName and c~=q.GeneralChannelName)then local c=H:GetChannel(q.GeneralChannelName)if c then c:UpdateMessageFiltered(U)end end end)D.OnNewMessage.OnClientEvent:connect(function(U,c)local t=H:GetChannel(c)if t then t:AddMessageToChannel(U)if U.FromSpeaker~=z.Name then Q:UpdateMessagePostedInChannel(c)end if getEchoMessagesInGeneral()and(q.GeneralChannelName and c~=q.GeneralChannelName)then local c=H:GetChannel(q.GeneralChannelName)if c then c:AddMessageToChannel(U)end end n.MessageCount=n.MessageCount+1 n.MessagesChanged:fire(n.MessageCount)DoFadeInFromNewInformation()end end)D.OnNewSystemMessage.OnClientEvent:connect(function(U,c)c=c and"\083\121\115\116\101\109"local t=H:GetChannel(c)if t then t:AddMessageToChannel(U)Q:UpdateMessagePostedInChannel(c)n.MessageCount=n.MessageCount+1 n.MessagesChanged:fire(n.MessageCount)DoFadeInFromNewInformation()if getEchoMessagesInGeneral()and(q.GeneralChannelName and c~=q.GeneralChannelName)then local c=H:GetChannel(q.GeneralChannelName)if c then c:AddMessageToChannel(U)return end end else warn(string.format("\074\117\115\116 \114\101\099\101\105\118\101\100 \115\121\115\116\101\109 \109\101\115\115\097\103\101 \102\111\114 \099\104\097\110\110\101\108 \073\'\109 \110\111\116 \105\110 \091\037\115\093",c))end end)function HandleChannelJoined(U,c,t,d,u,j)if H:GetChannel(U)then H:RemoveChannel(U)end if U==q.GeneralChannelName then X=true end if d then O:SetChannelNameColor(U,d)end local a=H:AddChannel(U)if a then if U==q.GeneralChannelName then DoSwitchCurrentChannel(U)end if t then local c=1 if q.MessageHistoryLengthPerChannel<#t then c=#t-q.MessageHistoryLengthPerChannel end local d=#t local j=c-1 while true do a:AddMessageToChannel(t[j])if true then if j<d then else break end elseif d<j then else break end j=j+1 end if getEchoMessagesInGeneral()then if u then if q.GeneralChannelName then if U~=q.GeneralChannelName then local U=H:GetChannel(q.GeneralChannelName)if U then U:AddMessagesToChannelByTimeStamp(t,c)end end end end end end if c~=""then local t={ID=-1,FromSpeaker=nil,SpeakerUserId=0;OriginalChannel=U,IsFiltered=true;MessageLength=string.len(c),Message=trimTrailingSpaces(c),MessageType=w.MessageTypeWelcome;Time=os.time();ExtraData=nil}a:AddMessageToChannel(t)if getEchoMessagesInGeneral()then if j then if not q.ShowChannelsBar then if U~=q.GeneralChannelName then local U=H:GetChannel(q.GeneralChannelName)if U then U:AddMessageToChannel(t)end end end end end end DoFadeInFromNewInformation()end end D.OnChannelJoined.OnClientEvent:connect(function(U,c,t,d)HandleChannelJoined(U,c,t,d,false,true)end)D.OnChannelLeft.OnClientEvent:connect(function(U)H:RemoveChannel(U)DoFadeInFromNewInformation()end)D.OnMuted.OnClientEvent:connect(function(U) end)D.OnUnmuted.OnClientEvent:connect(function(U) end)D.OnMainChannelSet.OnClientEvent:connect(function(U)DoSwitchCurrentChannel(U)end);(coroutine.wrap(function()local U=u:WaitForChild("\067\104\097\110\110\101\108\078\097\109\101\067\111\108\111\114\085\112\100\097\116\101\100",5)if U then U.OnClientEvent:connect(function(U,c)O:SetChannelNameColor(U,c)end)end end))()local l=nil local B=nil local f=nil local b=nil pcall(function()l=d:GetCore("\080\108\097\121\101\114\066\108\111\099\107\101\100\069\118\101\110\116")B=d:GetCore("\080\108\097\121\101\114\077\117\116\101\100\069\118\101\110\116")f=d:GetCore("\080\108\097\121\101\114\085\110\098\108\111\099\107\101\100\069\118\101\110\116")b=d:GetCore("\080\108\097\121\101\114\085\110\109\117\116\101\100\069\118\101\110\116")end)function SendSystemMessageToSelf(U)local c=H:GetCurrentChannel()if c then c:AddMessageToChannel({ID=-1;FromSpeaker=nil,SpeakerUserId=0;OriginalChannel=c.Name,IsFiltered=true;MessageLength=string.len(U);Message=trimTrailingSpaces(U),MessageType=w.MessageTypeSystem;Time=os.time(),ExtraData=nil})end end function MutePlayer(U)local c=u:FindFirstChild("\077\117\116\101\080\108\097\121\101\114\082\101\113\117\101\115\116")if c then else return false end return c:InvokeServer(U.Name)end if l then l.Event:connect(function(U)if MutePlayer(U)then SendSystemMessageToSelf(string.gsub(T:Get("\071\097\109\101\067\104\097\116\095\067\104\097\116\077\097\105\110\095\083\112\101\097\107\101\114\072\097\115\066\101\101\110\066\108\111\099\107\101\100",string.format("\083\112\101\097\107\101\114 \'\037\115\' \104\097\115 \098\101\101\110 \098\108\111\099\107\101\100\046",U.Name)),"\123\082\066\088\095\078\065\077\069\125",U.Name))end end)end if B then B.Event:connect(function(U)if MutePlayer(U)then SendSystemMessageToSelf(string.gsub(T:Get("\071\097\109\101\067\104\097\116\095\067\104\097\116\077\097\105\110\095\083\112\101\097\107\101\114\072\097\115\066\101\101\110\077\117\116\101\100",string.format("\083\112\101\097\107\101\114 \'\037\115\' \104\097\115 \098\101\101\110 \109\117\116\101\100\046",U.Name)),"\123\082\066\088\095\078\065\077\069\125",U.Name))end end)end function UnmutePlayer(U)local c=u:FindFirstChild("\085\110\077\117\116\101\080\108\097\121\101\114\082\101\113\117\101\115\116")if c then else return false end return c:InvokeServer(U.Name)end if f then f.Event:connect(function(U)if UnmutePlayer(U)then SendSystemMessageToSelf(string.gsub(T:Get("\071\097\109\101\067\104\097\116\095\067\104\097\116\077\097\105\110\095\083\112\101\097\107\101\114\072\097\115\066\101\101\110\085\110\066\108\111\099\107\101\100",string.format("\083\112\101\097\107\101\114 \'\037\115\' \104\097\115 \098\101\101\110 \117\110\098\108\111\099\107\101\100\046",U.Name)),"\123\082\066\088\095\078\065\077\069\125",U.Name))end end)end if b then b.Event:connect(function(U)if UnmutePlayer(U)then SendSystemMessageToSelf(string.gsub(T:Get("\071\097\109\101\067\104\097\116\095\067\104\097\116\077\097\105\110\095\083\112\101\097\107\101\114\072\097\115\066\101\101\110\085\110\077\117\116\101\100",string.format("\083\112\101\097\107\101\114 \'\037\115\' \104\097\115 \098\101\101\110 \117\110\109\117\116\101\100\046",U.Name)),"\123\082\066\088\095\078\065\077\069\125",U.Name))end end)end spawn(function()if z.UserId>0 then pcall(function()local U=d:GetCore("\071\101\116\066\108\111\099\107\101\100\085\115\101\114\073\100\115")if#U>0 then local c=u:FindFirstChild("\083\101\116\066\108\111\099\107\101\100\085\115\101\114\073\100\115\082\101\113\117\101\115\116")if c then c:FireServer(U)end end end)end end)spawn(function()local U,c=pcall(function()return t:CanUserChatAsync(z.UserId)end)if U then v=N:IsStudio()and c end end)local y=D.GetInitDataRequest:InvokeServer()for U,c in pairs(y.Channels)do if c[1]==q.GeneralChannelName then HandleChannelJoined(c[1],c[2],c[3],c[4],true,false)end end for U,c in pairs(y.Channels)do if c[1]~=q.GeneralChannelName then HandleChannelJoined(c[1],c[2],c[3],c[4],true,false)end end return n


local l__RunService__1 = game:GetService("RunService");
local l__ReplicatedStorage__2 = game:GetService("ReplicatedStorage");
local l__Chat__3 = game:GetService("Chat");
local l__StarterGui__4 = game:GetService("StarterGui");
local v5 = l__ReplicatedStorage__2:WaitForChild("DefaultChatSystemChatEvents");
local v6 = l__ReplicatedStorage__2:WaitForChild("DefaultChatSystemChatEvents");
local l__ClientChatModules__7 = l__Chat__3:WaitForChild("ClientChatModules");
local v8 = require(l__ClientChatModules__7:WaitForChild("ChatConstants"));
local v9 = require(l__ClientChatModules__7:WaitForChild("ChatSettings"));
local v10 = require(l__ClientChatModules__7:WaitForChild("MessageCreatorModules"):WaitForChild("Util"));
local u1 = nil;
pcall(function()
	u1 = require(game:GetService("Chat").ClientChatModules.ChatLocalization);
end);
if u1 == nil then
	u1 = {
		Get = function(p1, p2, p3)
			return p3;
		end
	};
end;
local v11 = Instance.new("BindableEvent");
local u2 = {
	OnNewMessage = "RemoteEvent", 
	OnMessageDoneFiltering = "RemoteEvent", 
	OnNewSystemMessage = "RemoteEvent", 
	OnChannelJoined = "RemoteEvent", 
	OnChannelLeft = "RemoteEvent", 
	OnMuted = "RemoteEvent", 
	OnUnmuted = "RemoteEvent", 
	OnMainChannelSet = "RemoteEvent", 
	SayMessageRequest = "RemoteEvent", 
	GetInitDataRequest = "RemoteFunction"
};
local u3 = {};
local u4 = 10;
function TryRemoveChildWithVerifyingIsCorrectType(p4)
	if u2[p4.Name] then
		if p4:IsA(u2[p4.Name]) then
			u2[p4.Name] = nil;
			u3[p4.Name] = p4;
			u4 = u4 - 1;
		end;
	end;
end;
for v12, v13 in pairs(v6:GetChildren()) do
	TryRemoveChildWithVerifyingIsCorrectType(v13);
end;
if u4 > 0 then
	local v14 = v6.ChildAdded:connect(function(p5)
		TryRemoveChildWithVerifyingIsCorrectType(p5);
		if u4 < 1 then
			v11:Fire();
		end;
	end);
	v11.Event:wait();
	v14:disconnect();
	v11:Destroy();
end;
local l__UserInputService__15 = game:GetService("UserInputService");
local l__RunService__16 = game:GetService("RunService");
local l__Players__17 = game:GetService("Players");
local v18 = l__Players__17.LocalPlayer;
while not v18 do
	l__Players__17.ChildAdded:wait();
	v18 = l__Players__17.LocalPlayer;
end;
local v19 = 6;
if v9.ScreenGuiDisplayOrder ~= nil then
	v19 = v9.ScreenGuiDisplayOrder;
end;
local v20 = Instance.new("ScreenGui");
v20.Name = "Chat";
v20.ResetOnSpawn = false;
v20.DisplayOrder = v19;
v20.Parent = v18:WaitForChild("PlayerGui");
local v21 = require(script:WaitForChild("MessageLabelCreator"));
local v22 = require(script:WaitForChild("MessageLogDisplay"));
local v23 = require(script:WaitForChild("ChatChannel"));
local v24 = require(script:WaitForChild("ChatWindow")).new();
local v25 = require(script:WaitForChild("ChannelsBar")).new();
local v26 = v22.new();
local v27 = require(script:WaitForChild("CommandProcessor")).new();
local v28 = require(script:WaitForChild("ChatBar")).new(v27, v24);
v24:CreateGuiObjects(v20);
v24:RegisterChatBar(v28);
v24:RegisterChannelsBar(v25);
v24:RegisterMessageLogDisplay(v26);
v10:RegisterChatWindow(v24);
local v29 = require(script:WaitForChild("MessageSender"));
v29:RegisterSayMessageFunction(u3.SayMessageRequest);
if l__UserInputService__15.TouchEnabled then
	v28:SetTextLabelText(u1:Get("GameChat_ChatMain_ChatBarText", "Tap here to chat"));
else
	v28:SetTextLabelText(u1:Get("GameChat_ChatMain_ChatBarTextTouch", "To chat click here or press \"/\" key"));
end;
local l__script__5 = script;
spawn(function()
	local v30 = require(l__script__5:WaitForChild("CurveUtil"));
	local v31 = 1 / (v9.ChatAnimationFPS and 20);
	local v32 = tick();
	while true do
		local v33 = tick();
		local v34 = v30:DeltaTimeToTimescale(v33 - v32);
		if v34 ~= 0 then
			v24:Update(v34);
		end;
		v32 = v33;
		wait(v31);	
	end;
end);
function CheckIfPointIsInSquare(p6, p7, p8)
	local v35 = false;
	if p7.X <= p6.X then
		v35 = false;
		if p6.X <= p8.X then
			v35 = false;
			if p7.Y <= p6.Y then
				v35 = p6.Y <= p8.Y;
			end;
		end;
	end;
	return v35;
end;
local u6 = 0;
local u7 = false;
local u8 = Instance.new("BindableEvent");
function DoBackgroundFadeIn(p9)
	u6 = tick();
	u7 = false;
	u8:Fire();
	v24:FadeInBackground(p9 or v9.ChatDefaultFadeDuration);
	if v24:GetCurrentChannel() then
		local l__Scroller__36 = v26.Scroller;
		l__Scroller__36.ScrollingEnabled = true;
		l__Scroller__36.ScrollBarThickness = v22.ScrollBarThickness;
	end;
end;
function DoBackgroundFadeOut(p10)
	u6 = tick();
	u7 = true;
	u8:Fire();
	v24:FadeOutBackground(p10 or v9.ChatDefaultFadeDuration);
	if v24:GetCurrentChannel() then
		local l__Scroller__37 = v26.Scroller;
		l__Scroller__37.ScrollingEnabled = false;
		l__Scroller__37.ScrollBarThickness = 0;
	end;
end;
local u9 = 0;
local u10 = false;
function DoTextFadeIn(p11)
	u9 = tick();
	u10 = false;
	u8:Fire();
	v24:FadeInText((p11 or v9.ChatDefaultFadeDuration) * 0);
end;
function DoTextFadeOut(p12)
	u9 = tick();
	u10 = true;
	u8:Fire();
	v24:FadeOutText(p12 or v9.ChatDefaultFadeDuration);
end;
function DoFadeInFromNewInformation()
	DoTextFadeIn();
	if v9.ChatShouldFadeInFromNewInformation then
		DoBackgroundFadeIn();
	end;
end;
function InstantFadeIn()
	DoBackgroundFadeIn(0);
	DoTextFadeIn(0);
end;
function InstantFadeOut()
	DoBackgroundFadeOut(0);
	DoTextFadeOut(0);
end;
local u11 = nil;
local u12 = Instance.new("BindableEvent");
function UpdateFadingForMouseState(p13)
	u11 = p13;
	u12:Fire();
	if v28:IsFocused() then
		return;
	end;
	if p13 then

	else
		DoBackgroundFadeIn();
		return;
	end;
	DoBackgroundFadeIn();
	DoTextFadeIn();
end;
local u13 = Instance.new("BindableEvent");
spawn(function()
	while true do
		l__RunService__16.RenderStepped:wait();
		while not (not u11) or not (not v28:IsFocused()) do
			if u11 then
				u12.Event:wait();
			end;
			if v28:IsFocused() then
				u13.Event:wait();
			end;		
		end;
		if not u7 then
			if v9.ChatWindowBackgroundFadeOutTime < tick() - u6 then
				DoBackgroundFadeOut();
			end;
		elseif not u10 then
			if v9.ChatWindowTextFadeOutTime < tick() - u9 then
				DoTextFadeOut();
			end;
		else
			u8.Event:wait();
		end;	
	end;
end);
function getClassicChatEnabled()
	if v9.ClassicChatEnabled ~= nil then
		return v9.ClassicChatEnabled;
	end;
	return l__Players__17.ClassicChat;
end;
function getBubbleChatEnabled()
	if v9.BubbleChatEnabled ~= nil then
		return v9.BubbleChatEnabled;
	end;
	return l__Players__17.BubbleChat;
end;
function bubbleChatOnly()
	return not getClassicChatEnabled() and getBubbleChatEnabled();
end;
local u14 = {};
function UpdateMousePosition(p14)
	if u14.Visible then
		if u14.IsCoreGuiEnabled then
			if not u14.TopbarEnabled then
				if not v9.ChatOnWithTopBarOff then
					return;
				end;
			end;
		else
			return;
		end;
	else
		return;
	end;
	if bubbleChatOnly() then
		return;
	end;
	local l__AbsolutePosition__38 = v24.GuiObject.AbsolutePosition;
	local v39 = CheckIfPointIsInSquare(p14, l__AbsolutePosition__38, l__AbsolutePosition__38 + v24.GuiObject.AbsoluteSize);
	if v39 ~= u11 then
		UpdateFadingForMouseState(v39);
	end;
end;
l__UserInputService__15.InputChanged:connect(function(p15)
	if p15.UserInputType == Enum.UserInputType.MouseMovement then
		UpdateMousePosition((Vector2.new(p15.Position.X, p15.Position.Y)));
	end;
end);
l__UserInputService__15.TouchTap:connect(function(p16, p17)
	UpdateMousePosition(p16[1]);
end);
l__UserInputService__15.TouchMoved:connect(function(p18, p19)
	UpdateMousePosition((Vector2.new(p18.Position.X, p18.Position.Y)));
end);
l__UserInputService__15.Changed:connect(function(p20)
	if p20 == "MouseBehavior" and l__UserInputService__15.MouseBehavior == Enum.MouseBehavior.LockCenter then
		local l__AbsolutePosition__40 = v24.GuiObject.AbsolutePosition;
		if CheckIfPointIsInSquare(v20.AbsoluteSize / 2, l__AbsolutePosition__40, l__AbsolutePosition__40 + v24.GuiObject.AbsoluteSize) then
			l__UserInputService__15.MouseBehavior = Enum.MouseBehavior.Default;
		end;
	end;
end);
UpdateFadingForMouseState(true);
UpdateFadingForMouseState(false);
local v41 = {
	Signal = function()
		local v42 = {};
		local u15 = nil;
		local u16 = nil;
		local u17 = Instance.new("BindableEvent");
		function v42.fire(p21, ...)
			u15 = { ... };
			u16 = select("#", ...);
			u17:Fire();
		end;
		function v42.connect(p22, p23)
			if not p23 then
				error("connect(nil)", 2);
			end;
			return u17.Event:connect(function()
				p23(unpack(u15, 1, u16));
			end);
		end;
		function v42.wait(p24)
			u17.Event:wait();
			assert(u15, "Missing arg data, likely due to :TweenSize/Position corrupting threadrefs.");
			return unpack(u15, 1, u16);
		end;
		return v42;
	end
};
function SetVisibility(p25)
	v24:SetVisible(p25);
	u14.VisibilityStateChanged:fire(p25);
	u14.Visible = p25;
	if u14.IsCoreGuiEnabled then
		if p25 then

		else
			InstantFadeOut();
			return;
		end;
	else
		return;
	end;
	InstantFadeIn();
end;
u14.TopbarEnabled = true;
u14.MessageCount = 0;
u14.Visible = true;
u14.IsCoreGuiEnabled = true;
function u14.ToggleVisibility(p26)
	SetVisibility(not v24:GetVisible());
end;
function u14.SetVisible(p27, p28)
	if v24:GetVisible() ~= p28 then
		SetVisibility(p28);
	end;
end;
function u14.FocusChatBar(p29)
	v28:CaptureFocus();
end;
function u14.GetVisibility(p30)
	return v24:GetVisible();
end;
function u14.GetMessageCount(p31)
	return p31.MessageCount;
end;
function u14.TopbarEnabledChanged(p32, p33)
	p32.TopbarEnabled = p33;
	p32.CoreGuiEnabled:fire(game:GetService("StarterGui"):GetCoreGuiEnabled(Enum.CoreGuiType.Chat));
end;
function u14.IsFocused(p34, p35)
	return v28:IsFocused();
end;
u14.ChatBarFocusChanged = v41.Signal();
u14.VisibilityStateChanged = v41.Signal();
u14.MessagesChanged = v41.Signal();
u14.MessagePosted = v41.Signal();
u14.CoreGuiEnabled = v41.Signal();
u14.ChatMakeSystemMessageEvent = v41.Signal();
u14.ChatWindowPositionEvent = v41.Signal();
u14.ChatWindowSizeEvent = v41.Signal();
u14.ChatBarDisabledEvent = v41.Signal();
function u14.fChatWindowPosition(p36)
	return v24.GuiObject.Position;
end;
function u14.fChatWindowSize(p37)
	return v24.GuiObject.Size;
end;
function u14.fChatBarDisabled(p38)
	return not v28:GetEnabled();
end;
local u18 = true;
function u14.SpecialKeyPressed(p39, p40, p41)
	if p40 == Enum.SpecialKey.ChatHotkey and u18 then
		DoChatBarFocus();
	end;
end;
u14.CoreGuiEnabled:connect(function(p42)
	u14.IsCoreGuiEnabled = p42;
	p42 = p42 and (u14.TopbarEnabled or v9.ChatOnWithTopBarOff);
	v24:SetCoreGuiEnabled(p42);
	if p42 then
		InstantFadeIn();
		return;
	end;
	v28:ReleaseFocus();
	InstantFadeOut();
end);
function trimTrailingSpaces(p43)
	local v43 = #p43;
	while true do
		if 0 < v43 then

		else
			break;
		end;
		if p43:find("^%s", v43) then

		else
			break;
		end;
		v43 = v43 - 1;	
	end;
	return p43:sub(1, v43);
end;
local u19 = false;
u14.ChatMakeSystemMessageEvent:connect(function(p44)
	if p44.Text and type(p44.Text) == "string" then
		while not u19 do
			wait();		
		end;
		local l__GeneralChannelName__44 = v9.GeneralChannelName;
		local v45 = v24:GetChannel(l__GeneralChannelName__44);
		if v45 then
			v45:AddMessageToChannel({
				ID = -1, 
				FromSpeaker = nil, 
				SpeakerUserId = 0, 
				OriginalChannel = l__GeneralChannelName__44, 
				IsFiltered = true, 
				MessageLength = string.len(p44.Text), 
				Message = trimTrailingSpaces(p44.Text), 
				MessageType = v8.MessageTypeSetCore, 
				Time = os.time(), 
				ExtraData = p44
			});
			v25:UpdateMessagePostedInChannel(l__GeneralChannelName__44);
			u14.MessageCount = u14.MessageCount + 1;
			u14.MessagesChanged:fire(u14.MessageCount);
		end;
	end;
end);
u14.ChatBarDisabledEvent:connect(function(p45)
	if u18 then
		v28:SetEnabled(not p45);
		if p45 then
			v28:ReleaseFocus();
		end;
	end;
end);
u14.ChatWindowSizeEvent:connect(function(p46)
	v24.GuiObject.Size = p46;
end);
u14.ChatWindowPositionEvent:connect(function(p47)
	v24.GuiObject.Position = p47;
end);
function DoChatBarFocus()
	if not v24:GetCoreGuiEnabled() then
		return;
	end;
	if not v28:GetEnabled() then
		return;
	end;
	if not v28:IsFocused() then
		if v28:GetVisible() then
			u14:SetVisible(true);
			InstantFadeIn();
			v28:CaptureFocus();
			u14.ChatBarFocusChanged:fire(true);
		end;
	end;
end;
u13.Event:connect(function(p48)
	u14.ChatBarFocusChanged:fire(p48);
end);
function DoSwitchCurrentChannel(p49)
	if v24:GetChannel(p49) then
		v24:SwitchCurrentChannel(p49);
	end;
end;
function SendMessageToSelfInTargetChannel(p50, p51, p52)
	local v46 = v24:GetChannel(p51);
	if v46 then
		v46:AddMessageToChannel({
			ID = -1, 
			FromSpeaker = nil, 
			SpeakerUserId = 0, 
			OriginalChannel = p51, 
			IsFiltered = true, 
			MessageLength = string.len(p50), 
			Message = trimTrailingSpaces(p50), 
			MessageType = v8.MessageTypeSystem, 
			Time = os.time(), 
			ExtraData = p52
		});
	end;
end;
function chatBarFocused()
	if not u11 then
		DoBackgroundFadeIn();
		if u10 then
			DoTextFadeIn();
		end;
	end;
	u13:Fire(true);
end;
function chatBarFocusLost(p53, p54)
	DoBackgroundFadeIn();
	u13:Fire(false);
	if p53 then
		local v47 = v28:GetTextBox().Text;
		if v28:IsInCustomState() then
			local v48 = v28:GetCustomMessage();
			if v48 then
				v47 = v48;
			end;
			local v49 = v28:CustomStateProcessCompletedMessage(v47);
			v28:ResetCustomState();
			if v49 then
				return;
			end;
		end;
		local v50 = string.sub(v47, 1, v9.MaximumMessageLength);
		v28:GetTextBox().Text = "";
		if v50 ~= "" then
			u14.MessagePosted:fire(v50);
			if not v27:ProcessCompletedChatMessage(v50, v24) then
				local v51 = nil;
				if v9.DisallowedWhiteSpace then
					local v52 = #v9.DisallowedWhiteSpace;
					local v53 = 1 - 1;
					while true do
						if v9.DisallowedWhiteSpace[v53] == "\t" then
							v50 = string.gsub(v50, v9.DisallowedWhiteSpace[v53], " ");
						else
							v50 = string.gsub(v50, v9.DisallowedWhiteSpace[v53], "");
						end;
						if 0 <= 1 then
							if v53 < v52 then

							else
								break;
							end;
						elseif v52 < v53 then

						else
							break;
						end;
						v53 = v53 + 1;					
					end;
				end;
				v51 = string.gsub(string.gsub(v50, "\n", ""), "[ ]+", " ");
				local v54 = v24:GetTargetMessageChannel();
				if v54 then
					v29:SendMessage(v51, v54);
					return;
				end;
				v29:SendMessage(v51, nil);
			end;
		end;
	end;
end;
local u20 = {};
function setupChatBarConnections()
	local v55 = #u20;
	local v56 = 1 - 1;
	while true do
		u20[v56]:Disconnect();
		if 0 <= 1 then
			if v56 < v55 then

			else
				break;
			end;
		elseif v55 < v56 then

		else
			break;
		end;
		v56 = v56 + 1;	
	end;
	u20 = {};
	table.insert(u20, (v28:GetTextBox().FocusLost:connect(chatBarFocusLost)));
	table.insert(u20, (v28:GetTextBox().Focused:connect(chatBarFocused)));
end;
setupChatBarConnections();
v28.GuiObjectsChanged:connect(setupChatBarConnections);
function getEchoMessagesInGeneral()
	if v9.EchoMessagesInGeneralChannel == nil then
		return true;
	end;
	return v9.EchoMessagesInGeneralChannel;
end;
u3.OnMessageDoneFiltering.OnClientEvent:connect(function(p55)
	if not v9.ShowUserOwnFilteredMessage and p55.FromSpeaker == v18.Name then
		return;
	end;
	local l__OriginalChannel__57 = p55.OriginalChannel;
	local v58 = v24:GetChannel(l__OriginalChannel__57);
	if v58 then
		v58:UpdateMessageFiltered(p55);
	end;
	if getEchoMessagesInGeneral() and v9.GeneralChannelName and l__OriginalChannel__57 ~= v9.GeneralChannelName then
		local v59 = v24:GetChannel(v9.GeneralChannelName);
		if v59 then
			v59:UpdateMessageFiltered(p55);
		end;
	end;
end);
u3.OnNewMessage.OnClientEvent:connect(function(p56, p57)
	local v60 = v24:GetChannel(p57);
	if v60 then
		v60:AddMessageToChannel(p56);
		if p56.FromSpeaker ~= v18.Name then
			v25:UpdateMessagePostedInChannel(p57);
		end;
		if getEchoMessagesInGeneral() and v9.GeneralChannelName and p57 ~= v9.GeneralChannelName then
			local v61 = v24:GetChannel(v9.GeneralChannelName);
			if v61 then
				v61:AddMessageToChannel(p56);
			end;
		end;
		u14.MessageCount = u14.MessageCount + 1;
		u14.MessagesChanged:fire(u14.MessageCount);
		DoFadeInFromNewInformation();
	end;
end);
u3.OnNewSystemMessage.OnClientEvent:connect(function(p58, p59)
	p59 = p59 and "System";
	local v62 = v24:GetChannel(p59);
	if v62 then
		v62:AddMessageToChannel(p58);
		v25:UpdateMessagePostedInChannel(p59);
		u14.MessageCount = u14.MessageCount + 1;
		u14.MessagesChanged:fire(u14.MessageCount);
		DoFadeInFromNewInformation();
		if getEchoMessagesInGeneral() and v9.GeneralChannelName and p59 ~= v9.GeneralChannelName then
			local v63 = v24:GetChannel(v9.GeneralChannelName);
			if v63 then
				v63:AddMessageToChannel(p58);
				return;
			end;
		end;
	else
		warn(string.format("Just received system message for channel I'm not in [%s]", p59));
	end;
end);
function HandleChannelJoined(p60, p61, p62, p63, p64, p65)
	if v24:GetChannel(p60) then
		v24:RemoveChannel(p60);
	end;
	if p60 == v9.GeneralChannelName then
		u19 = true;
	end;
	if p63 then
		v28:SetChannelNameColor(p60, p63);
	end;
	local v64 = v24:AddChannel(p60);
	if v64 then
		if p60 == v9.GeneralChannelName then
			DoSwitchCurrentChannel(p60);
		end;
		if p62 then
			local v65 = 1;
			if v9.MessageHistoryLengthPerChannel < #p62 then
				v65 = #p62 - v9.MessageHistoryLengthPerChannel;
			end;
			local v66 = #p62;
			local v67 = v65 - 1;
			while true do
				v64:AddMessageToChannel(p62[v67]);
				if 0 <= 1 then
					if v67 < v66 then

					else
						break;
					end;
				elseif v66 < v67 then

				else
					break;
				end;
				v67 = v67 + 1;			
			end;
			if getEchoMessagesInGeneral() then
				if p64 then
					if v9.GeneralChannelName then
						if p60 ~= v9.GeneralChannelName then
							local v68 = v24:GetChannel(v9.GeneralChannelName);
							if v68 then
								v68:AddMessagesToChannelByTimeStamp(p62, v65);
							end;
						end;
					end;
				end;
			end;
		end;
		if p61 ~= "" then
			local v69 = {
				ID = -1, 
				FromSpeaker = nil, 
				SpeakerUserId = 0, 
				OriginalChannel = p60, 
				IsFiltered = true, 
				MessageLength = string.len(p61), 
				Message = trimTrailingSpaces(p61), 
				MessageType = v8.MessageTypeWelcome, 
				Time = os.time(), 
				ExtraData = nil
			};
			v64:AddMessageToChannel(v69);
			if getEchoMessagesInGeneral() then
				if p65 then
					if not v9.ShowChannelsBar then
						if p60 ~= v9.GeneralChannelName then
							local v70 = v24:GetChannel(v9.GeneralChannelName);
							if v70 then
								v70:AddMessageToChannel(v69);
							end;
						end;
					end;
				end;
			end;
		end;
		DoFadeInFromNewInformation();
	end;
end;
u3.OnChannelJoined.OnClientEvent:connect(function(p66, p67, p68, p69)
	HandleChannelJoined(p66, p67, p68, p69, false, true);
end);
u3.OnChannelLeft.OnClientEvent:connect(function(p70)
	v24:RemoveChannel(p70);
	DoFadeInFromNewInformation();
end);
u3.OnMuted.OnClientEvent:connect(function(p71)

end);
u3.OnUnmuted.OnClientEvent:connect(function(p72)

end);
u3.OnMainChannelSet.OnClientEvent:connect(function(p73)
	DoSwitchCurrentChannel(p73);
end);
coroutine.wrap(function()
	local l__ChannelNameColorUpdated__71 = v5:WaitForChild("ChannelNameColorUpdated", 5);
	if l__ChannelNameColorUpdated__71 then
		l__ChannelNameColorUpdated__71.OnClientEvent:connect(function(p74, p75)
			v28:SetChannelNameColor(p74, p75);
		end);
	end;
end)();
local u21 = nil;
local u22 = nil;
local u23 = nil;
local u24 = nil;
pcall(function()
	u21 = l__StarterGui__4:GetCore("PlayerBlockedEvent");
	u22 = l__StarterGui__4:GetCore("PlayerMutedEvent");
	u23 = l__StarterGui__4:GetCore("PlayerUnblockedEvent");
	u24 = l__StarterGui__4:GetCore("PlayerUnmutedEvent");
end);
function SendSystemMessageToSelf(p76)
	local v72 = v24:GetCurrentChannel();
	if v72 then
		v72:AddMessageToChannel({
			ID = -1, 
			FromSpeaker = nil, 
			SpeakerUserId = 0, 
			OriginalChannel = v72.Name, 
			IsFiltered = true, 
			MessageLength = string.len(p76), 
			Message = trimTrailingSpaces(p76), 
			MessageType = v8.MessageTypeSystem, 
			Time = os.time(), 
			ExtraData = nil
		});
	end;
end;
function MutePlayer(p77)
	local l__MutePlayerRequest__73 = v5:FindFirstChild("MutePlayerRequest");
	if l__MutePlayerRequest__73 then

	else
		return false;
	end;
	return l__MutePlayerRequest__73:InvokeServer(p77.Name);
end;
if u21 then
	u21.Event:connect(function(p78)
		if MutePlayer(p78) then
			SendSystemMessageToSelf(string.gsub(u1:Get("GameChat_ChatMain_SpeakerHasBeenBlocked", string.format("Speaker '%s' has been blocked.", p78.Name)), "{RBX_NAME}", p78.Name));
		end;
	end);
end;
if u22 then
	u22.Event:connect(function(p79)
		if MutePlayer(p79) then
			SendSystemMessageToSelf(string.gsub(u1:Get("GameChat_ChatMain_SpeakerHasBeenMuted", string.format("Speaker '%s' has been muted.", p79.Name)), "{RBX_NAME}", p79.Name));
		end;
	end);
end;
function UnmutePlayer(p80)
	local l__UnMutePlayerRequest__74 = v5:FindFirstChild("UnMutePlayerRequest");
	if l__UnMutePlayerRequest__74 then

	else
		return false;
	end;
	return l__UnMutePlayerRequest__74:InvokeServer(p80.Name);
end;
if u23 then
	u23.Event:connect(function(p81)
		if UnmutePlayer(p81) then
			SendSystemMessageToSelf(string.gsub(u1:Get("GameChat_ChatMain_SpeakerHasBeenUnBlocked", string.format("Speaker '%s' has been unblocked.", p81.Name)), "{RBX_NAME}", p81.Name));
		end;
	end);
end;
if u24 then
	u24.Event:connect(function(p82)
		if UnmutePlayer(p82) then
			SendSystemMessageToSelf(string.gsub(u1:Get("GameChat_ChatMain_SpeakerHasBeenUnMuted", string.format("Speaker '%s' has been unmuted.", p82.Name)), "{RBX_NAME}", p82.Name));
		end;
	end);
end;
spawn(function()
	if v18.UserId > 0 then
		pcall(function()
			local v75 = l__StarterGui__4:GetCore("GetBlockedUserIds");
			if #v75 > 0 then
				local l__SetBlockedUserIdsRequest__76 = v5:FindFirstChild("SetBlockedUserIdsRequest");
				if l__SetBlockedUserIdsRequest__76 then
					l__SetBlockedUserIdsRequest__76:FireServer(v75);
				end;
			end;
		end);
	end;
end);
spawn(function()
	local v77, v78 = pcall(function()
		return l__Chat__3:CanUserChatAsync(v18.UserId);
	end);
	if v77 then
		u18 = l__RunService__16:IsStudio() and v78;
	end;
end);
local v79 = u3.GetInitDataRequest:InvokeServer();
for v80, v81 in pairs(v79.Channels) do
	if v81[1] == v9.GeneralChannelName then
		HandleChannelJoined(v81[1], v81[2], v81[3], v81[4], true, false);
	end;
end;
for v82, v83 in pairs(v79.Channels) do
	if v83[1] ~= v9.GeneralChannelName then
		HandleChannelJoined(v83[1], v83[2], v83[3], v83[4], true, false);
	end;
end;
return u14;

