ControlC
· Pastebin
Login
Register
ControlC
/
Create paste
Paste content
Up to 100 KB of text. BBCode formatting is supported.
Title
- optional
Content
B
I
U
S
</>
Colors ↓
Sizes ↓
Size 1
Size 2
Size 3
Size 4
Size 5
Size 6
Size 7
local Rostruct = (function() local a={_G={}}setmetatable(a,{__index=function(self,b)if b==\"Promise\"then self.Promise=a.initialize(\"modules\",\"Promise\")return self.Promise end end})local c;do c={}c.__index=c;function c.new(d)local e,f=string.match(d,\"([^/]+)(/*)$\")return setmetatable({name=e,path=string.sub(d,1,-#e-(f~=\"\"and 2 or 1))},c)end;function c:__index(b)if b==\"Parent\"then return c.new(self.path)end end end;local g;do g={}g.__index=g;function g.new(d,h,i)return setmetatable({path=h~=\"init\"and d or c.new(d).path,name=h,func=i,data=nil},g)end;function g:__index(b)if g[b]then return g[b]elseif b==\"Parent\"then return c.new(self.path)elseif b==\"Name\"then return self.path end end;function g:require()if self.func then self.data=self.func()self.func=nil end;return self.data end;function g:GetFullName()return self.path end end;local j;do j={}j.__index=j;setmetatable(j,{__call=function(k,l)local self=setmetatable({},j)self.description=\"Symbol(\"..(l or\"\")..\")\"return self end})local m=setmetatable({},{__index=function(self,b)self[b]=j(b)return self[b]end})function j:toString()return self.description end;j.__tostring=j.toString;function j.getFor(n)return m[n]end;function j.keyFor(o)for n,p in pairs(m)do if p==o then return n end end end end;a.Symbol=j;a.Symbol_iterator=j(\"Symbol.iterator\")local q={}local r={}function a.register(d,h,i)local s=g.new(d,h,i)q[d]=s;r[h]=s;return s end;function a.get(d)return q[d]end;function a.initialize(...)local p=setmetatable({},{__tostring=function()return\"root\"end})local t=a.register(p,p)return a.import(t,{path=\"out/\"},...)end;function a.getModule(u,v)return error(\"TS.getModule is not supported\",2)end;local w={}local x={}function a.import(t,y,...)local z=y.path..table.concat({...},\"/\")..\".lua\"local A=y.path..table.concat({...},\"/\")..\"/init.lua\"local s=assert(q[z]or q[A],\"No module exists at path '\"..z..\"'\")w[t]=s;local B=s;local C=0;while B do C=C+1;B=w[B]if B==s then local D=B.name;for k=1,C do B=w[B]D=D..\" => \"..B.name end;error(\"Failed to import! Detected a circular dependency chain: \"..D,2)end end;if not x[s]then if a._G[s]then error(\"Invalid module access! Do you have two TS runtimes trying to import this? \"..s.path,2)end;a._G[s]=a;x[s]=true end;local E=s:require()if w[t]==s then w[t]=nil end;return E end;function a.async(F)local G=a.Promise;return function(...)local H=select(\"#\",...)local I={...}return G.new(function(J,K)coroutine.wrap(function()local L,M=pcall(F,unpack(I,1,H))if L then J(M)else K(M)end end)()end)end end;function a.await(N)local G=a.Promise;if not G.is(N)then return N end;local O,P=N:awaitStatus()if O==G.Status.Resolved then return P elseif O==G.Status.Rejected then error(P,2)else error(\"The awaited Promise was cancelled\",2)end end;function a.opcall(i,...)local Q,R=pcall(i,...)if Q then return{success=true,value=R}else return{success=false,error=R}end end;a.register(\"out/Package.lua\",\"Package\",function()local S=a.get(\"out/Package.lua\")local a=a._G[S]local T=a.import(S,S.Parent,\"core\")local U=T.Session;local V=T.VirtualScript;local W=a.import(S,S.Parent,\"utils\",\"file-utils\").pathUtils;local X=a.import(S,S.Parent,\"modules\",\"make\")local Y;do Y=setmetatable({},{__tostring=function()return\"Package\"end})Y.__index=Y;function Y.new(...)local self=setmetatable({},Y)return self:constructor(...)or self end;function Y:constructor(Z,_)self.tree=X(\"Folder\",{Name=\"Tree\"})local a0=type(Z)==\"string\"assert(a0,\"(Package) The path must be a string\")local a1=isfolder(Z)local a2=\"(Package) The path '\"..Z..\"' must be a valid directory\"assert(a1,a2)self.root=W.formatPath(Z)self.session=U.new(Z)self.fetchInfo=_ end;function Y:build(a3,a4)if a3==nil then a3=\"\"end;local a0=isfile(self.root..a3)or isfolder(self.root..a3)local a2=\"(Package.build) The path '\"..self.root..a3 ..\"' must be a file or folder\"assert(a0,a2)local a5=self.session:build(a3)local a6=\"(Package.build) The path '\"..self.root..a3 ..\"' could not be turned into an Instance\"assert(a5,a6)if a4~=nil then for a7,P in pairs(a4)do a5[a7]=P end end;a5.Parent=self.tree;return a5 end;function Y:start()return self.session:simulate()end;Y.require=a.async(function(self,s)local a0=s.ClassName==\"ModuleScript\"local a2=\"(Package.require) '\"..tostring(s)..\"' must be a module\"assert(a0,a2)local a1=s:IsDescendantOf(self.tree)local a6=\"(Package.require) '\"..tostring(s)..\"' must be a descendant of Package.tree\"assert(a1,a6)return V:requireFromInstance(s)end)function Y:requireAsync(s)return self:require(s):expect()end;Y.fromFetch=function(_)return Y.new(_.location,_)end end;return{Package=Y}end)a.register(\"out/bootstrap.lua\",\"bootstrap\",function()local S=a.get(\"out/bootstrap.lua\")local a=a._G[S]local a8=a.import(S,S.Parent,\"utils\",\"file-utils\").makeUtils;local a9={ROOT=\"rostruct/\",CACHE=\"rostruct/cache/\",RELEASE_CACHE=\"rostruct/cache/releases/\",RELEASE_TAGS=\"rostruct/cache/release_tags.json\"}local aa=function(ab)return a9[ab]end;local ac=function()return a8.makeFiles({{\"rostruct/cache/releases/\",\"\"},{\"rostruct/cache/release_tags.json\",\"{}\"}})end;return{getRostructPath=aa,bootstrap=ac}end)a.register(\"out/init.lua\",\"init\",function()local S=a.get(\"out/init.lua\")local a=a._G[S]local ac=a.import(S,S,\"bootstrap\").bootstrap;ac()local Y=a.import(S,S,\"Package\").Package;local ad=a.import(S,S,\"utils\",\"fetch-github-release\")local ae=ad.clearReleaseCache;local af=ad.downloadLatestRelease;local ag=ad.downloadRelease;local ah=function()return ae()end;local ai=function(Z)return Y.new(Z)end;local aj=a.async(function(...)local I={...}return Y.fromFetch(a.await(ag(unpack(I))))end)local ak=function(...)local I={...}return Y.fromFetch(ag(unpack(I)):expect())end;local al=a.async(function(...)local I={...}return Y.fromFetch(a.await(af(unpack(I))))end)local am=function(...)local I={...}return Y.fromFetch(af(unpack(I)):expect())end;return{clearCache=ah,open=ai,fetch=aj,fetchAsync=ak,fetchLatest=al,fetchLatestAsync=am}end)a.register(\"out/api/compatibility.lua\",\"compatibility\",function()local S=a.get(\"out/api/compatibility.lua\")local an=request or(syn.request or http.request)local ao=getcustomasset or getsynasset;return{httpRequest=an,getContentId=ao}end)a.register(\"out/api/init.lua\",\"init\",function()local S=a.get(\"out/api/init.lua\")local a=a._G[S]local ap={}for aq,ar in pairs(a.import(S,S,\"compatibility\"))do ap[aq]=ar end;return ap end)a.register(\"out/core/Session.lua\",\"Session\",function()local S=a.get(\"out/core/Session.lua\")local a=a._G[S]local as=a.import(S,S.Parent,\"Store\").Store;local at=a.import(S,S.Parent.Parent,\"modules\",\"services\").HttpService;local au=a.import(S,S.Parent,\"build\").build;local U;do U=setmetatable({},{__tostring=function()return\"Session\"end})U.__index=U;function U.new(...)local self=setmetatable({},U)return self:constructor(...)or self end;function U:constructor(Z)self.root=Z;self.sessionId=at:GenerateGUID(false)self.virtualScripts={}local av=U.sessions;local aw=self.sessionId;local ax=self;av[aw]=ax end;function U:fromSessionId(ay)return self.sessions[ay]end;function U:virtualScriptAdded(az)local aA=self.virtualScripts;aA[#aA+1]=az end;function U:build(d)if d==nil then d=\"\"end;local a0=isfile(self.root..d)or isfolder(self.root..d)local a2=\"The path '\"..self.root..d..\"' must be a file or folder\"assert(a0,a2)return au(self,self.root..d)end;function U:simulate()local aB={}local a0=#self.virtualScripts>0;assert(a0,\"This session cannot start because no LocalScripts were found.\")for k,aC in ipairs(self.virtualScripts)do if aC.instance:IsA(\"LocalScript\")then local a1=aC:deferExecutor():andThenReturn(aC.instance)aB[#aB+1]=a1 end end;return a.Promise.all(aB):timeout(10)end;U.sessions=as:getStore(\"Sessions\")end;return{Session=U}end)a.register(\"out/core/Store.lua\",\"Store\",function()local S=a.get(\"out/core/Store.lua\")local aD;if getgenv().RostructStore~=nil then aD=getgenv().RostructStore else local aE=getgenv()aE.RostructStore={}aD=aE.RostructStore end;local aF=aD;local as={getStore=function(self,aG)if aF[aG]~=nil then return aF[aG]end;local aH={}aF[aG]=aH;return aH end}return{Store=as}end)a.register(\"out/core/VirtualScript.lua\",\"VirtualScript\",function()local S=a.get(\"out/core/VirtualScript.lua\")local a=a._G[S]local as=a.import(S,S.Parent,\"Store\").Store;local at=a.import(S,S.Parent.Parent,\"modules\",\"services\").HttpService;local w={}local function aI(s)local B=s;local C=0;while B do C=C+1;local aJ=B;B=w[aJ]if s==B then local aK=s:getChunkName()do local aL=0;local aM=false;while true do if aM then aL=aL+1 else aM=true end;if not(aL<C)then break end;local aN=B;B=w[aN]aK=aK..\"\n\t\t⇒ \"..B:getChunkName()end end;error(\"Requested module '\"..(s:getChunkName()..\"' contains a cyclic reference\")..\"\n\tTraceback: \"..aK)end end end;local V;do V=setmetatable({},{__tostring=function()return\"VirtualScript\"end})V.__index=V;function V.new(...)local self=setmetatable({},V)return self:constructor(...)or self end;function V:constructor(a5,d,Z,aO)if aO==nil then aO=readfile(d)end;self.instance=a5;self.path=d;self.root=Z;self.source=aO;self.id=\"VirtualScript-\"..at:GenerateGUID(false)self.jobComplete=false;self.scriptEnvironment=setmetatable({script=a5,require=function(aP)return V:loadModule(aP,self)end,_PATH=d,_ROOT=Z},{__index=getfenv(0),__metatable=\"This metatable is locked\"})local aQ=V.fromInstance;local ax=self;aQ[a5]=ax end;function V:getFromInstance(aR)return self.fromInstance[aR]end;function V:requireFromInstance(aR)local s=self:getFromInstance(aR)local a2=\"Failed to get VirtualScript for Instance '\"..aR:GetFullName()..\"'\"assert(s,a2)return s:runExecutor()end;function V:loadModule(aR,t)local s=self.fromInstance[aR]if not s then return require(aR)end;w[t]=s;aI(s)local M=s:runExecutor()if w[t]==s then w[t]=nil end;return M end;function V:getChunkName()local aS=self.path;local a0=#self.root+1;local aT=string.sub(aS,a0)return\"@\"..aT..\" (\"..self.instance:GetFullName()..\")\"end;function V:setExecutor(aU)local a0=self.jobComplete==false;assert(a0,\"Cannot set executor after script was executed\")self.executor=aU end;function V:createExecutor()if self.executor then return self.executor end;local aV,aW=loadstring(self.source,\"=\"..self:getChunkName())assert(aV,aW)self.executor=setfenv(aV,self.scriptEnvironment)return self.executor end;function V:runExecutor()if self.jobComplete then return self.result end;local M=self:createExecutor()(self.scriptEnvironment)if self.instance:IsA(\"ModuleScript\")and M==nil then error(\"Module '\"..self:getChunkName()..\"' did not return any value\")end;self.jobComplete=true;self.result=M;return self.result end;function V:deferExecutor()return a.Promise.defer(function(J)return J(self:runExecutor())end):timeout(30,\"Script \"..self:getChunkName()..\" reached execution timeout! Try not to yield the main thread in LocalScripts.\")end;V.fromInstance=as:getStore(\"VirtualScriptStore\")end;return{VirtualScript=V}end)a.register(\"out/core/init.lua\",\"init\",function()local S=a.get(\"out/core/init.lua\")local a=a._G[S]local ap={}ap.build=a.import(S,S,\"build\").build;ap.Store=a.import(S,S,\"Store\").Store;ap.Session=a.import(S,S,\"Session\").Session;ap.VirtualScript=a.import(S,S,\"VirtualScript\").VirtualScript;return ap end)a.register(\"out/core/types.lua\",\"types\",function()local S=a.get(\"out/core/types.lua\")return nil end)a.register(\"out/core/build/csv.lua\",\"csv\",function()local S=a.get(\"out/core/build/csv.lua\")local a=a._G[S]local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local W=a.import(S,S.Parent.Parent.Parent,\"utils\",\"file-utils\").pathUtils;local aX=a.import(S,S.Parent,\"metadata\").fileMetadata;local aY={\"Context\",\"Example\",\"Key\",\"Source\"}local aZ;do aZ=setmetatable({},{__tostring=function()return\"CsvReader\"end})aZ.__index=aZ;function aZ.new(...)local self=setmetatable({},aZ)return self:constructor(...)or self end;function aZ:constructor(a_,b0)if b0==nil then b0=string.split(a_,\"\n\")end;self.raw=a_;self.buffer=b0;self.entries={}self.keys={}end;function aZ:read()for aL,b1 in ipairs(self.buffer)do if aL==1 then self:readHeader(b1)else self:readEntry(b1)end end;return self.entries end;function aZ:readHeader(b2)self.keys=string.split(b2,\",\")end;function aZ:validateEntry(b3)return b3.Context~=nil and(b3.Key~=nil and(b3.Source~=nil and b3.Values~=nil))end;function aZ:readEntry(b2)local b3={Values={}}for aL,P in ipairs(string.split(b2,\",\"))do local n=self.keys[aL-1+1]if table.find(aY,n)~=nil then b3[n]=P else b3.Values[n]=P end end;if self:validateEntry(b3)then local b4=self.entries;b4[#b4+1]=b3 end end end;local function b5(d,h)local b6=aZ.new(readfile(d))local b7=X(\"LocalizationTable\",{Name=h})b7:SetEntries(b6:read())local b8=tostring(W.getParent(d))..h..\".meta.json\"if isfile(b8)then aX(b8,b7)end;return b7 end;return{makeLocalizationTable=b5}end)a.register(\"out/core/build/dir.lua\",\"dir\",function()local S=a.get(\"out/core/build/dir.lua\")local a=a._G[S]local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local W=a.import(S,S.Parent.Parent.Parent,\"utils\",\"file-utils\").pathUtils;local b9=a.import(S,S.Parent,\"metadata\").directoryMetadata;local function ba(d)local b8=d..\"init.meta.json\"if isfile(b8)then return b9(b8,W.getName(d))end;return X(\"Folder\",{Name=W.getName(d)})end;return{makeDir=ba}end)a.register(\"out/core/build/init.lua\",\"init\",function()local S=a.get(\"out/core/build/init.lua\")local a=a._G[S]local W=a.import(S,S.Parent.Parent,\"utils\",\"file-utils\").pathUtils;local b5=a.import(S,S,\"csv\").makeLocalizationTable;local ba=a.import(S,S,\"dir\").makeDir;local bb=a.import(S,S,\"json\").makeJsonModule;local bc=a.import(S,S,\"json-model\").makeJsonModel;local bd=a.import(S,S,\"lua\")local be=bd.makeLua;local bf=bd.makeLuaInit;local bg=a.import(S,S,\"rbx-model\").makeRobloxModel;local bh=a.import(S,S,\"txt\").makePlainText;local function bi(bj,d)if isfolder(d)then local a5;local bk=W.locateFiles(d,{\"init.lua\",\"init.server.lua\",\"init.client.lua\"})if bk~=nil then a5=bf(bj,d..bk)else a5=ba(d)end;for k,bl in ipairs(listfiles(W.trimTrailingSlash(d)))do local bm=bi(bj,W.addTrailingSlash(bl))if bm then bm.Parent=a5 end end;return a5 elseif isfile(d)then local h=W.getName(d)if string.match(h,\"(%.lua)$\")~=nil and string.match(h,\"^(init%.)\")==nil then return be(bj,d)elseif string.match(h,\"(%.meta.json)$\")~=nil then return nil elseif string.match(h,\"(%.model.json)$\")~=nil then return bc(d,string.match(h,\"^(.*)%.model.json$\"))elseif string.match(h,\"(%.project.json)$\")~=nil then warn(\"Project files are not supported (\"..d..\")\")elseif string.match(h,\"(%.json)$\")~=nil then return bb(bj,d,string.match(h,\"^(.*)%.json$\"))elseif string.match(h,\"(%.csv)$\")~=nil then return b5(d,string.match(h,\"^(.*)%.csv$\"))elseif string.match(h,\"(%.txt)$\")~=nil then return bh(d,string.match(h,\"^(.*)%.txt$\"))elseif string.match(h,\"(%.rbxm)$\")~=nil then return bg(bj,d,string.match(h,\"^(.*)%.rbxm$\"))elseif string.match(h,\"(%.rbxmx)$\")~=nil then return bg(bj,d,string.match(h,\"^(.*)%.rbxmx$\"))end end end;return{build=bi}end)a.register(\"out/core/build/json-model.lua\",\"json-model\",function()local S=a.get(\"out/core/build/json-model.lua\")local a=a._G[S]local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local at=a.import(S,S.Parent.Parent.Parent,\"modules\",\"services\").HttpService;local bn=a.import(S,S.Parent,\"EncodedValue\")local function bo(bp,d,h)local bq=h;if bq==nil then bq=bp.Name end;local a2=\"A child in the model file '\"..d..\"' is missing a Name field\"assert(bq~=\"\"and bq,a2)if h~=nil and(bp.Name~=nil and bp.Name~=h)then warn(\"The name of the model file at '\"..d..\"' (\"..h..\") does not match the Name field '\"..bp.Name..\"'\")end;local a0=bp.ClassName~=nil;local a6=\"An object in the model file '\"..d..\"' is missing a ClassName field\"assert(a0,a6)local aE=bp.ClassName;local u={}local br=\"Name\"local bs=h;if bs==nil then bs=bp.Name end;u[br]=bs;local aP=X(aE,u)if bp.Properties then bn.setModelProperties(aP,bp.Properties)end;if bp.Children then for k,b3 in ipairs(bp.Children)do local bl=bo(b3,d)bl.Parent=aP end end;return aP end;local function bc(d,h)return bo(at:JSONDecode(readfile(d)),d,h)end;return{makeJsonModel=bc}end)a.register(\"out/core/build/json.lua\",\"json\",function()local S=a.get(\"out/core/build/json.lua\")local a=a._G[S]local V=a.import(S,S.Parent.Parent,\"VirtualScript\").VirtualScript;local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local at=a.import(S,S.Parent.Parent.Parent,\"modules\",\"services\").HttpService;local W=a.import(S,S.Parent.Parent.Parent,\"utils\",\"file-utils\").pathUtils;local aX=a.import(S,S.Parent,\"metadata\").fileMetadata;local function bb(bj,d,h)local a5=X(\"ModuleScript\",{Name=h})local az=V.new(a5,d,bj.root)az:setExecutor(function()return at:JSONDecode(az.source)end)bj:virtualScriptAdded(az)local b8=tostring(W.getParent(d))..h..\".meta.json\"if isfile(b8)then aX(b8,a5)end;return a5 end;return{makeJsonModule=bb}end)a.register(\"out/core/build/lua.lua\",\"lua\",function()local S=a.get(\"out/core/build/lua.lua\")local a=a._G[S]local V=a.import(S,S.Parent.Parent,\"VirtualScript\").VirtualScript;local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local bt=a.import(S,S.Parent.Parent.Parent,\"utils\",\"replace\").replace;local W=a.import(S,S.Parent.Parent.Parent,\"utils\",\"file-utils\").pathUtils;local aX=a.import(S,S.Parent,\"metadata\").fileMetadata;local bu={[\".server.lua\"]=\"Script\",[\".client.lua\"]=\"LocalScript\",[\".lua\"]=\"ModuleScript\"}local function be(bj,d,bv)local e=W.getName(d)local bw=bt(e,\"(%.client%.lua)$\",\"\")or(bt(e,\"(%.server%.lua)$\",\"\")or(bt(e,\"(%.lua)$\",\"\")or error(\"Invalid Lua file at \"..d)))local h=bw[1]local bx=bw[2]local aE=bu[bx]local u={}local br=\"Name\"local bq=bv;if bq==nil then bq=h end;u[br]=bq;local a5=X(aE,u)bj:virtualScriptAdded(V.new(a5,d,bj.root))local b8=tostring(W.getParent(d))..h..\".meta.json\"if isfile(b8)then aX(b8,a5)end;return a5 end;local function bf(bj,d)local by=W.getParent(d)local a5=be(bj,d,W.getName(by))return a5 end;return{makeLua=be,makeLuaInit=bf}end)a.register(\"out/core/build/metadata.lua\",\"metadata\",function()local S=a.get(\"out/core/build/metadata.lua\")local a=a._G[S]local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local at=a.import(S,S.Parent.Parent.Parent,\"modules\",\"services\").HttpService;local bn=a.import(S,S.Parent,\"EncodedValue\")local function aX(b8,a5)local bz=at:JSONDecode(readfile(b8))local a0=bz.className==nil;assert(a0,\"className can only be specified in init.meta.json files if the parent directory would turn into a Folder!\")if bz.properties~=nil then bn.setProperties(a5,bz.properties)end end;local function b9(b8,h)local bz=at:JSONDecode(readfile(b8))local a5=X(bz.className,{Name=h})if bz.properties~=nil then bn.setProperties(a5,bz.properties)end;return a5 end;return{fileMetadata=aX,directoryMetadata=b9}end)a.register(\"out/core/build/rbx-model.lua\",\"rbx-model\",function()local S=a.get(\"out/core/build/rbx-model.lua\")local a=a._G[S]local ao=a.import(S,S.Parent.Parent.Parent,\"api\").getContentId;local V=a.import(S,S.Parent.Parent,\"VirtualScript\").VirtualScript;local function bg(bj,d,h)local a2=\"'\"..d..\"' could not be loaded; No way to get a content id\"assert(ao,a2)local bA=game:GetObjects(ao(d))local a0=#bA==1;local a6=\"'\"..d..\"' could not be loaded; Only one top-level instance is supported\"assert(a0,a6)local bB=bA[1]bB.Name=h;for k,aP in ipairs(bB:GetDescendants())do if aP:IsA(\"LuaSourceContainer\")then bj:virtualScriptAdded(V.new(aP,d,bj.root,aP.Source))end end;if bB:IsA(\"LuaSourceContainer\")then bj:virtualScriptAdded(V.new(bB,d,bj.root,bB.Source))end;return bB end;return{makeRobloxModel=bg}end)a.register(\"out/core/build/txt.lua\",\"txt\",function()local S=a.get(\"out/core/build/txt.lua\")local a=a._G[S]local X=a.import(S,S.Parent.Parent.Parent,\"modules\",\"make\")local W=a.import(S,S.Parent.Parent.Parent,\"utils\",\"file-utils\").pathUtils;local aX=a.import(S,S.Parent,\"metadata\").fileMetadata;local function bh(d,h)local bC=X(\"StringValue\",{Name=h,Value=readfile(d)})local b8=tostring(W.getParent(d))..h..\".meta.json\"if isfile(b8)then aX(b8,bC)end;return bC end;return{makePlainText=bh}end)a.register(\"out/core/build/EncodedValue/init.lua\",\"init\",function()local S=a.get(\"out/core/build/EncodedValue/init.lua\")local bD;do local bE=math.floor;local bF=string.char;local function bG(D)local bH={}local bI=0;local bJ=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"local bK=#D;for aL=1,bK-2,3 do local bL,bM,bN=D:byte(aL,aL+3)local bO=bN+bM*256+bL*256*256;local bP=bO%64+1;bO=bE(bO/64)local bQ=bO%64+1;bO=bE(bO/64)local bR=bO%64+1;bO=bE(bO/64)local bS=bO%64+1;bH[bI+1]=bJ:sub(bS,bS)bH[bI+2]=bJ:sub(bR,bR)bH[bI+3]=bJ:sub(bQ,bQ)bH[bI+4]=bJ:sub(bP,bP)bI=bI+4 end;local bT=bK%3;if bT==2 then local bL,bM=D:byte(-2,-1)local bO=bM*4+bL*4*256;local bQ=bO%64+1;bO=bE(bO/64)local bR=bO%64+1;bO=bE(bO/64)local bS=bO%64+1;bH[bI+1]=bJ:sub(bS,bS)bH[bI+2]=bJ:sub(bR,bR)bH[bI+3]=bJ:sub(bQ,bQ)bH[bI+4]=\"=\"elseif bT==1 then local bL=D:byte(-1,-1)local bO=bL*16;local bR=bO%64+1;bO=bE(bO/64)local bS=bO%64+1;bH[bI+1]=bJ:sub(bS,bS)bH[bI+2]=bJ:sub(bR,bR)bH[bI+3]=\"=\"bH[bI+4]=\"=\"end;return table.concat(bH,\"\")end;local function bU(D)local bH={}local bI=0;local bJ=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"local bK=#D;local bV=0;local bW=0;local bX={}for aL=1,#bJ do bX[bJ:sub(aL,aL)]=aL-1 end;for aL=1,bK do local bY=D:sub(aL,aL)local bZ=bX[bY]if bZ then bV=bV*64+bZ;bW=bW+1 end;if bW==4 then local bN=bV%256;bV=bE(bV/256)local bM=bV%256;bV=bE(bV/256)local bL=bV%256;bH[bI+1]=bF(bL)bH[bI+2]=bF(bM)bH[bI+3]=bF(bN)bI=bI+3;bW=0;bV=0 end end;if bW==3 then bV=bV*64;bV=bE(bV/256)local bM=bV%256;bV=bE(bV/256)local bL=bV%256;bH[bI+1]=bF(bL)bH[bI+2]=bF(bM)elseif bW==2 then bV=bV*64;bV=bE(bV/256)bV=bV*64;bV=bE(bV/256)local bL=bV%256;bH[bI+1]=bF(bL)elseif bW==1 then error(\"Base64 has invalid length\")end;return table.concat(bH,\"\")end;bD={decode=bU,encode=bG}end;local function b_(...)return...end;local function c0(aV)return function(P)return aV(unpack(P))end end;local function c1(P)if P==math.huge or P==-math.huge then return 999999999*math.sign(P)end;return P end;local c2={\"X\",\"Y\",\"Z\"}local c3={\"Right\",\"Top\",\"Back\",\"Left\",\"Bottom\",\"Front\"}local c4;c4={boolean={fromPod=b_,toPod=b_},number={fromPod=b_,toPod=b_},string={fromPod=b_,toPod=b_},EnumItem={fromPod=b_,toPod=function(c5)if typeof(c5)==\"number\"then return c5 else return c5.Value end end},Axes={fromPod=function(c6)local c7={}for c8,c9 in ipairs(c6)do c7[c8]=Enum.Axis[c9]end;return Axes.new(unpack(c7))end,toPod=function(c5)local ca={}for k,cb in ipairs(c2)do if c5[cb]then table.insert(ca,cb)end end;return ca end},BinaryString={fromPod=bD.decode,toPod=bD.encode},Bool={fromPod=b_,toPod=b_},BrickColor={fromPod=function(c6)return BrickColor.new(c6)end,toPod=function(c5)return c5.Number end},CFrame={fromPod=function(c6)local cc=c6.Position;local cd=c6.Orientation;return CFrame.new(cc[1],cc[2],cc[3],cd[1][1],cd[1][2],cd[1][3],cd[2][1],cd[2][2],cd[2][3],cd[3][1],cd[3][2],cd[3][3])end,toPod=function(c5)local ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp=c5:GetComponents()return{Position={ce,cf,cg},Orientation={{ch,ci,cj},{ck,cl,cm},{cn,co,cp}}}end},Color3={fromPod=c0(Color3.new),toPod=function(c5)return{c5.r,c5.g,c5.b}end},Color3uint8={fromPod=c0(Color3.fromRGB),toPod=function(c5)return{math.round(c5.R*255),math.round(c5.G*255),math.round(c5.B*255)}end},ColorSequence={fromPod=function(c6)local cq={}for c8,cr in ipairs(c6.Keypoints)do cq[c8]=ColorSequenceKeypoint.new(cr.Time,c4.Color3.fromPod(cr.Color))end;return ColorSequence.new(cq)end,toPod=function(c5)local cq={}for c8,cr in ipairs(c5.Keypoints)do cq[c8]={Time=cr.Time,Color=c4.Color3.toPod(cr.Value)}end;return{Keypoints=cq}end},Content={fromPod=b_,toPod=b_},Faces={fromPod=function(c6)local cs={}for c8,ct in ipairs(c6)do cs[c8]=Enum.NormalId[ct]end;return Faces.new(unpack(cs))end,toPod=function(c5)local c6={}for k,cu in ipairs(c3)do if c5[cu]then table.insert(c6,cu)end end;return c6 end},Float32={fromPod=b_,toPod=c1},Float64={fromPod=b_,toPod=c1},Int32={fromPod=b_,toPod=b_},Int64={fromPod=b_,toPod=b_},NumberRange={fromPod=c0(NumberRange.new),toPod=function(c5)return{c5.Min,c5.Max}end},NumberSequence={fromPod=function(c6)local cq={}for c8,cr in ipairs(c6.Keypoints)do cq[c8]=NumberSequenceKeypoint.new(cr.Time,cr.Value,cr.Envelope)end;return NumberSequence.new(cq)end,toPod=function(c5)local cq={}for c8,cr in ipairs(c5.Keypoints)do cq[c8]={Time=cr.Time,Value=cr.Value,Envelope=cr.Envelope}end;return{Keypoints=cq}end},PhysicalProperties={fromPod=function(c6)if c6==\"Default\"then return nil else return PhysicalProperties.new(c6.Density,c6.Friction,c6.Elasticity,c6.FrictionWeight,c6.ElasticityWeight)end end,toPod=function(c5)if c5==nil then return\"Default\"else return{Density=c5.Density,Friction=c5.Friction,Elasticity=c5.Elasticity,FrictionWeight=c5.FrictionWeight,ElasticityWeight=c5.ElasticityWeight}end end},Ray={fromPod=function(c6)return Ray.new(c4.Vector3.fromPod(c6.Origin),c4.Vector3.fromPod(c6.Direction))end,toPod=function(c5)return{Origin=c4.Vector3.toPod(c5.Origin),Direction=c4.Vector3.toPod(c5.Direction)}end},Rect={fromPod=function(c6)return Rect.new(c4.Vector2.fromPod(c6[1]),c4.Vector2.fromPod(c6[2]))end,toPod=function(c5)return{c4.Vector2.toPod(c5.Min),c4.Vector2.toPod(c5.Max)}end},Instance={fromPod=function(cv)error(\"Ref cannot be decoded on its own\")end,toPod=function(cw)error(\"Ref can not be encoded on its own\")end},Ref={fromPod=function(cv)error(\"Ref cannot be decoded on its own\")end,toPod=function(cw)error(\"Ref can not be encoded on its own\")end},Region3={fromPod=function(c6)error(\"Region3 is not implemented\")end,toPod=function(c5)error(\"Region3 is not implemented\")end},Region3int16={fromPod=function(c6)return Region3int16.new(c4.Vector3int16.fromPod(c6[1]),c4.Vector3int16.fromPod(c6[2]))end,toPod=function(c5)return{c4.Vector3int16.toPod(c5.Min),c4.Vector3int16.toPod(c5.Max)}end},SharedString={fromPod=function(c6)error(\"SharedString is not supported\")end,toPod=function(c5)error(\"SharedString is not supported\")end},String={fromPod=b_,toPod=b_},UDim={fromPod=c0(UDim.new),toPod=function(c5)return{c5.Scale,c5.Offset}end},UDim2={fromPod=function(c6)return UDim2.new(c4.UDim.fromPod(c6[1]),c4.UDim.fromPod(c6[2]))end,toPod=function(c5)return{c4.UDim.toPod(c5.X),c4.UDim.toPod(c5.Y)}end},Vector2={fromPod=c0(Vector2.new),toPod=function(c5)return{c1(c5.X),c1(c5.Y)}end},Vector2int16={fromPod=c0(Vector2int16.new),toPod=function(c5)return{c5.X,c5.Y}end},Vector3={fromPod=c0(Vector3.new),toPod=function(c5)return{c1(c5.X),c1(c5.Y),c1(c5.Z)}end},Vector3int16={fromPod=c0(Vector3int16.new),toPod=function(c5)return{c5.X,c5.Y,c5.Z}end}}local bn={}function bn.decode(cx,cy)local cz=c4[cx]if cz==nil then return false,\"Couldn't decode value \"..tostring(cx)end;return true,cz.fromPod(cy)end;function bn.setProperty(aP,a7,cy,cx)cx=cx or typeof(aP[a7])local Q,M=bn.decode(cx,cy)if Q then aP[a7]=M else warn(\"Could not set property \"..a7 ..\" of \"..aP.GetFullName()..\"; \"..M)end end;function bn.setProperties(aP,cA)for a7,cy in pairs(cA)do bn.setProperty(aP,a7,cy)end end;function bn.setModelProperties(aP,cA)for a7,cy in pairs(cA)do bn.setProperty(aP,a7,cy.Value,cy.Type)end end;return bn end)a.register(\"out/modules/Promise/init.lua\",\"init\",function()local S=a.get(\"out/modules/Promise/init.lua\")local cB=\"Non-promise value passed into %s at index %s\"local cC=\"Please pass a list of promises to %s\"local cD=\"Please pass a handler function to %s!\"local cE={__mode=\"k\"}local function cF(cG,cH)local cI={}for k,cJ in ipairs(cH)do cI[cJ]=cJ end;return setmetatable(cI,{__index=function(k,b)error(string.format(\"%s is not in %s!\",b,cG),2)end,__newindex=function()error(string.format(\"Creating new members in %s is not allowed!\",cG),2)end})end;local cK;do cK={Kind=cF(\"Promise.Error.Kind\",{\"ExecutionError\",\"AlreadyCancelled\",\"NotResolvedInTime\",\"TimedOut\"})}cK.__index=cK;function cK.new(cL,cM)cL=cL or{}return setmetatable({error=tostring(cL.error)or\"[This error has no error text.]\",trace=cL.trace,context=cL.context,kind=cL.kind,parent=cM,createdTick=os.clock(),createdTrace=debug.traceback()},cK)end;function cK.is(cN)if type(cN)==\"table\"then local cO=getmetatable(cN)if type(cO)==\"table\"then return rawget(cN,\"error\")~=nil and type(rawget(cO,\"extend\"))==\"function\"end end;return false end;function cK.isKind(cN,cP)assert(cP~=nil,\"Argument #2 to Promise.Error.isKind must not be nil\")return cK.is(cN)and cN.kind==cP end;function cK:extend(cL)cL=cL or{}cL.kind=cL.kind or self.kind;return cK.new(cL,self)end;function cK:getErrorChain()local cQ={self}while cQ[#cQ].parent do table.insert(cQ,cQ[#cQ].parent)end;return cQ end;function cK:__tostring()local cR={string.format(\"-- Promise.Error(%s) --\",self.kind or\"?\")}for k,cS in ipairs(self:getErrorChain())do table.insert(cR,table.concat({cS.trace or cS.error,cS.context},\"\n\"))end;return table.concat(cR,\"\n\")end end;local function cT(...)return select(\"#\",...),{...}end;local function cU(Q,...)return Q,select(\"#\",...),{...}end;local function cV(aK)assert(aK~=nil)return function(aW)if type(aW)==\"table\"then return aW end;return cK.new({error=aW,kind=cK.Kind.ExecutionError,trace=debug.traceback(tostring(aW),2),context=\"Promise created at:\n\n\"..aK})end end;local function cW(aK,F,...)return cU(xpcall(F,cV(aK),...))end;local function cX(aK,F,J,K)return function(...)local L,cY,M=cW(aK,F,...)if L then J(unpack(M,1,cY))else K(M[1])end end end;local function cZ(c_)return next(c_)==nil end;local G={Error=cK,Status=cF(\"Promise.Status\",{\"Started\",\"Resolved\",\"Rejected\",\"Cancelled\"}),_getTime=os.clock,_timeEvent=game:GetService(\"RunService\").Heartbeat}G.prototype={}G.__index=G.prototype;function G._new(aK,F,cM)if cM~=nil and not G.is(cM)then error(\"Argument #2 to Promise.new must be a promise or nil\",2)end;local self={_source=aK,_status=G.Status.Started,_values=nil,_valuesLength=-1,_unhandledRejection=true,_queuedResolve={},_queuedReject={},_queuedFinally={},_cancellationHook=nil,_parent=cM,_consumers=setmetatable({},cE)}if cM and cM._status==G.Status.Started then cM._consumers[self]=true end;setmetatable(self,G)local function J(...)self:_resolve(...)end;local function K(...)self:_reject(...)end;local function d0(d1)if d1 then if self._status==G.Status.Cancelled then d1()else self._cancellationHook=d1 end end;return self._status==G.Status.Cancelled end;coroutine.wrap(function()local L,k,M=cW(self._source,F,J,K,d0)if not L then K(M[1])end end)()return self end;function G.new(d2)return G._new(debug.traceback(nil,2),d2)end;function G:__tostring()return string.format(\"Promise(%s)\",self:getStatus())end;function G.defer(F)local aK=debug.traceback(nil,2)local N;N=G._new(aK,function(J,K,d0)local d3;d3=G._timeEvent:Connect(function()d3:Disconnect()local L,k,M=cW(aK,F,J,K,d0)if not L then K(M[1])end end)end)return N end;G.async=G.defer;function G.resolve(...)local d4,d5=cT(...)return G._new(debug.traceback(nil,2),function(J)J(unpack(d5,1,d4))end)end;function G.reject(...)local d4,d5=cT(...)return G._new(debug.traceback(nil,2),function(k,K)K(unpack(d5,1,d4))end)end;function G._try(aK,F,...)local d6,d5=cT(...)return G._new(aK,function(J)J(F(unpack(d5,1,d6)))end)end;function G.try(...)return G._try(debug.traceback(nil,2),...)end;function G._all(aK,d7,d8)if type(d7)~=\"table\"then error(string.format(cC,\"Promise.all\"),3)end;for aL,N in pairs(d7)do if not G.is(N)then error(string.format(cB,\"Promise.all\",tostring(aL)),3)end end;if#d7==0 or d8==0 then return G.resolve({})end;return G._new(aK,function(J,K,d0)local d9={}local da={}local db=0;local dc=0;local dd=false;local function de()for k,N in ipairs(da)do N:cancel()end end;local function df(aL,...)if dd then return end;db=db+1;if d8==nil then d9[aL]=...else d9[db]=...end;if db>=(d8 or#d7)then dd=true;J(d9)de()end end;d0(de)for aL,N in ipairs(d7)do da[aL]=N:andThen(function(...)df(aL,...)end,function(...)dc=dc+1;if d8==nil or#d7-dc<d8 then de()dd=true;K(...)end end)end;if dd then de()end end)end;function G.all(d7)return G._all(debug.traceback(nil,2),d7)end;function G.fold(dg,F,dh)assert(type(dg)==\"table\",\"Bad argument #1 to Promise.fold: must be a table\")assert(type(F)==\"function\",\"Bad argument #2 to Promise.fold: must be a function\")local di=G.resolve(dh)return G.each(dg,function(dj,aL)di=di:andThen(function(dk)return F(dk,dj,aL)end)end):andThenReturn(di)end;function G.some(d7,d8)assert(type(d8)==\"number\",\"Bad argument #2 to Promise.some: must be a number\")return G._all(debug.traceback(nil,2),d7,d8)end;function G.any(d7)return G._all(debug.traceback(nil,2),d7,1):andThen(function(d5)return d5[1]end)end;function G.allSettled(d7)if type(d7)~=\"table\"then error(string.format(cC,\"Promise.allSettled\"),2)end;for aL,N in pairs(d7)do if not G.is(N)then error(string.format(cB,\"Promise.allSettled\",tostring(aL)),2)end end;if#d7==0 then return G.resolve({})end;return G._new(debug.traceback(nil,2),function(J,k,d0)local dl={}local da={}local dm=0;local function df(aL,...)dm=dm+1;dl[aL]=...if dm>=#d7 then J(dl)end end;d0(function()for k,N in ipairs(da)do N:cancel()end end)for aL,N in ipairs(d7)do da[aL]=N:finally(function(...)df(aL,...)end)end end)end;function G.race(d7)assert(type(d7)==\"table\",string.format(cC,\"Promise.race\"))for aL,N in pairs(d7)do assert(G.is(N),string.format(cB,\"Promise.race\",tostring(aL)))end;return G._new(debug.traceback(nil,2),function(J,K,d0)local da={}local dn=false;local function de()for k,N in ipairs(da)do N:cancel()end end;local function dp(F)return function(...)de()dn=true;return F(...)end end;if d0(dp(K))then return end;for aL,N in ipairs(d7)do da[aL]=N:andThen(dp(J),dp(K))end;if dn then de()end end)end;function G.each(dg,dq)assert(type(dg)==\"table\",string.format(cC,\"Promise.each\"))assert(type(dq)==\"function\",string.format(cD,\"Promise.each\"))return G._new(debug.traceback(nil,2),function(J,K,d0)local dr={}local ds={}local dt=false;local function de()for k,du in ipairs(ds)do du:cancel()end end;d0(function()dt=true;de()end)local dv={}for c8,P in ipairs(dg)do if G.is(P)then if P:getStatus()==G.Status.Cancelled then de()return K(cK.new({error=\"Promise is cancelled\",kind=cK.Kind.AlreadyCancelled,context=string.format(\"The Promise that was part of the array at index %d passed into Promise.each was already cancelled when Promise.each began.\n\nThat Promise was created at:\n\n%s\",c8,P._source)}))elseif P:getStatus()==G.Status.Rejected then de()return K(select(2,P:await()))end;local dw=P:andThen(function(...)return...end)table.insert(ds,dw)dv[c8]=dw else dv[c8]=P end end;for c8,P in ipairs(dv)do if G.is(P)then local Q;Q,P=P:await()if not Q then de()return K(P)end end;if dt then return end;local dx=G.resolve(dq(P,c8))table.insert(ds,dx)local Q,M=dx:await()if not Q then de()return K(M)end;dr[c8]=M end;J(dr)end)end;function G.is(aR)if type(aR)~=\"table\"then return false end;local dy=getmetatable(aR)if dy==G then return true elseif dy==nil then return type(aR.andThen)==\"function\"elseif type(dy)==\"table\"and type(rawget(dy,\"__index\"))==\"table\"and type(rawget(rawget(dy,\"__index\"),\"andThen\"))==\"function\"then return true end;return false end;function G.promisify(F)return function(...)return G._try(debug.traceback(nil,2),F,...)end end;do local dz;local d3;function G.delay(dA)assert(type(dA)==\"number\",\"Bad argument #1 to Promise.delay, must be a number.\")if not(dA>=1/60)or dA==math.huge then dA=1/60 end;return G._new(debug.traceback(nil,2),function(J,k,d0)local dB=G._getTime()local dC=dB+dA;local dD={resolve=J,startTime=dB,endTime=dC}if d3==nil then dz=dD;d3=G._timeEvent:Connect(function()local dE=G._getTime()while dz~=nil and dz.endTime<dE do local dF=dz;dz=dF.next;if dz==nil then d3:Disconnect()d3=nil else dz.previous=nil end;dF.resolve(G._getTime()-dF.startTime)end end)else if dz.endTime<dC then local dF=dz;local next=dF.next;while next~=nil and next.endTime<dC do dF=next;next=dF.next end;dF.next=dD;dD.previous=dF;if next~=nil then dD.next=next;next.previous=dD end else dD.next=dz;dz.previous=dD;dz=dD end end;d0(function()local next=dD.next;if dz==dD then if next==nil then d3:Disconnect()d3=nil else next.previous=nil end;dz=next else local dG=dD.previous;dG.next=next;if next~=nil then next.previous=dG end end end)end)end end;function G.prototype:timeout(dA,dH)local aK=debug.traceback(nil,2)return G.race({G.delay(dA):andThen(function()return G.reject(dH==nil and cK.new({kind=cK.Kind.TimedOut,error=\"Timed out\",context=string.format(\"Timeout of %d seconds exceeded.\n:timeout() called at:\n\n%s\",dA,aK)})or dH)end),self})end;function G.prototype:getStatus()return self._status end;function G.prototype:_andThen(aK,dI,dJ)self._unhandledRejection=false;return G._new(aK,function(J,K)local dK=J;if dI then dK=cX(aK,dI,J,K)end;local dL=K;if dJ then dL=cX(aK,dJ,J,K)end;if self._status==G.Status.Started then table.insert(self._queuedResolve,dK)table.insert(self._queuedReject,dL)elseif self._status==G.Status.Resolved then dK(unpack(self._values,1,self._valuesLength))elseif self._status==G.Status.Rejected then dL(unpack(self._values,1,self._valuesLength))elseif self._status==G.Status.Cancelled then K(cK.new({error=\"Promise is cancelled\",kind=cK.Kind.AlreadyCancelled,context=\"Promise created at\n\n\"..aK}))end end,self)end;function G.prototype:andThen(dI,dJ)assert(dI==nil or type(dI)==\"function\",string.format(cD,\"Promise:andThen\"))assert(dJ==nil or type(dJ)==\"function\",string.format(cD,\"Promise:andThen\"))return self:_andThen(debug.traceback(nil,2),dI,dJ)end;function G.prototype:catch(dL)assert(dL==nil or type(dL)==\"function\",string.format(cD,\"Promise:catch\"))return self:_andThen(debug.traceback(nil,2),nil,dL)end;function G.prototype:tap(dM)assert(type(dM)==\"function\",string.format(cD,\"Promise:tap\"))return self:_andThen(debug.traceback(nil,2),function(...)local dN=dM(...)if G.is(dN)then local d4,d5=cT(...)return dN:andThen(function()return unpack(d5,1,d4)end)end;return...end)end;function G.prototype:andThenCall(F,...)assert(type(F)==\"function\",string.format(cD,\"Promise:andThenCall\"))local d4,d5=cT(...)return self:_andThen(debug.traceback(nil,2),function()return F(unpack(d5,1,d4))end)end;function G.prototype:andThenReturn(...)local d4,d5=cT(...)return self:_andThen(debug.traceback(nil,2),function()return unpack(d5,1,d4)end)end;function G.prototype:cancel()if self._status~=G.Status.Started then return end;self._status=G.Status.Cancelled;if self._cancellationHook then self._cancellationHook()end;if self._parent then self._parent:_consumerCancelled(self)end;for bl in pairs(self._consumers)do bl:cancel()end;self:_finalize()end;function G.prototype:_consumerCancelled(dO)if self._status~=G.Status.Started then return end;self._consumers[dO]=nil;if next(self._consumers)==nil then self:cancel()end end;function G.prototype:_finally(aK,dP,dQ)if not dQ then self._unhandledRejection=false end;return G._new(aK,function(J,K)local dR=J;if dP then dR=cX(aK,dP,J,K)end;if dQ then local F=dR;dR=function(...)if self._status==G.Status.Rejected then return J(self)end;return F(...)end end;if self._status==G.Status.Started then table.insert(self._queuedFinally,dR)else dR(self._status)end end,self)end;function G.prototype:finally(dP)assert(dP==nil or type(dP)==\"function\",string.format(cD,\"Promise:finally\"))return self:_finally(debug.traceback(nil,2),dP)end;function G.prototype:finallyCall(F,...)assert(type(F)==\"function\",string.format(cD,\"Promise:finallyCall\"))local d4,d5=cT(...)return self:_finally(debug.traceback(nil,2),function()return F(unpack(d5,1,d4))end)end;function G.prototype:finallyReturn(...)local d4,d5=cT(...)return self:_finally(debug.traceback(nil,2),function()return unpack(d5,1,d4)end)end;function G.prototype:done(dP)assert(dP==nil or type(dP)==\"function\",string.format(cD,\"Promise:done\"))return self:_finally(debug.traceback(nil,2),dP,true)end;function G.prototype:doneCall(F,...)assert(type(F)==\"function\",string.format(cD,\"Promise:doneCall\"))local d4,d5=cT(...)return self:_finally(debug.traceback(nil,2),function()return F(unpack(d5,1,d4))end,true)end;function G.prototype:doneReturn(...)local d4,d5=cT(...)return self:_finally(debug.traceback(nil,2),function()return unpack(d5,1,d4)end,true)end;function G.prototype:awaitStatus()self._unhandledRejection=false;if self._status==G.Status.Started then local dS=Instance.new(\"BindableEvent\")self:finally(function()dS:Fire()end)dS.Event:Wait()dS:Destroy()end;if self._status==G.Status.Resolved then return self._status,unpack(self._values,1,self._valuesLength)elseif self._status==G.Status.Rejected then return self._status,unpack(self._values,1,self._valuesLength)end;return self._status end;local function dT(O,...)return O==G.Status.Resolved,...end;function G.prototype:await()return dT(self:awaitStatus())end;local function dU(O,...)if O~=G.Status.Resolved then error(...==nil and\"Expected Promise rejected with no value.\"or...,3)end;return...end;function G.prototype:expect()return dU(self:awaitStatus())end;G.prototype.awaitValue=G.prototype.expect;function G.prototype:_unwrap()if self._status==G.Status.Started then error(\"Promise has not resolved or rejected.\",2)end;local Q=self._status==G.Status.Resolved;return Q,unpack(self._values,1,self._valuesLength)end;function G.prototype:_resolve(...)if self._status~=G.Status.Started then if G.is(...)then select(1,...):_consumerCancelled(self)end;return end;if G.is(...)then if select(\"#\",...)>1 then local dV=string.format(\"When returning a Promise from andThen, extra arguments are \"..\"discarded! See:\n\n%s\",self._source)warn(dV)end;local dW=...local N=dW:andThen(function(...)self:_resolve(...)end,function(...)local dX=dW._values[1]if dW._error then dX=cK.new({error=dW._error,kind=cK.Kind.ExecutionError,context=\"[No stack trace available as this Promise originated from an older version of the Promise library (< v2)]\"})end;if cK.isKind(dX,cK.Kind.ExecutionError)then return self:_reject(dX:extend({error=\"This Promise was chained to a Promise that errored.\",trace=\"\",context=string.format(\"The Promise at:\n\n%s\n...Rejected because it was chained to the following Promise, which encountered an error:\n\",self._source)}))end;self:_reject(...)end)if N._status==G.Status.Cancelled then self:cancel()elseif N._status==G.Status.Started then self._parent=N;N._consumers[self]=true end;return end;self._status=G.Status.Resolved;self._valuesLength,self._values=cT(...)for k,F in ipairs(self._queuedResolve)do coroutine.wrap(F)(...)end;self:_finalize()end;function G.prototype:_reject(...)if self._status~=G.Status.Started then return end;self._status=G.Status.Rejected;self._valuesLength,self._values=cT(...)if not cZ(self._queuedReject)then for k,F in ipairs(self._queuedReject)do coroutine.wrap(F)(...)end else local aW=tostring(...)coroutine.wrap(function()G._timeEvent:Wait()if not self._unhandledRejection then return end;local dV=string.format(\"Unhandled Promise rejection:\n\n%s\n\n%s\",aW,self._source)if G.TEST then return end;warn(dV)end)()end;self:_finalize()end;function G.prototype:_finalize()for k,F in ipairs(self._queuedFinally)do coroutine.wrap(F)(self._status)end;self._queuedFinally=nil;self._queuedReject=nil;self._queuedResolve=nil;if not G.TEST then self._parent=nil;self._consumers=nil end end;function G.prototype:now(dH)local aK=debug.traceback(nil,2)if self:getStatus()==G.Status.Resolved then return self:_andThen(aK,function(...)return...end)else return G.reject(dH==nil and cK.new({kind=cK.Kind.NotResolvedInTime,error=\"This Promise was not resolved in time for :now()\",context=\":now() was called at:\n\n\"..aK})or dH)end end;function G.retry(F,dY,...)assert(type(F)==\"function\",\"Parameter #1 to Promise.retry must be a function\")assert(type(dY)==\"number\",\"Parameter #2 to Promise.retry must be a number\")local I,d4={...},select(\"#\",...)return G.resolve(F(...)):catch(function(...)if dY>0 then return G.retry(F,dY-1,unpack(I,1,d4))else return G.reject(...)end end)end;function G.fromEvent(dZ,dq)dq=dq or function()return true end;return G._new(debug.traceback(nil,2),function(J,K,d0)local d3;local d_=false;local function e0()d3:Disconnect()d3=nil end;d3=dZ:Connect(function(...)local e1=dq(...)if e1==true then J(...)if d3 then e0()else d_=true end elseif type(e1)~=\"boolean\"then error(\"Promise.fromEvent predicate should always return a boolean\")end end)if d_ and d3 then return e0()end;d0(function()e0()end)end)end;return G end)a.register(\"out/modules/make/init.lua\",\"init\",function()local S=a.get(\"out/modules/make/init.lua\")local function X(e2,e3)local e4=e3;local e5=e4.Children;local cM=e4.Parent;local a5=Instance.new(e2)for e6,P in pairs(e3)do if e6~=\"Children\"and e6~=\"Parent\"then local e7=a5;local e8=e7[e6]local e9=e8;if typeof(e9)==\"RBXScriptSignal\"then e8:Connect(P)else a5[e6]=P end end end;if e5 then for k,bl in ipairs(e5)do bl.Parent=a5 end end;a5.Parent=cM;return a5 end;return X end)a.register(\"out/modules/object-utils/init.lua\",\"init\",function()local S=a.get(\"out/modules/object-utils/init.lua\")local at=game:GetService(\"HttpService\")local ea={}function ea.keys(aR)local M=table.create(#aR)for n in pairs(aR)do M[#M+1]=n end;return M end;function ea.values(aR)local M=table.create(#aR)for k,P in pairs(aR)do M[#M+1]=P end;return M end;function ea.entries(aR)local M=table.create(#aR)for n,P in pairs(aR)do M[#M+1]={n,P}end;return M end;function ea.assign(eb,...)for aL=1,select(\"#\",...)do local ec=select(aL,...)if type(ec)==\"table\"then for n,P in pairs(ec)do eb[n]=P end end end;return eb end;function ea.copy(aR)local M=table.create(#aR)for b,aC in pairs(aR)do M[b]=aC end;return M end;local function ed(aR,ee)local M=table.create(#aR)ee[aR]=M;for b,aC in pairs(aR)do if type(b)==\"table\"then b=ee[b]or ed(b,ee)end;if type(aC)==\"table\"then aC=ee[aC]or ed(aC,ee)end;M[b]=aC end;return M end;function ea.deepCopy(aR)return ed(aR,{})end;function ea.deepEquals(ef,eg)for b in pairs(ef)do local eh=ef[b]local ei=eg[b]if type(eh)==\"table\"and type(ei)==\"table\"then local M=ea.deepEquals(eh,ei)if not M then return false end elseif eh~=ei then return false end end;for b in pairs(eg)do if ef[b]==nil then return false end end;return true end;function ea.toString(E)return at:JSONEncode(E)end;function ea.isEmpty(aR)return next(aR)==nil end;function ea.fromEntries(ej)local ek=#ej;local M=table.create(ek)if ej then for aL=1,ek do local el=ej[aL]M[el[1]]=el[2]end end;return M end;return ea end)a.register(\"out/modules/services/init.lua\",\"init\",function()local S=a.get(\"out/modules/services/init.lua\")return setmetatable({},{__index=function(self,em)local en=game:GetService(em)self[em]=en;return en end})end)a.register(\"out/modules/zzlib/init.lua\",\"init\",function()local S=a.get(\"out/modules/zzlib/init.lua\")local unpack=unpack;local M;local eo;do local ep={}local eq=bit32;ep.band=eq.band;ep.rshift=eq.rshift;function ep.bitstream_init(aT)local er={file=aT,buf=nil,len=nil,pos=1,b=0,n=0}function er:flushb(H)self.n=self.n-H;self.b=eq.rshift(self.b,H)end;function er:peekb(H)while self.n<H do if self.pos>self.len then self.buf=self.file:read(4096)self.len=self.buf:len()self.pos=1 end;self.b=self.b+eq.lshift(self.buf:byte(self.pos),self.n)self.pos=self.pos+1;self.n=self.n+8 end;return eq.band(self.b,eq.lshift(1,H)-1)end;function er:getb(H)local es=er:peekb(H)self.n=self.n-H;self.b=eq.rshift(self.b,H)return es end;function er:getv(et,H)local eu=et[er:peekb(H)]local ev=eq.band(eu,15)local es=eq.rshift(eu,4)self.n=self.n-ev;self.b=eq.rshift(self.b,ev)return es end;function er:close()if self.file then self.file:close()end end;if type(aT)==\"string\"then er.file=nil;er.buf=aT else er.buf=aT:read(4096)end;er.len=er.buf:len()return er end;local function ew(ex)local ey=#ex;local ez=1;local eA={}local eB={}for aL=1,ey do local eC=ex[aL]if eC>ez then ez=eC end;eA[eC]=(eA[eC]or 0)+1 end;local table={}local eD=0;eA[0]=0;for aL=1,ez do eD=(eD+(eA[aL-1]or 0))*2;eB[aL]=eD end;for aL=1,ey do local ev=ex[aL]or 0;if ev>0 then local eu=(aL-1)*16+ev;local eD=eB[ev]local eE=0;for eF=1,ev do eE=eE+eq.lshift(eq.band(1,eq.rshift(eD,eF-1)),ev-eF)end;for eF=0,2^ez-1,2^ev do table[eF+eE]=eu end;eB[ev]=eB[ev]+1 end end;return table,ez end;local function eG(bH,er,eH,eI,eJ,eK)local eL;repeat eL=er:getv(eJ,eH)if eL<256 then table.insert(bH,eL)elseif eL>256 then local ez=0;local eM=3;local eN=1;if eL<265 then eM=eM+eL-257 elseif eL<285 then ez=eq.rshift(eL-261,2)eM=eM+eq.lshift(eq.band(eL-261,3)+4,ez)else eM=258 end;if ez>0 then eM=eM+er:getb(ez)end;local aC=er:getv(eK,eI)if aC<4 then eN=eN+aC else ez=eq.rshift(aC-2,1)eN=eN+eq.lshift(eq.band(aC,1)+2,ez)eN=eN+er:getb(ez)end;local eO=#bH-eN+1;while eM>0 do table.insert(bH,bH[eO])eO=eO+1;eM=eM-1 end end until eL==256 end;local function eP(bH,er)local eQ={17,18,19,1,9,8,10,7,11,6,12,5,13,4,14,3,15,2,16}local eR=257+er:getb(5)local eS=1+er:getb(5)local eT=4+er:getb(4)local ex={}for aL=1,eT do local aC=er:getb(3)ex[eQ[aL]]=aC end;for aL=eT+1,19 do ex[eQ[aL]]=0 end;local eU,eV=ew(ex)local aL=1;while aL<=eR+eS do local aC=er:getv(eU,eV)if aC<16 then ex[aL]=aC;aL=aL+1 elseif aC<19 then local eW={2,3,7}local eX=eW[aC-15]local eY=0;local H=3+er:getb(eX)if aC==16 then eY=ex[aL-1]elseif aC==18 then H=H+8 end;for eF=1,H do ex[aL]=eY;aL=aL+1 end else error(\"wrong entry in depth table for literal/length alphabet: \"..aC)end end;local eZ={}for aL=1,eR do table.insert(eZ,ex[aL])end;local eJ,eH=ew(eZ)local e_={}for aL=eR+1,#ex do table.insert(e_,ex[aL])end;local eK,eI=ew(e_)eG(bH,er,eH,eI,eJ,eK)end;local function f0(bH,er)local f1={144,112,24,8}local f2={8,9,7,8}local ex={}for aL=1,4 do local eC=f2[aL]for eF=1,f1[aL]do table.insert(ex,eC)end end;local eJ,eH=ew(ex)ex={}for aL=1,32 do ex[aL]=5 end;local eK,eI=ew(ex)eG(bH,er,eH,eI,eJ,eK)end;local function f3(bH,er)er:flushb(eq.band(er.n,7))local ev=er:getb(16)if er.n>0 then error(\"Unexpected.. should be zero remaining bits in buffer.\")end;local eV=er:getb(16)if eq.bxor(ev,eV)~=65535 then error(\"LEN and NLEN don't match\")end;for aL=er.pos,er.pos+ev-1 do table.insert(bH,er.buf:byte(aL,aL))end;er.pos=er.pos+ev end;function ep.main(er)local f4,type;local f5={}repeat local f6;f4=er:getb(1)type=er:getb(2)if type==0 then f3(f5,er)elseif type==1 then f0(f5,er)elseif type==2 then eP(f5,er)else error(\"unsupported block type\")end until f4==1;er:flushb(eq.band(er.n,7))return f5 end;local f7;function ep.crc32(f8,f9)if not f7 then f7={}for aL=0,255 do local fa=aL;for eF=1,8 do fa=eq.bxor(eq.rshift(fa,1),eq.band(0xedb88320,eq.bnot(eq.band(fa,1)-1)))end;f7[aL]=fa end end;f9=eq.bnot(f9 or 0)for aL=1,#f8 do local eY=f8:byte(aL)f9=eq.bxor(f7[eq.bxor(eY,eq.band(f9,0xff))],eq.rshift(f9,8))end;f9=eq.bnot(f9)if f9<0 then f9=f9+4294967296 end;return f9 end;eo=ep end;local fb={}local function fc(fd)local fe={}local eM=#fd;local cc=1;local ff=1;while eM>0 do local fg=eM>=2048 and 2048 or eM;local f8=string.char(unpack(fd,cc,cc+fg-1))cc=cc+fg;eM=eM-fg;local aL=1;while fe[aL]do f8=fe[aL]..f8;fe[aL]=nil;aL=aL+1 end;if aL>ff then ff=aL end;fe[aL]=f8 end;local D=\"\"for aL=1,ff do if fe[aL]then D=fe[aL]..D end end;return D end;local function fh(er)local fi,fj,fk,fl=er.buf:byte(1,4)if fi~=31 or fj~=139 then error(\"invalid gzip header\")end;if fk~=8 then error(\"only deflate format is supported\")end;er.pos=11;if eo.band(fl,4)~=0 then local fm,fn=er.buf.byte(er.pos,er.pos+1)local fo=fn*256+fm;er.pos=er.pos+fo+2 end;if eo.band(fl,8)~=0 then local cc=er.buf:find(\"\0\",er.pos)er.pos=cc+1 end;if eo.band(fl,16)~=0 then local cc=er.buf:find(\"\0\",er.pos)er.pos=cc+1 end;if eo.band(fl,2)~=0 then er.pos=er.pos+2 end;local M=fc(eo.main(er))local f9=er:getb(8)+256*(er:getb(8)+256*(er:getb(8)+256*er:getb(8)))er:close()if f9~=eo.crc32(M)then error(\"checksum verification failed\")end;return M end;local function fp(f8)local fq=1;local fr=0;for aL=1,#f8 do local eY=f8:byte(aL)fq=(fq+eY)%65521;fr=(fr+fq)%65521 end;return fr*65536+fq end;local function fs(er)local ft=er.buf:byte(1)local fl=er.buf:byte(2)if(ft*256+fl)%31~=0 then error(\"zlib header check bits are incorrect\")end;if eo.band(ft,15)~=8 then error(\"only deflate format is supported\")end;if eo.rshift(ft,4)~=7 then error(\"unsupported window size\")end;if eo.band(fl,32)~=0 then error(\"preset dictionary not implemented\")end;er.pos=3;local M=fc(eo.main(er))local fu=((er:getb(8)*256+er:getb(8))*256+er:getb(8))*256+er:getb(8)er:close()if fu~=fp(M)then error(\"checksum verification failed\")end;return M end;function fb.gunzipf(fv)local aT,aW=io.open(fv,\"rb\")if not aT then return nil,aW end;return fh(eo.bitstream_init(aT))end;function fb.gunzip(D)return fh(eo.bitstream_init(D))end;function fb.inflate(D)return fs(eo.bitstream_init(D))end;local function fw(D,cc)local ef,eg=D:byte(cc,cc+1)return eg*256+ef end;local function fx(D,cc)local ef,eg,eY,eC=D:byte(cc,cc+3)return((eC*256+eY)*256+eg)*256+ef end;function fb.unzip(fy)local eO=#fy-21-#\"00bd21b8cc3a2e233276f5a70b57ca7347fdf520\"local fz=false;local fA={}if fx(fy,eO)~=0x06054b50 then error(\".ZIP file comments not supported\")end;local fB=fx(fy,eO+16)local fC=fw(fy,eO+10)eO=fB+1;for aL=1,fC do if fx(fy,eO)~=0x02014b50 then error(\"invalid central directory header signature\")end;local fD=fw(fy,eO+8)local fE=fw(fy,eO+10)local f9=fx(fy,eO+16)local fF=fw(fy,eO+28)local h=fy:sub(eO+46,eO+45+fF)if true then local fG=fx(fy,eO+42)local eO=1+fG;if fx(fy,eO)~=0x04034b50 then error(\"invalid local header signature\")end;local fH=fx(fy,eO+18)local fI=fw(fy,eO+28)eO=eO+30+fF+fI;if fE==0 then M=fy:sub(eO,eO+fH-1)fA[h]=M else local er=eo.bitstream_init(fy)er.pos=eO;M=fc(eo.main(er))fA[h]=M end;if f9~=eo.crc32(M)then error(\"checksum verification failed\")end end;eO=eO+46+fF+fw(fy,eO+30)+fw(fy,eO+32)end;return fA end;return fb end)a.register(\"out/utils/JsonStore.lua\",\"JsonStore\",function()local S=a.get(\"out/utils/JsonStore.lua\")local a=a._G[S]local at=a.import(S,S.Parent.Parent,\"modules\",\"services\").HttpService;local fJ;do fJ=setmetatable({},{__tostring=function()return\"JsonStore\"end})fJ.__index=fJ;function fJ.new(...)local self=setmetatable({},fJ)return self:constructor(...)or self end;function fJ:constructor(aT)self.file=aT;local a0=isfile(aT)local a2=\"File '\"..aT..\"' must be a valid JSON file\"assert(a0,a2)end;function fJ:get(n)local fK=self.state;assert(fK,\"The JsonStore must be open to read from it\")return self.state[n]end;function fJ:set(n,P)local fK=self.state;assert(fK,\"The JsonStore must be open to write to it\")self.state[n]=P end;function fJ:open()local a0=self.state==nil;assert(a0,\"Attempt to open an active JsonStore\")local fL=at:JSONDecode(readfile(self.file))a.Promise.defer(function(k,K)if self.state==fL then self:close()K(\"JsonStore was left open; was the thread blocked before it could close?\")end end)self.state=fL end;function fJ:close()local fK=self.state;assert(fK,\"Attempt to close an inactive JsonStore\")writefile(self.file,at:JSONEncode(self.state))self.state=nil end end;return{JsonStore=fJ}end)a.register(\"out/utils/extract.lua\",\"extract\",function()local S=a.get(\"out/utils/extract.lua\")local a=a._G[S]local fb=a.import(S,S.Parent.Parent,\"modules\",\"zzlib\")local fM=a.import(S,S.Parent,\"file-utils\")local a8=fM.makeUtils;local W=fM.pathUtils;local function fN(fO,fP,fQ)local fR=fb.unzip(fO)local fS={}for d,fT in pairs(fR)do local aD;if fQ then local a0={W.addTrailingSlash(fP)..tostring(string.match(d,\"^[^/]*/(.*)$\")),fT}local fU=#fS;fS[fU+1]=a0;aD=fU+1 else local a0={W.addTrailingSlash(fP)..d,fT}local fU=#fS;fS[fU+1]=a0;aD=fU+1 end end;a8.makeFiles(fS)end;return{extract=fN}end)a.register(\"out/utils/http.lua\",\"http\",function()local S=a.get(\"out/utils/http.lua\")local a=a._G[S]local an=a.import(S,S.Parent.Parent,\"api\").httpRequest;local fV=a.Promise.promisify(function(fW)return game:HttpGetAsync(fW)end)local fX=a.Promise.promisify(function(fW)return game:HttpPostAsync(fW)end)local request=a.Promise.promisify(an)return{get=fV,post=fX,request=request}end)a.register(\"out/utils/replace.lua\",\"replace\",function()local S=a.get(\"out/utils/replace.lua\")local function bt(D,fY,fZ)local f5,f_=string.gsub(D,fY,fZ,1)if f_>0 then local aL,eF=string.find(D,fY)return{f5,string.sub(D,aL,eF),aL,eF}end end;return{replace=bt}end)a.register(\"out/utils/fetch-github-release/downloadAsset.lua\",\"downloadAsset\",function()local S=a.get(\"out/utils/fetch-github-release/downloadAsset.lua\")local a=a._G[S]local http=a.import(S,S.Parent.Parent,\"http\")local a8=a.import(S,S.Parent.Parent,\"file-utils\").makeUtils;local fN=a.import(S,S.Parent.Parent,\"extract\").extract;local g0=a.async(function(g1,d,g2)local g3;if g2~=nil then local g4=g1.assets;local a0=function(ef)return ef.name==g2 end;local aD=nil;for g5,ar in ipairs(g4)do if a0(ar,g5-1,g4)==true then aD=ar;break end end;local g6=aD;local a2=\"Release '\"..g1.name..\"' does not have asset '\"..g2 ..\"'\"assert(g6,a2)g3=g6.browser_download_url else g3=g1.zipball_url end;local g7=a.await(http.request({Url=g3,Headers={[\"User-Agent\"]=\"rostruct\"}}))local g8=g7.Success;local g9=g7.StatusMessage;assert(g8,g9)local aD;if g2~=nil and string.match(g2,\"([^%.]+)$\")~=\"zip\"then aD=a8.makeFile(d..g2,g7.Body)else aD=fN(g7.Body,d,g2==nil)end end)return{downloadAsset=g0}end)a.register(\"out/utils/fetch-github-release/downloadRelease.lua\",\"downloadRelease\",function()local S=a.get(\"out/utils/fetch-github-release/downloadRelease.lua\")local a=a._G[S]local fJ=a.import(S,S.Parent.Parent,\"JsonStore\").JsonStore;local g0=a.import(S,S.Parent,\"downloadAsset\").downloadAsset;local ga=a.import(S,S.Parent.Parent.Parent,\"bootstrap\")local ac=ga.bootstrap;local aa=ga.getRostructPath;local gb=a.import(S,S.Parent,\"identify\").identify;local gc=a.import(S,S.Parent,\"getReleases\")local gd=gc.getLatestRelease;local ge=gc.getRelease;local gf=fJ.new(aa(\"RELEASE_TAGS\"))local ag=a.async(function(gg,gh,gi,g2)local a0=type(gg)==\"string\"assert(a0,\"Argument 'owner' must be a string\")local a1=type(gh)==\"string\"assert(a1,\"Argument 'repo' must be a string\")local gj=type(gi)==\"string\"assert(gj,\"Argument 'tag' must be a string\")local gk=g2==nil or type(g2)==\"string\"assert(gk,\"Argument 'asset' must be a string or nil\")local gl=gb(gg,gh,gi,g2)local d=aa(\"RELEASE_CACHE\")..gl..\"/\"if isfolder(d)then local u={location=d,owner=gg,repo=gh,tag=gi}local br=\"asset\"local bq=g2;if bq==nil then bq=\"Source code\"end;u[br]=bq;u.updated=false;return u end;local g1=a.await(ge(gg,gh,gi))a.await(g0(g1,d,g2))local u={location=d,owner=gg,repo=gh,tag=gi}local br=\"asset\"local bq=g2;if bq==nil then bq=\"Source code\"end;u[br]=bq;u.updated=true;return u end)local af=a.async(function(gg,gh,g2)local a0=type(gg)==\"string\"assert(a0,\"Argument 'owner' must be a string\")local a1=type(gh)==\"string\"assert(a1,\"Argument 'repo' must be a string\")local gj=g2==nil or type(g2)==\"string\"assert(gj,\"Argument 'asset' must be a string or nil\")local gl=gb(gg,gh,nil,g2)local d=aa(\"RELEASE_CACHE\")..gl..\"/\"local g1=a.await(gd(gg,gh))gf:open()if gf:get(gl)==g1.tag_name and isfolder(d)then gf:close()local u={location=d,owner=gg,repo=gh,tag=g1.tag_name}local br=\"asset\"local bq=g2;if bq==nil then bq=\"Source code\"end;u[br]=bq;u.updated=false;return u end;gf:set(gl,g1.tag_name)gf:close()if isfolder(d)then delfolder(d)end;a.await(g0(g1,d,g2))local u={location=d,owner=gg,repo=gh,tag=g1.tag_name}local br=\"asset\"local bq=g2;if bq==nil then bq=\"Source code\"end;u[br]=bq;u.updated=true;return u end)local function ae()delfolder(aa(\"RELEASE_CACHE\"))ac()end;return{downloadRelease=ag,downloadLatestRelease=af,clearReleaseCache=ae}end)a.register(\"out/utils/fetch-github-release/getReleases.lua\",\"getReleases\",function()local S=a.get(\"out/utils/fetch-github-release/getReleases.lua\")local a=a._G[S]local at=a.import(S,S.Parent.Parent.Parent,\"modules\",\"services\").HttpService;local http=a.import(S,S.Parent.Parent,\"http\")local gm=a.async(function(gg,gh,gn)if gn==nil then gn=function(g1)return not g1.draft end end;local g7=a.await(http.request({Url=\"https://api.github.com/repos/\"..gg..\"/\"..gh..\"/releases\",Headers={[\"User-Agent\"]=\"rostruct\"}}))local g8=g7.Success;local g9=g7.StatusMessage;assert(g8,g9)local go=at:JSONDecode(g7.Body)local gp={}local fU=0;for aq,ar in ipairs(go)do if gn(ar,aq-1,go)==true then fU=fU+1;gp[fU]=ar end end;return gp end)local ge=a.async(function(gg,gh,gi)local g7=a.await(http.request({Url=\"https://api.github.com/repos/\"..gg..\"/\"..gh..\"/releases/tags/\"..gi,Headers={[\"User-Agent\"]=\"rostruct\"}}))local g8=g7.Success;local g9=g7.StatusMessage;assert(g8,g9)return at:JSONDecode(g7.Body)end)local gd=a.async(function(gg,gh)local g7=a.await(http.request({Url=\"https://api.github.com/repos/\"..gg..\"/\"..gh..\"/releases/latest\",Headers={[\"User-Agent\"]=\"rostruct\"}}))local g8=g7.Success;local g9=g7.StatusMessage;assert(g8,g9)return at:JSONDecode(g7.Body)end)return{getReleases=gm,getRelease=ge,getLatestRelease=gd}end)a.register(\"out/utils/fetch-github-release/identify.lua\",\"identify\",function()local S=a.get(\"out/utils/fetch-github-release/identify.lua\")local function gb(gg,gh,gi,g2)local gq=\"%s-%s-%s-%s\"local a0=string.lower(gg)local a2=string.lower(gh)local gr=gi~=nil and string.lower(gi)or\"LATEST\"local gs=g2~=nil and string.lower(g2)or\"ZIPBALL\"return string.format(gq,a0,a2,gr,gs)end;return{identify=gb}end)a.register(\"out/utils/fetch-github-release/init.lua\",\"init\",function()local S=a.get(\"out/utils/fetch-github-release/init.lua\")local a=a._G[S]local ap={}for aq,ar in pairs(a.import(S,S,\"getReleases\"))do ap[aq]=ar end;for aq,ar in pairs(a.import(S,S,\"downloadRelease\"))do ap[aq]=ar end;for aq,ar in pairs(a.import(S,S,\"identify\"))do ap[aq]=ar end;return ap end)a.register(\"out/utils/fetch-github-release/types.lua\",\"types\",function()local S=a.get(\"out/utils/fetch-github-release/types.lua\")return nil end)a.register(\"out/utils/file-utils/init.lua\",\"init\",function()local S=a.get(\"out/utils/file-utils/init.lua\")local a=a._G[S]local ap={}ap.makeUtils=a.import(S,S,\"make-utils\")ap.pathUtils=a.import(S,S,\"path-utils\")return ap end)a.register(\"out/utils/file-utils/make-utils.lua\",\"make-utils\",function()local S=a.get(\"out/utils/file-utils/make-utils.lua\")local a=a._G[S]local W=a.import(S,S.Parent,\"path-utils\")local function gt(gu)local gv=string.split(gu,\"/\")local fU=#gv;local aD=gv[fU]gv[fU]=nil;local f4=aD;if f4==nil then return nil end;local cM=table.concat(gv,\"/\")if cM~=\"\"then gt(cM)end;if not isfolder(gu)and not isfile(gu)then makefolder(gu)end end;local function gw(aT,gx)local gv=string.split(aT,\"/\")gv[#gv]=nil;gt(table.concat(gv,\"/\"))local aE=W.addExtension(aT)local bq=gx;if bq==nil then bq=\"\"end;writefile(aE,bq)end;local function gy(fS)for k,bw in ipairs(fS)do local d=bw[1]local fT=bw[2]if string.sub(d,-1)==\"/\"and not isfolder(d)then gt(d)elseif string.sub(d,-1)~=\"/\"and not isfile(d)then gw(d,fT)end end end;return{makeFolder=gt,makeFile=gw,makeFiles=gy}end)a.register(\"out/utils/file-utils/path-utils.lua\",\"path-utils\",function()local S=a.get(\"out/utils/file-utils/path-utils.lua\")local function gz(d)local a0=isfile(d)or isfolder(d)local a2=\"'\"..d..\"' does not point to a folder or file\"assert(a0,a2)d=string.gsub(d,\"\\\",\"/\")if isfolder(d)then if string.sub(d,-1)~=\"/\"then d=d..\"/\"end end;return d end;local function gA(d)d=string.gsub(d,\"\\\",\"/\")if string.match(d,\"%.([^%./]+)$\")==nil and string.sub(d,-1)~=\"/\"then return d..\"/\"else return d end end;local function gB(d)d=string.gsub(d,\"\\\",\"/\")if string.sub(d,-1)==\"/\"then return string.sub(d,0,-2)else return d end end;local function gC(aT)local gD=string.match(string.reverse(aT),\"^([^%./]+%.)\")~=nil;if not gD then return aT..\".file\"else return aT end end;local function gE(d)return string.match(d,\"([^/]+)/*$\")end;local function gF(d)return string.match(d,\"^(.*[/])[^/]+\")end;local function gG(gH,gI)local a0=function(aT)return isfile(gH..aT)end;local aD=nil;for g5,ar in ipairs(gI)do if a0(ar,g5-1,gI)==true then aD=ar;break end end;return aD end;return{formatPath=gz,addTrailingSlash=gA,trimTrailingSlash=gB,addExtension=gC,getName=gE,getParent=gF,locateFiles=gG}end)a.register(\"out/utils/file-utils/types.lua\",\"types\",function()local S=a.get(\"out/utils/file-utils/types.lua\")return nil end)return a.initialize(\"init\") end)()\r\n\r\nRostruct\r\n -- Download the latest release to local files\r\n .fetchLatest(\"richie0866\", \"MidiPlayer\")\r\n -- Then, build and start all scripts\r\n :andThen(function(package)\r\n package:build(\"src/\")\r\n package:start()\r\n end)
Password
Anyone with the link will still need this password to view.
Expires
1 hour
3 hours
6 hours
12 hours
24 hours
48 hours
72 hours
Sign in to enable "Never expires".
Create paste
Please verify you are human
Cancel