<?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%3AGANList3</id>
	<title>Module:GANList3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AGANList3"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:GANList3&amp;action=history"/>
	<updated>2026-06-07T10:46:02Z</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:GANList3&amp;diff=136338&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:GANList3&amp;diff=136338&amp;oldid=prev"/>
		<updated>2022-10-21T22:03:51Z</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;-- This module implements {{GANList3}}.&lt;br /&gt;
&lt;br /&gt;
-- Load modules&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local data = mw.loadData(&amp;#039;Module:GANList3/data&amp;#039;)&lt;br /&gt;
local responseIcons = data.responseIcons&lt;br /&gt;
local statusIcons = data.statusIcons&lt;br /&gt;
&lt;br /&gt;
-- Template for making collapsed sections.&lt;br /&gt;
local COLLAPSED_WIKITABLE = [[&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;font-weight:normal; &amp;quot; | %s&lt;br /&gt;
|-&lt;br /&gt;
| %s&lt;br /&gt;
|}]]&lt;br /&gt;
&lt;br /&gt;
-- Template for making uncollapsed sections.&lt;br /&gt;
local UNCOLLAPSED_WIKITABLE = [[&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| %s&lt;br /&gt;
|}]]&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Make the given key in args lowercase if when lowercased it equals val.&lt;br /&gt;
local function makeArgLowerCase(args, key, val)&lt;br /&gt;
	if args[key] and string.lower(args[key]) == val then&lt;br /&gt;
		args[key] = val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Normalize the args table to make it easier to work with elsewhere in the&lt;br /&gt;
-- module.&lt;br /&gt;
local function normalizeArguments(args)&lt;br /&gt;
	-- Consolidate aliases&lt;br /&gt;
	args.nocopyvio = args.nocopyvio or args.plagiarismfree&lt;br /&gt;
	args.plagiarismfree = nil&lt;br /&gt;
&lt;br /&gt;
	-- Normalize special values&lt;br /&gt;
	makeArgLowerCase(args, &amp;#039;picfree&amp;#039;, &amp;#039;fair&amp;#039;)&lt;br /&gt;
	makeArgLowerCase(args, &amp;#039;status&amp;#039;, &amp;#039;wtf&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- If any of the keys in the keys array are in the table t, return true;&lt;br /&gt;
-- otherwise, return false.&lt;br /&gt;
local function anyKeysInTable(t, keys)&lt;br /&gt;
	for i, key in ipairs(keys) do&lt;br /&gt;
		if t[key] then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a wikitext error message.&lt;br /&gt;
local function makeWikitextError(msg)&lt;br /&gt;
	return string.format([[&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;]], msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Format a user-supplied string for display in error messages.&lt;br /&gt;
-- This prevents input from being displayed as special wiki markup, converts&lt;br /&gt;
-- multi-line strings to a single line, and truncates long strings so that they&lt;br /&gt;
-- are easier to read.&lt;br /&gt;
local function escapeUserString(s)&lt;br /&gt;
	if #s &amp;gt; 28 then&lt;br /&gt;
		s = s:sub(1, 12) .. &amp;#039;...&amp;#039; .. s:sub(-12, -1)&lt;br /&gt;
	end&lt;br /&gt;
	s = s:gsub(&amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
	return mw.text.nowiki(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a collapsed wikitable with the given header and content. &lt;br /&gt;
local function makeCollapsedWikitable(header, content)&lt;br /&gt;
	return string.format(COLLAPSED_WIKITABLE, header, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make an uncollapsed wikitable with the given content. &lt;br /&gt;
local function makeUncollapsedWikitable(content)&lt;br /&gt;
	return string.format(UNCOLLAPSED_WIKITABLE, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a bulleted list from an array of strings.&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, item in ipairs(items) do&lt;br /&gt;
		ret[i] = &amp;#039;* &amp;#039; .. item&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a checklist item from the given issue and status.&lt;br /&gt;
local function makeChecklistItem(issue, status, defaultMarker)&lt;br /&gt;
	if not status then&lt;br /&gt;
		return string.format(&amp;#039;%s: %s&amp;#039;, issue, responseIcons.UNKNOWN)&lt;br /&gt;
	elseif yesno(status) then&lt;br /&gt;
		return string.format(&amp;#039;%s: %s&amp;#039;, issue, responseIcons.YES)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&amp;#039;%s: %s - %s&amp;#039;,&lt;br /&gt;
			issue,&lt;br /&gt;
			defaultMarker or responseIcons.NO,&lt;br /&gt;
			status&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Return true if all issues have been resolved; return false otherwise.&lt;br /&gt;
-- mainIssues is an array of tables as passed to makeSection. otherIssues is a&lt;br /&gt;
-- string value or nil (hold, as passed to makeSection).&lt;br /&gt;
local function allIssuesAreResolved(mainIssues, otherIssues)&lt;br /&gt;
	if otherIssues then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	for i, t in ipairs(mainIssues) do&lt;br /&gt;
		if t.isResolved == false&lt;br /&gt;
			or (&lt;br /&gt;
				t.isResolved ~= true&lt;br /&gt;
				and not yesno(t.status)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Assemble a section of the DYK checklist.&lt;br /&gt;
local function makeSection(options)&lt;br /&gt;
	local issues = {}&lt;br /&gt;
&lt;br /&gt;
	-- Add main issues&lt;br /&gt;
	options.mainIssues = options.mainIssues or {}&lt;br /&gt;
	for i, t in ipairs(options.mainIssues) do&lt;br /&gt;
		local checklistItem&lt;br /&gt;
		if t.isResolved then&lt;br /&gt;
			checklistItem = makeChecklistItem(t.issue, t.status, responseIcons.YES)&lt;br /&gt;
		else&lt;br /&gt;
			checklistItem = makeChecklistItem(t.issue, t.status)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(issues, checklistItem)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add other issues&lt;br /&gt;
	if options.otherIssues then&lt;br /&gt;
		table.insert(issues, makeChecklistItem(&amp;#039;Other problems&amp;#039;, options.otherIssues))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the section output.&lt;br /&gt;
	local content = makeBulletedList(issues)&lt;br /&gt;
	if allIssuesAreResolved(options.mainIssues, options.otherIssues) then&lt;br /&gt;
		return makeCollapsedWikitable(options.resolvedHeader, &amp;#039;\n&amp;#039; .. content)&lt;br /&gt;
	else&lt;br /&gt;
		return options.unresolvedHeader .. &amp;#039;\n&amp;#039; .. content&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Section functions&lt;br /&gt;
-- Each of these functions makes a single section of the DYK checklist.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeWellWrittenEligibilitySection(args)&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Well written?:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Writing:&amp;#039;&amp;#039;&amp;#039; article reasonably well written&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:What the Good article criteria are not#(1) Well-written|Prose]]&amp;#039;,&lt;br /&gt;
				status = args.prose,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:Copyright violations|Copyvio]]&amp;#039;,&lt;br /&gt;
				status = args.nocopyvio,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:Manual of Style|MOS compliance]]&amp;#039;,&lt;br /&gt;
				status = args.moscomply,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		otherIssues = args.writingother,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeVerifiabilityComplianceSection(args)&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Verifiable?:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Verifiability:&amp;#039;&amp;#039;&amp;#039; Article is factually accurate, verifiable, and contains no original research&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:Manual of Style/Layout#Notes and references|Reference section]]&amp;#039;,&lt;br /&gt;
				status = args.refsection,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:Reliable sources|Reliable sourcing]]&amp;#039;,&lt;br /&gt;
				status = args.sourcing,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:No original research|Original research]]&amp;#039;,&lt;br /&gt;
				status = args.origresearch,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		otherIssues = args.verifyother,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeNeutralEligibilitySection(args)&lt;br /&gt;
	-- The Neutrality and Stablity sections are different enough from the others&lt;br /&gt;
	-- that we will just do everything here rather than trying to use the &lt;br /&gt;
	-- makeSection function.&lt;br /&gt;
	local isGood = yesno(args.neutral)&lt;br /&gt;
	if isGood == true then&lt;br /&gt;
		return makeUncollapsedWikitable(&amp;quot;&amp;#039;&amp;#039;&amp;#039;Neutral&amp;#039;&amp;#039;&amp;#039;: Acceptable.&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local ret = makeChecklistItem(&lt;br /&gt;
			&amp;quot;&amp;#039;&amp;#039;&amp;#039;[[Wikipedia:Neutral point of view|Neutral]]&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
			isGood == false and &amp;#039;Not good&amp;#039; or args.neutral&lt;br /&gt;
		)&lt;br /&gt;
		return ret .. &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeStableEligibilitySection(args)&lt;br /&gt;
	local isStable = yesno(args.stable)&lt;br /&gt;
	if isStable == true then&lt;br /&gt;
		return makeUncollapsedWikitable(&amp;quot;&amp;#039;&amp;#039;&amp;#039;Stable&amp;#039;&amp;#039;&amp;#039;: Yes.&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local ret = makeChecklistItem(&lt;br /&gt;
			&amp;quot;&amp;#039;&amp;#039;&amp;#039;[[Wikipedia:What the Good article criteria are not#(5) Stable|Stable]]&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
			isStable == false and &amp;#039;Not stable&amp;#039; or args.stable&lt;br /&gt;
		)&lt;br /&gt;
		return ret .. &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeImageEligibilitySection(args)&lt;br /&gt;
	-- Deal with nonfree special case for images&lt;br /&gt;
	local imagesUsedStatus, isImageFairUse&lt;br /&gt;
	if args.picfree == &amp;#039;fair&amp;#039; then&lt;br /&gt;
		imagesUsedStatus = &amp;#039;Valid fair use image rationale supplied&amp;#039;&lt;br /&gt;
		isImageFairUse = true&lt;br /&gt;
	else&lt;br /&gt;
		imagesUsedStatus = args.picfree&lt;br /&gt;
		isImageFairUse = nil -- use default behaviour&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generate output&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Images?:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Images:&amp;#039;&amp;#039;&amp;#039; Article provides sufficient illustration relevant to topic.&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:What the Good article criteria are not#(6) Appropriately illustrated|Illustrated appropriately]]&amp;#039;,&lt;br /&gt;
				status = args.illustrated,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[Wikipedia:File copyright tags#For image creators|Freely licensed]]&amp;#039;,&lt;br /&gt;
				status = imagesUsedStatus,&lt;br /&gt;
				isResolved = isImageFairUse&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[MOS:IMAGERELEVANCE|Relevant]] with captions&amp;#039;,&lt;br /&gt;
				status = args.picused,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		otherIssues = args.picother,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeStatusSection(args)&lt;br /&gt;
	if not args.status then&lt;br /&gt;
		return makeWikitextError(&amp;#039;Review is incomplete - please fill in the &amp;quot;status&amp;quot; field&amp;#039;)&lt;br /&gt;
	elseif args.status ~= &amp;#039;y&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;?&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;neu&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;no&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;hold&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;wtf&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		return makeWikitextError(string.format(&lt;br /&gt;
			&amp;#039;Invalid status &amp;quot;%s&amp;quot; - use one of &amp;quot;y&amp;quot;, &amp;quot;?&amp;quot;, &amp;quot;neu&amp;quot;, &amp;quot;no&amp;quot; or &amp;quot;hold&amp;quot;&amp;#039;,&lt;br /&gt;
			escapeUserString(args.status)&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	table.insert(ret, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Overall&amp;#039;&amp;#039;&amp;#039;: &amp;quot;)&lt;br /&gt;
	local isOK = yesno(args.status)&lt;br /&gt;
	if isOK == true then&lt;br /&gt;
		if args.picfree == &amp;#039;fair&amp;#039; then&lt;br /&gt;
			table.insert(ret, statusIcons.YES_FAIR)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(ret, statusIcons.YES)&lt;br /&gt;
		end&lt;br /&gt;
	elseif isOK == false then&lt;br /&gt;
		table.insert(ret, statusIcons.NO)&lt;br /&gt;
	elseif args.status == &amp;#039;?&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.QUESTION)&lt;br /&gt;
	elseif args.status == &amp;#039;neutral&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.NETURAL)&lt;br /&gt;
	elseif args.status == &amp;#039;hold&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.HOLD)&lt;br /&gt;
	elseif args.status == &amp;#039;wtf&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.CONFUSED)&lt;br /&gt;
	end&lt;br /&gt;
	if args.comments then&lt;br /&gt;
		table.insert(ret, &amp;#039; &amp;#039;)&lt;br /&gt;
		table.insert(ret, args.comments)&lt;br /&gt;
	end&lt;br /&gt;
	if args.sign then&lt;br /&gt;
		table.insert(ret, &amp;#039; &amp;#039;)&lt;br /&gt;
		table.insert(ret, args.sign)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Normalize the args table to make it easier to work with in other&lt;br /&gt;
	-- functions.&lt;br /&gt;
	normalizeArguments(args)&lt;br /&gt;
&lt;br /&gt;
	-- Check whether the review has been started.&lt;br /&gt;
	local params = {&lt;br /&gt;
		&amp;#039;prose&amp;#039;,&lt;br /&gt;
		&amp;#039;nocopyvio&amp;#039;,&lt;br /&gt;
		&amp;#039;moscomply&amp;#039;,&lt;br /&gt;
		&amp;#039;writingother&amp;#039;,&lt;br /&gt;
		&amp;#039;refsection&amp;#039;,&lt;br /&gt;
		&amp;#039;sourcing&amp;#039;,&lt;br /&gt;
		&amp;#039;origresearch&amp;#039;,&lt;br /&gt;
		&amp;#039;verifyother&amp;#039;,&lt;br /&gt;
		&amp;#039;neutral&amp;#039;,&lt;br /&gt;
		&amp;#039;stable&amp;#039;,&lt;br /&gt;
		&amp;#039;illustrated&amp;#039;,&lt;br /&gt;
		&amp;#039;picfree&amp;#039;,&lt;br /&gt;
		&amp;#039;picused&amp;#039;,&lt;br /&gt;
		&amp;#039;picother&amp;#039;,&lt;br /&gt;
		&amp;#039;picfree&amp;#039;,&lt;br /&gt;
	}&lt;br /&gt;
	if not anyKeysInTable(args, params) then&lt;br /&gt;
		return &amp;#039;Review not started&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The review has been started, so assemble all the review sections.&lt;br /&gt;
	local funcs = {&lt;br /&gt;
		makeWellWrittenEligibilitySection,&lt;br /&gt;
		makeVerifiabilityComplianceSection,&lt;br /&gt;
		makeNeutralEligibilitySection,&lt;br /&gt;
		makeStableEligibilitySection,&lt;br /&gt;
		makeImageEligibilitySection,&lt;br /&gt;
		makeStatusSection,&lt;br /&gt;
	}&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, func in ipairs(funcs) do&lt;br /&gt;
		table.insert(ret, func(args))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = &amp;#039;Template:GANList3&amp;#039;,&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&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>