<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.wikiw.cn/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ACitation%2FCS1%2FError</id>
	<title>模块:Citation/CS1/Error - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikiw.cn/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ACitation%2FCS1%2FError"/>
	<link rel="alternate" type="text/html" href="https://www.wikiw.cn/index.php?title=%E6%A8%A1%E5%9D%97:Citation/CS1/Error&amp;action=history"/>
	<updated>2026-04-08T19:27:58Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://www.wikiw.cn/index.php?title=%E6%A8%A1%E5%9D%97:Citation/CS1/Error&amp;diff=2048&amp;oldid=prev</id>
		<title>imported&gt;Antigng：​已保护“Module:Citation/CS1/Error”：​高风险模块（[编辑=仅允许管理员]（无限期）[移动=仅允许管理员]（无限期））</title>
		<link rel="alternate" type="text/html" href="https://www.wikiw.cn/index.php?title=%E6%A8%A1%E5%9D%97:Citation/CS1/Error&amp;diff=2048&amp;oldid=prev"/>
		<updated>2022-04-26T16:36:02Z</updated>

		<summary type="html">&lt;p&gt;已保护“&lt;a href=&quot;/index.php?title=%E6%A8%A1%E5%9D%97:Citation/CS1/Error&quot; title=&quot;模块:Citation/CS1/Error&quot;&gt;Module:Citation/CS1/Error&lt;/a&gt;”：​&lt;a href=&quot;/index.php?title=WP:HRT&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:HRT（页面不存在）&quot;&gt;高风险模块&lt;/a&gt;（[编辑=仅允许管理员]（无限期）[移动=仅允许管理员]（无限期））&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
本模块包含了与CS1模块所需，与错误/维护信息相关的函数。错误/维护信息及相关的追踪分类存放于本模块定义的表z中。&lt;br /&gt;
请留意过去本站及当前的英文站相应的模块中，该表曾导出供其它模块使用；现已取消。&lt;br /&gt;
请勿在其它模块中直接使用或操作表z。由于不兼容性，请勿直接使用英文站模块中定义、和表z有关的函数。&lt;br /&gt;
&lt;br /&gt;
目前该模块导出8个函数，其中：&lt;br /&gt;
&lt;br /&gt;
add_maint_cat()和add_prop_cat()分别用于向表z添加配置模块中定义的&amp;quot;引文格式1维护&amp;quot;分类和&amp;quot;CS1屬性&amp;quot;分类&lt;br /&gt;
&lt;br /&gt;
set_error()和append_error()的用途都是向表z添加配置模块中定义的&amp;quot;引文格式1错误&amp;quot;分类，同时生成一条报错信息；&lt;br /&gt;
前者会将该条信息作为返回值输出，后者则直接将该条信息插入表z中。&lt;br /&gt;
主模块最后会调用make_error_tail()，在引文的尾部集中输出存储于表z的有关信息。&lt;br /&gt;
因此，如报错信息需显示在引文中部，应使用set_error()，并手动将其返回的报错信息插入引文中部；&lt;br /&gt;
如报错信息可集中显示在引文尾部，只需使用append_error()即可。&lt;br /&gt;
&lt;br /&gt;
reset_error()用于清除表z中指定的信息。&lt;br /&gt;
&lt;br /&gt;
select_one()用于在多个可能有效的参数中挑选一个，如多于一个参数有效会自动报&amp;quot;xx与yy与zz...只需其一&amp;quot;错误。&lt;br /&gt;
&lt;br /&gt;
throw_error()产生一条配置模块中定义的&amp;quot;内部错误&amp;quot;信息，并终止程序。&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
--[[--------------------------&amp;lt; F O R W A R D   D E C L A R A T I O N S &amp;gt;--------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
local z = {&lt;br /&gt;
	error_categories = {};														-- for categorizing citations that contain errors&lt;br /&gt;
	error_ids = {};&lt;br /&gt;
	message_tail = {};&lt;br /&gt;
	maintenance_cats = {};														-- for categorizing citations that aren&amp;#039;t erroneous per se, but could use a little work&lt;br /&gt;
	properties_cats = {};														-- for categorizing citations based on certain properties, language of source for instance&lt;br /&gt;
};&lt;br /&gt;
local cfg;&lt;br /&gt;
local in_array, is_set, substitute, wrap_style;&lt;br /&gt;
local make_internal_link;&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T H R O W _ E R R O R &amp;gt;-------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Terminate the program with a pre-defined excuse.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function throw_error (arg)&lt;br /&gt;
	error (cfg.internal_errors[arg]);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E R R O R _ C O M M E N T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Wraps error messages with css markup according to the state of hidden.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local function error_comment (content, hidden)&lt;br /&gt;
	return wrap_style (hidden and &amp;#039;hidden-error&amp;#039; or &amp;#039;visible-error&amp;#039;, content);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ E R R O R &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Sets an error condition and returns the appropriate error message.  The actual placement of the error message in the output is&lt;br /&gt;
the responsibility of the calling function.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local added_error_cats = {};&lt;br /&gt;
&lt;br /&gt;
local function set_error (error_id, arguments, raw, prefix, suffix)&lt;br /&gt;
	local error_state = cfg.error_conditions[error_id];&lt;br /&gt;
	&lt;br /&gt;
	prefix = prefix or &amp;#039;&amp;#039;;&lt;br /&gt;
	suffix = suffix or &amp;#039;&amp;#039;;&lt;br /&gt;
	&lt;br /&gt;
	if error_state == nil then&lt;br /&gt;
		throw_error (&amp;#039;undefined_error&amp;#039;);&lt;br /&gt;
	elseif is_set (error_state.category) then&lt;br /&gt;
		local category = substitute (error_state.category, arguments);&lt;br /&gt;
		if not added_error_cats[error_id] then&lt;br /&gt;
			table.insert (z.error_categories, category)&lt;br /&gt;
			added_error_cats[error_id] = true;									-- note that we&amp;#039;ve added this category&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local message = substitute (error_state.message, arguments);&lt;br /&gt;
	&lt;br /&gt;
	message = table.concat (&lt;br /&gt;
		{&lt;br /&gt;
		message,&lt;br /&gt;
		&amp;#039; (&amp;#039;,&lt;br /&gt;
		make_internal_link (&lt;br /&gt;
			table.concat (&lt;br /&gt;
				{&lt;br /&gt;
				cfg.messages[&amp;#039;help page link&amp;#039;],&lt;br /&gt;
				&amp;#039;#&amp;#039;,&lt;br /&gt;
				error_state.anchor&lt;br /&gt;
				}),&lt;br /&gt;
			cfg.messages[&amp;#039;help page label&amp;#039;]),&lt;br /&gt;
		&amp;#039;)&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	&lt;br /&gt;
	z.error_ids[error_id] = true;&lt;br /&gt;
	if in_array (error_id, {&amp;#039;bare_url_missing_title&amp;#039;, &amp;#039;trans_missing_title&amp;#039;})&lt;br /&gt;
			and z.error_ids[&amp;#039;citation_missing_title&amp;#039;] then&lt;br /&gt;
		return &amp;#039;&amp;#039;, false;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	message = table.concat ({prefix, message, suffix});&lt;br /&gt;
	&lt;br /&gt;
	if raw == true then&lt;br /&gt;
		return message, error_state.hidden;&lt;br /&gt;
	end		&lt;br /&gt;
		&lt;br /&gt;
	return error_comment (message, error_state.hidden);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A P P E N D _ E R R O R &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Sets an error condition, then appends the appropriate error message to z.message_tail.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function append_error (error_id, arguments, prefix, suffix)&lt;br /&gt;
	table.insert (z.message_tail, {set_error (error_id, arguments, true, prefix, suffix)});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[-------------------------&amp;lt; I S _ A L I A S _ U S E D &amp;gt;-----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function is used by select_one() to determine if one of a list of alias parameters is in the argument list&lt;br /&gt;
provided by the template.&lt;br /&gt;
&lt;br /&gt;
Input:&lt;br /&gt;
	args – pointer to the arguments table from calling template&lt;br /&gt;
	alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration&lt;br /&gt;
	index – for enumerated parameters, identifies which one&lt;br /&gt;
	enumerated – true/false flag used to choose how enumerated aliases are examined&lt;br /&gt;
	value – value associated with an alias that has previously been selected; nil if not yet selected&lt;br /&gt;
	selected – the alias that has previously been selected; nil if not yet selected&lt;br /&gt;
	error_list – list of aliases that are duplicates of the alias already selected&lt;br /&gt;
&lt;br /&gt;
Returns:&lt;br /&gt;
	value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected&lt;br /&gt;
	selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_alias_used (args, alias, index, enumerated, value, selected, error_list)&lt;br /&gt;
	if enumerated then															-- is this a test for an enumerated parameters?&lt;br /&gt;
		alias = alias:gsub (&amp;#039;#&amp;#039;, index);										-- replace &amp;#039;#&amp;#039; with the value in index&lt;br /&gt;
	else&lt;br /&gt;
		alias = alias:gsub (&amp;#039;#&amp;#039;, &amp;#039;&amp;#039;);											-- remove &amp;#039;#&amp;#039; if it exists&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (args[alias]) then													-- alias is in the template&amp;#039;s argument list&lt;br /&gt;
		if value ~= nil and selected ~= alias then								-- if we have already selected one of the aliases&lt;br /&gt;
			local skip;&lt;br /&gt;
			for _, v in ipairs (error_list) do									-- spin through the error list to see if we&amp;#039;ve added this alias&lt;br /&gt;
				if v == alias then&lt;br /&gt;
					skip = true;&lt;br /&gt;
					break;														-- has been added so stop looking &lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not skip then													-- has not been added so&lt;br /&gt;
				table.insert (error_list, alias);								-- add error alias to the error list&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			value = args[alias];												-- not yet selected an alias, so select this one&lt;br /&gt;
			selected = alias;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return value, selected;														-- return newly selected alias, or previously selected alias&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ M A I N T _ C A T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds a category to z.maintenance_cats using names from the configuration file with additional text if any.&lt;br /&gt;
To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maintenance_cats.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local added_maint_cats = {};&lt;br /&gt;
local function add_maint_cat (key, arguments)&lt;br /&gt;
	if not added_maint_cats [key] then&lt;br /&gt;
		added_maint_cats [key] = true;											-- note that we&amp;#039;ve added this category&lt;br /&gt;
		table.insert (z.maintenance_cats, substitute (cfg.maint_cats [key], arguments));&lt;br /&gt;
																				-- make name then add to table&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ P R O P _ C A T &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds a category to z.properties_cats using names from the configuration file with additional text if any.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local added_prop_cats = {}														-- list of property categories that have been added to z.properties_cats&lt;br /&gt;
local function add_prop_cat (key, arguments)&lt;br /&gt;
	if not added_prop_cats [key] then&lt;br /&gt;
		added_prop_cats [key] = true;											-- note that we&amp;#039;ve added this category&lt;br /&gt;
		table.insert (z.properties_cats, substitute (cfg.prop_cats [key], arguments));		&lt;br /&gt;
																				-- make name then add to table&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E L E C T _ O N E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Chooses one matching parameter from a list of parameters to consider.  The list of parameters to consider is just&lt;br /&gt;
names.  For parameters that may be enumerated, the position of the numerator in the parameter name is identified&lt;br /&gt;
by the &amp;#039;#&amp;#039; so |author-last1= and |author1-last= are represented as &amp;#039;author-last#&amp;#039; and &amp;#039;author#-last&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Because enumerated parameter |&amp;lt;param&amp;gt;1= is an alias of |&amp;lt;param&amp;gt;= we must test for both possibilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generates an error if more than one match is present.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function select_one (args, aliases_list, error_condition, index)&lt;br /&gt;
	local value = nil;															-- the value assigned to the selected parameter&lt;br /&gt;
	local selected = &amp;#039;&amp;#039;;														-- the name of the parameter we have chosen&lt;br /&gt;
	local error_list = {};&lt;br /&gt;
&lt;br /&gt;
	if index ~= nil then index = tostring (index); end&lt;br /&gt;
&lt;br /&gt;
	for _, alias in ipairs (aliases_list) do									-- for each alias in the aliases list&lt;br /&gt;
		if alias:match (&amp;#039;#&amp;#039;) then												-- if this alias can be enumerated&lt;br /&gt;
			if &amp;#039;1&amp;#039; == index then												-- when index is 1 test for enumerated and non-enumerated aliases&lt;br /&gt;
				value, selected = is_alias_used (args, alias, index, false, value, selected, error_list);	-- first test for non-enumerated alias&lt;br /&gt;
			end&lt;br /&gt;
			value, selected = is_alias_used (args, alias, index, true, value, selected, error_list);		-- test for enumerated alias&lt;br /&gt;
		else&lt;br /&gt;
			value, selected = is_alias_used (args, alias, index, false, value, selected, error_list);		--test for non-enumerated alias&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #error_list &amp;gt; 0 and &amp;#039;none&amp;#039; ~= error_condition then						-- for cases where this code is used outside of extract_names()&lt;br /&gt;
		local error_str = &amp;#039;&amp;#039;;&lt;br /&gt;
		for _, k in ipairs (error_list) do&lt;br /&gt;
			if error_str ~= &amp;#039;&amp;#039; then error_str = error_str .. cfg.messages[&amp;#039;parameter-separator&amp;#039;] end&lt;br /&gt;
			error_str = error_str .. wrap_style (&amp;#039;parameter&amp;#039;, k);&lt;br /&gt;
		end&lt;br /&gt;
		if #error_list &amp;gt; 1 then&lt;br /&gt;
			error_str = error_str .. cfg.messages[&amp;#039;parameter-final-separator&amp;#039;];&lt;br /&gt;
		else&lt;br /&gt;
			error_str = error_str .. cfg.messages[&amp;#039;parameter-pair-separator&amp;#039;];&lt;br /&gt;
		end&lt;br /&gt;
		error_str = error_str .. wrap_style (&amp;#039;parameter&amp;#039;, selected);&lt;br /&gt;
		append_error (error_condition, {error_str});&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return value, selected;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ E R R O R _ T A I L &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The function generates error/maintenance-related messages and/or tracking categories from &amp;quot;z&amp;quot; defined in this module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_error_tail (flag)&lt;br /&gt;
	local error_text = &amp;#039;&amp;#039;;&lt;br /&gt;
	if #z.message_tail ~= 0 then&lt;br /&gt;
		error_text = &amp;#039; &amp;#039;;&lt;br /&gt;
		for i,v in ipairs (z.message_tail) do&lt;br /&gt;
			if is_set (v[1]) then&lt;br /&gt;
				if i == #z.message_tail then&lt;br /&gt;
					error_text = error_text .. error_comment (v[1], v[2]);&lt;br /&gt;
				else&lt;br /&gt;
					error_text = error_text .. error_comment (v[1] .. &amp;#039;; &amp;#039;, v[2]);&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #z.maintenance_cats ~= 0 then&lt;br /&gt;
		local maintenance_text = &amp;#039;&amp;#039;;&lt;br /&gt;
		for _, v in ipairs (z.maintenance_cats) do								-- append maintenance categories&lt;br /&gt;
			maintenance_text = maintenance_text .. substitute (cfg.messages[&amp;#039;maintenance-item&amp;#039;], {v, make_internal_link (&amp;#039;:Category:&amp;#039; .. v, cfg.messages[&amp;#039;maintenance-link&amp;#039;])})&lt;br /&gt;
		end&lt;br /&gt;
		error_text = error_text .. wrap_style (&amp;#039;maintenance&amp;#039;, maintenance_text);&lt;br /&gt;
																				-- maintenance mesages (realy just the names of the categories for now)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not flag then&lt;br /&gt;
		for _, v in ipairs (z.error_categories) do&lt;br /&gt;
			error_text = error_text .. make_internal_link (&amp;#039;Category:&amp;#039; .. v);&lt;br /&gt;
		end&lt;br /&gt;
		for _, v in ipairs (z.maintenance_cats) do								-- append maintenance categories&lt;br /&gt;
			error_text = error_text .. make_internal_link (&amp;#039;Category:&amp;#039; .. v);&lt;br /&gt;
		end&lt;br /&gt;
		for _, v in ipairs (z.properties_cats) do								-- append maintenance categories&lt;br /&gt;
			error_text = error_text .. make_internal_link (&amp;#039;Category:&amp;#039; .. v);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return error_text;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; R E S E T _ E R R O R &amp;gt;-------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Reset error/maintenance messages/categories in z.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function reset_error (args)&lt;br /&gt;
	if (in_array (&amp;#039;err_cats&amp;#039;, args)) then&lt;br /&gt;
		z.error_categories = {};&lt;br /&gt;
	end&lt;br /&gt;
	if (in_array (&amp;#039;prop_cats&amp;#039;, args)) then&lt;br /&gt;
		z.properties_cats = {};&lt;br /&gt;
	end&lt;br /&gt;
	if (in_array (&amp;#039;maint_cats&amp;#039;, args)) then&lt;br /&gt;
		z.maintenance_cats = {};&lt;br /&gt;
	end&lt;br /&gt;
	if (in_array (&amp;#039;err_ids&amp;#039;, args)) then&lt;br /&gt;
		z.error_ids = {};&lt;br /&gt;
	end&lt;br /&gt;
	if (in_array (&amp;#039;msg_tail&amp;#039;, args)) then&lt;br /&gt;
		z.message_tail = {};&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ S E L E C T E D _ M O D U L E S &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
Sets local cfg table to same (live or sandbox) as that used by the other modules.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr, links_page_ptr)&lt;br /&gt;
	cfg = cfg_table_ptr;&lt;br /&gt;
	&lt;br /&gt;
	in_array = utilities_page_ptr.in_array;&lt;br /&gt;
	is_set = utilities_page_ptr.is_set;&lt;br /&gt;
	substitute = utilities_page_ptr.substitute;&lt;br /&gt;
	wrap_style= utilities_page_ptr.wrap_style;&lt;br /&gt;
	&lt;br /&gt;
	make_internal_link = links_page_ptr.make_internal_link;&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	add_maint_cat = add_maint_cat,												-- exported functions&lt;br /&gt;
	add_prop_cat = add_prop_cat,&lt;br /&gt;
	append_error = append_error,&lt;br /&gt;
	make_error_tail = make_error_tail,&lt;br /&gt;
	reset_error = reset_error,&lt;br /&gt;
	select_one = select_one,&lt;br /&gt;
	set_error = set_error,&lt;br /&gt;
	throw_error = throw_error,&lt;br /&gt;
	&lt;br /&gt;
	set_selected_modules = set_selected_modules&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>imported&gt;Antigng</name></author>
	</entry>
</feed>