function module.WaitForEvent(A,...)local o local M=({...})[1]if typeof(M)=="\073\110\115\116\097\110\099\101"and M:IsA("\066\105\110\100\097\098\108\101\069\118\101\110\116")then o=M else o=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")end local O={}for A,c in pairs({...})do if c~=M then O[#O+1]=c:Connect(function()o:Fire()end)end end o.Event:Wait()o:Destroy()for A,o in pairs(O)do o:Disconnect()end end function module.CreateSound(o,A)local M=Instance.new("\083\111\117\110\100")for A,o in pairs(A)do if A=="\083\111\117\110\100\073\100"then o="\114\098\120\097\115\115\101\116\105\100\058\047\047"..o end M[A]=o end return M end function module.FormatNotice2(M,A,o,...)local O=(main:GetModule("\067\111\114\101\078\111\116\105\099\101\115")):GetNotice(A)O[2]=string.format(O[2],...)O[3]=o return O end function module.FormatNotice(o,A,...)local M=(main:GetModule("\067\111\114\101\078\111\116\105\099\101\115")):GetNotice(A)M[2]=string.format(M[2],...)return M end function module.RandomiseTable(M,A,o)local O=o and math.floor(os.time()/o)local c={}if A[1]~=nil then for M=1,#A,1 do if o then math.randomseed(O+M)end table.insert(c,math.random(1,#c+1),A[M])end end return c end function module.IsPunished(o,A)if A and(A.Character and A.Character.Parent==workspace)then return false else return true end end function module.UnSeatPlayer(o,A)local M=module:GetHumanoid(A)if M then local A=M.SeatPart if A then local o=A:FindFirstChild("\083\101\097\116\087\101\108\100")if o then o:Destroy()wait()end end end end function module.GetBanDateString(M,A,o)local O=A.min or o.min local c=A.hour or o.hour local d=A.day or o.day local B=((main:GetModule("\099\102")):GetMonths())[A.month or o.month]local m=A.year or o.year if O<10 then O="\048"..O end if c<10 then c="\048"..c end local a=tonumber(string.sub(d,-1))local Z="\116\104"if a<10 or a>15 then if a==1 then Z="\115\116"elseif a==2 then Z="\110\100"elseif a==3 then Z="\114\100"end end return c..("\058"..(O..("\044 "..(d..(Z..(" "..(B..(" "..m))))))))end function module.GetTimeAmount(M,A,o)local O=0 local c=""if o<0 then o=0 end if A=="\109"then if o>60 then o=60 end O=o*60 c="\077\105\110\117\116\101\115"elseif A=="\104"then if o>24 then o=24 end O=o*3600 c="\072\111\117\114\115"elseif A=="\100"then if o>100000 then o=100000 end O=o*86400 c="\068\097\121\115"end return O,c,o end function module.GetMonths(A)return{"\074\097\110\117\097\114\121","\070\101\098\114\117\097\114\121";"\077\097\114\099\104";"\065\112\114\105\108","\077\097\121","\074\117\110\101";"\074\117\108\121","\065\117\103\117\115\116";"\083\101\112\116\101\109\098\101\114","\079\099\116\111\098\101\114";"\078\111\118\101\109\098\101\114";"\068\101\099\101\109\098\101\114"}end function module.AnchorModel(M,A,o)for A,M in pairs(A:GetDescendants())do if M:IsA("\066\097\115\101\080\097\114\116")and not M.Parent:IsA("\065\099\099\101\115\115\111\114\121")then M.Anchored=o end end end function module.TweenModel(O,A,o,M)local c=Instance.new("\067\070\114\097\109\101\086\097\108\117\101")c.Value=A:GetPrimaryPartCFrame()local d d=(c:GetPropertyChangedSignal("\086\097\108\117\101")):Connect(function()if A.PrimaryPart==nil then d:Disconnect()else A:SetPrimaryPartCFrame(c.Value)end end)local B=main.tweenService:Create(c,M,{Value=o})B:Play()B.Completed:Connect(function()c:Destroy()end)end function module.Movement(M,A,o)if o==nil then o=main.player end local O=module:GetHRP(o)local c=module:GetHumanoid(o)if O and c then if not A then local A=c.WalkSpeed c.WalkSpeed=0 wait()c.WalkSpeed=A O.Anchored=true else O.Anchored=false end end end function module.SetFakeBodyParts(M,A,o)for M,O in pairs(A:GetChildren())do if(main:GetModule("\099\102")):CheckBodyPart(O)then local M=(main:GetModule("\077\111\114\112\104\072\097\110\100\108\101\114")):CreateFakeBodyPart(A,O)for A,o in pairs(o)do if A=="\077\097\116\101\114\105\097\108"then M.Material=o if o==Enum.Material.Glass then M.Transparency=.5 else M.Transparency=0 end elseif A=="\082\101\102\108\101\099\116\097\110\099\101"then M.Reflectance=o elseif A=="\084\114\097\110\115\112\097\114\101\110\099\121"then M.Transparency=o elseif A=="\067\111\108\111\114"then M.Color=o end end end end end function module.CheckBodyPart(o,A)if A:IsA("\066\097\115\101\080\097\114\116")and(A.Name~="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"and string.sub(A.Name,1,4)~="\070\097\107\101")then return true else return false end end function module.CreateClone(o,A)if A==nil then A=main.player.Character end local M=A:FindFirstChild("\072\117\109\097\110\111\105\100")if M then A.Archivable=true local o=A:Clone()local O=o.Humanoid o.Name=A.Name.."\'\115 \072\068\065\100\109\105\110\067\108\111\110\101"local c=false if o:FindFirstChild("\067\104\101\115\116")then c=true end for A,M in pairs(o:GetDescendants())do if M:IsA("\072\117\109\097\110\111\105\100")then M.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None elseif M:IsA("\066\105\108\108\098\111\097\114\100\071\117\105")then M:Destroy()elseif M:IsA("\087\101\108\100")and M.Part1~=nil then M.Part0=M.Parent if o:FindFirstChild(M.Part1.Name)then M.Part1=o[M.Part1.Name]elseif not c then M:Destroy()end end end o.Parent=workspace local d={}local B=M:GetAppliedDescription()local m=o:FindFirstChild("\065\110\105\109\097\116\101")if m then for A,o in pairs(o.Animate:GetChildren())do local M=(o:GetChildren())[1]if M then d[o.Name]=O:LoadAnimation(M)end end d.idle:Play()end return o,d end end function module.SetTransparency(O,A,o,M)local c=main.players:GetPlayerFromCharacter(A)if c and(main.pd[c]and(main.pd[c].Items.UnderControl and not M))or not A then return end local d=false if A:FindFirstChild("\070\097\107\101\072\101\097\100")then d=true end for M,O in pairs(A:GetDescendants())do if O:IsA("\066\097\115\101\080\097\114\116")and O.Name~="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"or O.Name=="\102\097\099\101"and O:IsA("\068\101\099\097\108")then local M=O:FindFirstChild("\079\114\105\103\105\110\097\108\084\114\097\110\115\112\097\114\101\110\099\121")if o==1 and(O.Transparency~=0 and not M)then M=Instance.new("\073\110\116\086\097\108\117\101")M.Name="\079\114\105\103\105\110\097\108\084\114\097\110\115\112\097\114\101\110\099\121"M.Value=O.Transparency M.Parent=O elseif o==0 and M then O.Transparency=M.Value M:Destroy()elseif not d or A:FindFirstChild(O.Name.."\070\097\107\101")==nil then O.Transparency=o end elseif O:IsA("\080\097\114\116\105\099\108\101\069\109\105\116\116\101\114")and O.Name=="\066\111\100\121\069\102\102\101\099\116"or O:IsA("\080\111\105\110\116\076\105\103\104\116")then if o==1 then O.Enabled=false elseif o==0 then O.Enabled=true end elseif O:IsA("\066\105\108\108\098\111\097\114\100\071\117\105")then if o==1 then O.Enabled=false elseif o==0 then O.Enabled=true end end end end function module.GetMessageTime(o,A)return 3+string.len(A)/30 end function module.GetProductInfo(o,A)local M={}local O,c=pcall(function()return main.marketplaceService:GetProductInfo(A)end)if O then M=c end return M end function module.CheckIfValidSound(o,A)local M=module:GetProductInfo(A)if M.AssetTypeId==3 then return true else return false end end function module.GetChar(o,A)if A==nil then A=main.player end if A then return A.Character end end function module.GetHRP(o,A)if A==nil then A=main.player end if A and A.Character then local o=A.Character:FindFirstChild("\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116")return o end end function module.GetNeck(o,A)if A==nil then A=main.player end if A and A.Character then local o=A.Character:FindFirstChild("\072\101\097\100")if o then local M=o:FindFirstChild("\078\101\099\107")local O=A.Character:FindFirstChild("\084\111\114\115\111")if not M and O then M=O:FindFirstChild("\078\101\099\107")end return M end end end function module.GetHead(o,A)if A==nil then A=main.player end if A and A.Character then local o=A.Character:FindFirstChild("\072\101\097\100")return o end end function module.GetFace(o,A)if A==nil then A=main.player end if A and A.Character then local o=A.Character:FindFirstChild("\072\101\097\100")if o then local A=o:FindFirstChild("\102\097\099\101")if A and A.ClassName=="\068\101\099\097\108"then return A end end return o end end function module.GetHumanoid(o,A)if A==nil then A=main.player end if A and A.Character then local o=A.Character:FindFirstChild("\072\117\109\097\110\111\105\100")return o end end function module.GetProductInfo(M,A,o)local O={}local c,d=pcall(function()O=main.marketplaceService:GetProductInfo(A,o)end)if not c then end return O end function module.GetFriends(o,A)local M={}local O,c=pcall(function()return main.players:GetFriendsAsync(A)end)if O then repeat local A=c:GetCurrentPage()for A,o in pairs(A)do M[o.Username]=o.Id end if not c.IsFinished then c:AdvanceToNextPageAsync()end until c.IsFinished end return M end function module.GetRankName(o,A)local M=""for o,O in pairs(main.settings.Ranks)do local c=O[1]local d=O[2]if A==c then M=d elseif A=="\068\111\110\111\114"then M=A end end return M end function module.GetRankId(o,A)local M=0 for o,O in pairs(main.settings.Ranks)do local c=O[1]local d=O[2]if A==d then M=c end end return M end function module.CheckRankExists(o,A)for o,M in pairs(main.settings.Ranks)do if string.lower(M[2])==A then return true end end return false end function module.GetUserId(o,A)local M=tick()local O=main.UserIdsFromName[A]if not O or O<=1 then O=1 local o,M=pcall(function()O=main.players:GetUserIdFromNameAsync(A)end)main.UserIdsFromName[A]=O end return O end function module.GetName(o,A)local M=tostring(A)local O=tonumber(A)local c=main.UsernamesFromUserId[M]if not c then c=""if O then local A,o=pcall(function()c=main.players:GetNameFromUserIdAsync(O)end)if not A then else main.UsernamesFromUserId[M]=c end end end return c end function module.FindValue(M,A,o)for A,M in pairs(A)do if tostring(M)==tostring(o)then return true end end return false end return module

function module:WaitForEvent(...)
	local event
	local firstArg = ({...})[1]
	if typeof(firstArg) == "Instance" and firstArg:IsA("BindableEvent") then
		event = firstArg
	else
		event = Instance.new("BindableEvent")
	end
	local signals = {}
	for _,e in pairs({...}) do
		if e ~= firstArg then
			signals[#signals + 1] = e:Connect(function()
				event:Fire()
			end)
		end
	end
	event.Event:Wait()
	event:Destroy()
	for _,s in pairs(signals) do s:Disconnect() end
end

function module:CreateSound(props)
	local sound = Instance.new("Sound")
	for propName, value in pairs(props) do
		if propName == "SoundId" then
			value = "rbxassetid://"..value
		end
		sound[propName] = value
	end
	return sound
end

function module:FormatNotice2(noticeName, extraDetails, ...)
	local notice = main:GetModule("CoreNotices"):GetNotice(noticeName)
	notice[2] = string.format(notice[2], ...)
	notice[3] = extraDetails
	return notice
end

function module:FormatNotice(noticeName, ...)
	local notice = main:GetModule("CoreNotices"):GetNotice(noticeName)
	notice[2] = string.format(notice[2], ...)
	return notice
end

function module:RandomiseTable(originalTable, specificSeed)
	local dayId = specificSeed and math.floor(os.time()/specificSeed)
	local sortedTable ={}
	if originalTable[1]~=nil then
		for i=1,#originalTable do
			if specificSeed then
				math.randomseed(dayId+i)
			end
			table.insert(sortedTable,math.random(1,#sortedTable+1),originalTable[i])
		end
	end
	return sortedTable
end

function module:IsPunished(plr)
	if plr and plr.Character and plr.Character.Parent == workspace then
		return false
	else
		return true
	end
end

function module:UnSeatPlayer(plr)
	local humanoid = module:GetHumanoid(plr)
	if humanoid then
		local seatPart = humanoid.SeatPart
		if seatPart then
			local seatWeld = seatPart:FindFirstChild("SeatWeld")
			if seatWeld then
				seatWeld:Destroy()
				wait()
			end
		end
	end
end

function module:GetBanDateString(date, serverDate)
	local minute = date.min or serverDate.min
	local hour = date.hour or serverDate.hour
	local day = date.day or serverDate.day
	local month = main:GetModule("cf"):GetMonths()[date.month or serverDate.month]
	local year = date.year or serverDate.year
	if minute < 10 then
		minute = "0"..minute
	end
	if hour < 10 then
		hour = "0"..hour
	end
	local dayId = tonumber(string.sub(day,-1))
	local dayEnding = "th"
	if dayId < 10 or dayId > 15 then
		if dayId == 1 then
			dayEnding = "st"
		elseif dayId == 2 then
			dayEnding = "nd"
		elseif dayId == 3 then
			dayEnding = "rd"
		end
	end
	return(hour..":"..minute..", "..day..dayEnding.." "..month.." "..year)
end

function module:GetTimeAmount(timeType, d)
	local amount = 0
	local frameName = ""
	if d < 0 then
		d = 0
	end
	if timeType == "m" then
		if d > 60 then
			d = 60
		end
		amount = d*60
		frameName = "Minutes"
	elseif timeType == "h" then
		if d > 24 then
			d = 24
		end
		amount = d*3600
		frameName = "Hours"
	elseif timeType == "d" then
		if d > 100000 then
			d = 100000
		end
		amount = d*86400
		frameName = "Days"
	end
	return amount, frameName, d
end

function module:GetMonths()
	return{
		"January";
		"February";
		"March";
		"April";
		"May";
		"June";
		"July";
		"August";
		"September";
		"October";
		"November";
		"December";
	}
end

function module:AnchorModel(model, state)
	for a,b in pairs(model:GetDescendants()) do
		if b:IsA("BasePart") and not b.Parent:IsA("Accessory") then
			b.Anchored = state
		end
	end
end

function module:TweenModel(model, CF, info)
	local CFrameValue = Instance.new("CFrameValue")
	CFrameValue.Value = model:GetPrimaryPartCFrame()
	local changedEvent
	changedEvent = CFrameValue:GetPropertyChangedSignal("Value"):Connect(function()
		if model.PrimaryPart == nil then
			changedEvent:Disconnect()
		else
			model:SetPrimaryPartCFrame(CFrameValue.Value)
		end
	end)
	local tween = main.tweenService:Create(CFrameValue, info, {Value = CF})
	tween:Play()
	tween.Completed:Connect(function()
		CFrameValue:Destroy()
	end)
end

function module:Movement(state, plr)
	if plr == nil then
		plr = main.player
	end
	local hrp = module:GetHRP(plr)
	local humanoid = module:GetHumanoid(plr)
	if hrp and humanoid then
		if not state then
			local originialSpeed = humanoid.WalkSpeed
			humanoid.WalkSpeed = 0
			wait()
			humanoid.WalkSpeed = originialSpeed
			hrp.Anchored = true
		else
			hrp.Anchored = false
		end
	end
end

function module:SetFakeBodyParts(char, info)
	for a,b in pairs(char:GetChildren()) do
		if main:GetModule("cf"):CheckBodyPart(b) then
			local fakePart = main:GetModule("MorphHandler"):CreateFakeBodyPart(char, b)
			for pName, pValue in pairs(info) do
				if pName == "Material" then
					fakePart.Material = pValue
					if pValue == Enum.Material.Glass then
						fakePart.Transparency = 0.5
					else
						fakePart.Transparency = 0
					end
				elseif pName == "Reflectance" then
					fakePart.Reflectance = pValue
				elseif pName == "Transparency" then
					fakePart.Transparency = pValue
				elseif pName == "Color" then
					fakePart.Color = pValue
				end
			end
		end
	end
end

function module:CheckBodyPart(part)
	if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" and string.sub(part.Name,1,4) ~= "Fake" then
		return true
	else
		return false
	end
end

function module:CreateClone(character)
	
	if character == nil then
		character = main.player.Character
	end
	local humanoid = character:FindFirstChild("Humanoid")
	if humanoid then
		
		--Setup clone
		character.Archivable = true
		local clone = character:Clone()
		local cloneHumanoid = clone.Humanoid
		clone.Name = character.Name.."'s HDAdminClone"
		local specialChar = false
		if clone:FindFirstChild("Chest") then
			specialChar = true
		end
		for a,b in pairs(clone:GetDescendants()) do
			if b:IsA("Humanoid") then
				b.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
			elseif b:IsA("BillboardGui") then
				b:Destroy()
			elseif b:IsA("Weld") and b.Part1 ~= nil then
				b.Part0 = b.Parent
				if clone:FindFirstChild(b.Part1.Name) then
					b.Part1 = clone[b.Part1.Name]
				elseif not specialChar then
					b:Destroy()
				end
			end
		end
		
		--Make clone visible
		--module:SetTransparency(clone, 0)
		clone.Parent = workspace
		
		--Animations
		local tracks = {}
		local desc = humanoid:GetAppliedDescription()
		local animate = clone:FindFirstChild("Animate")
		if animate then
			for i,v in pairs(clone.Animate:GetChildren()) do
				local anim = (v:GetChildren()[1])
				if anim then
					--anim.Parent = clone
					tracks[v.Name] = cloneHumanoid:LoadAnimation(anim)
				end
			end
			tracks.idle:Play()
		end
		
		return clone, tracks
	end
	
end

function module:SetTransparency(model, value, force)
	local plr = main.players:GetPlayerFromCharacter(model)
	if ((plr and main.pd[plr] and main.pd[plr].Items.UnderControl and not force)) or not model then
		return
	end
	local fakeParts = false
	if model:FindFirstChild("FakeHead") then
		fakeParts = true
	end
	for a,b in pairs(model:GetDescendants()) do
		if (b:IsA("BasePart") and b.Name ~= "HumanoidRootPart") or (b.Name == "face" and b:IsA("Decal")) then
			local ot = b:FindFirstChild("OriginalTransparency")
			if value == 1 and b.Transparency ~= 0 and not ot then
				ot = Instance.new("IntValue")
				ot.Name = "OriginalTransparency"
				ot.Value = b.Transparency
				ot.Parent = b
			elseif value == 0 and ot then
				b.Transparency = ot.Value
				ot:Destroy()
			elseif not fakeParts or model:FindFirstChild(b.Name.."Fake") == nil then --string.sub(b.Name,1,4) == "Fake" then
				b.Transparency = value
			end
		elseif (b:IsA("ParticleEmitter") and b.Name == "BodyEffect") or b:IsA("PointLight") then
			if value == 1 then
				b.Enabled = false
			elseif value == 0 then
				b.Enabled = true
			end
		elseif b:IsA("BillboardGui") then
			if value == 1 then
				b.Enabled = false
			elseif value == 0 then
				b.Enabled = true
			end
		end
	end
end

function module:GetMessageTime(msg)
	return(3+(string.len(msg)/30))
end

function module:GetProductInfo(assetId)
	local infoToReturn = {}
	local success, productInfo = pcall(function() return main.marketplaceService:GetProductInfo(assetId) end)
	if success then
		infoToReturn = productInfo
	end
	return infoToReturn
end

function module:CheckIfValidSound(soundId)
	local productInfo = module:GetProductInfo(soundId)
	if productInfo.AssetTypeId == 3 then
		return true
	else
		return false
	end
end

function module:GetChar(plr)
	if plr == nil then
		plr = main.player
	end
	if plr then
		return plr.Character
	end
end

function module:GetHRP(plr)
	if plr == nil then
		plr = main.player
	end
	if plr and plr.Character then
		local head = plr.Character:FindFirstChild("HumanoidRootPart")
		return head
	end
end

function module:GetNeck(plr)
	if plr == nil then
		plr = main.player
	end
	if plr and plr.Character then
		local head = plr.Character:FindFirstChild("Head")
		if head then
			local neck = head:FindFirstChild("Neck")
			local torso = plr.Character:FindFirstChild("Torso")
			if not neck and torso then
				neck = torso:FindFirstChild("Neck")
			end
			return neck
		end
	end
end

function module:GetHead(plr)
	if plr == nil then
		plr = main.player
	end
	if plr and plr.Character then
		local head = plr.Character:FindFirstChild("Head")
		return head
	end
end

function module:GetFace(plr)
	if plr == nil then
		plr = main.player
	end
	if plr and plr.Character then
		local head = plr.Character:FindFirstChild("Head")
		if head then
			local face = head:FindFirstChild("face")
			if face and face.ClassName == "Decal" then
				return face
			end
		end
		return head
	end
end

function module:GetHumanoid(plr)
	if plr == nil then
		plr = main.player
	end
	if plr and plr.Character then
		local humanoid = plr.Character:FindFirstChild("Humanoid")
		return humanoid
	end
end

function module:GetProductInfo(productId, productType)
	local productInfo = {}
	local success, message = pcall(function()
		productInfo = main.marketplaceService:GetProductInfo(productId, productType)
	end)
	if not success then
		--warn("HD Admin | Loader settings incorrect  | "..message)
	end
	return productInfo
end

function module:GetFriends(userId)
	local friendsList = {}
	local success, page = pcall(function() return main.players:GetFriendsAsync(userId) end)
	if success then
		repeat
			local info = page:GetCurrentPage()
			for i, friendInfo in pairs(info) do
				friendsList[friendInfo.Username] = friendInfo.Id
			end
			if not page.IsFinished then 
				page:AdvanceToNextPageAsync()
			end
		until page.IsFinished
	end
	return friendsList
end

function module:GetRankName(rankIdToConvert)
	local rankNameToReturn = ""
	for _, rankDetails in pairs(main.settings.Ranks) do
		local rankId = rankDetails[1]
		local rankName = rankDetails[2]
		if rankIdToConvert == rankId then
			rankNameToReturn = rankName
		elseif rankIdToConvert == "Donor" then
			rankNameToReturn = rankIdToConvert
		end
	end
	return rankNameToReturn
end

function module:GetRankId(rankNameToConvert)
	local rankIdToReturn = 0
	for _, rankDetails in pairs(main.settings.Ranks) do
		local rankId = rankDetails[1]
		local rankName = rankDetails[2]
		if rankNameToConvert == rankName then
			rankIdToReturn = rankId
		end
	end
	return rankIdToReturn
end

function module:CheckRankExists(rankName)
	for _, rankDetails in pairs(main.settings.Ranks) do
		if string.lower(rankDetails[2]) == rankName then
			return true
		end
	end
	return false
end

function module:GetUserId(userName)
	local start = tick()
	local userId = main.UserIdsFromName[userName]
	if not userId or userId <= 1 then
		userId = 1
		local success, message = pcall(function()
			userId = main.players:GetUserIdFromNameAsync(userName)
		end)
		main.UserIdsFromName[userName] = userId
		--main.UsernamesFromUserId[tostring(userId)] = userName
	end
	return userId
end

function module:GetName(userId)
	local userIdString = tostring(userId)
	local userIdInt = tonumber(userId)
	local username = main.UsernamesFromUserId[userIdString]
	if not username then
		username = ""
		if userIdInt then
			local success, message = pcall(function()
				username = main.players:GetNameFromUserIdAsync(userIdInt)
			end)
			if not success then
				--warn("HD Admin | Loader settings incorrect  | "..message)
			else
				main.UsernamesFromUserId[userIdString] = username
				--main.UserIdsFromName[username] = userIdInt
			end
		end
	end
	return username
end

function module:FindValue(table, value)
	for i,v in pairs(table) do
		if tostring(v) == tostring(value) then
			return true
		end
	end
	return false
end



return module
