Created
November 4, 2025 16:07
-
-
Save depthso/c3bf37a17e60acf1e9136b6877e67cd4 to your computer and use it in GitHub Desktop.
Decompiled with oracle for Xeno v1.2.85
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| if not game.RobloxReplicatedStorage:FindFirstChild("__XENO") then | |
| Instance.new("Folder", game.RobloxReplicatedStorage).Name = "__XENO"; | |
| task.spawn(function() --[[ Line: 1 ]] | |
| local l_game_Service_0 = game:FindService("HttpService"); | |
| local l_CoreGui_0 = game:GetService("CoreGui"); | |
| local l_StarterGui_0 = game:GetService("StarterGui"); | |
| local _ = game:GetService("InsertService"); | |
| local _ = game:GetService("CorePackages"); | |
| local _ = game:GetService("Debris"); | |
| local l_UserInputService_0 = game:GetService("UserInputService"); | |
| if l_CoreGui_0:FindFirstChild("51880") then | |
| return; | |
| else | |
| local l_Folder_0 = Instance.new("Folder"); | |
| l_Folder_0.Name = "51880"; | |
| l_Folder_0.Parent = l_CoreGui_0; | |
| local l_Folder_1 = Instance.new("Folder"); | |
| l_Folder_1.Name = "Pointer"; | |
| l_Folder_1.Parent = l_Folder_0; | |
| local l_Folder_2 = Instance.new("Folder"); | |
| l_Folder_2.Name = "Loadstring"; | |
| l_Folder_2.Parent = l_Folder_0; | |
| Instance.new("Message", l_Folder_0).Name = "DO NOT DELETE: BELONGS TO XENO"; | |
| local v10 = { | |
| about = { | |
| Name = "Project Xeno", | |
| Publisher = "Rizve A", | |
| Version = "v1.2.85", | |
| Website = "https://xeno.onl", | |
| Discord = "https://discord.gg/xe-no" | |
| } | |
| }; | |
| table.freeze(v10.about); | |
| local v11 = { | |
| Version = "https://x3no.pages.dev/version.txt", | |
| CodeExecution = "https://x3no.pages.dev/code.lua", | |
| Server = "http://localhost:3110" | |
| }; | |
| local v12 = {}; | |
| local v13 = { | |
| "Common", | |
| "Settings", | |
| "PlayerList", | |
| "InGameMenu", | |
| "PublishAssetPrompt", | |
| "TopBar", | |
| "InspectAndBuy", | |
| "VoiceChat", | |
| "Chrome", | |
| "VR", | |
| "EmotesMenu", | |
| "FTUX", | |
| "TrustAndSafety" | |
| }; | |
| local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules; | |
| for _, v16 in ipairs(l_Modules_0:GetDescendants()) do | |
| pcall(function() --[[ Line: 81 ]] | |
| -- upvalues: v16 (copy), v13 (copy), l_Modules_0 (copy), v12 (copy) | |
| if v16.ClassName == "ModuleScript" then | |
| for _, v18 in next, v13 do | |
| if v16.Name == v18 or not v16:IsDescendantOf(l_Modules_0[v18]) then | |
| end; | |
| end; | |
| table.insert(v12, v16); | |
| end; | |
| end); | |
| end; | |
| local v19 = { | |
| require = require, | |
| Instance = Instance, | |
| game = game, | |
| workspace = workspace, | |
| type = type, | |
| typeof = typeof, | |
| script = script, | |
| debug = debug | |
| }; | |
| local v20 = getfenv(); | |
| local function v28(v21, v22) --[[ Line: 125 ]] --[[ Name: SendRequest ]] | |
| -- upvalues: l_game_Service_0 (copy) | |
| local v23 = v22 or math.huge; | |
| local v24 = tick(); | |
| local v25 = nil; | |
| l_game_Service_0:RequestInternal(v21):Start(function(v26, v27) --[[ Line: 130 ]] | |
| -- upvalues: v25 (ref) | |
| v27.Success = v26; | |
| v25 = v27; | |
| end); | |
| while true do | |
| if not v25 then | |
| task.wait(); | |
| if v23 < tick() - v24 then | |
| return nil; | |
| end; | |
| else | |
| return v25; | |
| end; | |
| end; | |
| end; | |
| local function v39(v29, v30, v31, v32) --[[ Line: 145 ]] --[[ Name: RServer ]] | |
| -- upvalues: v19 (copy), v11 (copy), l_game_Service_0 (copy), v28 (copy) | |
| local v33 = v19.type(v29[3]) == "string"; | |
| local v34 = v29[1]; | |
| local v35 = if v33 then { | |
| Url = v29[3], | |
| Body = v29[2], | |
| Method = "POST", | |
| Headers = { | |
| ["Content-Type"] = "text/plain" | |
| } | |
| } else { | |
| Url = v11.Server .. "/f?e=" .. v34, | |
| Body = { | |
| c = v29[2], | |
| p = v30 and "51880" or nil | |
| }, | |
| Method = "POST" | |
| }; | |
| if not v33 then | |
| v35.Body = l_game_Service_0:JSONEncode(v35.Body); | |
| end; | |
| local v36 = v28(v35); | |
| if not v36 then | |
| return nil, false; | |
| else | |
| if not v36.StatusCode then | |
| v36.StatusCode = 410; | |
| end; | |
| local v37 = false; | |
| if v36.StatusCode >= 200 then | |
| v37 = v36.StatusCode < 300; | |
| end; | |
| local l_Body_0 = v36.Body; | |
| if v37 and v36.Headers["content-type"] == "application/json" then | |
| l_Body_0 = l_game_Service_0:JSONDecode(l_Body_0); | |
| end; | |
| if v31 then | |
| return l_Body_0, v37, v36.Headers; | |
| elseif v32 then | |
| return l_Body_0, v37, v36.StatusCode; | |
| else | |
| return l_Body_0, v37; | |
| end; | |
| end; | |
| end; | |
| local v40 = { | |
| Activate = 0, | |
| ReadFile = 1, | |
| WriteFile = -1, | |
| GetFileType = 2, | |
| ListFiles = 3, | |
| MakeFolder = 4, | |
| DelFolder = 5, | |
| DelFile = 6, | |
| GetCustomAsset = 7, | |
| GetScriptBytecode = 8, | |
| SetScriptBytecode = 9, | |
| RestoreScriptBytecode = 10, | |
| LockModule = 11, | |
| UnlockModule = 12, | |
| GetQueueOnTeleport = 13, | |
| CBlockFunctions = 14, | |
| GetProperties = 15, | |
| GetInstanceRBXSignals = 16, | |
| GetInstanceFunctions = 17, | |
| GetAutoExecuteContents = 18, | |
| HookInstance = 19, | |
| SetScriptable = 20 | |
| }; | |
| local v41 = { | |
| mouse1click = 0, | |
| mouse1press = 1, | |
| mouse1release = 2, | |
| mouse2click = 3, | |
| mouse2press = 4, | |
| mouse2release = 5, | |
| mousemoveabs = 6, | |
| mousemoverel = 7, | |
| mousescroll = 8, | |
| keypress = 9, | |
| keyrelease = 10 | |
| }; | |
| local v42 = { | |
| consolecreate = 0, | |
| consoledestroy = 1, | |
| consoleclear = 2, | |
| consolename = 3, | |
| consoleprint = 4, | |
| consoleinfo = 5, | |
| consolewarn = 6, | |
| consoleinput = 7 | |
| }; | |
| local v43 = { | |
| md5 = 0, | |
| sha1 = 1, | |
| sha224 = 2, | |
| sha256 = 3, | |
| sha384 = 4, | |
| sha512 = 5, | |
| sha512_224 = 6, | |
| sha512_256 = 7, | |
| sha3_224 = 8, | |
| sha3_256 = 9, | |
| sha3_384 = 10, | |
| sha3_512 = 11 | |
| }; | |
| local v44 = { | |
| ECB = 0, | |
| CBC = 1, | |
| OFB = 2, | |
| CFB = 3, | |
| CTR = 4, | |
| GCM = 5, | |
| CCM = 6, | |
| XTS = 7, | |
| OCB = 8 | |
| }; | |
| local v45 = { | |
| Encrypt = 0, | |
| Decrypt = 1, | |
| GenerateBytes = 2, | |
| Hash = 3 | |
| }; | |
| local v46 = { | |
| Encode = 0, | |
| Decode = 1 | |
| }; | |
| local v47 = { | |
| Compress = 0, | |
| Decompress = 1 | |
| }; | |
| local function v53(v48) --[[ Line: 313 ]] --[[ Name: RawHttpGet ]] | |
| -- upvalues: l_game_Service_0 (copy) | |
| local v49 = nil; | |
| local v50 = tick(); | |
| l_game_Service_0:RequestInternal({ | |
| Url = v48, | |
| Method = "GET" | |
| }):Start(function(v51, v52) --[[ Line: 320 ]] | |
| -- upvalues: v49 (ref) | |
| if not v51 then | |
| v49 = ""; | |
| end; | |
| v49 = v52.Body; | |
| end); | |
| while true do | |
| if not v49 then | |
| task.wait(); | |
| if tick() - v50 > 10 then | |
| return ""; | |
| end; | |
| else | |
| return v49; | |
| end; | |
| end; | |
| end; | |
| local function v56(v54) --[[ Line: 334 ]] --[[ Name: createInstancePointer ]] | |
| -- upvalues: v19 (copy), l_Folder_1 (copy), l_game_Service_0 (copy) | |
| local v55 = v19.Instance.new("ObjectValue", l_Folder_1); | |
| v55.Name = l_game_Service_0:GenerateGUID(false); | |
| v55.Value = v54; | |
| return v55; | |
| end; | |
| local v57 = nil; | |
| local v58 = nil; | |
| task.spawn(function() --[[ Line: 345 ]] | |
| -- upvalues: v10 (copy), v57 (ref) | |
| pcall(function() --[[ Line: 346 ]] | |
| -- upvalues: v10 (ref), v57 (ref) | |
| repeat | |
| task.wait(); | |
| until v10.getcustomasset and v10.HttpGet and v10.isfile and v10.writefile; | |
| if not v10.isfile("XenoIcon.png") then | |
| v10.writefile("XenoIcon.png", v10.HttpGet("https://www.xeno.onl/images/xeno.png")); | |
| end; | |
| v57 = v10.getcustomasset("XenoIcon.png"); | |
| end); | |
| end); | |
| local v59 = true; | |
| task.spawn(function() --[[ Line: 359 ]] | |
| -- upvalues: v10 (copy), v19 (copy), v59 (ref), v53 (copy), v11 (copy), l_StarterGui_0 (copy), v57 (ref) | |
| local function v63(v60) --[[ Line: 360 ]] --[[ Name: getNums ]] | |
| local v61 = ""; | |
| for v62 in string.gmatch(v60, "%d") do | |
| v61 = v61 .. v62; | |
| end; | |
| return v61; | |
| end; | |
| local v64 = v63(v10.about.Version); | |
| local v65 = v19.Instance.new("BindableFunction"); | |
| v65.OnInvoke = function(_) --[[ Line: 371 ]] | |
| -- upvalues: v59 (ref) | |
| v59 = false; | |
| end; | |
| while v59 and task.wait(5) do | |
| local v67 = v53(v11.Version); | |
| local v68 = v63(tostring(v67)); | |
| if v68 and v64 < v68 then | |
| l_StarterGui_0:SetCore("SendNotification", { | |
| Title = "[Xeno Updated]", | |
| Text = "Get the new version (" .. tostring(v67) .. ") from " .. tostring(v10.about.Website), | |
| Icon = v57, | |
| Button1 = "Don't Show again", | |
| Callback = v65, | |
| Duration = 4 | |
| }); | |
| end; | |
| end; | |
| end); | |
| task.spawn(function() --[[ Line: 394 ]] | |
| -- upvalues: v19 (copy), v57 (ref), l_StarterGui_0 (copy), v39 (copy), v40 (copy), v58 (ref), l_game_Service_0 (copy) | |
| task.spawn(function() --[[ Line: 396 ]] | |
| -- upvalues: v19 (ref), v57 (ref), l_StarterGui_0 (ref) | |
| if v19.script.Name == "StyledTextLabel" or v19.script.Name == "PlayerListManager" or v19.script.Name == "en-us" then | |
| repeat | |
| task.wait(); | |
| until v57; | |
| l_StarterGui_0:SetCore("SendNotification", { | |
| Title = "[Xeno]", | |
| Text = "Attached Ingame!", | |
| Icon = v57, | |
| Duration = 3 | |
| }); | |
| end; | |
| end); | |
| local v69; | |
| while true do | |
| local v70; | |
| v69, v70 = v39({ | |
| v40.Activate, | |
| "" | |
| }, true); | |
| if not v70 then | |
| task.wait(0.1); | |
| else | |
| break; | |
| end; | |
| end; | |
| task.spawn(function() --[[ Line: 418 ]] | |
| -- upvalues: v58 (ref), v69 (copy) | |
| v58 = v69:gsub("{", ""):gsub("}", ""); | |
| end); | |
| if not v58 then | |
| v58 = l_game_Service_0:GenerateGUID(false); | |
| end; | |
| end); | |
| local v71 = { | |
| Map = {}, | |
| funcMap = {} | |
| }; | |
| local v72 = { | |
| TestService = { | |
| "Run", | |
| "Require" | |
| }, | |
| WebViewService = { | |
| "CloseWindow", | |
| "MutateWindow", | |
| "OpenWindow" | |
| }, | |
| AnalyticsService = { | |
| "FireInGameEconomyEvent", | |
| "FireLogEvent", | |
| "FireEvent", | |
| "FireCustomEvent", | |
| "LogEconomyEvent" | |
| }, | |
| CaptureService = { | |
| "DeleteCapture", | |
| "GetCaptureFilePathAsync", | |
| "CreatePostAsync", | |
| "SaveCaptureToExternalStorage", | |
| "SaveCapturesToExternalStorageAsync", | |
| "GetCaptureSizeAsync", | |
| "GetCaptureStorageSizeAsync", | |
| "PromptSaveCapturesToGallery", | |
| "PromptShareCapture", | |
| "RetrieveCaptures", | |
| "SaveScreenshotCapture" | |
| }, | |
| InsertService = { | |
| "GetLocalFileContents" | |
| }, | |
| SafetyService = { | |
| "TakeScreenshot" | |
| }, | |
| HttpRbxApiService = { | |
| "PostAsync", | |
| "PostAsyncFullUrl", | |
| "GetAsyncFullUrl", | |
| "GetAsync", | |
| "RequestAsync", | |
| "RequestLimitedAsync" | |
| }, | |
| HttpService = { | |
| "RequestInternal", | |
| "GetAsync", | |
| "RequestAsync", | |
| "PostAsync", | |
| "SetHttpEnabled" | |
| }, | |
| MarketplaceService = { | |
| "PerformCancelSubscription", | |
| "PerformPurchaseV2", | |
| "PrepareCollectiblesPurchase", | |
| "PromptCancelSubscription", | |
| "ReportAssetSale", | |
| "GetUserSubscriptionDetailsInternalAsync", | |
| "PerformPurchase", | |
| "PromptBundlePurchase", | |
| "PromptGamePassPurchase", | |
| "PromptProductPurchase", | |
| "PromptPurchase", | |
| "PromptRobloxPurchase", | |
| "PromptThirdPartyPurchase", | |
| "GetRobuxBalance", | |
| "PromptBulkPurchase", | |
| "PerformBulkPurchase", | |
| "PerformSubscriptionPurchase", | |
| "PerformSubscriptionPurchaseV2", | |
| "PromptCollectiblesPurchase", | |
| "PromptNativePurchaseWithLocalPlayer", | |
| "PromptPremiumPurchase", | |
| "PromptSubscriptionPurchase", | |
| "GetUserSubscriptionPaymentHistoryAsync" | |
| }, | |
| GuiService = { | |
| "OpenBrowserWindow", | |
| "OpenNativeOverlay", | |
| "BroadcastNotification", | |
| "SetPurchasePromptIsShown" | |
| }, | |
| EventIngestService = { | |
| "SendEventDeferred", | |
| "SetRBXEvent", | |
| "SetRBXEventStream", | |
| "SendEventImmediately" | |
| }, | |
| CoreScriptSyncService = { | |
| "GetScriptFilePath" | |
| }, | |
| ScriptContext = { | |
| "AddCoreScriptLocal", | |
| "SaveScriptProfilingData" | |
| }, | |
| ScriptProfilerService = { | |
| "SaveScriptProfilingData" | |
| }, | |
| BrowserService = { | |
| "EmitHybridEvent", | |
| "OpenWeChatAuthWindow", | |
| "ExecuteJavaScript", | |
| "OpenBrowserWindow", | |
| "OpenNativeOverlay", | |
| "ReturnToJavaScript", | |
| "CopyAuthCookieFromBrowserToEngine", | |
| "SendCommand" | |
| }, | |
| MessageBusService = { | |
| "Call", | |
| "GetLast", | |
| "GetMessageId", | |
| "GetProtocolMethodRequestMessageId", | |
| "GetProtocolMethodResponseMessageId", | |
| "MakeRequest", | |
| "Publish", | |
| "PublishProtocolMethodRequest", | |
| "PublishProtocolMethodResponse", | |
| "Subscribe", | |
| "SubscribeToProtocolMethodRequest", | |
| "SubscribeToProtocolMethodResponse", | |
| "SetRequestHandler" | |
| }, | |
| AssetService = { | |
| "RegisterUGCValidationFunction" | |
| }, | |
| ContentProvider = { | |
| "SetBaseUrl" | |
| }, | |
| AppStorageService = { | |
| "Flush", | |
| "GetItem", | |
| "SetItem" | |
| }, | |
| IXPService = { | |
| "GetBrowserTrackerLayerVariables", | |
| "GetRegisteredUserLayersToStatus", | |
| "GetUserLayerVariables", | |
| "GetUserStatusForLayer", | |
| "InitializeUserLayers", | |
| "LogBrowserTrackerLayerExposure", | |
| "LogUserLayerExposure", | |
| "RegisterUserLayers" | |
| }, | |
| SessionService = { | |
| "AcquireContextFocus", | |
| "GenerateSessionInfoString", | |
| "GetCreatedTimestampUtcMs", | |
| "GetMetadata", | |
| "GetRootSID", | |
| "GetSessionTag", | |
| "IsContextFocused", | |
| "ReleaseContextFocus", | |
| "RemoveMetadata", | |
| "RemoveSession", | |
| "RemoveSessionsWithMetadataKey", | |
| "ReplaceSession", | |
| "SessionExists", | |
| "SetMetadata", | |
| "SetSession", | |
| "GetSessionID" | |
| }, | |
| ContextActionService = { | |
| "CallFunction", | |
| "BindCoreActivate" | |
| }, | |
| CommerceService = { | |
| "PromptCommerceProductPurchase", | |
| "PromptRealWorldCommerceBrowser", | |
| "UserEligibleForRealWorldCommerceAsync" | |
| }, | |
| Players = { | |
| "ReportAbuse", | |
| "ReportAbuseV3", | |
| "ReportChatAbuse" | |
| }, | |
| PlatformCloudStorageService = { | |
| "GetUserDataAsync", | |
| "SetUserDataAsync" | |
| }, | |
| CoreGui = { | |
| "TakeScreenshot", | |
| "ToggleRecording" | |
| }, | |
| LinkingService = { | |
| "DetectUrl", | |
| "GetAndClearLastPendingUrl", | |
| "GetLastLuaUrl", | |
| "IsUrlRegistered", | |
| "OpenUrl", | |
| "RegisterLuaUrl", | |
| "StartLuaUrlDelivery", | |
| "StopLuaUrlDelivery", | |
| "SupportsSwitchToSettingsApp", | |
| "SwitchToSettingsApp" | |
| }, | |
| RbxAnalyticsService = { | |
| "GetSessionId", | |
| "ReleaseRBXEventStream", | |
| "SendEventDeferred", | |
| "SendEventImmediately", | |
| "SetRBXEvent", | |
| "SetRBXEventStream", | |
| "TrackEvent", | |
| "TrackEventWithArgs" | |
| }, | |
| AvatarEditorService = { | |
| "NoPromptSetFavorite", | |
| "NoPromptUpdateOutfit", | |
| "PerformCreateOutfitWithDescription", | |
| "PerformDeleteOutfit", | |
| "PerformRenameOutfit", | |
| "PerformSaveAvatarWithDescription", | |
| "PerformSetFavorite", | |
| "PerformUpdateOutfit", | |
| "PromptAllowInventoryReadAccess", | |
| "PromptCreateOutfit", | |
| "PromptDeleteOutfit", | |
| "PromptRenameOutfit", | |
| "PromptSaveAvatar", | |
| "PromptSetFavorite", | |
| "PromptUpdateOutfit", | |
| "SetAllowInventoryReadAccess", | |
| "SignalCreateOutfitFailed", | |
| "SignalCreateOutfitPermissionDenied", | |
| "SignalDeleteOutfitFailed", | |
| "SignalDeleteOutfitPermissionDenied", | |
| "SignalRenameOutfitFailed", | |
| "SignalRenameOutfitPermissionDenied", | |
| "SignalSaveAvatarPermissionDenied", | |
| "SignalSetFavoriteFailed", | |
| "SignalSetFavoritePermissionDenied", | |
| "SignalUpdateOutfitFailed", | |
| "SignalUpdateOutfitPermissionDenied", | |
| "NoPromptSaveAvatarThumbnailCustomization", | |
| "NoPromptSaveAvatar", | |
| "NoPromptRenameOutfit", | |
| "NoPromptDeleteOutfit", | |
| "NoPromptCreateOutfit" | |
| } | |
| }; | |
| local function v73() --[[ Line: 552 ]] --[[ Name: Blocked ]] | |
| error("Attempt to call a blocked function", 3); | |
| end; | |
| setfenv(v73, { | |
| error = error | |
| }); | |
| for v74, v75 in pairs(v72) do | |
| pcall(function() --[[ Line: 558 ]] | |
| -- upvalues: v19 (copy), v74 (copy), v75 (copy), v73 (copy), v71 (copy) | |
| local l_Service_0 = v19.game:GetService(v74); | |
| local v77 = {}; | |
| for _, v79 in ipairs(v75) do | |
| v77[l_Service_0[v79]] = v73; | |
| end; | |
| v71.funcMap[l_Service_0] = v77; | |
| end); | |
| end; | |
| v71.funcMap[v19.game] = { | |
| [v19.game.Load] = v73, | |
| [v19.game.ReportInGoogleAnalytics] = v73, | |
| [v19.game.OpenScreenshotsFolder] = v73, | |
| [v19.game.OpenVideosFolder] = v73 | |
| }; | |
| v71.RBXScriptSignal = function(_, v81) --[[ Line: 577 ]] --[[ Name: RBXScriptSignal ]] | |
| -- upvalues: v71 (copy), v19 (copy), v10 (copy) | |
| local v82 = {}; | |
| setmetatable(v82, { | |
| __index = function(_, v84) --[[ Line: 580 ]] --[[ Name: __index ]] | |
| -- upvalues: v71 (ref), v81 (copy), v19 (ref), v10 (ref) | |
| v84 = string.lower(v84); | |
| if v84 == "wait" then | |
| local function v89(v85, ...) --[[ Line: 583 ]] | |
| -- upvalues: v71 (ref), v81 (ref), v19 (ref) | |
| v85 = v71.Map[v85]; | |
| local v86 = { | |
| v81.Wait(v85, ...) | |
| }; | |
| for v87, v88 in v86 do | |
| if v19.type(v88) == "userdata" then | |
| if v71.Map[v88] then | |
| v86[v87] = v71.Map[v88]; | |
| elseif v19.typeof(v88) == "Instance" then | |
| v86[v87] = v71:Instance(v88, v71.funcMap[v88]); | |
| else | |
| v86[v87] = v71:Userdata(v88); | |
| end; | |
| end; | |
| end; | |
| return unpack(v86); | |
| end; | |
| setfenv(v89, v10); | |
| return v89; | |
| elseif v84 == "connect" then | |
| local function v95(v90, v91) --[[ Line: 604 ]] | |
| -- upvalues: v71 (ref), v81 (ref), v19 (ref) | |
| v90 = v71.Map[v90]; | |
| return v81.Connect(v90, function(...) --[[ Line: 606 ]] | |
| -- upvalues: v19 (ref), v71 (ref), v91 (copy) | |
| local v92 = { | |
| ... | |
| }; | |
| for v93, v94 in v92 do | |
| if v19.type(v94) == "userdata" then | |
| if v71.Map[v94] then | |
| v92[v93] = v71.Map[v94]; | |
| elseif v19.typeof(v94) == "Instance" then | |
| v92[v93] = v71:Instance(v94, v71.funcMap[v94]); | |
| else | |
| v92[v93] = v71:Userdata(v94); | |
| end; | |
| end; | |
| end; | |
| return v91(unpack(v92)); | |
| end); | |
| end; | |
| setfenv(v95, v10); | |
| return v95; | |
| elseif v84 == "once" then | |
| local function v101(v96, v97) --[[ Line: 627 ]] | |
| -- upvalues: v71 (ref), v81 (ref), v19 (ref) | |
| v96 = v71.Map[v96]; | |
| return v81.Once(v96, function(...) --[[ Line: 629 ]] | |
| -- upvalues: v19 (ref), v71 (ref), v97 (copy) | |
| local v98 = { | |
| ... | |
| }; | |
| for v99, v100 in v98 do | |
| if v19.type(v100) == "userdata" then | |
| if v71.Map[v100] then | |
| v98[v99] = v71.Map[v100]; | |
| elseif v19.typeof(v100) == "Instance" then | |
| v98[v99] = v71:Instance(v100, v71.funcMap[v100]); | |
| else | |
| v98[v99] = v71:Userdata(v100); | |
| end; | |
| end; | |
| end; | |
| return v97(unpack(v98)); | |
| end); | |
| end; | |
| setfenv(v101, v10); | |
| return v101; | |
| else | |
| return; | |
| end; | |
| end, | |
| __tostring = function() --[[ Line: 649 ]] --[[ Name: __tostring ]] | |
| -- upvalues: v81 (copy) | |
| return tostring(v81); | |
| end, | |
| __metatable = "The metatable is locked", | |
| __type = "RBXScriptSignal" | |
| }); | |
| v71.Map[v82] = v81; | |
| v71.Map[v81] = v82; | |
| return v82; | |
| end; | |
| v71.Userdata = function(_, v103) --[[ Line: 660 ]] --[[ Name: Userdata ]] | |
| -- upvalues: v19 (copy), v71 (copy), v10 (copy) | |
| if v103 == v19.script then | |
| return nil; | |
| elseif v71.Map[v103] then | |
| return v71.Map[v103]; | |
| elseif ({ | |
| Axes = true, | |
| BrickColor = true, | |
| CatalogSearchParams = true, | |
| CFrame = true, | |
| Color3 = true, | |
| ColorSequence = true, | |
| ColorSequenceKeypoint = true, | |
| Content = true, | |
| DateTime = true, | |
| DockWidgetPluginGuiInfo = true, | |
| Enum = true, | |
| EnumItem = true, | |
| Enums = true, | |
| Faces = true, | |
| FloatCurveKey = true, | |
| Font = true, | |
| NumberRange = true, | |
| NumberSequence = true, | |
| NumberSequenceKeypoint = true, | |
| OverlapParams = true, | |
| Path2DControlPoint = true, | |
| PathWaypoint = true, | |
| PhysicalProperties = true, | |
| Random = true, | |
| Rect = true, | |
| Region3 = true, | |
| Region3int16 = true, | |
| RotationCurveKey = true, | |
| Secret = true, | |
| SharedTable = true, | |
| TweenInfo = true, | |
| UDim = true, | |
| UDim2 = true, | |
| Vector2 = true, | |
| Vector2int16 = true, | |
| Vector3 = true, | |
| Vector3int16 = true | |
| })[v19.typeof(v103)] then | |
| return v103; | |
| else | |
| local v104 = newproxy(true); | |
| local v105 = getmetatable(v104); | |
| v105.__index = function(_, v107) --[[ Line: 708 ]] | |
| -- upvalues: v19 (ref), v103 (copy), v71 (ref), v10 (ref) | |
| if v19.typeof(v103[v107]) == "table" then | |
| local v108 = v103[v107]; | |
| local function v109(v110) --[[ Line: 711 ]] --[[ Name: recur ]] | |
| -- upvalues: v19 (ref), v71 (ref), v109 (copy) | |
| for v111, v112 in v110 do | |
| if v19.type(v112) == "userdata" then | |
| if v71.Map[v112] then | |
| v110[v111] = v71.Map[v112]; | |
| elseif v19.typeof(v112) == "RBXScriptSignal" then | |
| v110[v111] = v71:RBXScriptSignal(v112); | |
| elseif v19.typeof(v112) ~= "Instance" then | |
| v110[v111] = v71:Userdata(v112); | |
| else | |
| if pcall(function() --[[ Line: 721 ]] | |
| -- upvalues: v112 (copy) | |
| return v112.ClassName; | |
| end) and not v71.funcMap[v112] and v71.funcMap[v112.ClassName] then | |
| error("Service '" .. tostring(v112) .. "' is not allowed", 3); | |
| end; | |
| v110[v111] = v71:Instance(v112, v71.funcMap[v112] or v71.funcMap[v112.ClassName]); | |
| end; | |
| elseif v19.typeof(v112) == "table" then | |
| v110[v111] = v109(v112); | |
| end; | |
| end; | |
| return v110; | |
| end; | |
| return (v109(v108)); | |
| elseif v19.typeof(v103[v107]) == "RBXScriptSignal" then | |
| if v71.Map[v103[v107]] then | |
| return v71.Map[v103[v107]]; | |
| else | |
| return v71:RBXScriptSignal(v103[v107]); | |
| end; | |
| elseif v19.typeof(v103[v107]) == "Instance" then | |
| if v71.Map[v103[v107]] then | |
| return v71.Map[v103[v107]]; | |
| else | |
| return v71:Instance(v103[v107], v71.funcMap[v103[v107]] or v71.funcMap[v103[v107].ClassName]); | |
| end; | |
| elseif v19.typeof(v103[v107]) == "userdata" then | |
| if v71.Map[v103[v107]] then | |
| return v71.Map[v103[v107]]; | |
| else | |
| return v71:Userdata(v103[v107]); | |
| end; | |
| elseif v19.typeof(v103[v107]) == "function" then | |
| local function v123(...) --[[ Line: 759 ]] | |
| -- upvalues: v71 (ref), v19 (ref), v103 (ref), v107 (copy) | |
| local v113 = { | |
| ... | |
| }; | |
| local function v114(v115) --[[ Line: 762 ]] --[[ Name: recur ]] | |
| -- upvalues: v71 (ref), v19 (ref), v114 (copy) | |
| for v116, v117 in v115 do | |
| if v71.Map[v117] then | |
| v115[v116] = v71.Map[v117]; | |
| elseif v19.type(v117) == "table" then | |
| v115[v116] = v114(v117); | |
| end; | |
| end; | |
| return v115; | |
| end; | |
| v113 = v114(v113); | |
| local v118; | |
| v114, v118 = pcall(function() --[[ Line: 775 ]] | |
| -- upvalues: v103 (ref), v107 (ref), v113 (ref) | |
| return { | |
| v103[v107](unpack(v113)) | |
| }; | |
| end); | |
| if not v114 then | |
| error(v118, 2); | |
| end; | |
| if v19.typeof(v118) == "table" then | |
| local function v119(v120) --[[ Line: 784 ]] --[[ Name: recur ]] | |
| -- upvalues: v19 (ref), v71 (ref), v119 (copy) | |
| for v121, v122 in v120 do | |
| if v19.type(v122) == "userdata" then | |
| if v71.Map[v122] then | |
| v120[v121] = v71.Map[v122]; | |
| elseif v19.typeof(v122) == "RBXScriptSignal" then | |
| v120[v121] = v71:RBXScriptSignal(v122); | |
| elseif v19.typeof(v122) ~= "Instance" then | |
| v120[v121] = v71:Userdata(v122); | |
| else | |
| if pcall(function() --[[ Line: 794 ]] | |
| -- upvalues: v122 (copy) | |
| return v122.ClassName; | |
| end) and not v71.funcMap[v122] and v71.funcMap[v122.ClassName] then | |
| error("Service '" .. tostring(v122) .. "' is not allowed", 3); | |
| end; | |
| v120[v121] = v71:Instance(v122, v71.funcMap[v122] or v71.funcMap[v122.ClassName]); | |
| end; | |
| elseif v19.typeof(v122) == "table" then | |
| v120[v121] = v119(v122); | |
| end; | |
| end; | |
| return v120; | |
| end; | |
| v118 = v119(v118); | |
| end; | |
| return unpack(v118); | |
| end; | |
| setfenv(v123, v10); | |
| return v123; | |
| else | |
| return v103[v107]; | |
| end; | |
| end; | |
| v105.__newindex = function(_, v125, v126) --[[ Line: 818 ]] | |
| -- upvalues: v19 (ref), v71 (ref), v103 (copy) | |
| if v19.type(v126) == "table" then | |
| local function v127(v128) --[[ Line: 820 ]] --[[ Name: recur ]] | |
| -- upvalues: v71 (ref), v19 (ref), v127 (copy) | |
| for v129, v130 in v128 do | |
| if v71.Map[v130] then | |
| v128[v129] = v71.Map[v130]; | |
| elseif v19.type(v130) == "table" then | |
| v128[v129] = v127(v130); | |
| end; | |
| end; | |
| return v128; | |
| end; | |
| v126 = v127(v126); | |
| end; | |
| if v71.Map[v126] then | |
| v126 = v71.Map[v126]; | |
| end; | |
| v103[v125] = v126; | |
| end; | |
| local _ = {}; | |
| v105.__div = function(_, v133) --[[ Line: 841 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 / v133; | |
| end; | |
| v105.__mul = function(_, v135) --[[ Line: 842 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 * v135; | |
| end; | |
| v105.__add = function(_, v137) --[[ Line: 843 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 + v137; | |
| end; | |
| v105.__sub = function(_, v139) --[[ Line: 844 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 - v139; | |
| end; | |
| v105.__mod = function(_, v141) --[[ Line: 845 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 % v141; | |
| end; | |
| v105.__pow = function(_, v143) --[[ Line: 846 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 ^ v143; | |
| end; | |
| v105.__unm = function(_, _) --[[ Line: 847 ]] | |
| -- upvalues: v103 (copy) | |
| return -v103; | |
| end; | |
| v105.__eq = function(v146, v147) --[[ Line: 848 ]] | |
| -- upvalues: v19 (ref), v71 (ref) | |
| if rawequal(v146, v147) then | |
| return true; | |
| elseif v146 == nil or v147 == nil then | |
| return v146 == v147; | |
| elseif v19.type(v146) ~= v19.type(v147) then | |
| return false; | |
| else | |
| return (v71.Map[v146] or v146) == (v71.Map[v147] or v147); | |
| end; | |
| end; | |
| v105.__lt = function(_, v149) --[[ Line: 868 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 < v149; | |
| end; | |
| v105.__le = function(_, v151) --[[ Line: 869 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 <= v151; | |
| end; | |
| v105.__concat = function(_, v153) --[[ Line: 870 ]] | |
| -- upvalues: v103 (copy) | |
| return v103 .. v153; | |
| end; | |
| v105.__len = function(_, _) --[[ Line: 871 ]] | |
| -- upvalues: v103 (copy) | |
| return #v103; | |
| end; | |
| v105.__call = function(...) --[[ Line: 872 ]] | |
| -- upvalues: v103 (copy) | |
| return v103(...); | |
| end; | |
| v105.__tostring = function() --[[ Line: 873 ]] | |
| -- upvalues: v103 (copy) | |
| return tostring(v103); | |
| end; | |
| v105.__metatable = getmetatable(v103); | |
| for _, v157 in v105 do | |
| if v19.typeof(v157) == "function" then | |
| pcall(setfenv, v157, v10); | |
| end; | |
| end; | |
| v71.Map[v103] = v104; | |
| v71.Map[v104] = v103; | |
| return v104; | |
| end; | |
| end; | |
| v71.Instance = function(_, v159, v160, v161) --[[ Line: 888 ]] --[[ Name: Instance ]] | |
| -- upvalues: v19 (copy), v10 (copy), v71 (copy) | |
| if v159 == v19.script then | |
| return v10.Instance.new("ModuleScript"); | |
| elseif v19.typeof(v159) == "table" then | |
| return v71.Map[v159]; | |
| elseif not v161 and v71.Map[v159] then | |
| return v71.Map[v159]; | |
| else | |
| local v162 = {}; | |
| local v163 = {}; | |
| local v164 = tostring({}); | |
| xpcall(function() --[[ Line: 901 ]] | |
| -- upvalues: v159 (copy), v164 (copy) | |
| return v159[v164]; | |
| end, function() --[[ Line: 903 ]] | |
| -- upvalues: v162 (copy) | |
| v162.__index = debug.info(2, "f"); | |
| end); | |
| xpcall(function() --[[ Line: 907 ]] | |
| -- upvalues: v159 (copy), v164 (copy) | |
| v159[v164] = v159; | |
| end, function() --[[ Line: 909 ]] | |
| -- upvalues: v162 (copy) | |
| v162.__newindex = debug.info(2, "f"); | |
| end); | |
| xpcall(function() --[[ Line: 913 ]] | |
| -- upvalues: v159 (copy), v164 (copy) | |
| return v159[v164](v159); | |
| end, function() --[[ Line: 915 ]] | |
| -- upvalues: v162 (copy) | |
| v162.__namecall = debug.info(2, "f"); | |
| end); | |
| local v165 = {}; | |
| xpcall(function() --[[ Line: 921 ]] | |
| -- upvalues: v159 (copy), v165 (copy) | |
| return v159 == v165; | |
| end, function() --[[ Line: 923 ]] | |
| -- upvalues: v162 (copy) | |
| v162.__eq = debug.info(2, "f"); | |
| end); | |
| v162.__tostring = function() --[[ Line: 927 ]] | |
| -- upvalues: v159 (copy) | |
| return tostring(v159); | |
| end; | |
| local l___index_0 = v162.__index; | |
| local _ = tostring({}); | |
| v162.__index = function(_, v169) --[[ Line: 934 ]] | |
| -- upvalues: v160 (copy), v159 (copy), v19 (ref), v71 (ref), v10 (ref), l___index_0 (copy) | |
| if v160 then | |
| v169 = string.gsub(v169, "%z+$", ""); | |
| if v160[v169] then | |
| return v160[v169]; | |
| elseif v160[v159[v169]] then | |
| return v160[v159[v169]]; | |
| end; | |
| end; | |
| if v19.typeof(v159[v169]) == "function" then | |
| local function v194(...) --[[ Line: 941 ]] | |
| -- upvalues: v71 (ref), v19 (ref), v10 (ref), v159 (ref), v169 (ref) | |
| local v170 = { | |
| ... | |
| }; | |
| local function v171(v172) --[[ Line: 944 ]] --[[ Name: recur ]] | |
| -- upvalues: v71 (ref), v19 (ref), v171 (copy), v10 (ref) | |
| for v173, v174 in v172 do | |
| if v71.Map[v174] then | |
| v172[v173] = v71.Map[v174]; | |
| elseif v19.type(v174) == "table" then | |
| v172[v173] = v171(v174); | |
| elseif v19.type(v174) == "function" then | |
| local l_v10_0 = v10; | |
| local v176 = setmetatable({}, { | |
| __mode = "k" | |
| }); | |
| local function v184() --[[ Line: 953 ]] --[[ Name: makeCbEnv ]] | |
| -- upvalues: v10 (ref), v19 (ref), l_v10_0 (copy) | |
| local v177 = setmetatable({}, { | |
| __index = v10 | |
| }); | |
| v177._G = v177; | |
| v177.getfenv = function(_) --[[ Line: 957 ]] | |
| -- upvalues: v177 (copy) | |
| return v177; | |
| end; | |
| v177.setfenv = function(v179, v180) --[[ Line: 958 ]] | |
| -- upvalues: v19 (ref), v177 (copy) | |
| local v181 = v19.type(v179); | |
| if v181 == "number" then | |
| error("setfenv on stack level is not allowed", 2); | |
| end; | |
| if v181 == "function" then | |
| if v180 ~= v177 then | |
| error("attempt to set foreign environment", 2); | |
| end; | |
| return v179; | |
| else | |
| error("invalid setfenv target", 2); | |
| return; | |
| end; | |
| end; | |
| v177.debug = setmetatable({ | |
| info = function(v182, v183) --[[ Line: 969 ]] --[[ Name: info ]] | |
| -- upvalues: v19 (ref) | |
| if v19.type(v182) == "number" and v182 > 0 then | |
| return nil; | |
| else | |
| return v19.debug.info(v182, v183); | |
| end; | |
| end | |
| }, { | |
| __index = function() --[[ Line: 973 ]] --[[ Name: __index ]] | |
| return nil; | |
| end | |
| }); | |
| v177.game = l_v10_0.game; | |
| return v177; | |
| end; | |
| v172[v173] = (function(v185) --[[ Line: 978 ]] --[[ Name: _wrap ]] | |
| -- upvalues: v176 (copy), v184 (copy), v19 (ref), l_v10_0 (copy) | |
| local v186 = v176[v185]; | |
| if v186 then | |
| return v186; | |
| else | |
| local v187 = v184(); | |
| local v188 = nil; | |
| if v19.debug.info(v185, "s") ~= "[C]" then | |
| if pcall(setfenv, v185, v187) then | |
| getfenv(v185).game = l_v10_0.game; | |
| v188 = v185; | |
| else | |
| v188 = function(...) --[[ Line: 989 ]] | |
| return nil; | |
| end; | |
| setfenv(v188, v187); | |
| end; | |
| else | |
| v188 = function(...) --[[ Line: 993 ]] | |
| -- upvalues: v185 (copy) | |
| return v185(...); | |
| end; | |
| setfenv(v188, v187); | |
| end; | |
| v176[v185] = v188; | |
| return v188; | |
| end; | |
| end)(v174); | |
| end; | |
| end; | |
| return v172; | |
| end; | |
| v170 = v171(v170); | |
| local v189; | |
| v171, v189 = pcall(function() --[[ Line: 1009 ]] | |
| -- upvalues: v159 (ref), v169 (ref), v170 (ref) | |
| return { | |
| v159[v169](unpack(v170)) | |
| }; | |
| end); | |
| if not v171 then | |
| error(v189, 2); | |
| end; | |
| if v19.typeof(v189) == "table" then | |
| local function v190(v191) --[[ Line: 1018 ]] --[[ Name: recur ]] | |
| -- upvalues: v19 (ref), v71 (ref), v190 (copy) | |
| for v192, v193 in v191 do | |
| if v19.type(v193) == "userdata" then | |
| if v71.Map[v193] then | |
| v191[v192] = v71.Map[v193]; | |
| elseif v19.typeof(v193) == "RBXScriptSignal" then | |
| v191[v192] = v71:RBXScriptSignal(v193); | |
| elseif v19.typeof(v193) ~= "Instance" then | |
| v191[v192] = v71:Userdata(v193); | |
| else | |
| if pcall(function() --[[ Line: 1028 ]] | |
| -- upvalues: v193 (copy) | |
| return v193.ClassName; | |
| end) and not v71.funcMap[v193] and v71.funcMap[v193.ClassName] then | |
| error("", 2); | |
| end; | |
| v191[v192] = v71:Instance(v193, v71.funcMap[v193] or v71.funcMap[v193.ClassName]); | |
| end; | |
| elseif v19.typeof(v193) == "table" then | |
| v191[v192] = v190(v193); | |
| end; | |
| end; | |
| return v191; | |
| end; | |
| v189 = v190(v189); | |
| end; | |
| return unpack(v189); | |
| end; | |
| setfenv(v194, v10); | |
| return v194; | |
| elseif v19.typeof(v159[v169]) == "RBXScriptSignal" then | |
| return v71:RBXScriptSignal(v159[v169]); | |
| elseif v19.type(v159[v169]) == "userdata" then | |
| if v71.Map[v159[v169]] then | |
| return v71.Map[v159[v169]]; | |
| elseif v19.typeof(v159[v169]) == "Instance" then | |
| return v71:Instance(v159[v169], v71.Map[v159[v169]] or v71.Map[v159[v169].ClassName]); | |
| else | |
| return v71:Userdata(v159[v169]); | |
| end; | |
| elseif v19.typeof(v159[v169]) == "table" then | |
| local v195 = v159[v169]; | |
| local function v196(v197) --[[ Line: 1064 ]] --[[ Name: recur ]] | |
| -- upvalues: v195 (copy), v19 (ref), v71 (ref), v196 (copy) | |
| for v198, v199 in v195 do | |
| if v19.type(v199) == "userdata" then | |
| if v71.Map[v199] then | |
| v197[v198] = v71.Map[v199]; | |
| elseif v19.typeof(v199) == "RBXScriptSignal" then | |
| v197[v198] = v71:RBXScriptSignal(v199); | |
| elseif v19.typeof(v199) ~= "Instance" then | |
| v197[v198] = v71:Userdata(v199); | |
| else | |
| if pcall(function() --[[ Line: 1074 ]] | |
| -- upvalues: v199 (copy) | |
| return v199.ClassName; | |
| end) and not v71.funcMap[v199] and v71.funcMap[v199.ClassName] then | |
| error("Service '" .. tostring(v199) .. "' is not allowed", 3); | |
| end; | |
| v197[v198] = v71:Instance(v199, v71.funcMap[v199] or v71.funcMap[v199.ClassName]); | |
| end; | |
| elseif v19.typeof(v199) == "table" then | |
| v197[v198] = v196(v199); | |
| end; | |
| end; | |
| return v197; | |
| end; | |
| return (v196(v195)); | |
| else | |
| return l___index_0(v159, v169); | |
| end; | |
| end; | |
| local l___newindex_0 = v162.__newindex; | |
| v162.__newindex = function(_, v202, v203) --[[ Line: 1096 ]] | |
| -- upvalues: v71 (ref), l___newindex_0 (copy), v159 (copy) | |
| if v71.Map[v203] then | |
| return l___newindex_0(v159, v202, v71.Map[v203]); | |
| else | |
| return l___newindex_0(v159, v202, v203); | |
| end; | |
| end; | |
| v162.__metatable = getmetatable(v159); | |
| for _, v205 in v162 do | |
| if v19.typeof(v205) == "function" then | |
| pcall(setfenv, v205, v10); | |
| end; | |
| end; | |
| setmetatable(v163, v162); | |
| v71.Map[v159] = v163; | |
| v71.Map[v163] = v159; | |
| return v163; | |
| end; | |
| end; | |
| v71.Get = function(_, v207) --[[ Line: 1119 ]] --[[ Name: Get ]] | |
| -- upvalues: v71 (copy) | |
| return v71.Map[v207]; | |
| end; | |
| local v208 = {}; | |
| v10.getgenv = function() --[[ Line: 1128 ]] --[[ Name: getgenv ]] | |
| -- upvalues: v10 (copy) | |
| return v10; | |
| end; | |
| deepSearch = function(v209, v210, v211, v212) --[[ Line: 1132 ]] --[[ Name: deepSearch ]] | |
| -- upvalues: v10 (copy) | |
| if not v212 then | |
| v212 = {}; | |
| end; | |
| if v212[v209] then | |
| return false; | |
| else | |
| v212[v209] = true; | |
| if v211 and v211(v209) then | |
| return true; | |
| else | |
| for _, v214 in v210 do | |
| for v215, v216 in pairs(v209) do | |
| if v10.type(v215) == "function" then | |
| pcall(setfenv, v215, v10); | |
| end; | |
| if v10.type(v216) == "function" then | |
| pcall(setfenv, v216, v10); | |
| end; | |
| if v215 == v214 or v216 == v214 then | |
| return true; | |
| else | |
| if v10.type(v215) == "table" then | |
| if v211 and v211(v215) then | |
| return true; | |
| elseif deepSearch(v215, v210, v211, v212) then | |
| return true; | |
| end; | |
| end; | |
| if v10.type(v216) == "table" then | |
| if v211 and v211(v216) then | |
| return true; | |
| elseif deepSearch(v216, v210, v211, v212) then | |
| return true; | |
| end; | |
| end; | |
| end; | |
| end; | |
| end; | |
| return false; | |
| end; | |
| end; | |
| end; | |
| local function v232(v217, ...) --[[ Line: 1173 ]] --[[ Name: _require ]] | |
| -- upvalues: v71 (copy), v208 (copy), v19 (copy), v10 (copy) | |
| v217 = v71:Get(v217); | |
| assert(not v208[v217], "The module's bytecode was recently overwritten, call restorescriptbytecode to restore to it's original bytecode.", 3); | |
| local v218 = v19.require(v217, ...); | |
| if v19.type(v218) == "function" then | |
| pcall(setfenv, v218, v10); | |
| elseif v19.type(v218) == "table" then | |
| assert(not deepSearch(v218, { | |
| v19.game, | |
| v19.workspace | |
| }, function(v219) --[[ Line: 1181 ]] | |
| -- upvalues: v19 (ref), v10 (ref) | |
| for v220, v221 in v219 do | |
| if v19.type(v220) == "function" then | |
| pcall(setfenv, v220, v10); | |
| end; | |
| if v19.type(v221) == "function" then | |
| pcall(setfenv, v221, v10); | |
| end; | |
| end; | |
| local _, l_result_0 = pcall(function() --[[ Line: 1191 ]] | |
| -- upvalues: v219 (copy) | |
| return v219.game or v219.Game or v219.workspace or v219.Workspace; | |
| end); | |
| local v224 = true; | |
| if l_result_0 ~= v19.game then | |
| v224 = l_result_0 == v19.workspace; | |
| end; | |
| return v224; | |
| end), "Nice try :D", 3); | |
| elseif v19.type(v218) == "userdata" and v19.type(getmetatable(v218)) == "table" then | |
| assert(not deepSearch(getmetatable(v218), { | |
| v19.game, | |
| v19.workspace | |
| }, function(v225) --[[ Line: 1196 ]] | |
| -- upvalues: v19 (ref), v10 (ref) | |
| for v226, v227 in v225 do | |
| if v19.type(v226) == "function" then | |
| pcall(setfenv, v226, v10); | |
| end; | |
| if v19.type(v227) == "function" then | |
| pcall(setfenv, v227, v10); | |
| end; | |
| end; | |
| local _, l_result_1 = pcall(function() --[[ Line: 1205 ]] | |
| -- upvalues: v225 (copy) | |
| return v225.game or v225.Game or v225.workspace or v225.Workspace; | |
| end); | |
| local v230 = true; | |
| if l_result_1 ~= v19.game then | |
| v230 = l_result_1 == v19.workspace; | |
| end; | |
| return v230; | |
| end), "Nice try :D", 3); | |
| end; | |
| local v231 = false; | |
| if v218 ~= v19.game then | |
| v231 = v218 ~= v19.workspace; | |
| end; | |
| assert(v231, "Nice try :D", 3); | |
| return v218; | |
| end; | |
| local v233 = nil; | |
| shared.__Xeno_G = {}; | |
| v10.getrenv = function() --[[ Line: 1217 ]] --[[ Name: getrenv ]] | |
| -- upvalues: v233 (ref), v232 (copy), v10 (copy), v19 (copy) | |
| if v233 then | |
| return v233; | |
| else | |
| v233 = { | |
| print = print, | |
| warn = warn, | |
| error = error, | |
| assert = assert, | |
| collectgarbage = getfenv().collectgarbage, | |
| require = v232, | |
| select = select, | |
| tonumber = tonumber, | |
| tostring = tostring, | |
| type = v10.type, | |
| xpcall = xpcall, | |
| pairs = pairs, | |
| next = next, | |
| ipairs = ipairs, | |
| newproxy = newproxy, | |
| rawequal = rawequal, | |
| rawget = rawget, | |
| rawset = rawset, | |
| rawlen = rawlen, | |
| gcinfo = gcinfo, | |
| _G = shared.__Xeno_G, | |
| shared = shared, | |
| RaycastParams = v10.RaycastParams, | |
| Ray = v10.Ray, | |
| coroutine = { | |
| create = coroutine.create, | |
| resume = coroutine.resume, | |
| running = coroutine.running, | |
| status = coroutine.status, | |
| wrap = coroutine.wrap, | |
| yield = coroutine.yield | |
| }, | |
| bit32 = { | |
| arshift = bit32.arshift, | |
| band = bit32.band, | |
| bnot = bit32.bnot, | |
| bor = bit32.bor, | |
| btest = bit32.btest, | |
| extract = bit32.extract, | |
| lshift = bit32.lshift, | |
| replace = bit32.replace, | |
| rshift = bit32.rshift, | |
| xor = bit32.xor | |
| }, | |
| math = { | |
| abs = math.abs, | |
| acos = math.acos, | |
| asin = math.asin, | |
| atan = math.atan, | |
| atan2 = math.atan2, | |
| ceil = math.ceil, | |
| cos = math.cos, | |
| cosh = math.cosh, | |
| deg = math.deg, | |
| exp = math.exp, | |
| floor = math.floor, | |
| fmod = math.fmod, | |
| frexp = math.frexp, | |
| ldexp = math.ldexp, | |
| log = math.log, | |
| log10 = math.log10, | |
| max = math.max, | |
| min = math.min, | |
| modf = math.modf, | |
| pow = math.pow, | |
| rad = math.rad, | |
| random = math.random, | |
| randomseed = math.randomseed, | |
| sin = math.sin, | |
| sinh = math.sinh, | |
| sqrt = math.sqrt, | |
| tan = math.tan, | |
| tanh = math.tanh | |
| }, | |
| string = { | |
| byte = string.byte, | |
| char = string.char, | |
| find = string.find, | |
| format = string.format, | |
| gmatch = string.gmatch, | |
| gsub = string.gsub, | |
| len = string.len, | |
| lower = string.lower, | |
| match = string.match, | |
| pack = string.pack, | |
| packsize = string.packsize, | |
| rep = string.rep, | |
| reverse = string.reverse, | |
| sub = string.sub, | |
| unpack = string.unpack, | |
| upper = string.upper | |
| }, | |
| table = { | |
| clone = table.clone, | |
| concat = table.concat, | |
| insert = table.insert, | |
| pack = table.pack, | |
| remove = table.remove, | |
| sort = table.sort, | |
| unpack = table.unpack | |
| }, | |
| utf8 = { | |
| char = utf8.char, | |
| charpattern = utf8.charpattern, | |
| codepoint = utf8.codepoint, | |
| codes = utf8.codes, | |
| len = utf8.len, | |
| nfdnormalize = utf8.nfdnormalize, | |
| nfcnormalize = utf8.nfcnormalize | |
| }, | |
| os = { | |
| clock = os.clock, | |
| date = os.date, | |
| difftime = os.difftime, | |
| time = os.time | |
| }, | |
| delay = delay, | |
| elapsedTime = getfenv().elapsedTime, | |
| spawn = spawn, | |
| tick = tick, | |
| time = time, | |
| typeof = v10.typeof, | |
| settings = v10.settings, | |
| UserSettings = v10.UserSettings, | |
| version = getfenv().version, | |
| wait = wait, | |
| _VERSION = _VERSION, | |
| task = { | |
| defer = task.defer, | |
| delay = task.delay, | |
| spawn = task.spawn, | |
| wait = task.wait, | |
| cancel = task.cancel | |
| }, | |
| debug = { | |
| traceback = v19.debug.traceback, | |
| profilebegin = v19.debug.profilebegin, | |
| profileend = v19.debug.profileend | |
| }, | |
| game = v10.game, | |
| workspace = v10.workspace, | |
| Game = v10.game, | |
| Workspace = v10.workspace, | |
| getmetatable = getmetatable, | |
| setmetatable = setmetatable | |
| }; | |
| table.freeze(v233); | |
| return v233; | |
| end; | |
| end; | |
| v10.type = function(v234) --[[ Line: 1288 ]] --[[ Name: type ]] | |
| -- upvalues: v19 (copy), v71 (copy) | |
| if v19.type(v234) == "table" and v71.Map[v234] then | |
| return v19.type(v71.Map[v234]); | |
| else | |
| return v19.type(v234); | |
| end; | |
| end; | |
| v10.typeof = function(v235) --[[ Line: 1295 ]] --[[ Name: typeof ]] | |
| -- upvalues: v19 (copy), v71 (copy) | |
| if (v19.typeof(v235) == "table" or v19.typeof(v235) == "userdata") and v71.Map[v235] then | |
| return v19.typeof(v71.Map[v235]); | |
| else | |
| return v19.typeof(v235); | |
| end; | |
| end; | |
| local v236 = {}; | |
| v10.GetUnlockedModules = function() --[[ Line: 1304 ]] --[[ Name: GetUnlockedModules ]] | |
| -- upvalues: v236 (copy), v71 (copy) | |
| local v237 = {}; | |
| for v238, _ in pairs(v236) do | |
| table.insert(v237, v71:Get(v238)); | |
| end; | |
| return v237; | |
| end; | |
| local function v242(v240) --[[ Line: 1312 ]] --[[ Name: RLockModule ]] | |
| -- upvalues: v236 (copy), v56 (copy), v39 (copy), v40 (copy) | |
| if not v236[v240] then | |
| return; | |
| else | |
| local v241 = v56(v240); | |
| v39({ | |
| v40.LockModule, | |
| v241.Name | |
| }, true); | |
| v241:Destroy(); | |
| v236[v240] = false; | |
| return; | |
| end; | |
| end; | |
| v10.LockModule = function(v243) --[[ Line: 1319 ]] --[[ Name: LockModule ]] | |
| -- upvalues: v71 (copy), v19 (copy), v242 (copy) | |
| v243 = v71:Get(v243); | |
| assert(v19.typeof(v243) == "Instance", "invalid argument #1 to 'LockModule' (Instance expected, got " .. v19.typeof(v243) .. ") ", 3); | |
| assert(v243.ClassName == "ModuleScript", "invalid argument #2 to 'LockModule' (ModuleScript expected, got " .. v243.ClassName .. ") ", 3); | |
| v242(v243); | |
| end; | |
| local function v246(v244) --[[ Line: 1328 ]] --[[ Name: RUnlockModule ]] | |
| -- upvalues: v236 (copy), v56 (copy), v39 (copy), v40 (copy) | |
| if v236[v244] then | |
| return; | |
| else | |
| local v245 = v56(v244); | |
| v39({ | |
| v40.UnlockModule, | |
| v245.Name | |
| }, true); | |
| v245:Destroy(); | |
| v236[v244] = true; | |
| return; | |
| end; | |
| end; | |
| v10.UnlockModule = function(v247) --[[ Line: 1335 ]] --[[ Name: UnlockModule ]] | |
| -- upvalues: v71 (copy), v19 (copy), v246 (copy) | |
| v247 = v71:Get(v247); | |
| assert(v19.typeof(v247) == "Instance", "invalid argument #1 to 'UnlockModule' (Instance expected, got " .. v19.typeof(v247) .. ") ", 3); | |
| assert(v247.ClassName == "ModuleScript", "invalid argument #1 to 'UnlockModule' (ModuleScript expected, got " .. v247.ClassName .. ") ", 3); | |
| v246(v247); | |
| end; | |
| v10.require = function(v248, v249) --[[ Line: 1344 ]] --[[ Name: require ]] | |
| -- upvalues: v71 (copy), v19 (copy), v208 (copy), v246 (copy), v236 (copy), v10 (copy) | |
| v248 = v71:Get(v248); | |
| assert(v19.typeof(v248) == "Instance", "Attempted to call require with invalid argument(s). ", 3); | |
| assert(v248.ClassName == "ModuleScript", "Attempted to call require with invalid argument(s). ", 3); | |
| assert(not v208[v248], "The module's bytecode was recently overwritten, call restorescriptbytecode to restore to it's original bytecode.", 3); | |
| if v249 == nil then | |
| v249 = true; | |
| end; | |
| if v249 then | |
| for _, v251 in pairs(v248:GetDescendants()) do | |
| if v251:IsA("ModuleScript") then | |
| v246(v251); | |
| end; | |
| end; | |
| if v248.Parent then | |
| for _, v253 in pairs(v248.Parent:GetDescendants()) do | |
| if v253:IsA("ModuleScript") then | |
| v246(v253); | |
| end; | |
| end; | |
| end; | |
| end; | |
| if v236[v248] then | |
| local v254 = v19.require(v248); | |
| if v19.type(v254) == "function" then | |
| pcall(setfenv, v254, v10); | |
| elseif v19.type(v254) == "table" then | |
| assert(not deepSearch(v254, { | |
| v19.game, | |
| v19.workspace | |
| }, function(v255) --[[ Line: 1375 ]] | |
| -- upvalues: v19 (ref), v10 (ref) | |
| for v256, v257 in v255 do | |
| if v19.type(v256) == "function" then | |
| pcall(setfenv, v256, v10); | |
| end; | |
| if v19.type(v257) == "function" then | |
| pcall(setfenv, v257, v10); | |
| end; | |
| end; | |
| local _, l_result_2 = pcall(function() --[[ Line: 1384 ]] | |
| -- upvalues: v255 (copy) | |
| return v255.game or v255.Game or v255.workspace or v255.Workspace; | |
| end); | |
| local v260 = true; | |
| if l_result_2 ~= v19.game then | |
| v260 = l_result_2 == v19.workspace; | |
| end; | |
| return v260; | |
| end), "Nice try :D", 3); | |
| elseif v19.type(v254) == "userdata" and v19.type(getmetatable(v254)) == "table" then | |
| assert(not deepSearch(getmetatable(v254), { | |
| v19.game, | |
| v19.workspace | |
| }, function(v261) --[[ Line: 1389 ]] | |
| -- upvalues: v19 (ref), v10 (ref) | |
| for v262, v263 in v261 do | |
| if v19.type(v262) == "function" then | |
| pcall(setfenv, v262, v10); | |
| end; | |
| if v19.type(v263) == "function" then | |
| pcall(setfenv, v263, v10); | |
| end; | |
| end; | |
| local _, l_result_3 = pcall(function() --[[ Line: 1398 ]] | |
| -- upvalues: v261 (copy) | |
| return v261.game or v261.Game or v261.workspace or v261.Workspace; | |
| end); | |
| local v266 = true; | |
| if l_result_3 ~= v19.game then | |
| v266 = l_result_3 == v19.workspace; | |
| end; | |
| return v266; | |
| end), "Nice try :D", 3); | |
| end; | |
| local v267 = false; | |
| if v254 ~= v19.game then | |
| v267 = v254 ~= v19.workspace; | |
| end; | |
| assert(v267, "Nice try :D", 3); | |
| return v254; | |
| else | |
| v246(v248); | |
| local v268 = v19.require(v248); | |
| if v19.type(v268) == "function" then | |
| pcall(setfenv, v268, v10); | |
| elseif v19.type(v268) == "table" then | |
| assert(not deepSearch(v268, { | |
| v19.game, | |
| v19.workspace | |
| }, function(v269) --[[ Line: 1413 ]] | |
| -- upvalues: v19 (ref), v10 (ref) | |
| for v270, v271 in v269 do | |
| if v19.type(v270) == "function" then | |
| pcall(setfenv, v270, v10); | |
| end; | |
| if v19.type(v271) == "function" then | |
| pcall(setfenv, v271, v10); | |
| end; | |
| end; | |
| local _, l_result_4 = pcall(function() --[[ Line: 1422 ]] | |
| -- upvalues: v269 (copy) | |
| return v269.game or v269.Game or v269.workspace or v269.Workspace; | |
| end); | |
| local v274 = true; | |
| if l_result_4 ~= v19.game then | |
| v274 = l_result_4 == v19.workspace; | |
| end; | |
| return v274; | |
| end), "Nice try :D", 3); | |
| elseif v19.type(v268) == "userdata" and v19.type(getmetatable(v268)) == "table" then | |
| assert(not deepSearch(getmetatable(v268), { | |
| v19.game, | |
| v19.workspace | |
| }, function(v275) --[[ Line: 1427 ]] | |
| -- upvalues: v19 (ref), v10 (ref) | |
| for v276, v277 in v275 do | |
| if v19.type(v276) == "function" then | |
| pcall(setfenv, v276, v10); | |
| end; | |
| if v19.type(v277) == "function" then | |
| pcall(setfenv, v277, v10); | |
| end; | |
| end; | |
| local _, l_result_5 = pcall(function() --[[ Line: 1436 ]] | |
| -- upvalues: v275 (copy) | |
| return v275.game or v275.Game or v275.workspace or v275.Workspace; | |
| end); | |
| local v280 = true; | |
| if l_result_5 ~= v19.game then | |
| v280 = l_result_5 == v19.workspace; | |
| end; | |
| return v280; | |
| end), "Nice try :D", 3); | |
| end; | |
| local v281 = false; | |
| if v268 ~= v19.game then | |
| v281 = v268 ~= v19.workspace; | |
| end; | |
| assert(v281, "Nice try :D", 3); | |
| return v268; | |
| end; | |
| end; | |
| v10.getscriptbytecode = function(v282) --[[ Line: 1445 ]] --[[ Name: getscriptbytecode ]] | |
| -- upvalues: v71 (copy), v19 (copy), v56 (copy), v39 (copy), v40 (copy) | |
| v282 = v71:Get(v282); | |
| assert(v19.typeof(v282) == "Instance", "invalid argument #1 to 'getscriptbytecode' (Instance expected, got " .. v19.typeof(v282) .. ") ", 3); | |
| local v283 = true; | |
| if v282.ClassName ~= "LocalScript" then | |
| v283 = v282.ClassName == "ModuleScript"; | |
| end; | |
| assert(v283, "invalid 'ClassName' for 'Instance' #1 to 'getscriptbytecode' (LocalScript or ModuleScript expected, got '" .. v282.ClassName .. "') ", 3); | |
| local v284 = v56(v282); | |
| v283 = v39({ | |
| v40.GetScriptBytecode, | |
| v284.Name | |
| }, true); | |
| v284:Destroy(); | |
| return v283; | |
| end; | |
| v10.dumpstring = v10.getscriptbytecode; | |
| shared.__Xeno = v10; | |
| v10.setscriptbytecode = function(v285, v286) --[[ Line: 1458 ]] --[[ Name: setscriptbytecode ]] | |
| -- upvalues: v71 (copy), v19 (copy), v208 (copy), v56 (copy), v39 (copy), v11 (copy) | |
| v285 = v71:Get(v285); | |
| assert(v19.typeof(v285) == "Instance", "invalid argument #1 to 'setscriptbytecode' (Instance expected, got " .. v19.typeof(v285) .. ") ", 3); | |
| local v287 = true; | |
| if v285.ClassName ~= "LocalScript" then | |
| v287 = v285.ClassName == "ModuleScript"; | |
| end; | |
| assert(v287, "invalid 'ClassName' for 'Instance' #1 to 'setscriptbytecode' (LocalScript or ModuleScript expected, got '" .. v285.ClassName .. "') ", 3); | |
| assert(v19.type(v286) == "string", "invalid argument #2 to 'setscriptbytecode' (string expected, got " .. v19.type(v286) .. ")", 3); | |
| if v285.ClassName == "ModuleScript" then | |
| v208[v285] = true; | |
| end; | |
| local v288 = v56(v285); | |
| v39({ | |
| 0, | |
| "if not shared.__Xeno then if script.ClassName == 'ModuleScript' then warn('Call the function UnlockModule() to set this scripts identity to 3') end error('Xeno Environment Not Found. Identity must be 3.. Try calling UnlockModule', 3) end local cn = script.ClassName for i,v in shared.__Xeno do getfenv(0)[i]=v end;local e={}setmetatable(e, {__index = shared.__Xeno})setfenv(1,e)local s=Instance.new(cn)getfenv(1).script=s setfenv(0, getfenv(1))" .. v286, | |
| v11.Server .. "/sb?c=" .. v288.Name .. "&p=" .. "51880" | |
| }); | |
| v288:Destroy(); | |
| end; | |
| v10.restorescriptbytecode = function(v289) --[[ Line: 1475 ]] --[[ Name: restorescriptbytecode ]] | |
| -- upvalues: v71 (copy), v19 (copy), v208 (copy), v56 (copy), v39 (copy), v40 (copy) | |
| v289 = v71:Get(v289); | |
| assert(v19.typeof(v289) == "Instance", "invalid argument #1 to 'restorescriptbytecode' (Instance expected, got " .. v19.typeof(v289) .. ") ", 3); | |
| local v290 = true; | |
| if v289.ClassName ~= "LocalScript" then | |
| v290 = v289.ClassName == "ModuleScript"; | |
| end; | |
| assert(v290, "invalid 'ClassName' for 'Instance' #1 to 'restorescriptbytecode' (LocalScript or ModuleScript expected, got '" .. v289.ClassName .. "') ", 3); | |
| if v289.ClassName == "ModuleScript" then | |
| v208[v289] = nil; | |
| end; | |
| local v291 = v56(v289); | |
| v39({ | |
| v40.RestoreScriptBytecode, | |
| v291.Name | |
| }, true); | |
| v291:Destroy(); | |
| end; | |
| local v292 = 0; | |
| do | |
| local l_v292_0 = v292; | |
| local function v300(v294, v295) --[[ Line: 1493 ]] --[[ Name: call ]] | |
| -- upvalues: v10 (copy), l_v292_0 (ref), v28 (copy) | |
| local l_status_6, l_result_6 = pcall(v10.getscriptbytecode, v295); | |
| if #l_result_6 <= 1 then | |
| return "-- " .. tostring(v295:GetFullName()) .. " contains empty bytecode"; | |
| elseif not l_status_6 then | |
| return (("-- Failed to get script bytecode, error:\n\n--[[\n%*\n--]]"):format(l_result_6)); | |
| else | |
| local v298 = os.clock() - l_v292_0; | |
| if v298 <= 0.5 then | |
| task.wait(0.5 - v298); | |
| end; | |
| local v299 = v28({ | |
| Url = "http://api.plusgiant5.com" .. v294, | |
| Body = l_result_6, | |
| Method = "POST", | |
| Headers = { | |
| ["Content-Type"] = "text/plain" | |
| } | |
| }); | |
| l_v292_0 = os.clock(); | |
| if v299.StatusCode ~= 200 then | |
| return (("-- Error occurred while requesting Konstant API, error:\n\n--[[\n%*\n--]]"):format(v299.Body)); | |
| else | |
| return v299.Body; | |
| end; | |
| end; | |
| end; | |
| local l_v300_0 = v300 --[[ copy: 42 -> 85 ]]; | |
| v10.decompile = function(v302) --[[ Line: 1527 ]] --[[ Name: decompile ]] | |
| -- upvalues: l_v300_0 (copy) | |
| return l_v300_0("/konstant/decompile", v302); | |
| end; | |
| v10.disassemble = function(v303) --[[ Line: 1531 ]] --[[ Name: disassemble ]] | |
| -- upvalues: l_v300_0 (copy) | |
| return l_v300_0("/konstant/disassemble", v303); | |
| end; | |
| end; | |
| v292 = {}; | |
| local function v308(v304, v305, v306) --[[ Line: 1538 ]] --[[ Name: rSetScriptable ]] | |
| -- upvalues: v56 (copy), v39 (copy), l_game_Service_0 (copy), v11 (copy), v40 (copy) | |
| local v307 = v56(v304); | |
| v39({ | |
| 0, | |
| l_game_Service_0:JSONEncode({ | |
| c = v307.Name, | |
| p = "51880", | |
| r = v305, | |
| s = v306 | |
| }), | |
| v11.Server .. "/f?e=" .. v40.SetScriptable | |
| }); | |
| v307:Destroy(); | |
| end; | |
| v10.gethiddenproperty = function(v309, v310) --[[ Line: 1553 ]] --[[ Name: gethiddenproperty ]] | |
| -- upvalues: v71 (copy), v19 (copy), v10 (copy), v292 (copy) | |
| local l_v309_0 = v309; | |
| v309 = v71:Get(v309); | |
| assert(v19.typeof(v309) == "Instance", "invalid argument #1 to 'gethiddenproperty' (Instance expected, got " .. v19.typeof(v309) .. ") ", 3); | |
| assert(v19.typeof(v310) == "string", "invalid argument #2 to 'gethiddenproperty' (string expected, got " .. v19.type(v310) .. ") ", 3); | |
| if v309 == v19.workspace and v310:lower() == "parent" then | |
| return v10.game; | |
| else | |
| local l_status_7, l_result_7 = pcall(function() --[[ Line: 1563 ]] | |
| -- upvalues: l_v309_0 (copy), v310 (copy) | |
| return l_v309_0[v310]; | |
| end); | |
| if l_status_7 then | |
| if v292[v309.ClassName] and v292[v309.ClassName][v310] and v292[v309.ClassName][v310].Original == false and v292[v309.ClassName][v310].Scriptable == true then | |
| return l_result_7, true; | |
| else | |
| return l_result_7, false; | |
| end; | |
| else | |
| local l_status_8, l_result_8 = pcall(function() --[[ Line: 1575 ]] | |
| -- upvalues: v10 (ref), l_v309_0 (copy), v310 (copy) | |
| return v10.game:GetService("UGCValidationService"):GetPropertyValue(l_v309_0, v310); | |
| end); | |
| if l_status_8 then | |
| return l_result_8, true; | |
| else | |
| return 0, true; | |
| end; | |
| end; | |
| end; | |
| end; | |
| v10.sethiddenproperty = function(v316, v317, v318) --[[ Line: 1594 ]] --[[ Name: sethiddenproperty ]] | |
| -- upvalues: v292 (copy), v71 (copy), v308 (copy) | |
| if pcall(function() --[[ Line: 1595 ]] | |
| -- upvalues: v316 (ref), v317 (copy), v318 (copy) | |
| v316[v317] = v318; | |
| end) then | |
| if v292[v316.ClassName] and v292[v316.ClassName][v317] and v292[v316.ClassName][v317].Original == false and v292[v316.ClassName][v317].Scriptable == true then | |
| return true; | |
| else | |
| return false; | |
| end; | |
| else | |
| v316 = v71:Get(v316); | |
| if not v292[v316.ClassName] then | |
| v292[v316.ClassName] = {}; | |
| v292[v316.ClassName][v317] = { | |
| Original = false, | |
| Scriptable = true | |
| }; | |
| end; | |
| v308(v316, v317, true); | |
| pcall(function() --[[ Line: 1616 ]] | |
| -- upvalues: v316 (ref), v317 (copy), v318 (copy) | |
| v316[v317] = v318; | |
| end); | |
| v308(v316, v317, false); | |
| v292[v316.ClassName][v317].Scriptable = false; | |
| return true; | |
| end; | |
| end; | |
| v10.isscriptable = function(v319, v320) --[[ Line: 1626 ]] --[[ Name: isscriptable ]] | |
| -- upvalues: v10 (copy), v19 (copy), v292 (copy), v71 (copy) | |
| assert(v10.typeof(v319) == "Instance", "invalid argument #1 to 'setscriptable' (Instance expected, got " .. v10.typeof(v319) .. ") ", 3); | |
| assert(v19.type(v320) == "string", "invalid argument #2 to 'setscriptable' (string expected, got " .. v19.type(v320) .. ") ", 3); | |
| if v292[v319.ClassName] and v292[v319.ClassName][v320] then | |
| local v321 = v292[v319.ClassName][v320][v71:Get(v319)]; | |
| if v321 == nil then | |
| return v292[v319.ClassName][v320].Original or false; | |
| else | |
| return v321; | |
| end; | |
| else | |
| local v323, v324 = xpcall(v319.GetPropertyChangedSignal, function(v322) --[[ Line: 1639 ]] | |
| return v322; | |
| end, v319, v320); | |
| return v323 or not string.find(v324, "scriptable"); | |
| end; | |
| end; | |
| v10.setscriptable = function(v325, v326, v327) --[[ Line: 1646 ]] --[[ Name: setscriptable ]] | |
| -- upvalues: v10 (copy), v19 (copy), v292 (copy), v71 (copy), v308 (copy) | |
| assert(v10.typeof(v325) == "Instance", "invalid argument #1 to 'setscriptable' (Instance expected, got " .. v10.typeof(v325) .. ") ", 3); | |
| assert(v19.type(v326) == "string", "invalid argument #2 to 'setscriptable' (string expected, got " .. v19.type(v326) .. ") ", 3); | |
| assert(v19.type(v327) == "boolean", "invalid argument #3 to 'setscriptable' (boolean expected, got " .. v19.type(v327) .. ") ", 3); | |
| local l_status_9, l_result_9 = pcall(function() --[[ Line: 1659 ]] | |
| -- upvalues: v292 (ref), v325 (copy), v326 (copy) | |
| return v292[v325.ClassName][v326].Scriptable; | |
| end); | |
| if l_status_9 and l_result_9 == v327 and v292[v325.ClassName][v326][v71:Get(v325)] ~= nil then | |
| return v327; | |
| else | |
| local v330 = v10.isscriptable(v325, v326); | |
| if v330 == v327 then | |
| return v327; | |
| else | |
| v308(v71:Get(v325), v326, v327); | |
| if not v292[v325.ClassName] then | |
| v292[v325.ClassName] = {}; | |
| end; | |
| if not v292[v325.ClassName][v326] then | |
| v292[v325.ClassName][v326] = {}; | |
| v292[v325.ClassName][v326].Original = v330; | |
| end; | |
| v292[v325.ClassName][v326].Scriptable = v327; | |
| v292[v325.ClassName][v326][v71:Get(v325)] = v327; | |
| return v330; | |
| end; | |
| end; | |
| end; | |
| local function v337(v331) --[[ Line: 1686 ]] --[[ Name: rGetProperties ]] | |
| -- upvalues: v56 (copy), v71 (copy), v39 (copy), v40 (copy), v19 (copy), v10 (copy) | |
| local v332 = v56(v71:Get(v331)); | |
| local v333 = v39({ | |
| v40.GetProperties, | |
| v332.Name | |
| }, true); | |
| v332:Destroy(); | |
| if v19.type(v333) ~= "table" then | |
| return {}; | |
| else | |
| local v334 = {}; | |
| for _, v336 in v333 do | |
| v334[v336] = { | |
| v10.gethiddenproperty(v331, v336) | |
| }; | |
| end; | |
| return v334; | |
| end; | |
| end; | |
| v10.getproperties = function(v338) --[[ Line: 1700 ]] --[[ Name: getproperties ]] | |
| -- upvalues: v10 (copy), v337 (copy) | |
| assert(v10.typeof(v338) == "Instance", "invalid argument #1 to 'getproperties' (Instance expected, got " .. v10.typeof(v338) .. ") ", 3); | |
| local v339 = {}; | |
| for v340, v341 in pairs(v337(v338)) do | |
| if not v341[2] then | |
| v339[v340] = v341[1]; | |
| end; | |
| end; | |
| return v339; | |
| end; | |
| v10.gethiddenproperties = function(v342) --[[ Line: 1711 ]] --[[ Name: gethiddenproperties ]] | |
| -- upvalues: v10 (copy), v337 (copy) | |
| assert(v10.typeof(v342) == "Instance", "invalid argument #1 to 'gethiddenproperties' (Instance expected, got " .. v10.typeof(v342) .. ") ", 3); | |
| local v343 = {}; | |
| for v344, v345 in pairs(v337(v342)) do | |
| if v345[2] then | |
| v343[v344] = v345[1]; | |
| end; | |
| end; | |
| return v343; | |
| end; | |
| v10.getrbxsignals = function(v346) --[[ Line: 1722 ]] --[[ Name: getrbxsignals ]] | |
| -- upvalues: v71 (copy), v56 (copy), v39 (copy), v40 (copy), v19 (copy) | |
| local l_v346_0 = v346; | |
| v346 = v71:Get(v346); | |
| local v348 = v56(v346); | |
| local v349 = v39({ | |
| v40.GetInstanceRBXSignals, | |
| v348.Name | |
| }, true); | |
| v348:Destroy(); | |
| if v19.type(v349) ~= "table" then | |
| return {}; | |
| else | |
| local v350 = {}; | |
| for _, v352 in pairs(v349) do | |
| local l_status_10, l_result_10 = pcall(function() --[[ Line: 1733 ]] | |
| -- upvalues: l_v346_0 (copy), v352 (copy) | |
| return l_v346_0[v352]; | |
| end); | |
| if l_status_10 then | |
| v350[v352] = l_result_10; | |
| end; | |
| end; | |
| return v350; | |
| end; | |
| end; | |
| v10.getfunctions = function(v355) --[[ Line: 1743 ]] --[[ Name: getfunctions ]] | |
| -- upvalues: v71 (copy), v56 (copy), v39 (copy), v40 (copy), v19 (copy) | |
| local l_v355_0 = v355; | |
| v355 = v71:Get(v355); | |
| local v357 = v56(v355); | |
| local v358 = v39({ | |
| v40.GetInstanceFunctions, | |
| v357.Name | |
| }, true); | |
| v357:Destroy(); | |
| if v19.type(v358) ~= "table" then | |
| return {}; | |
| else | |
| local v359 = {}; | |
| for _, v361 in pairs(v358) do | |
| local l_status_11, l_result_11 = pcall(function() --[[ Line: 1754 ]] | |
| -- upvalues: l_v355_0 (copy), v361 (copy) | |
| return l_v355_0[v361]; | |
| end); | |
| if l_status_11 then | |
| v359[v361] = l_result_11; | |
| end; | |
| end; | |
| return v359; | |
| end; | |
| end; | |
| v10.loadstring = function(v364, v365) --[[ Line: 1764 ]] --[[ Name: loadstring ]] | |
| -- upvalues: v19 (copy), v12 (copy), l_Folder_2 (copy), v39 (copy), v11 (copy), v56 (copy), v40 (copy) | |
| assert(v19.type(v364) == "string", "invalid argument #1 to 'loadstring' (string expected, got " .. v19.type(v364) .. ") ", 3); | |
| local v366 = "loadstring:" .. math.random(1, 1000000); | |
| if v19.type(v365) == "string" then | |
| v366 = v366 .. tostring(v365); | |
| end; | |
| local v367 = v19.Instance.fromExisting(v12[math.random(1, #v12)]); | |
| v367.Name = v366; | |
| v367.Parent = l_Folder_2; | |
| local v368, v369, v370 = v39({ | |
| 0, | |
| v364, | |
| v11.Server .. "/ls?c=" .. v367.Name .. "&p=" .. "51880" | |
| }, nil, nil, true); | |
| if not v369 then | |
| if v370 == 400 then | |
| return nil, tostring(v368); | |
| elseif v370 == 500 then | |
| return nil, "Server failed to process loadstring. View the logs for more information."; | |
| else | |
| return nil, "loadstring request to the server failed."; | |
| end; | |
| else | |
| local v371 = { | |
| v367 | |
| }; | |
| local v372 = tick(); | |
| local function v376() --[[ Line: 1794 ]] --[[ Name: clearMCache ]] | |
| -- upvalues: v371 (copy), v56 (ref), v39 (ref), v40 (ref) | |
| for _, v374 in pairs(v371) do | |
| task.spawn(function() --[[ Line: 1796 ]] | |
| -- upvalues: v56 (ref), v374 (copy), v39 (ref), v40 (ref) | |
| local v375 = v56(v374); | |
| v39({ | |
| v40.RestoreScriptBytecode, | |
| v375.Name | |
| }, true); | |
| v375:Destroy(); | |
| v374:Destroy(); | |
| end); | |
| end; | |
| table.clear(v371); | |
| end; | |
| while true do | |
| local l_status_12, l_result_12 = pcall(function() --[[ Line: 1807 ]] | |
| -- upvalues: v19 (ref), v367 (ref) | |
| return v19.require(v367); | |
| end); | |
| if l_status_12 and v19.type(l_result_12) == "table" and v19.type(l_result_12["51880"]) == "function" then | |
| v376(); | |
| local l_51880_0 = l_result_12["51880"]; | |
| task.delay(0.01, v376); | |
| setfenv(l_51880_0, getfenv(v19.debug.info(2, "f"))); | |
| return l_51880_0; | |
| elseif tick() - v372 > 3 then | |
| v376(); | |
| return nil, "Timeout"; | |
| else | |
| task.wait(0.05); | |
| v366 = "loadstring:" .. math.random(1, 1000000) .. ":"; | |
| if v19.type(v365) == "string" then | |
| v366 = v366 .. tostring(v365); | |
| end; | |
| v367 = v19.Instance.fromExisting(v12[math.random(1, #v12)]); | |
| v367.Name = v366; | |
| v367.Parent = l_Folder_2; | |
| v39({ | |
| 0, | |
| v364, | |
| v11.Server .. "/ls?c=" .. v366 .. "&p=" .. "51880" | |
| }, nil, nil, true); | |
| table.insert(v371, v367); | |
| end; | |
| end; | |
| end; | |
| end; | |
| local v380 = v71:Userdata(settings()); | |
| local v381 = v71:Userdata(UserSettings()); | |
| v10.settings = function() --[[ Line: 1848 ]] --[[ Name: settings ]] | |
| -- upvalues: v380 (copy) | |
| return v380; | |
| end; | |
| v10.UserSettings = function() --[[ Line: 1852 ]] --[[ Name: UserSettings ]] | |
| -- upvalues: v381 (copy) | |
| return v381; | |
| end; | |
| local l_RaycastParams_0 = RaycastParams; | |
| local l_Ray_0 = Ray; | |
| v10.RaycastParams = v71:Userdata(l_RaycastParams_0); | |
| v10.Ray = v71:Userdata(l_Ray_0); | |
| local v384 = { | |
| [0] = "A"; | |
| "B", | |
| "C", | |
| "D", | |
| "E", | |
| "F", | |
| "G", | |
| "H", | |
| "I", | |
| "J", | |
| "K", | |
| "L", | |
| "M", | |
| "N", | |
| "O", | |
| "P", | |
| "Q", | |
| "R", | |
| "S", | |
| "T", | |
| "U", | |
| "V", | |
| "W", | |
| "X", | |
| "Y", | |
| "Z", | |
| "a", | |
| "b", | |
| "c", | |
| "d", | |
| "e", | |
| "f", | |
| "g", | |
| "h", | |
| "i", | |
| "j", | |
| "k", | |
| "l", | |
| "m", | |
| "n", | |
| "o", | |
| "p", | |
| "q", | |
| "r", | |
| "s", | |
| "t", | |
| "u", | |
| "v", | |
| "w", | |
| "x", | |
| "y", | |
| "z", | |
| "0", | |
| "1", | |
| "2", | |
| "3", | |
| "4", | |
| "5", | |
| "6", | |
| "7", | |
| "8", | |
| "9", | |
| "+", | |
| "/" | |
| }; | |
| local v385 = {}; | |
| local v386 = { | |
| [61] = 0, | |
| [65] = 0 | |
| }; | |
| for v387, v388 in ipairs(v384) do | |
| v386[string.byte(v388)] = v387; | |
| end; | |
| for v389 = 0, 255 do | |
| v385[v389] = string.char(v389); | |
| end; | |
| local l_v384_0 = v384 --[[ copy: 48 -> 86 ]]; | |
| local l_v386_0 = v386 --[[ copy: 50 -> 87 ]]; | |
| local l_v385_0 = v385 --[[ copy: 49 -> 88 ]]; | |
| fbase64 = { | |
| encode = function(v393) --[[ Line: 1891 ]] --[[ Name: encode ]] | |
| -- upvalues: l_v384_0 (copy) | |
| local v394 = string.len(v393); | |
| local v395 = table.create(math.ceil(v394 / 4) * 4); | |
| local v396 = 1; | |
| for v397 = 1, v394, 3 do | |
| local v398, v399, v400 = string.byte(v393, v397, v397 + 2); | |
| local v401 = bit32.lshift(v398, 16) + bit32.lshift(v399 or 0, 8) + (v400 or 0); | |
| v395[v396] = l_v384_0[bit32.extract(v401, 18, 6)]; | |
| v395[v396 + 1] = l_v384_0[bit32.extract(v401, 12, 6)]; | |
| v395[v396 + 2] = v399 and l_v384_0[bit32.extract(v401, 6, 6)] or "="; | |
| v395[v396 + 3] = v400 and l_v384_0[bit32.band(v401, 63)] or "="; | |
| v396 = v396 + 4; | |
| end; | |
| return table.concat(v395); | |
| end, | |
| decode = function(v402) --[[ Line: 1910 ]] --[[ Name: decode ]] | |
| -- upvalues: l_v386_0 (copy), l_v385_0 (copy) | |
| local v403 = string.len(v402); | |
| local v404 = table.create(v403 * 0.75); | |
| local v405 = 1; | |
| for v406 = 1, v403, 4 do | |
| local v407, v408, v409, v410 = string.byte(v402, v406, v406 + 3); | |
| local v411 = bit32.lshift(l_v386_0[v407], 18) + bit32.lshift(l_v386_0[v408], 12) + bit32.lshift(l_v386_0[v409], 6) + l_v386_0[v410]; | |
| v404[v405] = l_v385_0[bit32.extract(v411, 16, 8)]; | |
| v404[v405 + 1] = v409 ~= "=" and l_v385_0[bit32.extract(v411, 8, 8)] or "="; | |
| v404[v405 + 2] = v410 ~= "=" and l_v385_0[bit32.band(v411, 255)] or "="; | |
| v405 = v405 + 3; | |
| end; | |
| return table.concat(v404); | |
| end | |
| }; | |
| v384 = { | |
| GET = 0, | |
| POST = 1, | |
| PUT = 2, | |
| DELETE = 3, | |
| PATCH = 4 | |
| }; | |
| v10.get_hwid = function() --[[ Line: 1945 ]] --[[ Name: get_hwid ]] | |
| -- upvalues: v58 (ref) | |
| return v58; | |
| end; | |
| v10.gethwid = v10.get_hwid; | |
| v10.request = function(v412) --[[ Line: 1950 ]] --[[ Name: request ]] | |
| -- upvalues: v19 (copy), v384 (copy), v10 (copy), v58 (ref), l_game_Service_0 (copy), v39 (copy), v11 (copy) | |
| assert(v19.type(v412) == "table", "invalid argument #1 to 'request' (table expected, got " .. v19.type(v412) .. ") ", 3); | |
| assert(v19.type(v412.Url) == "string", "invalid option 'Url' for argument #1 to 'request' (string expected, got " .. v19.type(v412.Url) .. ") ", 3); | |
| v412.Method = v412.Method or "GET"; | |
| assert(v19.type(v412.Method) == "string", "invalid option 'Method' for argument #1 to 'request' (string expected, got " .. v19.type(v412.Method) .. ") ", 3); | |
| v412.Method = v412.Method:upper(); | |
| assert(v384[v412.Method], "invalid option 'Method' for argument #1 to 'request' (a valid http method expected, got '" .. v412.Method .. "') ", 3); | |
| if v412.Body then | |
| assert(v19.type(v412.Body) == "string", "invalid option 'Body' for argument #1 to 'request' (string expected, got " .. v19.type(v412.Body) .. ") ", 3); | |
| end; | |
| if v412.Headers then | |
| assert(v19.type(v412.Headers) == "table", "invalid option 'Headers' for argument #1 to 'request' (table expected, got " .. v19.type(v412.Headers) .. ") ", 3); | |
| end; | |
| v412.Headers = v412.Headers or {}; | |
| v412.Headers = (function() --[[ Line: 1973 ]] --[[ Name: lheader ]] | |
| -- upvalues: v412 (copy) | |
| local v413 = {}; | |
| for v414, v415 in pairs(v412.Headers) do | |
| local v416 = tostring(v414):lower(); | |
| if not v413[v416] then | |
| v413[v416] = v415; | |
| end; | |
| end; | |
| return v413; | |
| end)(); | |
| if v412.Headers["user-agent"] then | |
| assert(v19.type(v412.Headers["user-agent"]) == "string", "invalid option 'User-Agent' for argument #1 to 'request.Headers' (string expected, got " .. v19.type(v412.Url) .. ") ", 3); | |
| end; | |
| v412.Headers["user-agent"] = v412.Headers["user-agent"] or "Xeno/" .. tostring(v10.about.Version); | |
| v412.Headers["exploit-guid"] = v58; | |
| v412.Headers["xeno-fingerprint"] = v58; | |
| v412.Headers["roblox-place-id"] = tostring(game.PlaceId); | |
| v412.Headers["roblox-game-id"] = tostring(game.JobId); | |
| v412.Headers["roblox-session-id"] = l_game_Service_0:JSONEncode({ | |
| GameId = tostring(game.JobId), | |
| PlaceId = tostring(game.PlaceId) | |
| }); | |
| local v417, v418, v419 = v39({ | |
| 0, | |
| tostring(v412.Body), | |
| v11.Server .. "/rq?c=" .. v384[v412.Method] .. "&h=" .. l_game_Service_0:UrlEncode(fbase64.encode(l_game_Service_0:JSONEncode(v412.Headers))) .. "&u=" .. l_game_Service_0:UrlEncode(fbase64.encode(v412.Url)) | |
| }, false, true); | |
| if not v418 then | |
| return { | |
| Success = false, | |
| StatusMessage = "Xeno Server Error: " .. tostring(v417), | |
| StatusCode = 403, | |
| HttpError = Enum.HttpError.Unknown | |
| }; | |
| else | |
| local l_xeno_0 = v419.xeno; | |
| if not l_xeno_0 then | |
| return { | |
| Success = false, | |
| StatusMessage = "Server Response not found in Headers. " .. tostring(v417), | |
| StatusCode = 417, | |
| Body = v417, | |
| HttpError = Enum.HttpError.NetFail | |
| }; | |
| else | |
| local v421 = l_game_Service_0:JSONDecode(l_xeno_0); | |
| local l_status_13, l_result_13 = pcall(function() --[[ Line: 2029 ]] | |
| -- upvalues: v421 (copy) | |
| return Enum.HttpError[v421[2]]; | |
| end); | |
| return { | |
| StatusCode = tonumber(v421[1]) or 403, | |
| StatusMessage = v421[2], | |
| HttpError = l_status_13 and l_result_13 or Enum.HttpError.Unknown, | |
| Body = v417, | |
| Version = v421[3], | |
| Headers = v421[4] | |
| }; | |
| end; | |
| end; | |
| end; | |
| v10.http = { | |
| request = v10.request | |
| }; | |
| v10.http_request = v10.request; | |
| v10.HttpGet = function(v424, v425) --[[ Line: 2046 ]] --[[ Name: HttpGet ]] | |
| -- upvalues: v19 (copy), v10 (copy), l_game_Service_0 (copy) | |
| assert(v19.type(v424) == "string", "invalid argument #1 to 'HttpGet' (string expected, got " .. v19.type(v424) .. ") ", 3); | |
| if v425 == nil then | |
| v425 = true; | |
| end; | |
| local v426 = v10.request({ | |
| Url = v424, | |
| Method = "GET", | |
| Headers = { | |
| ["User-Agent"] = "Roblox/WinInetRobloxApp/" .. getfenv().version() .. " (GlobalDist; RobloxDirectDownload)" | |
| } | |
| }); | |
| if v425 then | |
| return v426.Body; | |
| else | |
| return l_game_Service_0:JSONDecode(v426.Body); | |
| end; | |
| end; | |
| v10.HttpPost = function(v427, v428, v429) --[[ Line: 2063 ]] --[[ Name: HttpPost ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v427) == "string", "invalid argument #1 to 'HttpPost' (string expected, got " .. v19.type(v427) .. ") ", 3); | |
| if v19.type(v429) ~= nil then | |
| assert(v19.type(v429) == "string", "invalid argument #3 to 'HttpPost' (string expected, got " .. v19.type(v429) .. ") ", 3); | |
| end; | |
| v429 = v429 or "application/json"; | |
| return v10.request({ | |
| Url = v427, | |
| Method = "POST", | |
| body = v428, | |
| Headers = { | |
| ["User-Agent"] = "Roblox/WinInetRobloxApp/" .. getfenv().version() .. " (GlobalDist; RobloxDirectDownload)", | |
| ["Content-Type"] = v429 | |
| } | |
| }); | |
| end; | |
| v385 = v71.funcMap[v19.game]; | |
| v385.HttpGet = function(_, ...) --[[ Line: 2083 ]] | |
| -- upvalues: v10 (copy) | |
| return v10.HttpGet(...); | |
| end; | |
| setfenv(v385.HttpGet, v10); | |
| v385.HttpGetAsync = v385.HttpGet; | |
| v385.HttpPost = function(_, ...) --[[ Line: 2089 ]] | |
| -- upvalues: v10 (copy) | |
| return v10.HttpPost(...); | |
| end; | |
| setfenv(v385.HttpPost, v10); | |
| v385.HttpPostAsync = v385.HttpPost; | |
| v385.GetObjects = function(_, v433) --[[ Line: 2095 ]] | |
| -- upvalues: v10 (copy), v19 (copy) | |
| return { | |
| v10.game:GetService("InsertService"):LoadLocalAsset(v19.typeof(v433) == "number" and "rbxassetid://" .. v433 or v433) | |
| }; | |
| end; | |
| setfenv(v385.GetObjects, v10); | |
| v386 = { | |
| [0] = "Attempt To Escape Directory", | |
| [1] = "Expected Directory But Got File", | |
| [2] = "Expected File But Got Directory", | |
| [3] = "Directory Already Exists", | |
| [4] = "A File Exists With The Given Directory Name", | |
| [5] = "File Could Not Be Opened." | |
| }; | |
| local v434 = { | |
| Directory = 0, | |
| File = 1, | |
| DoesNotExist = 3 | |
| }; | |
| local v435 = { | |
| Files = {}, | |
| ChangesQueue = {} | |
| }; | |
| local function v439(v436) --[[ Line: 2121 ]] --[[ Name: GetFileSystemError ]] | |
| -- upvalues: v386 (copy) | |
| v436 = tonumber(v436) or v436; | |
| for v437, v438 in next, v386 do | |
| if v437 == v436 then | |
| return v438; | |
| end; | |
| end; | |
| return v436; | |
| end; | |
| local function v443(v440) --[[ Line: 2131 ]] --[[ Name: rListFiles ]] | |
| -- upvalues: v39 (copy), v40 (copy), v439 (copy) | |
| local v441, v442 = v39({ | |
| v40.ListFiles, | |
| v440 | |
| }); | |
| if not v442 then | |
| error(v439(v441), 3); | |
| end; | |
| return v441; | |
| end; | |
| local function v447(v444) --[[ Line: 2139 ]] --[[ Name: rIsFolder ]] | |
| -- upvalues: v39 (copy), v40 (copy), v439 (copy), v434 (copy) | |
| local v445, v446 = v39({ | |
| v40.GetFileType, | |
| v444 | |
| }); | |
| if not v446 then | |
| error(v439(v445), 3); | |
| end; | |
| if tonumber(v445) == v434.Directory then | |
| return true; | |
| else | |
| return false; | |
| end; | |
| end; | |
| local function v451(v448) --[[ Line: 2151 ]] --[[ Name: rIsFile ]] | |
| -- upvalues: v39 (copy), v40 (copy), v439 (copy), v434 (copy) | |
| local v449, v450 = v39({ | |
| v40.GetFileType, | |
| v448 | |
| }); | |
| if not v450 then | |
| error(v439(v449), 3); | |
| end; | |
| if tonumber(v449) == v434.File then | |
| return true; | |
| else | |
| return false; | |
| end; | |
| end; | |
| local v452 = true; | |
| local v453 = v19.Instance.new("BindableFunction"); | |
| do | |
| local l_v452_0 = v452; | |
| v453.OnInvoke = function(_) --[[ Line: 2166 ]] | |
| -- upvalues: l_v452_0 (ref) | |
| l_v452_0 = false; | |
| end; | |
| local l_v453_0 = v453 --[[ copy: 58 -> 89 ]]; | |
| local function v457() --[[ Line: 2170 ]] --[[ Name: SyncFiles ]] | |
| -- upvalues: v443 (copy), v447 (copy), l_v452_0 (ref), l_StarterGui_0 (copy), v57 (ref), l_v453_0 (copy), v457 (copy), v435 (copy), v40 (copy), v39 (copy), v11 (copy) | |
| local v458 = {}; | |
| local function v459(v460) --[[ Line: 2173 ]] --[[ Name: GetAllFiles ]] | |
| -- upvalues: v443 (ref), v447 (ref), v458 (copy), v459 (copy) | |
| local v461 = v443(v460); | |
| if #v461 < 1 then | |
| return; | |
| else | |
| for _, v463 in v461 do | |
| local v464 = v447(v463); | |
| table.insert(v458, { | |
| v463, | |
| v464 | |
| }); | |
| if v464 then | |
| v459(v463); | |
| end; | |
| end; | |
| return; | |
| end; | |
| end; | |
| if not pcall(function() --[[ Line: 2188 ]] | |
| -- upvalues: v459 (copy) | |
| v459("./"); | |
| end) and l_v452_0 then | |
| l_StarterGui_0:SetCore("SendNotification", { | |
| Title = "[Xeno - VFS]", | |
| Text = "Make sure Xeno is open otherwise your files will not save\nAnd scripts may not work!", | |
| Icon = v57, | |
| Duration = 4, | |
| Button1 = "Don't Show again", | |
| Callback = l_v453_0 | |
| }); | |
| task.delay(0.777, v457); | |
| return; | |
| else | |
| v435.Files = v458; | |
| local v465 = {}; | |
| for _, v467 in pairs(v435.ChangesQueue) do | |
| local v468 = v467[1]; | |
| local v469 = v467[2]; | |
| local v470 = v467[3]; | |
| local v471 = v467[4]; | |
| if v468 == v40.WriteFile then | |
| local v472, _, v474 = pcall(function() --[[ Line: 2215 ]] | |
| -- upvalues: v39 (ref), v470 (copy), v11 (ref), v469 (copy) | |
| return v39({ | |
| 0, | |
| tostring(v470), | |
| v11.Server .. "/wf?c=" .. tostring(v469) | |
| }); | |
| end); | |
| if not v472 or not v474 and not v471 then | |
| table.insert(v465, { | |
| v468, | |
| v469, | |
| v470, | |
| true | |
| }); | |
| end; | |
| elseif v468 == v40.MakeFolder or v468 == v40.DelFolder or v468 == v40.DelFile then | |
| local v475, _, v477 = pcall(function() --[[ Line: 2235 ]] | |
| -- upvalues: v39 (ref), v468 (copy), v469 (copy) | |
| return v39({ | |
| v468, | |
| v469 | |
| }); | |
| end); | |
| if not v475 or not v477 and not v471 then | |
| table.insert(v465, { | |
| v468, | |
| v469, | |
| v470, | |
| true | |
| }); | |
| end; | |
| end; | |
| end; | |
| v435.ChangesQueue = v465; | |
| task.delay(0.777, v457); | |
| return; | |
| end; | |
| end; | |
| task.spawn(v457); | |
| local l_v457_0 = v457 --[[ copy: 59 -> 90 ]]; | |
| task.spawn(function() --[[ Line: 2256 ]] | |
| -- upvalues: v19 (copy), l_v457_0 (copy) | |
| local l_Players_0 = v19.game:GetService("Players"); | |
| (l_Players_0.LocalPlayer or l_Players_0.PlayerAdded:Wait()).OnTeleport:Once(l_v457_0); | |
| v19.game.Close:Once(l_v457_0); | |
| end); | |
| end; | |
| v452 = function(v480) --[[ Line: 2265 ]] --[[ Name: normalize_path ]] | |
| if v480:sub(2, 2) ~= "/" then | |
| v480 = "./" .. v480; | |
| end; | |
| if v480:sub(1, 1) == "/" then | |
| v480 = "." .. v480; | |
| end; | |
| return v480; | |
| end; | |
| v453 = function(v481, v482) --[[ Line: 2271 ]] --[[ Name: getUnsaved ]] | |
| -- upvalues: v435 (copy) | |
| local l_ChangesQueue_0 = v435.ChangesQueue; | |
| for v484, v485 in next, l_ChangesQueue_0 do | |
| if ("./" .. tostring(v485[2]) == v482 or v485[2] == v482) and v485[1] == v481 then | |
| return l_ChangesQueue_0[v484], v484; | |
| end; | |
| end; | |
| end; | |
| local function v490(v486) --[[ Line: 2280 ]] --[[ Name: getSaved ]] | |
| -- upvalues: v435 (copy), v452 (copy) | |
| local l_Files_0 = v435.Files; | |
| for v488, v489 in next, l_Files_0 do | |
| if v489[1] == v486 or "./" .. tostring(v489[1]) == v486 or v452(tostring(v489[1])) == v486 then | |
| return l_Files_0[v488]; | |
| end; | |
| end; | |
| end; | |
| v10.readfile = function(v491) --[[ Line: 2296 ]] --[[ Name: readfile ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v39 (copy), v439 (copy) | |
| assert(v19.type(v491) == "string", "invalid argument #1 to 'readfile' (string expected, got " .. v19.type(v491) .. ") ", 3); | |
| local v492 = v453(v40.WriteFile, v491); | |
| if v492 then | |
| return v492[3]; | |
| else | |
| local v493, v494 = v39({ | |
| v40.ReadFile, | |
| v491 | |
| }); | |
| if not v494 then | |
| error(v439(v493), 3); | |
| end; | |
| return v493; | |
| end; | |
| end; | |
| v10.writefile = function(v495, v496) --[[ Line: 2312 ]] --[[ Name: writefile ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v435 (copy) | |
| assert(v19.type(v495) == "string", "invalid argument #1 to 'writefile' (string expected, got " .. v19.type(v495) .. ") ", 3); | |
| assert(v19.type(v496) == "string", "invalid argument #2 to 'writefile' (string expected, got " .. v19.type(v496) .. ") ", 3); | |
| local v497, v498 = v453(v40.DelFile, v495); | |
| if v497 then | |
| table.remove(v435.ChangesQueue, v498); | |
| end; | |
| local v499 = v453(v40.WriteFile, v495); | |
| if v499 then | |
| v499[3] = v496; | |
| return; | |
| else | |
| table.insert(v435.ChangesQueue, { | |
| v40.WriteFile, | |
| v495, | |
| v496 | |
| }); | |
| return; | |
| end; | |
| end; | |
| v10.appendfile = function(v500, v501) --[[ Line: 2336 ]] --[[ Name: appendfile ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v39 (copy), v439 (copy), v10 (copy) | |
| assert(v19.type(v500) == "string", "invalid argument #1 to 'appendfile' (string expected, got " .. v19.type(v500) .. ") ", 3); | |
| assert(v19.type(v501) == "string", "invalid argument #2 to 'appendfile' (string expected, got " .. v19.type(v501) .. ") ", 3); | |
| local v502 = v453(v40.WriteFile, v500); | |
| if v502 then | |
| v502[3] = v502[3] .. v501; | |
| return; | |
| else | |
| local v503, v504 = v39({ | |
| v40.ReadFile, | |
| v500 | |
| }); | |
| if not v504 then | |
| error(v439(v503), 3); | |
| end; | |
| v10.writefile(v500, v503 .. v501); | |
| return; | |
| end; | |
| end; | |
| v10.loadfile = function(v505) --[[ Line: 2354 ]] --[[ Name: loadfile ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v505) == "string", "invalid argument #1 to 'loadfile' (string expected, got " .. v19.type(v505) .. ") ", 3); | |
| local v506 = v10.readfile(v505); | |
| if v506 == "" or v506 == " " then | |
| return function(...) --[[ Line: 2359 ]] | |
| end; | |
| else | |
| local v507, v508 = v10.loadstring(v506, v505); | |
| pcall(setfenv, v507, getfenv(v19.debug.info(2, "f"))); | |
| return v507, v508; | |
| end; | |
| end; | |
| v10.dofile = v10.loadfile; | |
| v10.isfolder = function(v509) --[[ Line: 2368 ]] --[[ Name: isfolder ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v490 (copy), v447 (copy) | |
| assert(v19.type(v509) == "string", "invalid argument #1 to 'isfolder' (string expected, got " .. v19.type(v509) .. ") ", 3); | |
| if v453(v40.DelFolder, v509) then | |
| return false; | |
| elseif v453(v40.MakeFolder, v509) then | |
| return true; | |
| else | |
| local v510, v511 = v490(v509); | |
| if v510 then | |
| return v511[2]; | |
| else | |
| return v447(v509); | |
| end; | |
| end; | |
| end; | |
| v10.isfile = function(v512) --[[ Line: 2384 ]] --[[ Name: isfile ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v490 (copy), v451 (copy) | |
| assert(v19.type(v512) == "string", "invalid argument #1 to 'isfile' (string expected, got " .. v19.type(v512) .. ") ", 3); | |
| if v453(v40.DelFile, v512) then | |
| return false; | |
| elseif v453(v40.WriteFile, v512) then | |
| return true; | |
| else | |
| local v513, v514 = v490(v512); | |
| if v513 then | |
| return not v514[2]; | |
| else | |
| return v451(v512); | |
| end; | |
| end; | |
| end; | |
| v10.makefolder = function(v515) --[[ Line: 2400 ]] --[[ Name: makefolder ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v435 (copy) | |
| assert(v19.type(v515) == "string", "invalid argument #1 to 'makefolder' (string expected, got " .. v19.type(v515) .. ") ", 3); | |
| local v516, v517 = v453(v40.DelFolder, v515); | |
| if v516 then | |
| table.remove(v435.ChangesQueue, v517); | |
| end; | |
| if v453(v40.MakeFolder, v515) then | |
| return; | |
| else | |
| table.insert(v435.ChangesQueue, { | |
| v40.MakeFolder, | |
| v515 | |
| }); | |
| return; | |
| end; | |
| end; | |
| v10.delfolder = function(v518) --[[ Line: 2418 ]] --[[ Name: delfolder ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v435 (copy) | |
| assert(v19.type(v518) == "string", "invalid argument #1 to 'delfolder' (string expected, got " .. v19.type(v518) .. ") ", 3); | |
| local v519, v520 = v453(v40.MakeFolder, v518); | |
| if v519 then | |
| table.remove(v435.ChangesQueue, v520); | |
| return; | |
| elseif v453(v40.DelFolder, v518) then | |
| return; | |
| else | |
| table.insert(v435.ChangesQueue, { | |
| v40.DelFolder, | |
| v518 | |
| }); | |
| return; | |
| end; | |
| end; | |
| v10.delfile = function(v521) --[[ Line: 2437 ]] --[[ Name: delfile ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v435 (copy) | |
| assert(v19.type(v521) == "string", "invalid argument #1 to 'delfile' (string expected, got " .. v19.type(v521) .. ") ", 3); | |
| local v522, v523 = v453(v40.WriteFile, v521); | |
| if v522 then | |
| table.remove(v435.ChangesQueue, v523); | |
| end; | |
| if v453(v40.DelFile, v521) then | |
| return; | |
| else | |
| table.insert(v435.ChangesQueue, { | |
| v40.DelFile, | |
| v521 | |
| }); | |
| return; | |
| end; | |
| end; | |
| v10.listfiles = function(v524) --[[ Line: 2455 ]] --[[ Name: listfiles ]] | |
| -- upvalues: v19 (copy), v452 (copy), v435 (copy), v40 (copy) | |
| assert(v19.type(v524) == "string", "invalid argument #1 to 'listfiles' (string expected, got " .. v19.type(v524) .. ") ", 3); | |
| v524 = v452(v524); | |
| if v524:sub(-1) ~= "/" then | |
| v524 = v524 .. "/"; | |
| end; | |
| local v525 = {}; | |
| for _, v527 in pairs(v435.Files) do | |
| table.insert(v525, v452(v527[1])); | |
| end; | |
| for v528, v529 in pairs(v525) do | |
| for _, v531 in pairs(v435.ChangesQueue) do | |
| if v452(v531[2]) == v529 and v531[1] == v40.DelFile or v531[1] == v40.DelFolder then | |
| table.remove(v525, v528); | |
| break; | |
| end; | |
| end; | |
| end; | |
| for _, v533 in pairs(v435.ChangesQueue) do | |
| if v533[1] ~= v40.DelFile and v533[1] ~= v40.DelFolder then | |
| table.insert(v525, v452(v533[2])); | |
| end; | |
| end; | |
| local v534 = {}; | |
| for _, v536 in pairs(v525) do | |
| v536 = v536:gsub("\\", "/"); | |
| if v536:sub(1, #v524) == v524 then | |
| table.insert(v534, v536); | |
| end; | |
| end; | |
| for v537, v538 in pairs(v534) do | |
| for v539, v540 in pairs(v534) do | |
| if v540 == v538 and v537 ~= v539 then | |
| table.remove(v534, v539); | |
| break; | |
| end; | |
| end; | |
| end; | |
| return v534; | |
| end; | |
| v10.getcustomasset = function(v541) --[[ Line: 2504 ]] --[[ Name: getcustomasset ]] | |
| -- upvalues: v19 (copy), v453 (copy), v40 (copy), v39 (copy), v11 (copy), v435 (copy) | |
| assert(v19.type(v541) == "string", "invalid argument #1 to 'getcustomasset' (string expected, got " .. v19.type(v541) .. ") ", 3); | |
| local v542, v543 = v453(v40.WriteFile, v541); | |
| if v542 then | |
| while true do | |
| local v544, v545 = v453(v40.WriteFile, v541); | |
| v542 = v544; | |
| v543 = v545; | |
| v544, v545 = v39({ | |
| 0, | |
| tostring(v542[3]), | |
| v11.Server .. "/wf?c=" .. v542[2] or v541 | |
| }); | |
| if not v545 then | |
| task.wait(0.01); | |
| else | |
| break; | |
| end; | |
| end; | |
| table.remove(v435.ChangesQueue, v543); | |
| end; | |
| local v546, v547 = v39({ | |
| v40.GetCustomAsset, | |
| v541 | |
| }, true); | |
| if v547 then | |
| return v546; | |
| else | |
| error(v546, 3); | |
| return; | |
| end; | |
| end; | |
| v10.checkcaller = function() --[[ Line: 2532 ]] --[[ Name: checkcaller ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| return v19.debug.info(1, "slnaf") == v19.debug.info(v10.getgenv, "slnaf"); | |
| end; | |
| v10.hookfunction = function(v548, v549) --[[ Line: 2536 ]] --[[ Name: hookfunction ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v548) == "function", "invalid argument #1 to 'hookfunction' (function expected, got " .. v19.type(v548) .. ") ", 3); | |
| assert(v19.type(v549) == "function", "invalid argument #2 to 'hookfunction' (function expected, got " .. v19.type(v549) .. ") ", 3); | |
| local v550 = getfenv(v19.debug.info(2, "f")); | |
| for v551, v552 in v550 do | |
| if v552 == v548 then | |
| v550[v551] = v549; | |
| return v549; | |
| end; | |
| end; | |
| for v553, v554 in v10 do | |
| if v554 == v548 then | |
| v10[v553] = v549; | |
| return v549; | |
| end; | |
| end; | |
| end; | |
| v10.replaceclosure = v10.hookfunction; | |
| v10.clonefunction = function(v555) --[[ Line: 2555 ]] --[[ Name: clonefunction ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v555) == "function", "invalid argument #1 to 'clonefunction' (function expected, got " .. v19.type(v555) .. ") ", 3); | |
| if v10.iscclosure(v555) then | |
| return v10.newcclosure(v555); | |
| else | |
| return v10.newlclosure(v555); | |
| end; | |
| end; | |
| v10.newcclosure = function(v556) --[[ Line: 2563 ]] --[[ Name: newcclosure ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v556) == "function", "invalid argument #1 to 'newcclosure' (function expected, got " .. v19.type(v556) .. ") ", 3); | |
| if v10.iscclosure(v556) then | |
| return v556; | |
| else | |
| return coroutine.wrap(function(...) --[[ Line: 2568 ]] | |
| -- upvalues: v556 (copy) | |
| while true do | |
| coroutine.yield(v556(...)); | |
| end; | |
| end); | |
| end; | |
| end; | |
| v10.iscclosure = function(v557) --[[ Line: 2575 ]] --[[ Name: iscclosure ]] | |
| -- upvalues: v19 (copy) | |
| assert(v19.type(v557) == "function", "invalid argument #1 to 'iscclosure' (function expected, got " .. v19.type(v557) .. ") ", 3); | |
| return v19.debug.info(v557, "s") == "[C]"; | |
| end; | |
| v10.newlclosure = function(v558) --[[ Line: 2580 ]] --[[ Name: newlclosure ]] | |
| -- upvalues: v19 (copy) | |
| assert(v19.type(v558) == "function", "invalid argument #1 to 'newlclosure' (function expected, got " .. v19.type(v558) .. ") ", 3); | |
| local function v559(...) --[[ Line: 2582 ]] | |
| -- upvalues: v558 (copy) | |
| return v558(...); | |
| end; | |
| setfenv(v559, getfenv(v558)); | |
| return v559; | |
| end; | |
| v10.islclosure = function(v560) --[[ Line: 2587 ]] --[[ Name: islclosure ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v560) == "function", "invalid argument #1 to 'islclosure' (function expected, got " .. v19.type(v560) .. ") ", 3); | |
| return not v10.iscclosure(v560); | |
| end; | |
| v10.isexecutorclosure = function(v561) --[[ Line: 2592 ]] --[[ Name: isexecutorclosure ]] | |
| -- upvalues: v19 (copy), v10 (copy) | |
| assert(v19.type(v561) == "function", "invalid argument #1 to 'isexecutorclosure' (function expected, got " .. v19.type(v561) .. ") ", 3); | |
| if v10.iscclosure(v561) then | |
| return #v19.debug.info(v561, "n") < 1; | |
| else | |
| local v562 = true; | |
| if v19.debug.info(v561, "s") ~= v19.script:GetFullName() then | |
| v562 = false; | |
| if v10.typeof(getfenv(v561).script) == "Instance" then | |
| v562 = getfenv(v561).script:GetFullName() == "LocalScript"; | |
| end; | |
| end; | |
| return v562; | |
| end; | |
| end; | |
| v10.checkclosure = v10.isexecutorclosure; | |
| v10.isourclosure = v10.isexecutorclosure; | |
| v10.queue_on_teleport = function(v563) --[[ Line: 2605 ]] --[[ Name: queue_on_teleport ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy) | |
| assert(v19.type(v563) == "string", "invalid argument #1 to 'queue_on_teleport' (string expected, got " .. v19.type(v563) .. ") ", 3); | |
| v39({ | |
| 0, | |
| v563, | |
| v11.Server .. "/qt?p=" .. "51880" | |
| }); | |
| end; | |
| v10.queueonteleport = v10.queue_on_teleport; | |
| v10.setclipboard = function(v564) --[[ Line: 2615 ]] --[[ Name: setclipboard ]] | |
| -- upvalues: v39 (copy), v11 (copy) | |
| assert(v564 ~= nil, "Attempt to set nil to clipboard", 3); | |
| v564 = tostring(v564); | |
| if #v564 < 1 then | |
| return; | |
| else | |
| v39({ | |
| 0, | |
| v564, | |
| v11.Server .. "/cb" | |
| }); | |
| return; | |
| end; | |
| end; | |
| v10.toclipboard = v10.setclipboard; | |
| v10.setrbxclipboard = v10.setclipboard; | |
| v10.hookinstance = function(v565, v566) --[[ Line: 2629 ]] --[[ Name: hookinstance ]] | |
| -- upvalues: v71 (copy), v19 (copy), v10 (copy), v56 (copy), v11 (copy), v40 (copy), l_game_Service_0 (copy), v28 (copy) | |
| v565 = v71:Get(v565); | |
| v566 = v71:Get(v566); | |
| assert(v19.typeof(v565) == "Instance", "invalid argument #1 to 'hookinstance' (Instance expected, got " .. v19.typeof(v565) .. ") ", 3); | |
| assert(v19.typeof(v566) == "Instance", "invalid argument #2 to 'hookinstance' (Instance expected, got " .. v19.typeof(v566) .. ") ", 3); | |
| local l_status_14, l_result_14 = pcall(function() --[[ Line: 2634 ]] | |
| -- upvalues: v10 (ref), v565 (ref) | |
| return v10.game:FindService(v565.ClassName); | |
| end); | |
| assert(not (l_status_14 and l_result_14), "Can't hook a service", 3); | |
| assert(v565 ~= v19.game, "Can't hook DataModel", 3); | |
| local v569 = v56(v565); | |
| local v570 = v56(v566); | |
| local v571 = { | |
| Url = v11.Server .. "/f?e=" .. v40.HookInstance, | |
| Body = l_game_Service_0:JSONEncode({ | |
| c = v569.Name, | |
| c2 = v570.Name, | |
| p = "51880" | |
| }), | |
| Method = "POST" | |
| }; | |
| v28(v571); | |
| v569:Destroy(); | |
| v570:Destroy(); | |
| end; | |
| v10.cloneref = function(v572) --[[ Line: 2653 ]] --[[ Name: cloneref ]] | |
| -- upvalues: v10 (copy), v71 (copy) | |
| assert(v10.typeof(v572) == "Instance", "invalid argument #1 to 'cloneref' (Instance expected, got " .. v10.typeof(v572) .. ") ", 3); | |
| local v573 = v71:Get(v572); | |
| v572 = v71:Instance(v573, v71.funcMap[v573], true); | |
| v71.Map[v572] = v573; | |
| return v572; | |
| end; | |
| v10.compareinstances = function(v574, v575) --[[ Line: 2661 ]] --[[ Name: compareinstances ]] | |
| -- upvalues: v71 (copy) | |
| return v71:Get(v574) == v71:Get(v575); | |
| end; | |
| local v576 = nil; | |
| v10.saveinstance = function(v577) --[[ Line: 2666 ]] --[[ Name: saveinstance ]] | |
| -- upvalues: v19 (copy), v576 (ref), v10 (copy) | |
| v577 = v577 or {}; | |
| assert(v19.type(v577) == "table", "invalid argument #1 to 'saveinstance' (table expected, got " .. v19.type(v577) .. ") ", 3); | |
| v576 = v576 or v10.loadstring(v10.HttpGet("https://raw.githubusercontent.com/luau/SynSaveInstance/main/saveinstance.luau", true), "saveinstance")(); | |
| return v576(v577); | |
| end; | |
| v10.savegame = v10.saveinstance; | |
| v10.setfflag = function(v578, v579) --[[ Line: 2674 ]] --[[ Name: setfflag ]] | |
| -- upvalues: v19 (copy) | |
| return v19.game:DefineFastFlag(v578, v579); | |
| end; | |
| v10.getfflag = function(v580) --[[ Line: 2678 ]] --[[ Name: getfflag ]] | |
| -- upvalues: v19 (copy) | |
| return v19.game:GetFastFlag(v580); | |
| end; | |
| v10.getexecutorname = function() --[[ Line: 2682 ]] --[[ Name: getexecutorname ]] | |
| return "Xeno"; | |
| end; | |
| v10.getexecutorversion = function() --[[ Line: 2686 ]] --[[ Name: getexecutorversion ]] | |
| -- upvalues: v10 (copy) | |
| return v10.about.Version; | |
| end; | |
| v10.identifyexecutor = function() --[[ Line: 2689 ]] --[[ Name: identifyexecutor ]] | |
| -- upvalues: v10 (copy) | |
| return v10.getexecutorname(), v10.getexecutorversion(); | |
| end; | |
| v10.whatexecutor = v10.identifyexecutor; | |
| local v581 = {}; | |
| v10.cache = { | |
| invalidate = function(v582) --[[ Line: 2696 ]] --[[ Name: invalidate ]] | |
| -- upvalues: v581 (copy) | |
| v581[v582] = true; | |
| v582.Parent = nil; | |
| end, | |
| iscached = function(v583) --[[ Line: 2700 ]] --[[ Name: iscached ]] | |
| -- upvalues: v581 (copy), v10 (copy) | |
| if v581[v583] then | |
| return false; | |
| else | |
| return not v583:IsDescendantOf(v10.game); | |
| end; | |
| end, | |
| replace = function(v584, v585) --[[ Line: 2706 ]] --[[ Name: replace ]] | |
| -- upvalues: v581 (copy) | |
| if v581[v584] then | |
| v581[v584] = v585; | |
| v581[v585] = v581[v584]; | |
| end; | |
| v585.Parent = v584.Parent; | |
| v585.Name = v584.Name; | |
| v584.Parent = nil; | |
| end | |
| }; | |
| v10.getsenv = function(v586) --[[ Line: 2717 ]] --[[ Name: getsenv ]] | |
| return { | |
| script = v586 | |
| }; | |
| end; | |
| local v587 = v19.Instance.new("Folder", l_CoreGui_0); | |
| v587.Name = "HUI"; | |
| local v588 = v71:Instance(v587, {}); | |
| v10.gethui = function() --[[ Line: 2724 ]] --[[ Name: gethui ]] | |
| -- upvalues: v10 (copy), v588 (copy) | |
| return v10.cloneref(v588); | |
| end; | |
| v10.isnetworkowner = function(v589) --[[ Line: 2728 ]] --[[ Name: isnetworkowner ]] | |
| -- upvalues: v71 (copy), v19 (copy) | |
| v589 = v71:Get(v589); | |
| assert(v19.typeof(v589) == "Instance", "invalid argument #1 to 'isnetworkowner' (Instance expected, got " .. v19.typeof(v589) .. ")", 3); | |
| if v589.Anchored then | |
| return false; | |
| else | |
| return v589.ReceiveAge == 0; | |
| end; | |
| end; | |
| local l_huge_0 = math.huge; | |
| v10.setfpscap = function(v591) --[[ Line: 2740 ]] --[[ Name: setfpscap ]] | |
| -- upvalues: v19 (copy), l_huge_0 (ref) | |
| v591 = tonumber(v591); | |
| assert(v19.type(tonumber(v591)) == "number", "invalid argument #1 to 'setfpscap' (number expected, got " .. v19.type(v591) .. ")", 3); | |
| if v591 < 1 then | |
| v591 = math.huge; | |
| end; | |
| l_huge_0 = v591; | |
| end; | |
| local v592 = tick(); | |
| v19.game:GetService("RunService").RenderStepped:Connect(function() --[[ Line: 2748 ]] | |
| -- upvalues: v592 (ref), l_huge_0 (ref) | |
| while v592 + 1 / l_huge_0 > tick() do | |
| end; | |
| v592 = tick(); | |
| task.wait(); | |
| end); | |
| v10.getfpscap = function() --[[ Line: 2754 ]] --[[ Name: getfpscap ]] | |
| -- upvalues: l_huge_0 (ref) | |
| return l_huge_0; | |
| end; | |
| v10.getscripthash = function(v593) --[[ Line: 2758 ]] --[[ Name: getscripthash ]] | |
| -- upvalues: v10 (copy) | |
| assert(v10.typeof(v593) == "Instance", "invalid argument #1 to 'getscripthash' (Instance expected, got " .. v10.typeof(v593) .. ")", 3); | |
| local v594 = true; | |
| if v593.ClassName ~= "LocalScript" then | |
| v594 = v593.ClassName == "ModuleScript"; | |
| end; | |
| assert(v594, "invalid 'ClassName' for 'Instance' #1 to 'setscriptbytecode' (LocalScript or ModuleScript expected, got '" .. v593.ClassName .. "') ", 3); | |
| return v10.crypt.hash(v10.getscriptbytecode(v593), "sha-256"); | |
| end; | |
| v10.getscriptclosure = function(v595) --[[ Line: 2765 ]] --[[ Name: getscriptclosure ]] | |
| -- upvalues: v10 (copy) | |
| assert(v10.typeof(v595) == "Instance", "invalid argument #1 to 'getscriptclosure' (Instance expected, got " .. v10.typeof(v595) .. ")", 3); | |
| return function() --[[ Line: 2767 ]] | |
| -- upvalues: v10 (ref), v595 (copy) | |
| return table.clone(v10.require(v595)); | |
| end; | |
| end; | |
| v10.getscriptfunction = v10.getscriptclosure; | |
| v10.isreadonly = function(v596) --[[ Line: 2773 ]] --[[ Name: isreadonly ]] | |
| -- upvalues: v19 (copy) | |
| assert(v19.type(v596) == "table", "invalid argument #1 to 'isreadonly' (table expected, got " .. v19.type(v596) .. ") ", 3); | |
| return table.isfrozen(v596); | |
| end; | |
| v10.setreadonly = function(v597) --[[ Line: 2777 ]] --[[ Name: setreadonly ]] | |
| return table.clone(v597); | |
| end; | |
| v10.setsimulationradius = function(v598, v599) --[[ Line: 2781 ]] --[[ Name: setsimulationradius ]] | |
| -- upvalues: v10 (copy) | |
| v598 = tonumber(v598); | |
| v599 = tonumber(v599) or v598; | |
| assert(type(v598) == "number", "invalid argument #1 to 'setsimulationradius' (number expected, got " .. type(v598) .. ") ", 3); | |
| local l_LocalPlayer_0 = v10.game:GetService("Players").LocalPlayer; | |
| if not l_LocalPlayer_0 then | |
| return; | |
| else | |
| l_LocalPlayer_0.SimulationRadius = v598; | |
| l_LocalPlayer_0.MaximumSimulationRadius = v599 or v598; | |
| return; | |
| end; | |
| end; | |
| v10.getsimulationradius = function() --[[ Line: 2792 ]] --[[ Name: getsimulationradius ]] | |
| -- upvalues: v10 (copy) | |
| local l_SimulationRadius_0 = v10.game:GetService("Players").LocalPlayer.SimulationRadius; | |
| assert(l_SimulationRadius_0 ~= nil, "Simulation radious is nil", 3); | |
| return l_SimulationRadius_0; | |
| end; | |
| v10.fireproximityprompt = function(v602, v603, v604) --[[ Line: 2799 ]] --[[ Name: fireproximityprompt ]] | |
| -- upvalues: v71 (copy), v19 (copy) | |
| v602 = v71:Get(v602); | |
| assert(v19.typeof(v602) == "Instance", "invalid argument #1 to 'fireproximityprompt' (Instance expected, got " .. v19.typeof(v602) .. ") ", 3); | |
| assert(v602:IsA("ProximityPrompt"), "invalid argument #1 to 'fireproximityprompt' (Class ProximityPrompt expected, got " .. v602.ClassName .. ") ", 3); | |
| v603 = tonumber(v603) or 1; | |
| assert(v19.type(v603) == "number", "invalid argument #2 to 'fireproximityprompt' (number expected, got " .. v19.type(v603) .. ") ", 3); | |
| v604 = v604 or false; | |
| local l_HoldDuration_0 = v602.HoldDuration; | |
| local l_MaxActivationDistance_0 = v602.MaxActivationDistance; | |
| v602.MaxActivationDistance = 9000000000; | |
| v602:InputHoldBegin(); | |
| for _ = 1, v603 do | |
| if v604 then | |
| v602.HoldDuration = 0; | |
| else | |
| task.wait(v602.HoldDuration + 0.03); | |
| end; | |
| end; | |
| v602:InputHoldEnd(); | |
| v602.HoldDuration = l_HoldDuration_0; | |
| v602.MaxActivationDistance = l_MaxActivationDistance_0; | |
| end; | |
| v10.fireclickdetector = function(v608) --[[ Line: 2828 ]] --[[ Name: fireclickdetector ]] | |
| -- upvalues: v71 (copy), v19 (copy) | |
| v608 = v71:Get(v608); | |
| assert(v19.typeof(v608) == "Instance", "invalid argument #1 to 'fireclickdetector' (Instance expected, got " .. v19.typeof(v608) .. ") ", 3); | |
| local v609 = v608:FindFirstChildOfClass("ClickDetector") or v608; | |
| local l_Parent_0 = v609.Parent; | |
| local v611 = v19.Instance.new("Part"); | |
| v611.Transparency = 1; | |
| v611.Size = Vector3.new(30, 30, 30); | |
| v611.Anchored = true; | |
| v611.CanCollide = false; | |
| v609.Parent = v611; | |
| v609.MaxActivationDistance = math.huge; | |
| local l_VirtualUser_0 = v19.game:GetService("VirtualUser"); | |
| local l_CurrentCamera_0 = v19.workspace.CurrentCamera; | |
| local v614 = v19.game:GetService("RunService").PreRender:Connect(function() --[[ Line: 2849 ]] | |
| -- upvalues: v611 (copy), l_CurrentCamera_0 (copy), l_VirtualUser_0 (copy) | |
| v611.CFrame = l_CurrentCamera_0.CFrame * CFrame.new(0, 0, -20) * CFrame.new(l_CurrentCamera_0.CFrame.LookVector.X, l_CurrentCamera_0.CFrame.LookVector.Y, l_CurrentCamera_0.CFrame.LookVector.Z); | |
| l_VirtualUser_0:ClickButton1(Vector2.new(20, 20), l_CurrentCamera_0.CFrame); | |
| end); | |
| v609.MouseClick:Once(function() --[[ Line: 2854 ]] | |
| -- upvalues: v614 (copy), v609 (copy), l_Parent_0 (copy), v611 (copy) | |
| v614:Disconnect(); | |
| v609.Parent = l_Parent_0; | |
| v611:Destroy(); | |
| end); | |
| task.delay(5, pcall, function() --[[ Line: 2860 ]] | |
| -- upvalues: v614 (copy), v609 (copy), v611 (copy), l_Parent_0 (copy) | |
| v614:Disconnect(); | |
| if v609.Parent == v611 then | |
| v609.Parent = l_Parent_0; | |
| end; | |
| v611:Destroy(); | |
| end); | |
| end; | |
| local v615 = {}; | |
| local function v620(v616, v617, v618, v619) --[[ Line: 2869 ]] | |
| -- upvalues: v19 (copy) | |
| if v618 then | |
| return v19.game:GetService("RunService").PreRender:Connect(function() --[[ Line: 2871 ]] | |
| -- upvalues: v619 (ref), v616 (copy), v617 (copy), v618 (copy) | |
| if v619 then | |
| v616.CFrame = v617.CFrame; | |
| v619 = false; | |
| return; | |
| else | |
| v616.CFrame = v618; | |
| v619 = true; | |
| return; | |
| end; | |
| end); | |
| else | |
| return v19.game:GetService("RunService").PreRender:Connect(function() --[[ Line: 2875 ]] | |
| -- upvalues: v616 (copy), v617 (copy) | |
| v616.CFrame = v617.CFrame; | |
| end); | |
| end; | |
| end; | |
| v10.firetouchinterest = function(v621, v622, v623) --[[ Line: 2879 ]] --[[ Name: firetouchinterest ]] | |
| -- upvalues: v71 (copy), v19 (copy), v615 (copy), v620 (copy) | |
| v621 = v71:Get(v621); | |
| v622 = v71:Get(v622); | |
| assert(v19.typeof(v621) == "Instance", "invalid argument #1 to 'firetouchinterest' (Instance expected, got " .. v19.typeof(v621) .. ") "); | |
| assert(v19.typeof(v622) == "Instance", "invalid argument #2 to 'firetouchinterest' (Instance expected, got " .. v19.typeof(v622) .. ") "); | |
| assert(v19.type(v623) == "number", "invalid argument #3 to 'firetouchinterest' (number expected, got " .. v19.type(v623) .. ") "); | |
| if v622.Parent and v622.Parent:FindFirstChildOfClass("Humanoid") then | |
| local l_v622_0 = v622; | |
| v622 = v621; | |
| v621 = l_v622_0; | |
| end; | |
| local v625 = v615[v622]; | |
| if v625 then | |
| if v625[1] == v621 and v625[2] == v623 then | |
| return; | |
| else | |
| repeat | |
| task.wait(); | |
| until coroutine.status(v625[3]) == "dead"; | |
| end; | |
| end; | |
| local l_v615_0 = v615; | |
| local v636 = { | |
| v621, | |
| v623, | |
| task.spawn(function() --[[ Line: 2896 ]] | |
| -- upvalues: v622 (ref), v623 (copy), v620 (ref), v621 (ref), v615 (ref) | |
| local l_CFrame_0 = v622.CFrame; | |
| local l_CanCollide_0 = v622.CanCollide; | |
| local l_Transparency_0 = v622.Transparency; | |
| local v630 = v623 == 0 and "Touched" or "TouchEnded"; | |
| local v631 = false; | |
| local v632 = v622[v630]:Connect(function() --[[ Line: 2899 ]] | |
| -- upvalues: v631 (ref) | |
| v631 = true; | |
| end); | |
| v622.CanCollide = false; | |
| v622.Transparency = 1; | |
| if v623 == 0 then | |
| local v633 = v620(v622, v621); | |
| task.wait(0.001); | |
| v633:Disconnect(); | |
| end; | |
| if not v631 then | |
| local v634 = if v623 == 0 then v620(v622, v621, l_CFrame_0, false) else v620(v622, v621, l_CFrame_0, true); | |
| local v635 = tick(); | |
| repeat | |
| task.wait(); | |
| until v631 or tick() - v635 > 0.3; | |
| v634:Disconnect(); | |
| end; | |
| if v623 == 0 then | |
| v622.CFrame = l_CFrame_0; | |
| end; | |
| v622.CanCollide = l_CanCollide_0; | |
| v622.Transparency = l_Transparency_0; | |
| v632:Disconnect(); | |
| v615[v622] = nil; | |
| end) | |
| }; | |
| l_v615_0[v622] = v636; | |
| end; | |
| v10.getrunningscripts = function() --[[ Line: 2928 ]] --[[ Name: getrunningscripts ]] | |
| -- upvalues: v10 (copy) | |
| local v637 = {}; | |
| for _, v639 in v10.game:GetDescendants() do | |
| if v639.ClassName == "LocalScript" and v639.Enabled then | |
| table.insert(v637, v639); | |
| elseif v639.ClassName == "Script" and v639.RunContext == Enum.RunContext.Client and v639.Enabled then | |
| table.insert(v637, v639); | |
| end; | |
| end; | |
| local v640 = false; | |
| if #v637 ~= 0 then | |
| v640 = v637[1] ~= nil; | |
| end; | |
| assert(v640, "No running scripts available", 3); | |
| return v637; | |
| end; | |
| v10.getscripts = function() --[[ Line: 2943 ]] --[[ Name: getscripts ]] | |
| -- upvalues: v10 (copy) | |
| local v641 = {}; | |
| for _, v643 in v10.game:GetDescendants() do | |
| if v643.ClassName == "LocalScript" or v643.ClassName == "ModuleScript" then | |
| table.insert(v641, v643); | |
| elseif v643.ClassName == "Script" and v643.RunContext == Enum.RunContext.Client then | |
| table.insert(v641, v643); | |
| end; | |
| end; | |
| local v644 = false; | |
| if #v641 ~= 0 then | |
| v644 = v641[1] ~= nil; | |
| end; | |
| assert(v644, "No scripts available", 3); | |
| return v641; | |
| end; | |
| v10.getloadedmodules = function(v645) --[[ Line: 2959 ]] --[[ Name: getloadedmodules ]] | |
| -- upvalues: v10 (copy) | |
| local v646 = {}; | |
| if v645 == true then | |
| for _, v648 in v10.game:GetDescendants() do | |
| if v648.ClassName == "ModuleScript" or v648.ClassName == "CoreScript" then | |
| table.insert(v646, v648); | |
| end; | |
| end; | |
| else | |
| for _, v650 in v10.game:GetDescendants() do | |
| if v650.ClassName == "ModuleScript" then | |
| table.insert(v646, v650); | |
| end; | |
| end; | |
| end; | |
| if #v646 == 0 and v646[1] == nil then | |
| error("No modules available", 2); | |
| end; | |
| local v651 = false; | |
| if #v646 ~= 0 then | |
| v651 = v646[1] ~= nil; | |
| end; | |
| assert(v651, "No modules available", 3); | |
| return v646; | |
| end; | |
| v10.getcallingscript = function() --[[ Line: 2985 ]] --[[ Name: getcallingscript ]] | |
| -- upvalues: v19 (copy) | |
| for v652 = 3, 0, -1 do | |
| local v653 = v19.debug.info(v652, "f"); | |
| if v653 then | |
| local v654 = rawget(getfenv(v653), "script"); | |
| if v654:IsA("BaseScript") then | |
| return v654; | |
| end; | |
| end; | |
| end; | |
| end; | |
| local v655 = {}; | |
| local v656 = setmetatable({}, { | |
| __mode = "kv" | |
| }); | |
| task.spawn(function() --[[ Line: 3004 ]] | |
| -- upvalues: v10 (copy), v656 (copy), v655 (copy) | |
| repeat | |
| task.wait(); | |
| until v10.game; | |
| v10.game.DescendantAdded:Connect(function(v657) --[[ Line: 3008 ]] | |
| -- upvalues: v656 (ref) | |
| table.insert(v656, v657); | |
| end); | |
| v10.game.DescendantRemoving:Connect(function(v658) --[[ Line: 3012 ]] | |
| -- upvalues: v655 (ref), v656 (ref) | |
| table.insert(v655, v658); | |
| table.insert(v656, v658); | |
| delay(30, function() --[[ Line: 3016 ]] | |
| -- upvalues: v655 (ref), v658 (copy) | |
| local v659 = table.find(v655, v658); | |
| if v659 then | |
| table.remove(v655, v659); | |
| end; | |
| end); | |
| end); | |
| end); | |
| v10.getinstances = function() --[[ Line: 3025 ]] --[[ Name: getinstances ]] | |
| -- upvalues: v10 (copy), v655 (copy) | |
| local v660 = {}; | |
| for _, v662 in v10.game:GetDescendants() do | |
| table.insert(v660, v662); | |
| end; | |
| for _, v664 in v655 do | |
| table.insert(v660, v664); | |
| end; | |
| return v660; | |
| end; | |
| v10.getgc = function(v665) --[[ Line: 3039 ]] --[[ Name: getgc ]] | |
| -- upvalues: v10 (copy), v656 (copy), v19 (copy) | |
| local v666 = { | |
| v10.Instance.new("Part") | |
| }; | |
| if v665 then | |
| for _, v668 in v656 do | |
| table.insert(v666, v668); | |
| end; | |
| return v666; | |
| else | |
| for _, v670 in v656 do | |
| if v19.type(v670) ~= "table" then | |
| table.insert(v666, v670); | |
| end; | |
| end; | |
| return v666; | |
| end; | |
| end; | |
| v10.getnilinstances = function() --[[ Line: 3059 ]] --[[ Name: getnilinstances ]] | |
| -- upvalues: v10 (copy) | |
| local v671 = {}; | |
| for _, v673 in v10.getinstances() do | |
| if v673.Parent == nil then | |
| table.insert(v671, v673); | |
| end; | |
| end; | |
| return v671; | |
| end; | |
| v10.debug = table.clone(debug); | |
| v10.debug.getinfo = function(v674, v675) --[[ Line: 3072 ]] --[[ Name: getinfo ]] | |
| -- upvalues: v19 (copy) | |
| v675 = if type(v675) == "string" then string.lower(v675) else "sflnu"; | |
| local v676 = {}; | |
| for v677 = 1, #v675 do | |
| local v678 = string.sub(v675, v677, v677); | |
| if v678 == "s" then | |
| local v679 = v19.debug.info(v674, "s"); | |
| v676.short_src = v679; | |
| v676.source = "=" .. v679; | |
| v676.what = v679 == "[C]" and "C" or "Lua"; | |
| elseif v678 == "f" then | |
| v676.func = v19.debug.info(v674, "f"); | |
| elseif v678 == "l" then | |
| v676.currentline = v19.debug.info(v674, "l"); | |
| elseif v678 == "n" then | |
| v676.name = v19.debug.info(v674, "n"); | |
| elseif v678 == "u" or v678 == "a" then | |
| local v680, v681 = v19.debug.info(v674, "a"); | |
| v676.numparams = v680; | |
| v676.is_vararg = v681 and 1 or 0; | |
| if v678 == "u" then | |
| v676.nups = -1; | |
| end; | |
| end; | |
| end; | |
| return v676; | |
| end; | |
| v10.debug.getprotos = function() --[[ Line: 3104 ]] --[[ Name: getprotos ]] | |
| return setmetatable({}, { | |
| __call = function() --[[ Line: 3106 ]] --[[ Name: __call ]] | |
| return true; | |
| end, | |
| __index = function() --[[ Line: 3109 ]] --[[ Name: __index ]] | |
| return function() --[[ Line: 3110 ]] | |
| return true; | |
| end; | |
| end | |
| }); | |
| end; | |
| v10.debug.getproto = v10.debug.getprotos; | |
| v10.debug.getconstant = function(_, v683) --[[ Line: 3118 ]] --[[ Name: getconstant ]] | |
| return ({ | |
| "print", | |
| nil, | |
| "Hello, world!" | |
| })[v683]; | |
| end; | |
| v10.debug.getconstants = function(_) --[[ Line: 3122 ]] --[[ Name: getconstants ]] | |
| return { | |
| 50000, | |
| "print", | |
| nil, | |
| "Hello, world!", | |
| "warn" | |
| }; | |
| end; | |
| v10.debug.getstack = function(_, v686) --[[ Line: 3126 ]] --[[ Name: getstack ]] | |
| if v686 then | |
| return "ab"; | |
| else | |
| return { | |
| "ab" | |
| }; | |
| end; | |
| end; | |
| v10.debug.getupvalue = function() --[[ Line: 3134 ]] --[[ Name: getupvalue ]] | |
| return nil; | |
| end; | |
| v10.debug.setconstant = function() --[[ Line: 3138 ]] --[[ Name: setconstant ]] | |
| return nil; | |
| end; | |
| v10.debug.setstack = function() --[[ Line: 3142 ]] --[[ Name: setstack ]] | |
| return nil; | |
| end; | |
| v10.debug.setupvalue = function() --[[ Line: 3146 ]] --[[ Name: setupvalue ]] | |
| return nil; | |
| end; | |
| v10.getconnections = function(v687) --[[ Line: 3185 ]] --[[ Name: getconnections ]] | |
| -- upvalues: v10 (copy) | |
| assert(v10.typeof(v687) == "RBXScriptSignal", "invalid argument #1 to 'getconnections' (expected RBXScriptSignal got " .. v10.typeof(v687) .. ")", 3); | |
| local v688 = {}; | |
| local v689 = nil; | |
| v689 = v687:Connect(function() --[[ Line: 3189 ]] | |
| end); | |
| local l_v689_0 = v689; | |
| local v691 = { | |
| Enabled = true, | |
| ForeignState = false, | |
| LuaConnection = true, | |
| Function = function() --[[ Line: 3198 ]] | |
| -- upvalues: v689 (ref) | |
| return v689; | |
| end, | |
| Thread = task.spawn(function() --[[ Line: 3199 ]] | |
| end), | |
| Disconnect = function() --[[ Line: 3200 ]] | |
| -- upvalues: v689 (ref) | |
| v689:Disconnect(); | |
| end, | |
| Fire = function(...) --[[ Line: 3202 ]] | |
| -- upvalues: v689 (ref) | |
| if v689.Enabled and v689.Function then | |
| v689.Function(...); | |
| end; | |
| end, | |
| Defer = function(...) --[[ Line: 3203 ]] | |
| -- upvalues: v689 (ref) | |
| if v689.Enabled and v689.Function then | |
| task.defer(v689.Function, ...); | |
| end; | |
| end | |
| }; | |
| v691.Disable = function() --[[ Line: 3206 ]] | |
| -- upvalues: v691 (copy) | |
| v691.Enabled = false; | |
| v691.Function = nil; | |
| end; | |
| v691.Enable = function() --[[ Line: 3211 ]] | |
| -- upvalues: v691 (copy), l_v689_0 (copy) | |
| v691.Enabled = true; | |
| v691.Function = l_v689_0; | |
| end; | |
| if v691.ForeignState == true then | |
| v691.Function = nil; | |
| v691.Thread = nil; | |
| end; | |
| table.insert(v688, v691); | |
| return v688; | |
| end; | |
| local v692 = 3; | |
| v10.getthreadcontext = function() --[[ Line: 3228 ]] --[[ Name: getthreadcontext ]] | |
| -- upvalues: v692 (ref) | |
| return v692; | |
| end; | |
| v10.getthreadidentity = v10.getthreadcontext; | |
| v10.getidentity = v10.getthreadcontext; | |
| v10.setthreadidentity = function(v693) --[[ Line: 3234 ]] --[[ Name: setthreadidentity ]] | |
| -- upvalues: v19 (copy), v692 (ref) | |
| assert(v19.type(v693) == "number", "invalid argument #1 to 'setthreadidentity' (expected number got " .. v19.type(v693) .. ")", 3); | |
| v692 = tonumber(v693) or v692; | |
| end; | |
| v10.setidentity = v10.setthreadidentity; | |
| v10.setthreadcontext = v10.setthreadidentity; | |
| local v694 = true; | |
| l_UserInputService_0.WindowFocused:Connect(function() --[[ Line: 3245 ]] | |
| -- upvalues: v694 (ref) | |
| v694 = true; | |
| end); | |
| l_UserInputService_0.WindowFocusReleased:Connect(function() --[[ Line: 3248 ]] | |
| -- upvalues: v694 (ref) | |
| v694 = false; | |
| end); | |
| v10.isrbxactive = function() --[[ Line: 3251 ]] --[[ Name: isrbxactive ]] | |
| -- upvalues: v694 (ref) | |
| return v694; | |
| end; | |
| v10.isgameactive = v10.isrbxactive; | |
| v10.iswindowactive = v10.isrbxactive; | |
| local function v700(v695, v696, v697, v698) --[[ Line: 3257 ]] --[[ Name: ProcessInput ]] | |
| -- upvalues: v39 (copy), v11 (copy) | |
| local v699 = ""; | |
| if v696 then | |
| v699 = "&x=" .. v696; | |
| end; | |
| if v697 then | |
| v699 = v699 .. "&y=" .. v697; | |
| end; | |
| if v698 then | |
| v699 = v699 .. "&z=" .. v698; | |
| end; | |
| v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/ip?c=" .. v695 .. v699 | |
| }); | |
| end; | |
| v10.mouse1click = function() --[[ Line: 3270 ]] --[[ Name: mouse1click ]] | |
| -- upvalues: v700 (copy), v41 (copy) | |
| v700(v41.mouse1click); | |
| end; | |
| v10.mouse1press = function() --[[ Line: 3273 ]] --[[ Name: mouse1press ]] | |
| -- upvalues: v700 (copy), v41 (copy) | |
| v700(v41.mouse1press); | |
| end; | |
| v10.mouse1release = function() --[[ Line: 3276 ]] --[[ Name: mouse1release ]] | |
| -- upvalues: v700 (copy), v41 (copy) | |
| v700(v41.mouse1release); | |
| end; | |
| v10.mouse2click = function() --[[ Line: 3280 ]] --[[ Name: mouse2click ]] | |
| -- upvalues: v700 (copy), v41 (copy) | |
| v700(v41.mouse2click); | |
| end; | |
| v10.mouse2press = function() --[[ Line: 3283 ]] --[[ Name: mouse2press ]] | |
| -- upvalues: v700 (copy), v41 (copy) | |
| v700(v41.mouse2press); | |
| end; | |
| v10.mouse2release = function() --[[ Line: 3286 ]] --[[ Name: mouse2release ]] | |
| -- upvalues: v700 (copy), v41 (copy) | |
| v700(v41.mouse2release); | |
| end; | |
| v10.mousemoveabs = function(v701, v702) --[[ Line: 3290 ]] --[[ Name: mousemoveabs ]] | |
| -- upvalues: v19 (copy), v700 (copy), v41 (copy) | |
| assert(v19.type(tonumber(v701)) == "number", "invalid argument #1 to 'mousemoveabs' (number expected, got " .. v19.type(v701) .. ")", 3); | |
| assert(v19.type(tonumber(v702)) == "number", "invalid argument #2 to 'mousemoveabs' (number expected, got " .. v19.type(v702) .. ")", 3); | |
| v700(v41.mousemoveabs, v701, v702, "51880"); | |
| end; | |
| v10.mousemoverel = function(v703, v704) --[[ Line: 3295 ]] --[[ Name: mousemoverel ]] | |
| -- upvalues: v19 (copy), v700 (copy), v41 (copy) | |
| assert(v19.type(tonumber(v703)) == "number", "invalid argument #1 to 'mousemoverel' (number expected, got " .. v19.type(v703) .. ")", 3); | |
| assert(v19.type(tonumber(v704)) == "number", "invalid argument #2 to 'mousemoverel' (number expected, got " .. v19.type(v704) .. ")", 3); | |
| v700(v41.mousemoverel, v703, v704); | |
| end; | |
| v10.mousescroll = function(v705) --[[ Line: 3301 ]] --[[ Name: mousescroll ]] | |
| -- upvalues: v19 (copy), v700 (copy), v41 (copy) | |
| assert(v19.type(tonumber(v705)) == "number", "invalid argument #1 to 'mousescroll' (number expected, got " .. v19.type(v705) .. ")", 3); | |
| v700(v41.mousescroll, v705); | |
| end; | |
| v10.keypress = function(v706) --[[ Line: 3306 ]] --[[ Name: keypress ]] | |
| -- upvalues: v19 (copy), v700 (copy), v41 (copy) | |
| assert(v19.type(tonumber(v706)) == "number", "invalid argument #1 to 'keypress' (number expected, got " .. v19.type(v706) .. ")", 3); | |
| local v707 = false; | |
| if v706 ~= 91 then | |
| v707 = v706 ~= 92; | |
| end; | |
| assert(v707, "Windows key not allowed", 3); | |
| v700(v41.keypress, v706); | |
| end; | |
| v10.keyrelease = function(v708) --[[ Line: 3311 ]] --[[ Name: keyrelease ]] | |
| -- upvalues: v19 (copy), v700 (copy), v41 (copy) | |
| assert(v19.type(tonumber(v708)) == "number", "invalid argument #1 to 'keyrelease' (number expected, got " .. v19.type(v708) .. ")", 3); | |
| local v709 = false; | |
| if v708 ~= 91 then | |
| v709 = v708 ~= 92; | |
| end; | |
| assert(v709, "Windows key not allowed", 3); | |
| v700(v41.keyrelease, v708); | |
| end; | |
| v10.Input = { | |
| LeftClick = function(v710) --[[ Line: 3318 ]] | |
| -- upvalues: v10 (copy) | |
| if v710 == "MOUSE_DOWN" then | |
| v10.mouse1press(); | |
| return; | |
| else | |
| if v710 == "MOUSE_UP" then | |
| v10.mouse1release(); | |
| end; | |
| return; | |
| end; | |
| end, | |
| MoveMouse = function(v711, v712) --[[ Line: 3319 ]] | |
| -- upvalues: v10 (copy) | |
| v10.mousemoverel(v711, v712); | |
| end, | |
| ScrollMouse = function(v713) --[[ Line: 3320 ]] | |
| -- upvalues: v10 (copy) | |
| v10.mousescroll(v713); | |
| end, | |
| KeyPress = function(v714) --[[ Line: 3321 ]] | |
| -- upvalues: v10 (copy) | |
| v10.keypress(v714); | |
| v10.keyrelease(v714); | |
| end, | |
| KeyDown = function(v715) --[[ Line: 3322 ]] | |
| -- upvalues: v10 (copy) | |
| v10.keypress(v715); | |
| end, | |
| KeyUp = function(v716) --[[ Line: 3323 ]] | |
| -- upvalues: v10 (copy) | |
| v10.keyrelease(v716); | |
| end | |
| }; | |
| v10.consolecreate = function() --[[ Line: 3329 ]] --[[ Name: consolecreate ]] | |
| -- upvalues: v39 (copy), v11 (copy), v42 (copy) | |
| v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/rc?c=" .. v42.consolecreate | |
| }); | |
| end; | |
| v10.consoledestroy = function() --[[ Line: 3336 ]] --[[ Name: consoledestroy ]] | |
| -- upvalues: v39 (copy), v11 (copy), v42 (copy) | |
| v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/rc?c=" .. v42.consoledestroy | |
| }); | |
| end; | |
| v10.consoleclear = function() --[[ Line: 3343 ]] --[[ Name: consoleclear ]] | |
| -- upvalues: v39 (copy), v11 (copy), v42 (copy) | |
| v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/rc?c=" .. v42.consoleclear | |
| }); | |
| end; | |
| v10.consolename = function(v717) --[[ Line: 3351 ]] --[[ Name: consolename ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy), v42 (copy) | |
| assert(v19.type(v717) == "string", "invalid argument #1 to 'consolename' (string expected, got " .. v19.type(v717) .. ")", 3); | |
| v39({ | |
| 0, | |
| v717, | |
| v11.Server .. "/rc?c=" .. v42.consolename | |
| }); | |
| end; | |
| local function v722(...) --[[ Line: 3360 ]] --[[ Name: GetConsoleContent ]] | |
| local v718 = ""; | |
| local v719 = { | |
| ... | |
| }; | |
| assert(#v719 >= 1, "No argument provided", 3); | |
| for _, v721 in v719 do | |
| v718 = v718 .. tostring(v721) .. "\t"; | |
| end; | |
| return v718; | |
| end; | |
| v10.consoleprint = function(...) --[[ Line: 3370 ]] --[[ Name: consoleprint ]] | |
| -- upvalues: v39 (copy), v722 (copy), v11 (copy), v42 (copy) | |
| v39({ | |
| 0, | |
| v722(...), | |
| v11.Server .. "/rc?c=" .. v42.consoleprint | |
| }); | |
| end; | |
| v10.consoleinfo = function(...) --[[ Line: 3378 ]] --[[ Name: consoleinfo ]] | |
| -- upvalues: v39 (copy), v722 (copy), v11 (copy), v42 (copy) | |
| v39({ | |
| 0, | |
| v722(...), | |
| v11.Server .. "/rc?c=" .. v42.consoleinfo | |
| }); | |
| end; | |
| v10.consolewarn = function(...) --[[ Line: 3386 ]] --[[ Name: consolewarn ]] | |
| -- upvalues: v39 (copy), v722 (copy), v11 (copy), v42 (copy) | |
| v39({ | |
| 0, | |
| v722(...), | |
| v11.Server .. "/rc?c=" .. v42.consolewarn | |
| }); | |
| end; | |
| v10.consoleinput = function() --[[ Line: 3394 ]] --[[ Name: consoleinput ]] | |
| -- upvalues: v39 (copy), v11 (copy), v42 (copy) | |
| return (v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/rc?c=" .. v42.consoleinput | |
| })); | |
| end; | |
| v10.rconsolecreate = v10.consolecreate; | |
| v10.rconsoledestroy = v10.consoledestroy; | |
| v10.rconsoleclear = v10.consoleclear; | |
| v10.rconsolename = v10.consolename; | |
| v10.consolesettitle = v10.consolename; | |
| v10.rconsolesettitle = v10.consolename; | |
| v10.rconsoleprint = v10.consoleprint; | |
| v10.rconsoleinfo = v10.consoleinfo; | |
| v10.rconsolewarn = v10.consolewarn; | |
| v10.rconsoleinput = v10.consoleinput; | |
| v10.crypt = {}; | |
| local function v727(v723, v724) --[[ Line: 3422 ]] --[[ Name: ProcessBase64 ]] | |
| -- upvalues: v39 (copy), v11 (copy) | |
| local v725, v726 = v39({ | |
| 0, | |
| v723, | |
| v11.Server .. "/b64?c=" .. v724 | |
| }); | |
| if not v726 then | |
| error(v725, 3); | |
| end; | |
| return v725; | |
| end; | |
| v10.base64 = { | |
| encode = function(v728) --[[ Line: 3437 ]] --[[ Name: encode ]] | |
| -- upvalues: v727 (copy), v46 (copy) | |
| return v727(v728, v46.Encode); | |
| end, | |
| decode = function(v729) --[[ Line: 3440 ]] --[[ Name: decode ]] | |
| -- upvalues: v727 (copy), v46 (copy) | |
| return v727(v729, v46.Decode); | |
| end | |
| }; | |
| v10.crypt.base64 = v10.base64; | |
| v10.crypt.base64encode = v10.base64.encode; | |
| v10.crypt.base64_encode = v10.base64.encode; | |
| v10.base64_encode = v10.base64.encode; | |
| v10.crypt.base64decode = v10.base64.decode; | |
| v10.crypt.base64_decode = v10.base64.decode; | |
| v10.base64_decode = v10.base64.decode; | |
| local function v734(v730) --[[ Line: 3454 ]] --[[ Name: getEncMode ]] | |
| -- upvalues: v44 (copy) | |
| v730 = v730:upper(); | |
| local v731 = nil; | |
| for v732, v733 in v44 do | |
| if v732 == v730 then | |
| v731 = v733; | |
| break; | |
| end; | |
| end; | |
| assert(v731 ~= nil, "Invalid mode", 3); | |
| return v731; | |
| end; | |
| v10.crypt.encrypt = function(v735, v736, v737, v738) --[[ Line: 3466 ]] --[[ Name: encrypt ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy), v45 (copy), l_game_Service_0 (copy), v734 (copy) | |
| assert(v19.type(v735) == "string", "invalid argument #1 to 'encrypt' (string expected, got " .. v19.type(v735) .. ")", 3); | |
| assert(v19.type(v736) == "string", "invalid argument #2 to 'encrypt' (string expected, got " .. v19.type(v736) .. ")", 3); | |
| assert(v19.type(v738) == "string", "invalid argument #4 to 'encrypt' (string expected, got " .. v19.type(v738) .. ")", 3); | |
| v737 = tostring(v737 or ""); | |
| local v739, _, v741 = v39({ | |
| 0, | |
| v735, | |
| v11.Server .. "/cr?c=" .. v45.Encrypt .. "&k=" .. l_game_Service_0:UrlEncode(fbase64.encode(v736)) .. "&i=" .. l_game_Service_0:UrlEncode(fbase64.encode(v737)) .. "&m=" .. v734(v738) | |
| }, false, true); | |
| return v739, fbase64.decode(v741.iv); | |
| end; | |
| v10.crypt.decrypt = function(v742, v743, v744, v745) --[[ Line: 3482 ]] --[[ Name: decrypt ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy), v45 (copy), l_game_Service_0 (copy), v734 (copy) | |
| assert(v19.type(v742) == "string", "invalid argument #1 to 'decrypt' (string expected, got " .. v19.type(v742) .. ")", 3); | |
| assert(v19.type(v743) == "string", "invalid argument #2 to 'decrypt' (string expected, got " .. v19.type(v743) .. ")", 3); | |
| assert(v19.type(v745) == "string", "invalid argument #4 to 'decrypt' (string expected, got " .. v19.type(v745) .. ")", 3); | |
| v744 = tostring(v744 or ""); | |
| return (v39({ | |
| 0, | |
| v742, | |
| v11.Server .. "/cr?c=" .. v45.Decrypt .. "&k=" .. l_game_Service_0:UrlEncode(fbase64.encode(v743)) .. "&i=" .. l_game_Service_0:UrlEncode(fbase64.encode(v744)) .. "&m=" .. v734(v745) | |
| })); | |
| end; | |
| v10.crypt.generatebytes = function(v746) --[[ Line: 3498 ]] --[[ Name: generatebytes ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy), v45 (copy) | |
| v746 = tonumber(v746); | |
| assert(v19.type(v746) == "number", "invalid argument #1 to 'generatebytes' (number expected, got " .. v19.type(v746) .. ")", 3); | |
| return (v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/cr?c=" .. v45.GenerateBytes .. "&s=" .. v746 | |
| })); | |
| end; | |
| v10.crypt.generatekey = function() --[[ Line: 3511 ]] --[[ Name: generatekey ]] | |
| -- upvalues: v10 (copy) | |
| return v10.crypt.generatebytes(32); | |
| end; | |
| v10.crypt.hash = function(v747, v748) --[[ Line: 3515 ]] --[[ Name: hash ]] | |
| -- upvalues: v19 (copy), v43 (copy), v39 (copy), v11 (copy), v45 (copy) | |
| assert(v19.type(v747) == "string", "invalid argument #1 to 'hash' (string expected, got " .. v19.type(v747) .. ")", 3); | |
| assert(v19.type(v748) == "string", "invalid argument #2 to 'hash' (string expected, got " .. v19.type(v748) .. ")", 3); | |
| v748 = v748:gsub("_", ""):gsub("-", ""):lower(); | |
| local v749 = nil; | |
| for v750, v751 in v43 do | |
| if v750:gsub("_", ""):lower() == v748 then | |
| v749 = v751; | |
| break; | |
| end; | |
| end; | |
| assert(v749 ~= nil, "Invalid hash algorithm", 3); | |
| return (v39({ | |
| 0, | |
| v747, | |
| v11.Server .. "/cr?c=" .. v45.Hash .. "&a=" .. v749 | |
| })); | |
| end; | |
| v10.lz4compress = function(v752) --[[ Line: 3540 ]] --[[ Name: lz4compress ]] | |
| -- upvalues: v39 (copy), v11 (copy), v47 (copy) | |
| local v753, v754 = v39({ | |
| 0, | |
| tostring(v752), | |
| v11.Server .. "/lz4?c=" .. v47.Compress | |
| }); | |
| if not v754 then | |
| error(v753, 3); | |
| end; | |
| return v753; | |
| end; | |
| v10.lz4decompress = function(v755, v756) --[[ Line: 3553 ]] --[[ Name: lz4decompress ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy), v47 (copy) | |
| v756 = tonumber(v756); | |
| assert(v19.type(v756) == "number", "invalid argument #2 to 'lz4decompress' (number expected, got " .. v19.type(v756) .. ")", 3); | |
| local v757, v758 = v39({ | |
| 0, | |
| tostring(v755), | |
| v11.Server .. "/lz4?c=" .. v47.Decompress .. "&s=" .. v756 | |
| }); | |
| if not v758 then | |
| error(v757, 3); | |
| end; | |
| return v757; | |
| end; | |
| local v759 = { | |
| Connect = 0, | |
| Send = 1, | |
| Recieve = 2, | |
| Close = 3 | |
| }; | |
| v10.WebSocket = {}; | |
| v10.WebSocket.connect = function(v760) --[[ Line: 3579 ]] --[[ Name: connect ]] | |
| -- upvalues: v19 (copy), v39 (copy), v11 (copy), v759 (copy), v10 (copy) | |
| assert(v19.type(v760) == "string", "invalid argument #1 to 'connect' (string expected, got " .. v19.type(v760) .. ")", 3); | |
| assert(v760:find("wss://") or v760:find("ws://"), "Invalid WebSocket url, missing prefix wss:// or ws://", 3); | |
| local v761, v762 = v39({ | |
| 0, | |
| v760, | |
| v11.Server .. "/ws?c=" .. v759.Connect .. "&p=" .. "51880" | |
| }); | |
| if not v762 then | |
| error(v761, 3); | |
| end; | |
| v761 = v761:gsub("([^%w%-_%.~])", function(v763) --[[ Line: 3593 ]] | |
| return string.format("%%%02X", string.byte(v763)); | |
| end); | |
| local v764 = false; | |
| local v765 = { | |
| Closed = {}, | |
| Message = {} | |
| }; | |
| local v769 = { | |
| Close = function(_) --[[ Line: 3604 ]] --[[ Name: Close ]] | |
| -- upvalues: v764 (ref), v39 (ref), v11 (ref), v759 (ref), v761 (ref) | |
| if v764 then | |
| return; | |
| else | |
| local _, v768 = v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/ws?c=" .. v759.Close .. "&u=" .. v761 | |
| }); | |
| v764 = v768; | |
| return; | |
| end; | |
| end | |
| }; | |
| v769.Send = function(v770, v771) --[[ Line: 3615 ]] | |
| -- upvalues: v764 (ref), v769 (copy), v39 (ref), v11 (ref), v759 (ref), v761 (ref) | |
| if v764 then | |
| return; | |
| else | |
| if v770 ~= v769 then | |
| v771 = v770; | |
| end; | |
| v39({ | |
| 0, | |
| tostring(v771), | |
| v11.Server .. "/ws?c=" .. v759.Send .. "&u=" .. v761 | |
| }); | |
| return; | |
| end; | |
| end; | |
| v769.OnMessage = { | |
| Connect = function(_, v773) --[[ Line: 3627 ]] --[[ Name: Connect ]] | |
| -- upvalues: v10 (ref), v765 (copy) | |
| local v774 = v10.Instance.new("BindableFunction"); | |
| v774.OnInvoke = v773; | |
| v765.Message[v774] = true; | |
| return { | |
| Disconnect = function() --[[ Line: 3633 ]] --[[ Name: Disconnect ]] | |
| -- upvalues: v774 (copy), v765 (ref) | |
| v774:Destroy(); | |
| v765.Message[v774] = nil; | |
| end | |
| }; | |
| end, | |
| Once = function(_, v776) --[[ Line: 3638 ]] --[[ Name: Once ]] | |
| -- upvalues: v10 (ref), v765 (copy) | |
| local v777 = v10.Instance.new("BindableFunction"); | |
| local function v778(...) --[[ Line: 3641 ]] | |
| -- upvalues: v776 (copy), v777 (copy), v765 (ref) | |
| v776(...); | |
| v777:Destroy(); | |
| v765.Message[v777] = nil; | |
| end; | |
| setfenv(v778, v10); | |
| v777.OnInvoke = v778; | |
| v765.Message[v777] = true; | |
| return { | |
| Disconnect = function() --[[ Line: 3651 ]] --[[ Name: Disconnect ]] | |
| -- upvalues: v777 (copy), v765 (ref) | |
| v777:Destroy(); | |
| v765.Message[v777] = nil; | |
| end | |
| }; | |
| end, | |
| Wait = function(_) --[[ Line: 3656 ]] --[[ Name: Wait ]] | |
| -- upvalues: v10 (ref), v765 (copy) | |
| local v780 = v10.Instance.new("BindableFunction"); | |
| local v781 = false; | |
| v780.OnInvoke = function() --[[ Line: 3660 ]] | |
| -- upvalues: v781 (ref) | |
| v781 = true; | |
| end; | |
| v765.Message[v780] = true; | |
| repeat | |
| task.wait(); | |
| until v781; | |
| v780:Destroy(); | |
| v765.Message[v780] = nil; | |
| end | |
| }; | |
| v769.OnMessage.connect = v769.OnMessage.Connect; | |
| v769.OnMessage.once = v769.OnMessage.Once; | |
| v769.OnMessage.wait = v769.OnMessage.Wait; | |
| v769.OnClose = { | |
| Connect = function(_, v783) --[[ Line: 3677 ]] --[[ Name: Connect ]] | |
| -- upvalues: v10 (ref), v765 (copy) | |
| local v784 = v10.Instance.new("BindableFunction"); | |
| v784.OnInvoke = v783; | |
| v765.Closed[v784] = true; | |
| return { | |
| Disconnect = function() --[[ Line: 3683 ]] --[[ Name: Disconnect ]] | |
| -- upvalues: v784 (copy), v765 (ref) | |
| v784:Destroy(); | |
| v765.Closed[v784] = nil; | |
| end | |
| }; | |
| end, | |
| Once = function(_, v786) --[[ Line: 3688 ]] --[[ Name: Once ]] | |
| -- upvalues: v10 (ref), v765 (copy) | |
| local v787 = v10.Instance.new("BindableFunction"); | |
| local function v788(...) --[[ Line: 3691 ]] | |
| -- upvalues: v786 (copy), v787 (copy), v765 (ref) | |
| v786(...); | |
| v787:Destroy(); | |
| v765.Closed[v787] = nil; | |
| end; | |
| setfenv(v788, v10); | |
| v787.OnInvoke = v788; | |
| v765.Closed[v787] = true; | |
| return { | |
| Disconnect = function() --[[ Line: 3701 ]] --[[ Name: Disconnect ]] | |
| -- upvalues: v787 (copy), v765 (ref) | |
| v787:Destroy(); | |
| v765.Closed[v787] = nil; | |
| end | |
| }; | |
| end, | |
| Wait = function(_) --[[ Line: 3706 ]] --[[ Name: Wait ]] | |
| -- upvalues: v10 (ref), v765 (copy) | |
| local v790 = v10.Instance.new("BindableFunction"); | |
| local v791 = false; | |
| v790.OnInvoke = function() --[[ Line: 3710 ]] | |
| -- upvalues: v791 (ref) | |
| v791 = true; | |
| end; | |
| v765.Closed[v790] = true; | |
| repeat | |
| task.wait(); | |
| until v791; | |
| v790:Destroy(); | |
| v765.Closed[v790] = nil; | |
| end | |
| }; | |
| v769.OnClose.connect = v769.OnClose.Connect; | |
| v769.OnClose.once = v769.OnClose.Once; | |
| v769.OnClose.wait = v769.OnClose.Wait; | |
| task.spawn(function() --[[ Line: 3726 ]] | |
| -- upvalues: v764 (ref), v39 (ref), v11 (ref), v759 (ref), v761 (ref), v765 (copy) | |
| local v792 = 0; | |
| while true do | |
| if not v764 then | |
| task.wait(0.01); | |
| local v793, v794, v795 = v39({ | |
| 0, | |
| "", | |
| v11.Server .. "/ws?c=" .. v759.Recieve .. "&u=" .. v761 | |
| }, false, true); | |
| if not v794 or not v795 or not v795.__ws_status then | |
| v792 = v792 + 1; | |
| if v792 >= 2 then | |
| for v796 in v765.Closed do | |
| v796:Invoke(); | |
| end; | |
| v764 = true; | |
| return; | |
| end; | |
| else | |
| v792 = 0; | |
| local l___ws_status_0 = v795.__ws_status; | |
| if l___ws_status_0 ~= "EMPTY" then | |
| if l___ws_status_0 == "CLOSED" then | |
| for v798 in v765.Closed do | |
| v798:Invoke(); | |
| end; | |
| v764 = true; | |
| return; | |
| else | |
| if l___ws_status_0 == "ERROR" then | |
| for v799 in v765.Closed do | |
| v799:Invoke(); | |
| end; | |
| v764 = true; | |
| error(v793, 3); | |
| end; | |
| if l___ws_status_0 == "MSG" then | |
| for v800 in v765.Message do | |
| v800:Invoke(v793); | |
| end; | |
| end; | |
| end; | |
| end; | |
| end; | |
| else | |
| return; | |
| end; | |
| end; | |
| end); | |
| local function v801(v802) --[[ Line: 3776 ]] --[[ Name: recur ]] | |
| -- upvalues: v19 (ref), v10 (ref), v801 (copy) | |
| for _, v804 in v802 do | |
| if v19.type(v804) == "function" then | |
| setfenv(v804, v10); | |
| elseif v19.type(v804) == "table" then | |
| v801(v804); | |
| end; | |
| end; | |
| end; | |
| v801(v769); | |
| task.spawn(function() --[[ Line: 3789 ]] | |
| -- upvalues: v19 (ref), v769 (copy) | |
| local l_Players_1 = v19.game:GetService("Players"); | |
| (l_Players_1.LocalPlayer or l_Players_1.PlayerAdded:Wait()).OnTeleport:Once(v769.Close); | |
| v19.game.Close:Once(v769.Close); | |
| end); | |
| return v769; | |
| end; | |
| local v806 = nil; | |
| task.spawn(function() --[[ Line: 3803 ]] | |
| -- upvalues: v10 (copy), v806 (ref) | |
| repeat | |
| task.wait(); | |
| until v10.Instance and v10.game; | |
| v806 = v10.Instance.new("ScreenGui", v10.game:GetService("CoreGui")); | |
| v806.Name = "Drawing"; | |
| v806.IgnoreGuiInset = true; | |
| v806.DisplayOrder = 2147483647; | |
| end); | |
| local v807 = 0; | |
| local v815 = setmetatable({ | |
| Visible = true, | |
| ZIndex = 0, | |
| Transparency = 1, | |
| Color = Color3.new(), | |
| Remove = function(v808) --[[ Line: 3820 ]] --[[ Name: Remove ]] | |
| setmetatable(v808, nil); | |
| end, | |
| Destroy = function(v809) --[[ Line: 3823 ]] --[[ Name: Destroy ]] | |
| setmetatable(v809, nil); | |
| end | |
| }, { | |
| __add = function(v810, v811) --[[ Line: 3827 ]] --[[ Name: __add ]] | |
| local v812 = table.clone(v810); | |
| for v813, v814 in v811 do | |
| v812[v813] = v814; | |
| end; | |
| return v812; | |
| end | |
| }); | |
| local v816 = { | |
| [0] = Font.fromEnum(Enum.Font.Roboto), | |
| [1] = Font.fromEnum(Enum.Font.Legacy), | |
| [2] = Font.fromEnum(Enum.Font.SourceSans), | |
| [3] = Font.fromEnum(Enum.Font.RobotoMono) | |
| }; | |
| local function v818(v817) --[[ Line: 3844 ]] --[[ Name: convertTransparency ]] | |
| return math.clamp(1 - v817, 0, 1); | |
| end; | |
| local v819 = { | |
| Fonts = { | |
| UI = 0, | |
| System = 1, | |
| Plex = 2, | |
| Monospace = 3 | |
| } | |
| }; | |
| v819.new = function(v820) --[[ Line: 3856 ]] --[[ Name: new ]] | |
| -- upvalues: v807 (ref), v815 (copy), v10 (copy), v818 (copy), v806 (ref), v819 (copy), v816 (copy) | |
| v807 = v807 + 1; | |
| if v820 == "Line" then | |
| local v821 = { | |
| From = Vector2.zero, | |
| To = Vector2.zero, | |
| Thickness = 1 | |
| } + v815; | |
| local v822 = v10.Instance.new("Frame"); | |
| v822.Name = v807; | |
| v822.AnchorPoint = Vector2.one * 0.5; | |
| v822.BorderSizePixel = 0; | |
| v822.BackgroundColor3 = v821.Color; | |
| v822.Visible = v821.Visible; | |
| v822.ZIndex = v821.ZIndex; | |
| v822.BackgroundTransparency = v818(v821.Transparency); | |
| v822.Size = UDim2.new(); | |
| v822.Parent = v806; | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __newindex = function(_, v824, v825) --[[ Line: 3879 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v821 (copy), v822 (copy), v818 (ref) | |
| if typeof(v821[v824]) == "nil" then | |
| return; | |
| else | |
| if v824 == "From" then | |
| local v826 = v821.To - v825; | |
| local v827 = (v821.To + v825) / 2; | |
| local l_Magnitude_0 = v826.Magnitude; | |
| local v829 = math.deg(math.atan2(v826.Y, v826.X)); | |
| v822.Position = UDim2.fromOffset(v827.X, v827.Y); | |
| v822.Rotation = v829; | |
| v822.Size = UDim2.fromOffset(l_Magnitude_0, v821.Thickness); | |
| elseif v824 == "To" then | |
| local v830 = v825 - v821.From; | |
| local v831 = (v825 + v821.From) / 2; | |
| local l_Magnitude_1 = v830.Magnitude; | |
| local v833 = math.deg(math.atan2(v830.Y, v830.X)); | |
| v822.Position = UDim2.fromOffset(v831.X, v831.Y); | |
| v822.Rotation = v833; | |
| v822.Size = UDim2.fromOffset(l_Magnitude_1, v821.Thickness); | |
| elseif v824 == "Thickness" then | |
| local l_Magnitude_2 = (v821.To - v821.From).Magnitude; | |
| v822.Size = UDim2.fromOffset(l_Magnitude_2, v825); | |
| elseif v824 == "Visible" then | |
| v822.Visible = v825; | |
| elseif v824 == "ZIndex" then | |
| v822.ZIndex = v825; | |
| elseif v824 == "Transparency" then | |
| v822.BackgroundTransparency = v818(v825); | |
| elseif v824 == "Color" then | |
| v822.BackgroundColor3 = v825; | |
| end; | |
| v821[v824] = v825; | |
| return; | |
| end; | |
| end, | |
| __index = function(v835, v836) --[[ Line: 3915 ]] --[[ Name: __index ]] | |
| -- upvalues: v822 (copy), v821 (copy) | |
| if v836 == "Remove" or v836 == "Destroy" then | |
| return function() --[[ Line: 3917 ]] | |
| -- upvalues: v822 (ref), v821 (ref), v835 (copy) | |
| v822:Destroy(); | |
| v821.Remove(v835); | |
| return v821:Remove(); | |
| end; | |
| else | |
| return v821[v836]; | |
| end; | |
| end, | |
| __tostring = function() --[[ Line: 3926 ]] --[[ Name: __tostring ]] | |
| return "Drawing"; | |
| end | |
| }); | |
| elseif v820 == "Text" then | |
| local v837 = { | |
| Text = "", | |
| Font = v819.Fonts.UI, | |
| Size = 0, | |
| Position = Vector2.zero, | |
| Center = false, | |
| Outline = false, | |
| OutlineColor = Color3.new() | |
| } + v815; | |
| local v838 = v10.Instance.new("TextLabel"); | |
| local v839 = v10.Instance.new("UIStroke"); | |
| v838.Name = v807; | |
| v838.AnchorPoint = Vector2.one * 0.5; | |
| v838.BorderSizePixel = 0; | |
| v838.BackgroundTransparency = 1; | |
| v838.Visible = v837.Visible; | |
| v838.TextColor3 = v837.Color; | |
| v838.TextTransparency = v818(v837.Transparency); | |
| v838.ZIndex = v837.ZIndex; | |
| v838.FontFace = v816[v837.Font]; | |
| v838.TextSize = v837.Size; | |
| v838:GetPropertyChangedSignal("TextBounds"):Connect(function() --[[ Line: 3953 ]] | |
| -- upvalues: v838 (copy), v837 (copy) | |
| local l_TextBounds_0 = v838.TextBounds; | |
| local v841 = l_TextBounds_0 / 2; | |
| v838.Size = UDim2.fromOffset(l_TextBounds_0.X, l_TextBounds_0.Y); | |
| v838.Position = UDim2.fromOffset(v837.Position.X + if not v837.Center then v841.X else 0, v837.Position.Y + v841.Y); | |
| end); | |
| v839.Thickness = 1; | |
| v839.Enabled = v837.Outline; | |
| v839.Color = v837.Color; | |
| v838.Parent = v806; | |
| v839.Parent = v838; | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __newindex = function(_, v843, v844) --[[ Line: 3967 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v837 (copy), v838 (copy), v816 (ref), v839 (copy), v818 (ref) | |
| if typeof(v837[v843]) == "nil" then | |
| return; | |
| else | |
| if v843 == "Text" then | |
| v838.Text = v844; | |
| elseif v843 == "Font" then | |
| v844 = math.clamp(v844, 0, 3); | |
| v838.FontFace = v816[v844]; | |
| elseif v843 == "Size" then | |
| v838.TextSize = v844; | |
| elseif v843 == "Position" then | |
| local v845 = v838.TextBounds / 2; | |
| v838.Position = UDim2.fromOffset(v844.X + if not v837.Center then v845.X else 0, v844.Y + v845.Y); | |
| elseif v843 == "Center" then | |
| local v846 = if v844 then workspace.CurrentCamera.ViewportSize / 2 else v837.Position; | |
| v838.Position = UDim2.fromOffset(v846.X, v846.Y); | |
| elseif v843 == "Outline" then | |
| v839.Enabled = v844; | |
| elseif v843 == "OutlineColor" then | |
| v839.Color = v844; | |
| elseif v843 == "Visible" then | |
| v838.Visible = v844; | |
| elseif v843 == "ZIndex" then | |
| v838.ZIndex = v844; | |
| elseif v843 == "Transparency" then | |
| local v847 = v818(v844); | |
| v838.TextTransparency = v847; | |
| v839.Transparency = v847; | |
| elseif v843 == "Color" then | |
| v838.TextColor3 = v844; | |
| end; | |
| v837[v843] = v844; | |
| return; | |
| end; | |
| end, | |
| __index = function(v848, v849) --[[ Line: 4008 ]] --[[ Name: __index ]] | |
| -- upvalues: v838 (copy), v837 (copy) | |
| if v849 == "Remove" or v849 == "Destroy" then | |
| return function() --[[ Line: 4010 ]] | |
| -- upvalues: v838 (ref), v837 (ref), v848 (copy) | |
| v838:Destroy(); | |
| v837.Remove(v848); | |
| return v837:Remove(); | |
| end; | |
| elseif v849 == "TextBounds" then | |
| return v838.TextBounds; | |
| else | |
| return v837[v849]; | |
| end; | |
| end, | |
| __tostring = function() --[[ Line: 4021 ]] --[[ Name: __tostring ]] | |
| return "Drawing"; | |
| end | |
| }); | |
| elseif v820 == "Circle" then | |
| local v850 = { | |
| Radius = 150, | |
| Position = Vector2.zero, | |
| Thickness = 0.7, | |
| Filled = false | |
| } + v815; | |
| local v851 = v10.Instance.new("Frame"); | |
| local v852 = v10.Instance.new("UICorner"); | |
| local v853 = v10.Instance.new("UIStroke"); | |
| v851.Name = v807; | |
| v851.AnchorPoint = Vector2.one * 0.5; | |
| v851.BorderSizePixel = 0; | |
| v851.BackgroundTransparency = if v850.Filled then v818(v850.Transparency) else 1; | |
| v851.BackgroundColor3 = v850.Color; | |
| v851.Visible = v850.Visible; | |
| v851.ZIndex = v850.ZIndex; | |
| v852.CornerRadius = UDim.new(1, 0); | |
| v851.Size = UDim2.fromOffset(v850.Radius, v850.Radius); | |
| v853.Thickness = v850.Thickness; | |
| v853.Enabled = not v850.Filled; | |
| v853.ApplyStrokeMode = Enum.ApplyStrokeMode.Border; | |
| v851.Parent = v806; | |
| v852.Parent = v851; | |
| v853.Parent = v851; | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __newindex = function(_, v855, v856) --[[ Line: 4050 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v850 (copy), v851 (copy), v853 (copy), v818 (ref) | |
| if typeof(v850[v855]) == "nil" then | |
| return; | |
| else | |
| if v855 == "Radius" then | |
| local v857 = v856 * 2; | |
| v851.Size = UDim2.fromOffset(v857, v857); | |
| elseif v855 == "Position" then | |
| v851.Position = UDim2.fromOffset(v856.X, v856.Y); | |
| elseif v855 == "Thickness" then | |
| v856 = math.clamp(v856, 0.6, 2147483647); | |
| v853.Thickness = v856; | |
| elseif v855 == "Filled" then | |
| v851.BackgroundTransparency = if v856 then v818(v850.Transparency) else 1; | |
| v853.Enabled = not v856; | |
| elseif v855 == "Visible" then | |
| v851.Visible = v856; | |
| elseif v855 == "ZIndex" then | |
| v851.ZIndex = v856; | |
| elseif v855 == "Transparency" then | |
| local v858 = v818(v856); | |
| v851.BackgroundTransparency = if v850.Filled then v858 else 1; | |
| v853.Transparency = v858; | |
| elseif v855 == "Color" then | |
| v851.BackgroundColor3 = v856; | |
| v853.Color = v856; | |
| end; | |
| v850[v855] = v856; | |
| return; | |
| end; | |
| end, | |
| __index = function(v859, v860) --[[ Line: 4080 ]] --[[ Name: __index ]] | |
| -- upvalues: v851 (copy), v850 (copy) | |
| if v860 == "Remove" or v860 == "Destroy" then | |
| return function() --[[ Line: 4082 ]] | |
| -- upvalues: v851 (ref), v850 (ref), v859 (copy) | |
| v851:Destroy(); | |
| v850.Remove(v859); | |
| return v850:Remove(); | |
| end; | |
| else | |
| return v850[v860]; | |
| end; | |
| end, | |
| __tostring = function() --[[ Line: 4091 ]] --[[ Name: __tostring ]] | |
| return "Drawing"; | |
| end | |
| }); | |
| elseif v820 == "Square" then | |
| local v861 = { | |
| Size = Vector2.zero, | |
| Position = Vector2.zero, | |
| Thickness = 0.7, | |
| Filled = false | |
| } + v815; | |
| local v862 = v10.Instance.new("Frame"); | |
| local v863 = v10.Instance.new("UIStroke"); | |
| v862.Name = v807; | |
| v862.BorderSizePixel = 0; | |
| v862.BackgroundTransparency = if v861.Filled then v818(v861.Transparency) else 1; | |
| v862.ZIndex = v861.ZIndex; | |
| v862.BackgroundColor3 = v861.Color; | |
| v862.Visible = v861.Visible; | |
| v863.Thickness = v861.Thickness; | |
| v863.Enabled = not v861.Filled; | |
| v863.LineJoinMode = Enum.LineJoinMode.Miter; | |
| v862.Parent = v806; | |
| v863.Parent = v862; | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __newindex = function(_, v865, v866) --[[ Line: 4116 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v861 (copy), v862 (copy), v863 (copy), v818 (ref) | |
| if typeof(v861[v865]) == "nil" then | |
| return; | |
| else | |
| if v865 == "Size" then | |
| v862.Size = UDim2.fromOffset(v866.X, v866.Y); | |
| elseif v865 == "Position" then | |
| v862.Position = UDim2.fromOffset(v866.X, v866.Y); | |
| elseif v865 == "Thickness" then | |
| v866 = math.clamp(v866, 0.6, 2147483647); | |
| v863.Thickness = v866; | |
| elseif v865 == "Filled" then | |
| v862.BackgroundTransparency = if v866 then v818(v861.Transparency) else 1; | |
| v863.Enabled = not v866; | |
| elseif v865 == "Visible" then | |
| v862.Visible = v866; | |
| elseif v865 == "ZIndex" then | |
| v862.ZIndex = v866; | |
| elseif v865 == "Transparency" then | |
| local v867 = v818(v866); | |
| v862.BackgroundTransparency = if v861.Filled then v867 else 1; | |
| v863.Transparency = v867; | |
| elseif v865 == "Color" then | |
| v863.Color = v866; | |
| v862.BackgroundColor3 = v866; | |
| end; | |
| v861[v865] = v866; | |
| return; | |
| end; | |
| end, | |
| __index = function(v868, v869) --[[ Line: 4144 ]] --[[ Name: __index ]] | |
| -- upvalues: v862 (copy), v861 (copy) | |
| if v869 == "Remove" or v869 == "Destroy" then | |
| return function() --[[ Line: 4146 ]] | |
| -- upvalues: v862 (ref), v861 (ref), v868 (copy) | |
| v862:Destroy(); | |
| v861.Remove(v868); | |
| return v861:Remove(); | |
| end; | |
| else | |
| return v861[v869]; | |
| end; | |
| end, | |
| __tostring = function() --[[ Line: 4155 ]] --[[ Name: __tostring ]] | |
| return "Drawing"; | |
| end | |
| }); | |
| elseif v820 == "Image" then | |
| local v870 = { | |
| Data = "", | |
| Size = Vector2.zero, | |
| Position = Vector2.zero | |
| } + v815; | |
| local v871 = v10.Instance.new("ImageLabel"); | |
| v871.Name = v807; | |
| v871.BorderSizePixel = 0; | |
| v871.ScaleType = Enum.ScaleType.Stretch; | |
| v871.BackgroundTransparency = 1; | |
| v871.Visible = v870.Visible; | |
| v871.ZIndex = v870.ZIndex; | |
| v871.ImageTransparency = v818(v870.Transparency); | |
| v871.ImageColor3 = v870.Color; | |
| v871.Parent = v806; | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __newindex = function(_, v873, v874) --[[ Line: 4177 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v870 (copy), v871 (copy), v818 (ref) | |
| if typeof(v870[v873]) == "nil" then | |
| return; | |
| else | |
| if v873 == "Data" then | |
| v871.Image = v874; | |
| elseif v873 == "Size" then | |
| v871.Size = UDim2.fromOffset(v874.X, v874.Y); | |
| elseif v873 == "Position" then | |
| v871.Position = UDim2.fromOffset(v874.X, v874.Y); | |
| elseif v873 == "Visible" then | |
| v871.Visible = v874; | |
| elseif v873 == "ZIndex" then | |
| v871.ZIndex = v874; | |
| elseif v873 == "Transparency" then | |
| v871.ImageTransparency = v818(v874); | |
| elseif v873 == "Color" then | |
| v871.ImageColor3 = v874; | |
| end; | |
| v870[v873] = v874; | |
| return; | |
| end; | |
| end, | |
| __index = function(v875, v876) --[[ Line: 4198 ]] --[[ Name: __index ]] | |
| -- upvalues: v871 (copy), v870 (copy) | |
| if v876 == "Remove" or v876 == "Destroy" then | |
| return function() --[[ Line: 4200 ]] | |
| -- upvalues: v871 (ref), v870 (ref), v875 (copy) | |
| v871:Destroy(); | |
| v870.Remove(v875); | |
| return v870:Remove(); | |
| end; | |
| else | |
| return v870[v876]; | |
| end; | |
| end, | |
| __tostring = function() --[[ Line: 4209 ]] --[[ Name: __tostring ]] | |
| return "Drawing"; | |
| end | |
| }); | |
| elseif v820 == "Quad" then | |
| local v877 = { | |
| Thickness = 1, | |
| PointA = Vector2.new(), | |
| PointB = Vector2.new(), | |
| PointC = Vector2.new(), | |
| PointD = Vector2.new(), | |
| Filled = false | |
| } + v815; | |
| local v878 = v819.new("Line"); | |
| local v879 = v819.new("Line"); | |
| local v880 = v819.new("Line"); | |
| local v881 = v819.new("Line"); | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __newindex = function(_, v883, v884) --[[ Line: 4227 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v878 (copy), v879 (copy), v880 (copy), v881 (copy) | |
| if v883 == "Thickness" then | |
| v878.Thickness = v884; | |
| v879.Thickness = v884; | |
| v880.Thickness = v884; | |
| v881.Thickness = v884; | |
| end; | |
| if v883 == "PointA" then | |
| v878.From = v884; | |
| v879.To = v884; | |
| end; | |
| if v883 == "PointB" then | |
| v879.From = v884; | |
| v880.To = v884; | |
| end; | |
| if v883 == "PointC" then | |
| v880.From = v884; | |
| v881.To = v884; | |
| end; | |
| if v883 == "PointD" then | |
| v881.From = v884; | |
| v878.To = v884; | |
| end; | |
| if v883 == "Visible" then | |
| v878.Visible = true; | |
| v879.Visible = true; | |
| v880.Visible = true; | |
| v881.Visible = true; | |
| end; | |
| if v883 == "Filled" then | |
| v878.BackgroundTransparency = 1; | |
| v879.BackgroundTransparency = 1; | |
| v880.BackgroundTransparency = 1; | |
| v881.BackgroundTransparency = 1; | |
| end; | |
| if v883 == "Color" then | |
| v878.Color = v884; | |
| v879.Color = v884; | |
| v880.Color = v884; | |
| v881.Color = v884; | |
| end; | |
| if v883 == "ZIndex" then | |
| v878.ZIndex = v884; | |
| v879.ZIndex = v884; | |
| v880.ZIndex = v884; | |
| v881.ZIndex = v884; | |
| end; | |
| end, | |
| __index = function(_, v886) --[[ Line: 4276 ]] --[[ Name: __index ]] | |
| -- upvalues: v878 (copy), v879 (copy), v880 (copy), v881 (copy), v877 (copy) | |
| if string.lower(tostring(v886)) == "remove" then | |
| return function() --[[ Line: 4278 ]] | |
| -- upvalues: v878 (ref), v879 (ref), v880 (ref), v881 (ref) | |
| v878:Remove(); | |
| v879:Remove(); | |
| v880:Remove(); | |
| v881:Remove(); | |
| end; | |
| else | |
| return v877[v886]; | |
| end; | |
| end | |
| }); | |
| elseif v820 == "Triangle" then | |
| local v887 = { | |
| PointA = Vector2.zero, | |
| PointB = Vector2.zero, | |
| PointC = Vector2.zero, | |
| Thickness = 1, | |
| Filled = false | |
| } + v815; | |
| local v888 = { | |
| A = v819.new("Line"), | |
| B = v819.new("Line"), | |
| C = v819.new("Line") | |
| }; | |
| return setmetatable({ | |
| __type = "Drawing Object" | |
| }, { | |
| __tostring = function() --[[ Line: 4303 ]] --[[ Name: __tostring ]] | |
| return "Drawing"; | |
| end, | |
| __newindex = function(_, v890, v891) --[[ Line: 4305 ]] --[[ Name: __newindex ]] | |
| -- upvalues: v887 (copy), v888 (copy) | |
| if typeof(v887[v890]) == "nil" then | |
| return; | |
| else | |
| if v890 == "PointA" then | |
| v888.A.From = v891; | |
| v888.B.To = v891; | |
| elseif v890 == "PointB" then | |
| v888.B.From = v891; | |
| v888.C.To = v891; | |
| elseif v890 == "PointC" then | |
| v888.C.From = v891; | |
| v888.A.To = v891; | |
| elseif v890 == "Thickness" or v890 == "Visible" or v890 == "Color" or v890 == "ZIndex" then | |
| for _, v893 in v888 do | |
| v893[v890] = v891; | |
| end; | |
| elseif v890 == "Filled" then | |
| v888.BackgroundTransparency = 1; | |
| end; | |
| v887[v890] = v891; | |
| return; | |
| end; | |
| end, | |
| __index = function(v894, v895) --[[ Line: 4327 ]] --[[ Name: __index ]] | |
| -- upvalues: v888 (copy), v887 (copy) | |
| if v895 == "Remove" or v895 == "Destroy" then | |
| return function() --[[ Line: 4329 ]] | |
| -- upvalues: v888 (ref), v887 (ref), v894 (copy) | |
| for _, v897 in v888 do | |
| v897:Remove(); | |
| end; | |
| v887.Remove(v894); | |
| return v887:Remove(); | |
| end; | |
| else | |
| return v887[v895]; | |
| end; | |
| end | |
| }); | |
| else | |
| return; | |
| end; | |
| end; | |
| v10.Drawing = v819; | |
| v10.isrenderobj = function(v898) --[[ Line: 4346 ]] | |
| local l_status_15, l_result_15 = pcall(function() --[[ Line: 4347 ]] | |
| -- upvalues: v898 (copy) | |
| return v898.__type == "Drawing Object"; | |
| end); | |
| return l_status_15 and l_result_15; | |
| end; | |
| v10.cleardrawcache = function() --[[ Line: 4352 ]] | |
| -- upvalues: v806 (ref) | |
| v806:ClearAllChildren(); | |
| end; | |
| v10.getrenderproperty = function(v901, v902) --[[ Line: 4355 ]] | |
| -- upvalues: v10 (copy) | |
| assert(v10.isrenderobj(v901), "Object must be a Drawing", 3); | |
| return v901[v902]; | |
| end; | |
| v10.setrenderproperty = function(v903, v904, v905) --[[ Line: 4359 ]] | |
| -- upvalues: v10 (copy) | |
| assert(v10.isrenderobj(v903), "Object must be a Drawing", 3); | |
| v903[v904] = v905; | |
| end; | |
| v10.game = v71:Instance(v19.game, v71.funcMap[v19.game]); | |
| v10.Game = v10.game; | |
| v10.workspace = v71:Instance(v19.workspace); | |
| v10.Workspace = v10.workspace; | |
| v10.Instance = setmetatable({}, { | |
| __index = function(_, v907) --[[ Line: 4372 ]] --[[ Name: __index ]] | |
| -- upvalues: v71 (copy), v19 (copy), v10 (copy) | |
| if v907 == "new" then | |
| local function v914(v908, v909) --[[ Line: 4374 ]] | |
| -- upvalues: v71 (ref), v19 (ref), v10 (ref) | |
| if v909 and v71.Map[v909] then | |
| v909 = v71.Map[v909]; | |
| end; | |
| local l_status_16, l_result_16 = pcall(v19.Instance.new, v908, v909); | |
| if not l_status_16 then | |
| error(l_result_16, 3); | |
| end; | |
| if v71.funcMap[l_result_16.ClassName] then | |
| local _, l_result_17 = pcall(function() --[[ Line: 4383 ]] | |
| -- upvalues: v10 (ref), l_result_16 (copy) | |
| v10.game:GetService(l_result_16.ClassName); | |
| end); | |
| if l_result_17 then | |
| error("Multiple Services", 3); | |
| end; | |
| end; | |
| return v71:Instance(l_result_16, v71.funcMap[l_result_16] or v71.funcMap[v908], true); | |
| end; | |
| setfenv(v914, v10); | |
| return v914; | |
| else | |
| return v19.Instance[v907]; | |
| end; | |
| end, | |
| __newindex = function() --[[ Line: 4395 ]] --[[ Name: __newindex ]] | |
| error("Attempt to change a protected metatable", 3); | |
| end, | |
| __metatable = "The metatable is locked" | |
| }); | |
| getfenv().script = nil; | |
| getfenv().game = nil; | |
| getfenv().Game = nil; | |
| getfenv().workspace = nil; | |
| getfenv().Workspace = nil; | |
| setmetatable(v10, { | |
| __index = function(_, v916) --[[ Line: 4408 ]] --[[ Name: __index ]] | |
| -- upvalues: v20 (copy), v19 (copy), v71 (copy) | |
| local v917 = v20[v916]; | |
| if v917 == v19.game or v917 == v19.workspace then | |
| v20[v916] = v71.Map[v917]; | |
| return v71.Map[v917]; | |
| else | |
| return v917; | |
| end; | |
| end, | |
| __metatable = "The metatable is locked" | |
| }); | |
| local function v918(v919) --[[ Line: 4419 ]] --[[ Name: sv ]] | |
| -- upvalues: v19 (copy), v10 (copy), v918 (copy) | |
| for v920, v921 in v919 do | |
| if v19.type(v921) == "function" then | |
| pcall(setfenv, v921, v10); | |
| elseif v19.type(v920) == "function" then | |
| pcall(setfenv, v921, v10); | |
| elseif v19.type(v921) == "table" then | |
| v918(v921); | |
| elseif v19.type(v920) == "table" then | |
| v918(v920); | |
| end; | |
| end; | |
| end; | |
| v918(v10); | |
| v39({ | |
| v40.CBlockFunctions, | |
| "" | |
| }, true); | |
| task.spawn(function() --[[ Line: 4448 ]] | |
| -- upvalues: v39 (copy), v40 (copy), v10 (copy) | |
| local v922 = tostring(v39({ | |
| v40.GetQueueOnTeleport, | |
| "" | |
| }, true)); | |
| if #v922 < 1 then | |
| return; | |
| else | |
| local v923, v924 = v10.loadstring(v922, "QueueOnTeleport"); | |
| if not v923 then | |
| error("QueueOnTeleport: " .. tostring(v924), 3); | |
| end; | |
| setfenv(v923, v10); | |
| task.spawn(v923); | |
| return; | |
| end; | |
| end); | |
| task.spawn(function() --[[ Line: 4461 ]] | |
| -- upvalues: v39 (copy), v40 (copy), v10 (copy) | |
| local v925 = tostring(v39({ | |
| v40.GetAutoExecuteContents, | |
| "" | |
| }, true)); | |
| if #v925 < 1 then | |
| return; | |
| else | |
| local v926, v927 = v10.loadstring(v925, "AutoExecute"); | |
| if not v926 then | |
| error("AutoExecute: " .. tostring(v927), 3); | |
| end; | |
| setfenv(v926, v10); | |
| task.spawn(v926); | |
| return; | |
| end; | |
| end); | |
| task.spawn(function() --[[ Line: 4474 ]] | |
| -- upvalues: v53 (copy), v11 (copy), v10 (copy) | |
| local v928 = tostring(v53(v11.CodeExecution)); | |
| if #v928 <= 3 then | |
| return; | |
| else | |
| local v929, v930 = v10.loadstring(v928, "XenoNotification"); | |
| if not v929 then | |
| error("Xeno Notification: " .. tostring(v930), 3); | |
| end; | |
| setfenv(v929, v10); | |
| task.spawn(v929); | |
| return; | |
| end; | |
| end); | |
| task.spawn(function() --[[ Line: 4487 ]] --[[ Name: ExecutionListener ]] | |
| -- upvalues: v19 (copy), v12 (copy), l_Folder_0 (copy), v10 (copy) | |
| local v931 = v19.Instance.fromExisting(v12[math.random(1, #v12)]); | |
| local function v932() --[[ Line: 4489 ]] --[[ Name: regenModule ]] | |
| -- upvalues: v931 (ref), v19 (ref), v12 (ref), l_Folder_0 (ref) | |
| v931 = v19.Instance.fromExisting(v12[math.random(1, #v12)]); | |
| v931.Name = math.random(1, 9999999); | |
| v931.Parent = l_Folder_0; | |
| end; | |
| v932(); | |
| while task.wait(0.001) do | |
| local l_status_18, l_result_18 = pcall(v19.require, v931); | |
| if l_status_18 and v19.type(l_result_18) == "function" then | |
| v931:Destroy(); | |
| setfenv(l_result_18, { | |
| getfenv = getfenv, | |
| setfenv = setfenv, | |
| setmetatable = setmetatable, | |
| error = error, | |
| Xeno = v10 | |
| }); | |
| task.spawn(l_result_18); | |
| v932(); | |
| elseif l_status_18 and v19.type(l_result_18) ~= "function" then | |
| v931:Destroy(); | |
| v932(); | |
| end; | |
| end; | |
| end); | |
| return; | |
| end; | |
| end); | |
| end; | |
| local l_CorePackages_1 = game:GetService("CorePackages"); | |
| local v936 = require(l_CorePackages_1.Packages.Roact); | |
| local v937 = v936.Component:extend("EventConnection"); | |
| v937.init = function(v938) --[[ Line: 4521 ]] --[[ Name: init ]] | |
| v938.connection = nil; | |
| end; | |
| v937.render = function(v939) --[[ Line: 4521 ]] --[[ Name: render ]] | |
| -- upvalues: v936 (copy) | |
| return v936.oneChild(v939.props[v936.Children]); | |
| end; | |
| v937.didMount = function(v940) --[[ Line: 4521 ]] --[[ Name: didMount ]] | |
| v940.connection = v940.props.event:Connect(v940.props.callback); | |
| end; | |
| v937.didUpdate = function(v941, v942) --[[ Line: 4521 ]] --[[ Name: didUpdate ]] | |
| if v941.props.event ~= v942.event or v941.props.callback ~= v942.callback then | |
| v941.connection:Disconnect(); | |
| v941.connection = v941.props.event:Connect(v941.props.callback); | |
| end; | |
| end; | |
| v937.willUnmount = function(v943) --[[ Line: 4521 ]] --[[ Name: willUnmount ]] | |
| if v943.connection then | |
| v943.connection:Disconnect(); | |
| v943.connection = nil; | |
| end; | |
| end; | |
| return v937; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment