local p=require(script.Parent:WaitForChild("\103\101\116\076\097\115\116\087\111\114\100\070\114\111\109\080\097\115\099\097\108\067\097\115\101"))local A={Hand="\065\114\109",Foot="\076\101\103"}function getLimbType(l)local G=p(l)return A[G]and G end function getLimbs(p,A)local l={}local G={}local c={}local function X(p,f)if p.Name~="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"then local A=getLimbType(p.Name)l[A]=l[A]or{}table.insert(l[A],p)local X=l[A]if A~=f then G[A]=G[A]or{}if f then G[A][f]=true end table.insert(c,{Part=p;Type=A})f=A end end local o,m,q=pairs(p:GetChildren())while true do local l,G=o(m,q)if l then else break end q=l if G:isA("\065\116\116\097\099\104\109\101\110\116")then if A[G.Name]then local l=A[G.Name].Attachment1.Parent if l then if l~=p then X(l,f)end end end end end end X(p)return l,c,G end function createNoCollision(p,A)local l=Instance.new("\078\111\067\111\108\108\105\115\105\111\110\067\111\110\115\116\114\097\105\110\116")l.Name=p.Name..("\060-\062"..A.Name)l.Part0=p l.Part1=A return l end return function(p,A)local l=Instance.new("\070\111\108\100\101\114")l.Name="\078\111\067\111\108\108\105\115\105\111\110\067\111\110\115\116\114\097\105\110\116\115"local G,c,X=getLimbs(A,p)for p=1,#c,1 do for A=p+1,#c,1 do local G=c[p].Type local f=c[A].Type if not X[G][f]and not X[f][G]then(createNoCollision(c[p].Part,c[A].Part)).Parent=l end end end for p,A in pairs(G)do for p,c in pairs(X[p])do for p,G in pairs(G[p])do for p,A in pairs(A)do(createNoCollision(A,G)).Parent=l end end end end return l end
--// Hash: f6f8a53b8fb53b6bb213ce5c450d251c38c486f5a6d02cfc39a92f834893d8671f02b6efe37bb03b1040d059682630da
-- Decompiled with the Synapse X Luau decompiler.

local u1 = require(script.Parent:WaitForChild("getLastWordFromPascalCase"))
local u2 = {
	Hand = "Arm",
	Foot = "Leg",
}
function getLimbType(p1)
	local v1 = u1(p1)
	return u2[v1] and v1
end
function getLimbs(p2, p3)
	local u3 = {}
	local u4 = {}
	local u5 = {}
	local function u6(p4, p5)
		if p4.Name ~= "HumanoidRootPart" then
			local v2 = getLimbType(p4.Name)
			u3[v2] = u3[v2] or {}
			table.insert(u3[v2], p4)
			local v3 = u3[v2]
			if v2 ~= p5 then
				u4[v2] = u4[v2] or {}
				if p5 then
					u4[v2][p5] = true
				end
				table.insert(u5, {
					Part = p4,
					Type = v2,
				})
				p5 = v2
			end
		end
		local v4, v5, v6 = pairs(p4:GetChildren())
		while true do
			local v7, v8 = v4(v5, v6)
			if v7 then
			else
				break
			end
			v6 = v7
			if v8:isA("Attachment") then
				if p3[v8.Name] then
					local l__Parent__9 = p3[v8.Name].Attachment1.Parent
					if l__Parent__9 then
						if l__Parent__9 ~= p4 then
							u6(l__Parent__9, p5)
						end
					end
				end
			end
		end
	end
	u6(p2)
	return u3, u5, u4
end
function createNoCollision(p6, p7)
	local v10 = Instance.new("NoCollisionConstraint")
	v10.Name = p6.Name .. "<->" .. p7.Name
	v10.Part0 = p6
	v10.Part1 = p7
	return v10
end
return function(p8, p9)
	local v11 = Instance.new("Folder")
	v11.Name = "NoCollisionConstraints"
	local v12, v13, v14 = getLimbs(p9, p8)
	for v15 = 1, #v13 do
		for v16 = v15 + 1, #v13 do
			local l__Type__17 = v13[v15].Type
			local l__Type__18 = v13[v16].Type
			if not v14[l__Type__17][l__Type__18] and not v14[l__Type__18][l__Type__17] then
				createNoCollision(v13[v15].Part, v13[v16].Part).Parent = v11
			end
		end
	end
	for v19, v20 in pairs(v12) do
		for v21, v22 in pairs(v14[v19]) do
			for v23, v24 in pairs(v12[v21]) do
				for v25, v26 in pairs(v20) do
					createNoCollision(v26, v24).Parent = v11
				end
			end
		end
	end
	return v11
end
