<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASports_roster</id>
	<title>Module:Sports roster - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASports_roster"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sports_roster&amp;action=history"/>
	<updated>2026-05-07T05:32:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sports_roster&amp;diff=146954&amp;oldid=prev</id>
		<title>imported&gt;WOSlinker: use require(&#039;strict&#039;) instead of require(&#039;Module:No globals&#039;)</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sports_roster&amp;diff=146954&amp;oldid=prev"/>
		<updated>2022-10-21T19:49:48Z</updated>

		<summary type="html">&lt;p&gt;use require(&amp;#039;strict&amp;#039;) instead of require(&amp;#039;Module:No globals&amp;#039;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local tracking = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function addflags(frame, names)&lt;br /&gt;
	for k,v in ipairs(names) do&lt;br /&gt;
		if v[&amp;#039;nat&amp;#039;] then&lt;br /&gt;
			names[k][&amp;#039;nat&amp;#039;] = &amp;#039;&amp;lt;span data-sort-value=&amp;quot;&amp;#039; .. v[&amp;#039;nat&amp;#039;] .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
				.. frame:expandTemplate{title = &amp;#039;flagicon&amp;#039;, args = {v[&amp;#039;nat&amp;#039;]}} .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linkschools(frame, names)&lt;br /&gt;
	for k,v in ipairs(names) do&lt;br /&gt;
		if v[&amp;#039;college&amp;#039;] or v[&amp;#039;school&amp;#039;] then&lt;br /&gt;
			names[k][&amp;#039;college&amp;#039;] = frame:expandTemplate{title = &amp;#039;college&amp;#039;, args = {v[&amp;#039;college&amp;#039;] or v[&amp;#039;school&amp;#039;]}}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stylelinks(txt, css)&lt;br /&gt;
	if css and txt then&lt;br /&gt;
		local bg,fg = &amp;#039;&amp;#039;,&amp;#039;&amp;#039;&lt;br /&gt;
		css = string.lower(css)&lt;br /&gt;
		for k,v in ipairs(mw.text.split(css .. &amp;#039;;&amp;#039;, &amp;#039;;&amp;#039;)) do&lt;br /&gt;
			if v:match(&amp;#039;^%s*background%s*:&amp;#039;) then&lt;br /&gt;
				bg = v .. &amp;#039;;&amp;#039;&lt;br /&gt;
			elseif v:match(&amp;#039;^%s*background%-color%s*:&amp;#039;) then&lt;br /&gt;
				bg = v .. &amp;#039;;&amp;#039;&lt;br /&gt;
			elseif v:match(&amp;#039;^%s*color%s*:&amp;#039;) then&lt;br /&gt;
				fg = v .. &amp;#039;;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		txt = mw.ustring.gsub(txt, &amp;#039;(%[%[)([^%[%]%|]*)(%]%])&amp;#039;, &amp;#039;%1%2|%2%3&amp;#039;)&lt;br /&gt;
		txt = mw.ustring.gsub(txt, &amp;#039;(%[%[[^%[%]%|]*%|)([^%[%]%|]*)(%]%])&amp;#039;, &lt;br /&gt;
			&amp;#039;%1&amp;lt;span style=&amp;quot;&amp;#039; .. bg .. fg .. &amp;#039;&amp;quot;&amp;gt;%2&amp;lt;/span&amp;gt;%3&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return txt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getlastduplicates(names)&lt;br /&gt;
	local found = {}&lt;br /&gt;
	local res = {}&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for k,v in ipairs(names) do&lt;br /&gt;
		if v[&amp;#039;last&amp;#039;] then&lt;br /&gt;
			if found[v[&amp;#039;last&amp;#039;]] then&lt;br /&gt;
				res[v[&amp;#039;last&amp;#039;]] = 1&lt;br /&gt;
				count = count + 1&lt;br /&gt;
			else&lt;br /&gt;
				found[v[&amp;#039;last&amp;#039;]] = 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if count &amp;lt; 1 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linknames(names, fmt, reqinitials)&lt;br /&gt;
	for k,v in ipairs(names) do&lt;br /&gt;
		local link = v[&amp;#039;link&amp;#039;] or v[&amp;#039;name&amp;#039;] or ((v[&amp;#039;first&amp;#039;] or &amp;#039;&amp;#039;) .. &amp;#039; &amp;#039; .. (v[&amp;#039;last&amp;#039;]  or &amp;#039;&amp;#039;) .. (v[&amp;#039;dab&amp;#039;] and &amp;#039; (&amp;#039; .. v[&amp;#039;dab&amp;#039;] .. &amp;#039;)&amp;#039; or &amp;#039;&amp;#039;)) or &amp;#039;&amp;#039;&lt;br /&gt;
		if v[&amp;#039;nolink&amp;#039;] then&lt;br /&gt;
			link = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		local text = v[&amp;#039;last&amp;#039;] or v[&amp;#039;alt&amp;#039;] or v[&amp;#039;name&amp;#039;] or ((v[&amp;#039;first&amp;#039;] or &amp;#039;&amp;#039;) .. &amp;#039; &amp;#039; .. (v[&amp;#039;last&amp;#039;]  or &amp;#039;&amp;#039;)) or link&lt;br /&gt;
		if fmt == &amp;#039;lf&amp;#039; then&lt;br /&gt;
			text = v[&amp;#039;alt&amp;#039;] or v[&amp;#039;name&amp;#039;] or ((v[&amp;#039;last&amp;#039;]  or &amp;#039;&amp;#039;) .. &amp;#039;, &amp;#039; .. (v[&amp;#039;first&amp;#039;] or &amp;#039;&amp;#039;)) or &amp;#039;&amp;#039;&lt;br /&gt;
		elseif fmt == &amp;#039;fl&amp;#039; or fmt == &amp;#039;fil&amp;#039; or (reqinitials and reqinitials[v[&amp;#039;last&amp;#039;]]) then&lt;br /&gt;
			if (fmt == &amp;#039;fil&amp;#039; or (reqinitials and reqinitials[v[&amp;#039;last&amp;#039;]])) and v[&amp;#039;first&amp;#039;] then&lt;br /&gt;
				v[&amp;#039;first&amp;#039;] = string.upper(string.sub(v[&amp;#039;first&amp;#039;] .. &amp;#039; &amp;#039;, 1, 1)) .. &amp;#039;.&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			text = v[&amp;#039;alt&amp;#039;] or v[&amp;#039;name&amp;#039;] or ((v[&amp;#039;first&amp;#039;] or &amp;#039;&amp;#039;) .. &amp;#039; &amp;#039; .. (v[&amp;#039;last&amp;#039;]  or &amp;#039;&amp;#039;)) or &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if link:match(&amp;#039;^[,%s]*$&amp;#039;) then&lt;br /&gt;
			if text:match(&amp;#039;^[,%s]*$&amp;#039;) then&lt;br /&gt;
				text = &amp;#039;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if text:match(&amp;#039;^[,%s]*$&amp;#039;) then&lt;br /&gt;
				text = &amp;#039;[[&amp;#039; .. link .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			elseif link == text then&lt;br /&gt;
				text = &amp;#039;[[&amp;#039; .. link .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				text = &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. text .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		names[k][&amp;#039;name&amp;#039;] = text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseEntry(s, keys)&lt;br /&gt;
	local res = {}&lt;br /&gt;
	for k,v in pairs(mw.text.split(s, &amp;#039;%s*&amp;lt;[Tt][Dd]%s*&amp;#039;)) do&lt;br /&gt;
		v = mw.ustring.gsub(v, &amp;#039;%s*&amp;lt;/[Tt][RrDd]&amp;gt;%s*&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		if v:find(&amp;#039;^.-class%s*=%s*[\&amp;#039;&amp;quot;][^\&amp;#039;&amp;quot;]*sports%-roster%-([A-Za-z]+)%s*[\&amp;#039;&amp;quot;][^&amp;gt;]*&amp;gt;%s*([^%s].-)%s*$&amp;#039;) then&lt;br /&gt;
			local kk =  mw.ustring.gsub(v, &amp;#039;^.-class%s*=%s*[\&amp;#039;&amp;quot;][^\&amp;#039;&amp;quot;]*sports%-roster%-([A-Za-z]+)%s*[\&amp;#039;&amp;quot;][^&amp;gt;]*&amp;gt;%s*([^%s].-)%s*$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
			res[kk] = mw.ustring.gsub(v, &amp;#039;^.-class%s*=%s*[\&amp;#039;&amp;quot;][^\&amp;#039;&amp;quot;]*sports%-roster%-([A-Za-z]+)%s*[\&amp;#039;&amp;quot;][^&amp;gt;]*&amp;gt;%s*([^%s].-)%s*$&amp;#039;, &amp;#039;%2&amp;#039;)&lt;br /&gt;
			keys[kk] = 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return keys, res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getEntries(args, role, res, keys)&lt;br /&gt;
	local i = 2&lt;br /&gt;
	local v&lt;br /&gt;
	res = res or {}&lt;br /&gt;
	keys = keys or {}&lt;br /&gt;
	while args[i] ~= nil do&lt;br /&gt;
		keys, v = parseEntry(args[i], keys)&lt;br /&gt;
		if role then&lt;br /&gt;
			v[&amp;#039;role&amp;#039;] = role&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(res, v)&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return res, keys&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.entry(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local res = &amp;#039;&amp;#039;&lt;br /&gt;
	for k,v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			res = res .. &amp;#039;&amp;lt;td class=&amp;quot;sports-roster-&amp;#039; .. k .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. v .. &amp;#039;&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if res ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;lt;tr&amp;gt;&amp;#039; .. res .. &amp;#039;&amp;lt;/tr&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.roster(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local players, keys = getEntries(mw.text.split(args[&amp;#039;players&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;%s*&amp;lt;[Tt][Rr]&amp;gt;%s*&amp;#039;))&lt;br /&gt;
&lt;br /&gt;
	local coaches, ckeys = {}, {}&lt;br /&gt;
	for k,v in ipairs({&lt;br /&gt;
		{&amp;#039;head_coach&amp;#039;, &amp;#039;Head coach&amp;#039;},&lt;br /&gt;
		{&amp;#039;asst_coach&amp;#039;, &amp;#039;Assistant coaches&amp;#039;}&lt;br /&gt;
		}) do&lt;br /&gt;
		coaches, ckeys = getEntries(mw.text.split(args[v[1]] or &amp;#039;&amp;#039;, &amp;#039;%s*&amp;lt;[Tt][Rr]&amp;gt;%s*&amp;#039;), v[2], coaches, ckeys)&lt;br /&gt;
	end&lt;br /&gt;
	local staff, skeys = {}, {}&lt;br /&gt;
	for k,v in ipairs({&lt;br /&gt;
			{&amp;#039;player_development&amp;#039;, &amp;#039;Player development&amp;#039;}, &lt;br /&gt;
			{&amp;#039;ath_train&amp;#039;, &amp;#039;Athletic trainer&amp;#039;},&lt;br /&gt;
			{&amp;#039;assistant_trainer&amp;#039;, &amp;#039;Assistant trainer&amp;#039;},&lt;br /&gt;
			{&amp;#039;str_cond&amp;#039;, &amp;#039;Strength and conditioning coach&amp;#039;},&lt;br /&gt;
		}) do&lt;br /&gt;
		staff, skeys = getEntries(mw.text.split(args[v[1]] or &amp;#039;&amp;#039;, &amp;#039;%s*&amp;lt;[Tt][Rr]&amp;gt;%s*&amp;#039;), v[2], staff, skeys)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local p_style&lt;br /&gt;
	if args[&amp;#039;style&amp;#039;] and mw.title.new(&amp;#039;Module:Sports roster/&amp;#039; .. args[&amp;#039;style&amp;#039;]) then&lt;br /&gt;
		p_style = require(&amp;#039;Module:Sports roster/&amp;#039; .. args[&amp;#039;style&amp;#039;])&lt;br /&gt;
	else&lt;br /&gt;
		p_style = require(&amp;#039;Module:Sports roster/default&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- flags&lt;br /&gt;
	if keys[&amp;#039;nat&amp;#039;] then&lt;br /&gt;
		players = addflags(frame, players)&lt;br /&gt;
	end&lt;br /&gt;
	if ckeys[&amp;#039;nat&amp;#039;] then&lt;br /&gt;
		coaches = addflags(frame, coaches)&lt;br /&gt;
	end&lt;br /&gt;
	if skeys[&amp;#039;nat&amp;#039;] then&lt;br /&gt;
		staff = addflags(frame, staff)&lt;br /&gt;
	end&lt;br /&gt;
	-- college links&lt;br /&gt;
	if keys[&amp;#039;college&amp;#039;] or keys[&amp;#039;school&amp;#039;] then&lt;br /&gt;
		players = linkschools(frame, players)&lt;br /&gt;
	end&lt;br /&gt;
	if ckeys[&amp;#039;college&amp;#039;] or ckeys[&amp;#039;school&amp;#039;] then&lt;br /&gt;
		coaches = linkschools(frame, coaches)&lt;br /&gt;
	end&lt;br /&gt;
	if skeys[&amp;#039;college&amp;#039;] or ckeys[&amp;#039;school&amp;#039;] then&lt;br /&gt;
		staff = linkschools(frame, staff)&lt;br /&gt;
	end&lt;br /&gt;
	-- link names&lt;br /&gt;
	players = linknames(players, &amp;#039;lf&amp;#039;)&lt;br /&gt;
	coaches = linknames(coaches, &amp;#039;fl&amp;#039;)&lt;br /&gt;
	staff = linknames(staff, &amp;#039;fl&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	local res = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	res:addClass(&amp;#039;toccolours&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;font-size&amp;#039;, &amp;#039;85%&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;margin&amp;#039;, &amp;#039;1em auto&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;width&amp;#039;, &amp;#039;90%&amp;#039;)&lt;br /&gt;
	local row = res:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	local above = p_style.above(args)&lt;br /&gt;
	local abovestyle = p_style.abovestyle(frame, args)&lt;br /&gt;
	local color = mw.ustring.match(&amp;#039;;&amp;#039; .. string.lower(abovestyle or &amp;#039;&amp;#039;), &amp;#039;;%s*color%s*:([^;]*)&amp;#039;)&lt;br /&gt;
	row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
		:cssText(abovestyle)&lt;br /&gt;
		:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
		:wikitext((above and args[&amp;#039;name&amp;#039;] and frame:expandTemplate{title=&amp;#039;navbar-header&amp;#039;, args={&lt;br /&gt;
			stylelinks(above,abovestyle),&lt;br /&gt;
			args[&amp;#039;name&amp;#039;], fontcolor = color or &amp;#039;&amp;#039;}}) or above)&lt;br /&gt;
	row = res:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
	local headingstyle = p_style.headingstyle(frame, args)&lt;br /&gt;
	row:tag(&amp;#039;th&amp;#039;):cssText(headingstyle):wikitext(&amp;#039;Players&amp;#039;)&lt;br /&gt;
	row:tag(&amp;#039;th&amp;#039;):cssText(headingstyle):wikitext(&amp;#039;Coaches&amp;#039;)&lt;br /&gt;
	row = res:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local innertable = row:tag(&amp;#039;td&amp;#039;):css(&amp;#039;vertical-align&amp;#039;, &amp;#039;top&amp;#039;):tag(&amp;#039;table&amp;#039;)&lt;br /&gt;
	innertable:addClass(&amp;#039;sortable&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;background&amp;#039;, &amp;#039;transparent&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;margin&amp;#039;, 0)&lt;br /&gt;
		:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	innertable:wikitext(p_style.headings(args, keys))&lt;br /&gt;
	innertable:wikitext(p_style.players_roster(args, players, keys))&lt;br /&gt;
	local cell = row:tag(&amp;#039;td&amp;#039;):css(&amp;#039;vertical-align&amp;#039;, &amp;#039;top&amp;#039;)&lt;br /&gt;
	cell:wikitext(p_style.coaches_roster(coaches))&lt;br /&gt;
	cell:wikitext(p_style.staff_roster(staff))&lt;br /&gt;
	cell:wikitext(p_style.legend(args))&lt;br /&gt;
	local footer = p_style.footer(args, keys)&lt;br /&gt;
	if footer ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		cell:attr(&amp;#039;rowspan&amp;#039;, 2)&lt;br /&gt;
		local footerstyle = p_style.footerstyle(frame, args)&lt;br /&gt;
		row = res:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;hlist&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
			:cssText(footerstyle)&lt;br /&gt;
			:wikitext(footer)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(res)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local players, keys = getEntries(mw.text.split(args[&amp;#039;players&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;%s*&amp;lt;[Tt][Rr]&amp;gt;%s*&amp;#039;))&lt;br /&gt;
	local coaches, ckeys = {}, {}&lt;br /&gt;
	for k,v in ipairs({&lt;br /&gt;
		{&amp;#039;head_coach&amp;#039;, &amp;#039;Head coach&amp;#039;},&lt;br /&gt;
		{&amp;#039;asst_coach&amp;#039;, &amp;#039;Assistant coaches&amp;#039;}&lt;br /&gt;
		}) do&lt;br /&gt;
		coaches, ckeys = getEntries(mw.text.split(args[v[1]] or &amp;#039;&amp;#039;, &amp;#039;%s*&amp;lt;[Tt][Rr]&amp;gt;%s*&amp;#039;), v[2], coaches, ckeys)&lt;br /&gt;
	end&lt;br /&gt;
	local p_style&lt;br /&gt;
	if args[&amp;#039;style&amp;#039;] and mw.title.new(&amp;#039;Module:Sports roster/&amp;#039; .. args[&amp;#039;style&amp;#039;]) then&lt;br /&gt;
		p_style = require(&amp;#039;Module:Sports roster/&amp;#039; .. args[&amp;#039;style&amp;#039;])&lt;br /&gt;
	else&lt;br /&gt;
		p_style = require(&amp;#039;Module:Sports roster/default&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local needinitials = getlastduplicates(players)&lt;br /&gt;
	players = linknames(players, &amp;#039;l&amp;#039;, needinitials)&lt;br /&gt;
	coaches = linknames(coaches, &amp;#039;fil&amp;#039;)&lt;br /&gt;
	for k=1,2 do&lt;br /&gt;
	table.sort(players, function (a, b) &lt;br /&gt;
			return (tonumber(a[&amp;#039;num&amp;#039;]) or 9999) &amp;lt; (tonumber(b[&amp;#039;num&amp;#039;]) or 9999)&lt;br /&gt;
				or ((tonumber(a[&amp;#039;num&amp;#039;]) or 9999) == (tonumber(b[&amp;#039;num&amp;#039;]) or 9999)&lt;br /&gt;
					and ((a[&amp;#039;last&amp;#039;] or &amp;#039;ZZZZ&amp;#039;) &amp;lt; (b[&amp;#039;last&amp;#039;] or &amp;#039;ZZZZ&amp;#039;)))&lt;br /&gt;
				end&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Navbox = require(&amp;#039;Module:Navbox&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local targs = {}&lt;br /&gt;
	&lt;br /&gt;
	targs[&amp;#039;name&amp;#039;] = args[&amp;#039;name&amp;#039;] or mw.title.getCurrentTitle().text&lt;br /&gt;
	targs[&amp;#039;titlestyle&amp;#039;] = p_style.titlestyle(frame, args)&lt;br /&gt;
	targs[&amp;#039;title&amp;#039;] = stylelinks(p_style.title(args), targs[&amp;#039;titlestyle&amp;#039;])&lt;br /&gt;
	targs[&amp;#039;listclass&amp;#039;] = &amp;#039;hlist&amp;#039;&lt;br /&gt;
	targs[&amp;#039;state&amp;#039;] = args[&amp;#039;state&amp;#039;] or &amp;#039;autocollapse&amp;#039;&lt;br /&gt;
	targs[&amp;#039;list1&amp;#039;] = p_style.players_list(args, players, keys) .. &amp;#039;\n&amp;#039; .. p_style.coaches_list(coaches)&lt;br /&gt;
	targs[&amp;#039;belowclass&amp;#039;] = &amp;#039;hlist&amp;#039;&lt;br /&gt;
	targs[&amp;#039;belowstyle&amp;#039;] = p_style.belowstyle(frame, args)&lt;br /&gt;
	targs[&amp;#039;below&amp;#039;] =  stylelinks(p_style.below(args, keys), targs[&amp;#039;belowstyle&amp;#039;])&lt;br /&gt;
&lt;br /&gt;
	return Navbox._navbox(targs) .. tracking&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;WOSlinker</name></author>
	</entry>
</feed>