<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.wickedgov.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Awilh+37</id>
	<title>WickedGov - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.wickedgov.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Awilh+37"/>
	<link rel="alternate" type="text/html" href="https://www.wickedgov.org/wiki/Special:Contributions/Awilh_37"/>
	<updated>2026-04-28T17:41:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.0</generator>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:Featured_news&amp;diff=2924</id>
		<title>Template:Featured news</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:Featured_news&amp;diff=2924"/>
		<updated>2025-01-24T12:37:06Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: adding direction to the &amp;quot;pictured&amp;quot; italics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mp-image&amp;quot;&amp;gt;[[File:Chris Flanagan.png|right|frameless|120px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* According to Barnstable police, Rep. &#039;&#039;&#039;[[Chris Flanagan]]&#039;&#039;&#039; &#039;&#039;(pictured right)&#039;&#039; is under federal criminal investigation.&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=2024_Question_3&amp;diff=2911</id>
		<title>2024 Question 3</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=2024_Question_3&amp;diff=2911"/>
		<updated>2025-01-23T21:54:05Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created page with &amp;quot;== Ballot wording == From the [https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm Commonwealth of Massachusetts website],   &amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Unionization for Transportation Network Drivers Be it enacted by the People, and by their authority:&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/b&amp;gt;  &amp;lt;b&amp;gt;An Act Giving Transportation Network Drivers the Option to Form a Union and Bargain Collectively&amp;lt;/b&amp;gt;  This Act, which adds Chapter 150F to the General Laws, c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ballot wording ==&lt;br /&gt;
From the [https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm Commonwealth of Massachusetts website], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Unionization for Transportation Network Drivers&lt;br /&gt;
Be it enacted by the People, and by their authority:&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;An Act Giving Transportation Network Drivers the Option to Form a Union and Bargain Collectively&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Act, which adds Chapter 150F to the General Laws, creates the opportunity for workers in the digital transportation industry to form transportation network driver organizations and to negotiate on an industry-wide basis with companies in this industry on recommendations to the commonwealth that raise standards for the terms and conditions of work in this industry.&amp;quot; &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
|url = https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_3_full_text.htm&lt;br /&gt;
|title = Commonwealth of Massachusetts}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=2024_Question_2&amp;diff=2906</id>
		<title>2024 Question 2</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=2024_Question_2&amp;diff=2906"/>
		<updated>2025-01-23T15:32:14Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ballot wording ==&lt;br /&gt;
From the [https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm Commonwealth of Massachusetts website], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Elimination of MCAS as High School Graduation Requirement&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Be it enacted by the People, and by their authority:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A law requiring that districts certify that students have mastered the skills, competencies and knowledge of the state standards as a replacement for the mcas graduation requirement.&lt;br /&gt;
&lt;br /&gt;
&amp;quot; &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
|url = https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_2_full_text.htm&lt;br /&gt;
|title = Commonwealth of Massachusetts}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=2024_Question_2&amp;diff=2905</id>
		<title>2024 Question 2</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=2024_Question_2&amp;diff=2905"/>
		<updated>2025-01-23T15:20:21Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created page with &amp;quot;== Ballot wording == From the [https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm Commonwealth of Massachusetts website],   &amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Elimination of MCAS as High School Graduation Requirement&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/b&amp;gt;  &amp;lt;b&amp;gt;Be it enacted by the People, and by their authority:&amp;lt;/b&amp;gt;  A law requiring that districts certify that students have mastered the skills, competencies and knowledge of the state standards as a replaceme...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ballot wording ==&lt;br /&gt;
From the [https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm Commonwealth of Massachusetts website], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Elimination of MCAS as High School Graduation Requirement&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Be it enacted by the People, and by their authority:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A law requiring that districts certify that students have mastered the skills, competencies and knowledge of the state standards as a replacement for the mcas graduation requirement.&lt;br /&gt;
&lt;br /&gt;
&amp;quot; &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
|url = https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_2_full_text.htm&lt;br /&gt;
|title = Commonwealth of Massachusetts}}&amp;lt;/ref&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=2024_Question_1&amp;diff=2872</id>
		<title>2024 Question 1</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=2024_Question_1&amp;diff=2872"/>
		<updated>2025-01-22T13:21:35Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: added wording from the ballet from the Commonwealth of Massachusetts website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Question 1&#039;&#039;&#039; was an [[initiative petition]] on the ballot in the [[2024 state election]] on November 5, 2024. It specified that the [[State Auditor]] had the authority to audit the [[Legislature]]. The measure passed with 71.6 percent of the vote.&amp;lt;ref name=&amp;quot;stats&amp;quot;&amp;gt;{{cite web|author=Secretary of the Commonwealth|title=2024 - Statewide - Question 1|url=https://electionstats.state.ma.us/ballot_questions/view/11620/}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ballet Wording ==&lt;br /&gt;
From the [https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm Commonwealth of Massachusetts website], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;State Auditor’s Authority to Audit the Legislature&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Be it enacted by the People, and by their authority:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A LAW EXPRESSLY AUTHORIZING THE AUDITOR TO AUDIT THE LEGISLATURE&amp;quot; &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
|url = https://www.sec.state.ma.us/divisions/elections/publications/information-for-voters-24/quest_1_full_text.htm&lt;br /&gt;
|title = Commonwealth of Massachusetts}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
During State Auditor Diana DiZoglio&#039;s successful 2022 election campaign, she promised to start conducting audits of the Legislature. Until her election, the Auditor&#039;s office had not audited legislative finances since 1922.&amp;lt;ref name=&amp;quot;unnecessary&amp;quot;&amp;gt;{{cite web|author=Matt Stout|url=https://www.bostonglobe.com/2023/03/24/metro/wholly-unnecessary-mass-house-speaker-says-he-will-not-comply-with-state-auditors-legislative-probe/|title=&#039;Wholly unnecessary&#039;: Mass. House speaker says he will not comply with state auditor&#039;s legislative probe}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On March 7, 2023, DiZoglio&#039;s office began an audit of the Legislature, citing that &amp;quot;Massachusetts ranks as one of the least transparent and least accessible state governments in the nation.&amp;quot;&amp;lt;ref&amp;gt;{{cite web|url=https://www.mass.gov/news/statement-from-state-auditor-dizoglio-regarding-an-audit-of-the-massachusetts-state-legislature|title=Statement from State Auditor DiZoglio Regarding an Audit of the Massachusetts State Legislature|author=Office of the State Auditor}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On March 24, House Speaker [[Ron Mariano]] announced in a letter to DiZoglio that he would refuse to meet with her or otherwise cooperate with the audit. In the letter, Mariano claimed that the audit was unconstitutional and that all relevant financial records were already published online.&amp;lt;ref&amp;gt;{{cite web|url=https://www.mass.gov/doc/the-letter-from-the-speaker-of-the-house-of-representatives-house-to-osa-dated-march-24-2023-responding-to-osas-engagement-letter/download|title=OSA Letter AGO re Legislative Audit.pdf|author=Ronald J. Mariano, Speaker of the House}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DiZoglio then requested Attorney General [[Andrea Campbell]] to uphold her authority to audit the Legislature. However, Campbell instead decided that under current law, the Auditor could not force a legislative audit. She did not comment on whether a legislative audit would also violate the [[Massachusetts Constitution]].&amp;lt;ref&amp;gt;{{cite web|title=From the Office of the Attorney General|url=https://bloximages.chicago2.vip.townnews.com/statehousenews.com/content/tncms/assets/v3/editorial/6/47/647751ac-7a43-11ee-a507-73ab1a0c0e0a/6544e5acbcd60.pdf.pdf|author=Andrea Joy Campbell}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Campaign ==&lt;br /&gt;
In August 2024, it was reported that legislative leaders would not attempt to defeat Question 1 on the ballot, instead planning to fight it in the courts.&amp;lt;ref&amp;gt;{{cite web|url=https://commonwealthbeacon.org/politics/political-notebook-lawmakers-wont-campaign-against-audit-ballot-question/|title=Political Notebook: Lawmakers won&#039;t campaign against audit ballot question|author=Bruce Mohl}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
The question passed overwhelmingly, receiving 71.6% of the statewide vote and at least 68.1% of the vote in every county.&amp;lt;ref name=&amp;quot;stats&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Category:2024 ballot questions|1]]&lt;br /&gt;
[[Category:Legislative transparency|Question 1]]&lt;br /&gt;
[[Category:Successful initiative petitions for legislation]]&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=User:Awilh_37&amp;diff=2837</id>
		<title>User:Awilh 37</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=User:Awilh_37&amp;diff=2837"/>
		<updated>2025-01-21T14:10:33Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{troutme}}&lt;br /&gt;
{{trout}}&lt;br /&gt;
{{userboxtop}}&lt;br /&gt;
{{user administrator}}&lt;br /&gt;
{{user bureaucrat}}&lt;br /&gt;
{{user crazy}}&lt;br /&gt;
{{Trumpet}}&lt;br /&gt;
{{humor_user}}&lt;br /&gt;
{{User Pi}}&lt;br /&gt;
{{User Wikipedian For|year=2023|month=12|day=14}}&lt;br /&gt;
{{User wickedgoverner for|year=2025|month=1|day=6}}&lt;br /&gt;
{{User shared IP address|Luke}}&lt;br /&gt;
{{userboxbottom}}&lt;br /&gt;
Thanks for coming to my page! I&#039;m a friend of &amp;lt;code&amp;gt;[[user:Luke|Luke]]&amp;lt;/code&amp;gt; and am learning more and more about Wiki every time I log in. Enjoy and please add suggestions in the talk section. &lt;br /&gt;
&lt;br /&gt;
[[User:Awilh 37|Awilh 37]] ([[User talk:Awilh 37|talk]])&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=User:Awilh_37&amp;diff=2836</id>
		<title>User:Awilh 37</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=User:Awilh_37&amp;diff=2836"/>
		<updated>2025-01-21T14:09:42Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{troutme}}&lt;br /&gt;
{{trout}}&lt;br /&gt;
{{userboxtop}}&lt;br /&gt;
{{user administrator}}&lt;br /&gt;
{{user bureaucrat}}&lt;br /&gt;
{{user crazy}}&lt;br /&gt;
{{Trumpet}}&lt;br /&gt;
{{humor_user}}&lt;br /&gt;
{{User Pi}}&lt;br /&gt;
{{User Wikipedian For|year=2023|month=12|day=14}}&lt;br /&gt;
{{User wickedgoverner for|year=2025|month=1|day=6}}&lt;br /&gt;
{{User shared IP address|Luke}}&lt;br /&gt;
{{userboxbottom}}&lt;br /&gt;
Thanks for coming to my page! I&#039;m a friend of &amp;lt;code&amp;gt;[[user:Luke|Luke]]&amp;lt;/code&amp;gt; and am learning more and more about Wiki every time I log in. Enjoy and please add suggestions in the talk section. Also, I am open to being whacked with a wet trout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Wikipedia:Whacking_with_a_wet_trout&amp;lt;/ref&amp;gt;, if you know what I mean...&lt;br /&gt;
&lt;br /&gt;
[[User:Awilh 37|Awilh 37]] ([[User talk:Awilh 37|talk]])&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Typing-aid_templates&amp;diff=2716</id>
		<title>Category:Typing-aid templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Typing-aid_templates&amp;diff=2716"/>
		<updated>2025-01-15T16:20:53Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Wikipedia_XHTML_tag-replacing_templates&amp;diff=2715</id>
		<title>Category:Wikipedia XHTML tag-replacing templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Wikipedia_XHTML_tag-replacing_templates&amp;diff=2715"/>
		<updated>2025-01-15T16:20:48Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Templates_not_safe_for_use_in_citation_templates&amp;diff=2712</id>
		<title>Category:Templates not safe for use in citation templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Templates_not_safe_for_use_in_citation_templates&amp;diff=2712"/>
		<updated>2025-01-15T16:20:41Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Positioning_templates&amp;diff=2705</id>
		<title>Category:Positioning templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Positioning_templates&amp;diff=2705"/>
		<updated>2025-01-15T16:20:18Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Placeholder_templates&amp;diff=2704</id>
		<title>Category:Placeholder templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Placeholder_templates&amp;diff=2704"/>
		<updated>2025-01-15T16:20:15Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Parameter_handling_templates&amp;diff=2703</id>
		<title>Category:Parameter handling templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Parameter_handling_templates&amp;diff=2703"/>
		<updated>2025-01-15T16:20:13Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Internal_link_templates&amp;diff=2702</id>
		<title>Category:Internal link templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Internal_link_templates&amp;diff=2702"/>
		<updated>2025-01-15T16:18:58Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:List_formatting_and_function_templates&amp;diff=2700</id>
		<title>Category:List formatting and function templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:List_formatting_and_function_templates&amp;diff=2700"/>
		<updated>2025-01-15T16:18:23Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Catalog_lookup_templates&amp;diff=2697</id>
		<title>Category:Catalog lookup templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Catalog_lookup_templates&amp;diff=2697"/>
		<updated>2025-01-15T16:18:11Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Templates_based_on_the_String_Lua_module&amp;diff=2689</id>
		<title>Category:Templates based on the String Lua module</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Templates_based_on_the_String_Lua_module&amp;diff=2689"/>
		<updated>2025-01-15T16:17:30Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:String_manipulation_templates&amp;diff=2688</id>
		<title>Category:String manipulation templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:String_manipulation_templates&amp;diff=2688"/>
		<updated>2025-01-15T16:17:28Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Text-specific_formatting_and_function_templates&amp;diff=2686</id>
		<title>Category:Text-specific formatting and function templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Text-specific_formatting_and_function_templates&amp;diff=2686"/>
		<updated>2025-01-15T16:17:24Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Pagename_manipulation_templates&amp;diff=2685</id>
		<title>Category:Pagename manipulation templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Pagename_manipulation_templates&amp;diff=2685"/>
		<updated>2025-01-15T16:17:21Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=User_talk:Awilh_37&amp;diff=2680</id>
		<title>User talk:Awilh 37</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=User_talk:Awilh_37&amp;diff=2680"/>
		<updated>2025-01-14T23:40:04Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: /* Hello */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hello ==&lt;br /&gt;
&lt;br /&gt;
[[Special:Diff/2670]]: {{done}} &amp;lt;span style=&amp;quot;font-variant:small-caps&amp;quot;&amp;gt;[[Special:Contribs/Luke|Luke]] ([[User talk:Luke|Talk to me]])&amp;lt;/span&amp;gt; 21:14, 14 January 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:By the way, we had our first vandal; the logs are redacted, but you should still be able to see them &amp;lt;span style=&amp;quot;font-variant:small-caps&amp;quot;&amp;gt;[[Special:Contribs/Luke|Luke]] ([[User talk:Luke|Talk to me]])&amp;lt;/span&amp;gt; 21:18, 14 January 2025 (UTC)&lt;br /&gt;
::hmmmmm🫤 [[User:Awilh 37|Awilh 37]] ([[User talk:Awilh 37|talk]]) 23:37, 14 January 2025 (UTC)&lt;br /&gt;
::found this: [https://www.wickedgov.org/w/index.php?title=Special:Log&amp;amp;logid=1354] [[User:Awilh 37|Awilh 37]] ([[User talk:Awilh 37|talk]]) 23:40, 14 January 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=User_talk:Awilh_37&amp;diff=2679</id>
		<title>User talk:Awilh 37</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=User_talk:Awilh_37&amp;diff=2679"/>
		<updated>2025-01-14T23:37:50Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: /* Hello */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hello ==&lt;br /&gt;
&lt;br /&gt;
[[Special:Diff/2670]]: {{done}} &amp;lt;span style=&amp;quot;font-variant:small-caps&amp;quot;&amp;gt;[[Special:Contribs/Luke|Luke]] ([[User talk:Luke|Talk to me]])&amp;lt;/span&amp;gt; 21:14, 14 January 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:By the way, we had our first vandal; the logs are redacted, but you should still be able to see them &amp;lt;span style=&amp;quot;font-variant:small-caps&amp;quot;&amp;gt;[[Special:Contribs/Luke|Luke]] ([[User talk:Luke|Talk to me]])&amp;lt;/span&amp;gt; 21:18, 14 January 2025 (UTC)&lt;br /&gt;
::hmmmmm🫤 [[User:Awilh 37|Awilh 37]] ([[User talk:Awilh 37|talk]]) 23:37, 14 January 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=WickedGov:Sandbox&amp;diff=2669</id>
		<title>WickedGov:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=WickedGov:Sandbox&amp;diff=2669"/>
		<updated>2025-01-14T21:11:06Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox heading}}&amp;lt;!-- Please leave this line alone; edit below this line --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:Transclusion_count/data/D&amp;diff=2508</id>
		<title>Module:Transclusion count/data/D</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:Transclusion_count/data/D&amp;diff=2508"/>
		<updated>2025-01-13T18:27:09Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:Transclusion_count/data/D&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;D&amp;amp;D_to-do&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;D-da&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;DANFS&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;DC-Comics-trademark-copyright&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;DCS_Sri_Lanka&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;DDR&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;DEC&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;DECADE&amp;quot;] = 299000,&lt;br /&gt;
[&amp;quot;DEN&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;DEU&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;DMC&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;DMCA&amp;quot;] = 2730000,&lt;br /&gt;
[&amp;quot;DNB&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;DNB-Portal&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;DNB_portal&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;DNK&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;DNZB&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;DOM&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;DOWs&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;DRV_links&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;DWT&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;DYKC&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;DYKF&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;DYK_blue&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;DYK_checklist&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;DYK_conditions&amp;quot;] = 70000,&lt;br /&gt;
[&amp;quot;DYK_files&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;DYK_header&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;DYK_nompage_links&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;DYK_talk&amp;quot;] = 106000,&lt;br /&gt;
[&amp;quot;DYK_talk/date&amp;quot;] = 106000,&lt;br /&gt;
[&amp;quot;DYK_tools&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;DYK_tools/styles.css&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;DYKfile&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;DZA&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Dab&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Dagger&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Dark_red&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Darkred&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Dash&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_assignment&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_bibliography/bibliography&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_bibliography/guide&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_bibliography/outline&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_course_header&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_course_header/edit-note&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_draft_template/about_this_sandbox&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_evaluate_article/guide&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_peer_review/guide&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_sandbox&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_student_editor&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_student_program_sandbox&amp;quot;] = 110000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_talk_course_link&amp;quot;] = 100000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_user_talk&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Date&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Date-mf&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Date_table_sorting&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Dated_maintenance_category&amp;quot;] = 2790000,&lt;br /&gt;
[&amp;quot;Dated_maintenance_category_(articles)&amp;quot;] = 2730000,&lt;br /&gt;
[&amp;quot;Dated_maintenance_category_by_type_(articles)&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Davis_Cup_player&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Day+1&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Day-1&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Dbox&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Dda&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Dead_YouTube_link&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Dead_link&amp;quot;] = 323000,&lt;br /&gt;
[&amp;quot;Deadlink&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Deadweight_tonnage&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Death-date&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Death-date_and_age&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Death_date&amp;quot;] = 9700,&lt;br /&gt;
[&amp;quot;Death_date_and_age&amp;quot;] = 434000,&lt;br /&gt;
[&amp;quot;Death_date_and_given_age&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Death_date_text&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Death_year_and_age&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Death_year_category_header&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Decade_in_country_category&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Decade_in_country_category/core&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Decade_link&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Decimals&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Declination&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Decline&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Declined&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Decrease&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Define&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Deg2DMS&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Deleted_on_Commons&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Deletion_review_log_header&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Deletion_review_log_header/Core&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Delink&amp;quot;] = 1820000,&lt;br /&gt;
[&amp;quot;Delink_question_hyphen-minus&amp;quot;] = 310000,&lt;br /&gt;
[&amp;quot;Delrevxfd&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Democratic_Party_(US)/meta/shading&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Description_missing&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Designation/abbreviation&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Designation/color&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Designation/colour&amp;quot;] = 80000,&lt;br /&gt;
[&amp;quot;Designation/colour2&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Designation/divbox&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Designation/text&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Designation_list&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Details&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;DetailsLink&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Details_link&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Detect_singular&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;Deutsche_Bahn_station_codes&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;DfE_performance_tables&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Dictionary_of_National_Biography&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Diff&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Diff2&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Diffusing_occupation_by_nationality_and_century_category_header&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Diffusing_occupation_by_nationality_and_century_category_header/core&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Digits&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Directories_box&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Disamb&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Disambig&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Disambig-Class&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Disambiguation&amp;quot;] = 226000,&lt;br /&gt;
[&amp;quot;Disambiguation/cat&amp;quot;] = 226000,&lt;br /&gt;
[&amp;quot;Disambiguation_page_short_description&amp;quot;] = 364000,&lt;br /&gt;
[&amp;quot;Discogs_artist&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Discogs_master&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Discogs_release&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Discussion_bottom&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Discussion_top&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Disestablishment_category_in_country&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Disestablishment_category_in_country/core&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Disestablishment_category_in_country_by_decade&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Disestablishment_category_in_country_by_decade/core&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;DisestcatCountry&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;DisestcatCountry/core&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;DisestcatUSstate&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;DisestcatUSstate/core&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Disputed&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Distinguish&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;Disused_Rail_Start&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Disused_rail_start&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Disused_style&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Div_col&amp;quot;] = 438000,&lt;br /&gt;
[&amp;quot;Div_col/styles.css&amp;quot;] = 439000,&lt;br /&gt;
[&amp;quot;Div_col_end&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Divbox&amp;quot;] = 399000,&lt;br /&gt;
[&amp;quot;Divbox/styles.css&amp;quot;] = 399000,&lt;br /&gt;
[&amp;quot;Dividing_line&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Dmbox&amp;quot;] = 482000,&lt;br /&gt;
[&amp;quot;Dmbox/styles.css&amp;quot;] = 482000,&lt;br /&gt;
[&amp;quot;Do_not_move_to_Commons&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Doc&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Documentation&amp;quot;] = 132000,&lt;br /&gt;
[&amp;quot;Documentation_subpage&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;Dog_opentask&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Doi&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Doing&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line&amp;quot;] = 121000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_always_display&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_extinct&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_link_target&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_link_text&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_parent&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_rank&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_refs&amp;quot;] = 121000,&lt;br /&gt;
[&amp;quot;Don&#039;t_edit_this_line_same_as&amp;quot;] = 551000,&lt;br /&gt;
[&amp;quot;Done&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;Doppelganger&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Double+single&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Double-dagger&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Dow_tooltip&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Dr&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Dr-logno&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Dr-make&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Dr-yr&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Draft_article&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Draft_article_check&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Draft_categories&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Draft_other&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Draft_topics&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Drafts_moved_from_mainspace&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Draw&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Draw_key&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Draw_links&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Drep&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;DriverDB_driver&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Drugbankcite&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Drugbox&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Drugs.com&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Dts&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Dubious&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Duck&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Dummytab&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Duration&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Dutch_municipality&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Dyktalk&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Dynamic_list&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:DYK_checklist&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:DYK_checklist/data&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:DYK_nompage_links&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Module:Data&amp;quot;] = 151000,&lt;br /&gt;
[&amp;quot;Module:Date&amp;quot;] = 1490000,&lt;br /&gt;
[&amp;quot;Module:DateI18n&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;Module:Date_table_sorting&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Module:DecodeEncode&amp;quot;] = 132000,&lt;br /&gt;
[&amp;quot;Module:Delink&amp;quot;] = 3290000,&lt;br /&gt;
[&amp;quot;Module:Detect_singular&amp;quot;] = 1830000,&lt;br /&gt;
[&amp;quot;Module:Disambiguation&amp;quot;] = 214000,&lt;br /&gt;
[&amp;quot;Module:Disambiguation/templates&amp;quot;] = 12400000,&lt;br /&gt;
[&amp;quot;Module:Distinguish&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;Module:Documentation&amp;quot;] = 179000,&lt;br /&gt;
[&amp;quot;Module:Documentation/config&amp;quot;] = 179000,&lt;br /&gt;
[&amp;quot;Module:Documentation/styles.css&amp;quot;] = 179000,&lt;br /&gt;
[&amp;quot;Module:Draft_topics&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Module:Dts&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Module:Duration&amp;quot;] = 244000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:Protection_banner/config&amp;diff=2506</id>
		<title>Module:Protection banner/config</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:Protection_banner/config&amp;diff=2506"/>
		<updated>2025-01-13T18:27:08Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:Protection_banner/config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides configuration data for [[Module:Protection banner]].&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                                BANNER DATA&lt;br /&gt;
--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Banner data consists of six fields:&lt;br /&gt;
-- * text - the main protection text that appears at the top of protection&lt;br /&gt;
--   banners.&lt;br /&gt;
-- * explanation - the text that appears below the main protection text, used&lt;br /&gt;
--   to explain the details of the protection.&lt;br /&gt;
-- * tooltip - the tooltip text you see when you move the mouse over a small&lt;br /&gt;
--   padlock icon.&lt;br /&gt;
-- * link - the page that the small padlock icon links to.&lt;br /&gt;
-- * alt - the alt text for the small padlock icon. This is also used as tooltip&lt;br /&gt;
--   text for the large protection banners.&lt;br /&gt;
-- * image - the padlock image used in both protection banners and small padlock&lt;br /&gt;
--   icons.&lt;br /&gt;
--&lt;br /&gt;
-- The module checks in three separate tables to find a value for each field.&lt;br /&gt;
-- First it checks the banners table, which has values specific to the reason&lt;br /&gt;
-- for the page being protected. Then the module checks the defaultBanners&lt;br /&gt;
-- table, which has values specific to each protection level. Finally, the&lt;br /&gt;
-- module checks the masterBanner table, which holds data for protection&lt;br /&gt;
-- templates to use if no data has been found in the previous two tables.&lt;br /&gt;
--&lt;br /&gt;
-- The values in the banner data can take parameters. These are specified&lt;br /&gt;
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name&lt;br /&gt;
-- enclosed in curly braces).&lt;br /&gt;
--&lt;br /&gt;
--                          Available parameters:&lt;br /&gt;
--&lt;br /&gt;
-- ${CURRENTVERSION} - a link to the page history or the move log, with the&lt;br /&gt;
-- display message &amp;quot;current-version-edit-display&amp;quot; or&lt;br /&gt;
-- &amp;quot;current-version-move-display&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${EDITREQUEST} - a link to create an edit request for the current page.&lt;br /&gt;
--&lt;br /&gt;
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. &amp;quot;Please discuss any changes&lt;br /&gt;
-- on the talk page; you may submit a request to ask an administrator to make&lt;br /&gt;
-- an edit if it is minor or supported by consensus.&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${IMAGELINK} - a link to set the image to, depending on the protection&lt;br /&gt;
-- action and protection level.&lt;br /&gt;
--&lt;br /&gt;
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry&lt;br /&gt;
-- is set. E.g. &amp;quot;Editing of this page by new or unregistered users is currently &lt;br /&gt;
-- disabled until dd Month YYYY.&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation&lt;br /&gt;
-- so that it can be used in run-on sentences.&lt;br /&gt;
--&lt;br /&gt;
-- ${PAGETYPE} - the type of the page, e.g. &amp;quot;article&amp;quot; or &amp;quot;template&amp;quot;.&lt;br /&gt;
-- Defined in the cfg.pagetypes table.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.&lt;br /&gt;
-- &amp;quot;Editing of this page by new or unregistered users is currently disabled&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the&lt;br /&gt;
-- template.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONLEVEL} - the protection level, e.g. &amp;quot;fully protected&amp;quot; or&lt;br /&gt;
-- &amp;quot;semi-protected&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,&lt;br /&gt;
-- depending on the protection action.&lt;br /&gt;
--&lt;br /&gt;
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links&lt;br /&gt;
-- straight to that talk page section.&lt;br /&gt;
--&lt;br /&gt;
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to&lt;br /&gt;
-- create a blurb like &amp;quot;This template is semi-protected&amp;quot;, or &amp;quot;This article is&lt;br /&gt;
-- move-protected until DD Month YYYY&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${VANDAL} - links for the specified username (or the root page name)&lt;br /&gt;
-- using Module:Vandal-m.&lt;br /&gt;
--&lt;br /&gt;
--                                 Functions&lt;br /&gt;
--&lt;br /&gt;
-- For advanced users, it is possible to use Lua functions instead of strings&lt;br /&gt;
-- in the banner config tables. Using functions gives flexibility that is not&lt;br /&gt;
-- possible just by using parameters. Functions take two arguments, the&lt;br /&gt;
-- protection object and the template arguments, and they must output a string.&lt;br /&gt;
--&lt;br /&gt;
-- For example:&lt;br /&gt;
--&lt;br /&gt;
-- text = function (protectionObj, args)&lt;br /&gt;
--     if protectionObj.level == &#039;autoconfirmed&#039; then&lt;br /&gt;
--         return &#039;foo&#039;&lt;br /&gt;
--     else&lt;br /&gt;
--         return &#039;bar&#039;&lt;br /&gt;
--     end&lt;br /&gt;
-- end&lt;br /&gt;
--&lt;br /&gt;
-- Some protection object properties and methods that may be useful:&lt;br /&gt;
-- protectionObj.action - the protection action&lt;br /&gt;
-- protectionObj.level - the protection level&lt;br /&gt;
-- protectionObj.reason - the protection reason&lt;br /&gt;
-- protectionObj.expiry - the expiry. Nil if unset, the string &amp;quot;indef&amp;quot; if set&lt;br /&gt;
--     to indefinite, and the protection time in unix time if temporary.&lt;br /&gt;
-- protectionObj.protectionDate - the protection date in unix time, or nil if&lt;br /&gt;
--     unspecified.&lt;br /&gt;
-- protectionObj.bannerConfig - the banner config found by the module. Beware&lt;br /&gt;
--     of editing the config field used by the function, as it could create an&lt;br /&gt;
--     infinite loop.&lt;br /&gt;
-- protectionObj:isProtected - returns a boolean showing whether the page is&lt;br /&gt;
--     protected.&lt;br /&gt;
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is&lt;br /&gt;
--     temporary.&lt;br /&gt;
-- protectionObj:isIncorrect - returns a boolean showing whether the protection&lt;br /&gt;
--     template is incorrect.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- The master banner data, used if no values have been found in banners or&lt;br /&gt;
-- defaultBanners.&lt;br /&gt;
masterBanner = {&lt;br /&gt;
	text = &#039;${INTROBLURB}&#039;,&lt;br /&gt;
	explanation = &#039;${EXPLANATIONBLURB}&#039;,&lt;br /&gt;
	tooltip = &#039;${TOOLTIPBLURB}&#039;,&lt;br /&gt;
	link = &#039;${IMAGELINK}&#039;,&lt;br /&gt;
	alt = &#039;Page ${PROTECTIONLEVEL}&#039;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The default banner data. This holds banner data for different protection&lt;br /&gt;
-- levels.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
defaultBanners = {&lt;br /&gt;
	edit = {},&lt;br /&gt;
	move = {},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			alt = &#039;Page protected with pending changes&#039;,&lt;br /&gt;
			tooltip = &#039;All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users&#039;,&lt;br /&gt;
			image = &#039;Pending-protection-shackle.svg&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	upload = {}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The banner data. This holds banner data for different protection reasons.&lt;br /&gt;
-- In fact, the reasons specified in this table control which reasons are&lt;br /&gt;
-- valid inputs to the first positional parameter.&lt;br /&gt;
--&lt;br /&gt;
-- There is also a non-standard &amp;quot;description&amp;quot; field that can be used for items&lt;br /&gt;
-- in this table. This is a description of the protection reason for use in the&lt;br /&gt;
-- module documentation.&lt;br /&gt;
--&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
banners = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		blp = {&lt;br /&gt;
			description = &#039;For pages protected to promote compliance with the&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Biographies of living persons&#039;&lt;br /&gt;
				.. &#039;|biographies of living persons]] policy&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} to promote compliance with&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Biographies of living persons&#039;&lt;br /&gt;
				.. &amp;quot;|Wikipedia&#039;s&amp;amp;nbsp;policy on&amp;amp;nbsp;the&amp;amp;nbsp;biographies&amp;quot;&lt;br /&gt;
				.. &#039; of&amp;amp;nbsp;living&amp;amp;nbsp;people]].&#039;,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} to promote compliance with the policy on&#039;&lt;br /&gt;
				.. &#039; biographies of living persons&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		dmca = {&lt;br /&gt;
			description = &#039;For pages protected by the Wikimedia Foundation&#039;&lt;br /&gt;
				.. &#039; due to [[Digital Millennium Copyright Act]] takedown requests&#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;Pursuant to a rights owner notice under the Digital&#039;&lt;br /&gt;
					.. &#039; Millennium Copyright Act (DMCA) regarding some content&#039;&lt;br /&gt;
					.. &#039; in this article, the Wikimedia Foundation acted under&#039;&lt;br /&gt;
					.. &#039; applicable law and took down and restricted the content&#039;&lt;br /&gt;
					.. &#039; in question.&#039;&lt;br /&gt;
				if args.notice then&lt;br /&gt;
					ret = ret .. &#039; A copy of the received notice can be found here: &#039;&lt;br /&gt;
						.. args.notice .. &#039;.&#039;&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. &#039; For more information, including websites discussing&#039;&lt;br /&gt;
					.. &#039; how to file a counter-notice, please see&#039;&lt;br /&gt;
					.. &amp;quot; [[Wikipedia:Office actions]] and the article&#039;s ${TALKPAGE}.&amp;quot;&lt;br /&gt;
					.. &amp;quot;&#039;&#039;&#039;Do not remove this template from the article until the&amp;quot;&lt;br /&gt;
					.. &amp;quot; restrictions are withdrawn&#039;&#039;&#039;.&amp;quot;&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = &#039;Office-protection-shackle.svg&#039;,&lt;br /&gt;
			link = &#039;Wikipedia:Protection policy#office&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = &#039;For pages protected due to editing disputes&#039;,&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				-- Find the value of &amp;quot;disputes&amp;quot;.&lt;br /&gt;
				local display = &#039;disputes&#039;&lt;br /&gt;
				local disputes&lt;br /&gt;
				if args.section then&lt;br /&gt;
					disputes = string.format(&lt;br /&gt;
						&#039;[[%s:%s#%s|%s]]&#039;,&lt;br /&gt;
						mw.site.namespaces[protectionObj.title.namespace].talk.name,&lt;br /&gt;
						protectionObj.title.text,&lt;br /&gt;
						args.section,&lt;br /&gt;
						display&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					disputes = display&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- Make the blurb, depending on the expiry.&lt;br /&gt;
				local msg&lt;br /&gt;
				if type(protectionObj.expiry) == &#039;number&#039; then&lt;br /&gt;
					msg = &#039;${INTROFRAGMENT} or until editing %s have been resolved.&#039;&lt;br /&gt;
				else&lt;br /&gt;
					msg = &#039;${INTROFRAGMENT} until editing %s have been resolved.&#039;&lt;br /&gt;
				end&lt;br /&gt;
				return string.format(msg, disputes)&lt;br /&gt;
			end,&lt;br /&gt;
			explanation = &amp;quot;This protection is &#039;&#039;&#039;not&#039;&#039;&#039; an endorsement of the&amp;quot;&lt;br /&gt;
				.. &#039; ${CURRENTVERSION}. ${EXPLANATIONBLURB}&#039;,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} due to editing disputes&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		ecp = {&lt;br /&gt;
			description = &#039;For articles in topic areas authorized by&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Arbitration Committee|ArbCom]] or&#039;&lt;br /&gt;
				.. &#039; meets the criteria for community use&#039;,&lt;br /&gt;
			tooltip = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}&#039;,&lt;br /&gt;
			alt = &#039;Extended-protected ${PAGETYPE}&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		mainpage = {&lt;br /&gt;
			description = &#039;For pages protected for being displayed on the [[Main Page]]&#039;,&lt;br /&gt;
			text = &#039;This file is currently&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:This page is protected|protected]] from&#039;&lt;br /&gt;
				.. &#039; editing because it is currently or will soon be displayed&#039;&lt;br /&gt;
				.. &#039; on the [[Main Page]].&#039;,&lt;br /&gt;
			explanation = &#039;Images on the Main Page are protected due to their high&#039;&lt;br /&gt;
				.. &#039; visibility. Please discuss any necessary changes on the ${TALKPAGE}.&#039;&lt;br /&gt;
				.. &#039;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &amp;quot;&#039;&#039;&#039;Administrators:&#039;&#039;&#039; Once this image is definitely off the Main Page,&amp;quot;&lt;br /&gt;
				.. &#039; please unprotect this file, or reduce to semi-protection,&#039;&lt;br /&gt;
				.. &#039; as appropriate.&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		office = {&lt;br /&gt;
			description = &#039;For pages protected by the Wikimedia Foundation&#039;,&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;This ${PAGETYPE} is currently under the&#039;&lt;br /&gt;
					.. &#039; scrutiny of the&#039;&lt;br /&gt;
					.. &#039; [[Wikipedia:Office actions|Wikimedia Foundation Office]]&#039;&lt;br /&gt;
					.. &#039; and is protected.&#039;&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. &#039; It has been protected since ${PROTECTIONDATE}.&#039;&lt;br /&gt;
				end&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			explanation = &amp;quot;If you can edit this page, please discuss all changes and&amp;quot;&lt;br /&gt;
				.. &amp;quot; additions on the ${TALKPAGE} first. &#039;&#039;&#039;Do not remove protection from this&amp;quot;&lt;br /&gt;
				.. &amp;quot; page unless you are authorized by the Wikimedia Foundation to do&amp;quot;&lt;br /&gt;
				.. &amp;quot; so.&#039;&#039;&#039;&amp;quot;,&lt;br /&gt;
			image = &#039;Office-protection-shackle.svg&#039;,&lt;br /&gt;
			link = &#039;Wikipedia:Protection policy#office&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		reset = {&lt;br /&gt;
			description = &#039;For pages protected by the Wikimedia Foundation and&#039;&lt;br /&gt;
				.. &#039; &amp;quot;reset&amp;quot; to a bare-bones version&#039;,&lt;br /&gt;
 			text = &#039;This ${PAGETYPE} is currently under the&#039;&lt;br /&gt;
					.. &#039; scrutiny of the&#039;&lt;br /&gt;
					.. &#039; [[Wikipedia:Office actions|Wikimedia Foundation Office]]&#039;&lt;br /&gt;
					.. &#039; and is protected.&#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;&#039;&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. &#039;On ${PROTECTIONDATE} this ${PAGETYPE} was&#039;&lt;br /&gt;
				else&lt;br /&gt;
					ret = ret .. &#039;This ${PAGETYPE} has been&#039;&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. &#039; reduced to a&#039;&lt;br /&gt;
				.. &#039; simplified, &amp;quot;bare bones&amp;quot; version so that it may be completely&#039;&lt;br /&gt;
				.. &#039; rewritten to ensure it meets the policies of&#039;&lt;br /&gt;
				.. &#039; [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].&#039;&lt;br /&gt;
				.. &#039; Standard Wikipedia policies will apply to its rewriting—which&#039;&lt;br /&gt;
				.. &#039; will eventually be open to all editors—and will be strictly&#039;&lt;br /&gt;
				.. &#039; enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while&#039;&lt;br /&gt;
				.. &#039; it is being rebuilt.\n\n&#039;&lt;br /&gt;
				.. &#039;Any insertion of material directly from&#039;&lt;br /&gt;
				.. &#039; pre-protection revisions of the ${PAGETYPE} will be removed, as&#039;&lt;br /&gt;
				.. &#039; will any material added to the ${PAGETYPE} that is not properly&#039;&lt;br /&gt;
				.. &#039; sourced. The associated talk page(s) were also cleared on the&#039;&lt;br /&gt;
				.. &amp;quot; same date.\n\n&amp;quot;&lt;br /&gt;
				.. &amp;quot;If you can edit this page, please discuss all changes and&amp;quot;&lt;br /&gt;
				.. &amp;quot; additions on the ${TALKPAGE} first. &#039;&#039;&#039;Do not override&amp;quot;&lt;br /&gt;
				.. &amp;quot; this action, and do not remove protection from this page,&amp;quot;&lt;br /&gt;
				.. &amp;quot; unless you are authorized by the Wikimedia Foundation&amp;quot;&lt;br /&gt;
				.. &amp;quot; to do so. No editor may remove this notice.&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = &#039;Office-protection-shackle.svg&#039;,&lt;br /&gt;
			link = &#039;Wikipedia:Protection policy#office&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		sock = {&lt;br /&gt;
			description = &#039;For pages protected due to&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Sock puppetry|sock puppetry]]&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Blocking policy|blocked]] or&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Banning policy|banned users]]&#039;&lt;br /&gt;
				.. &#039; from editing it.&#039;,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from&#039;&lt;br /&gt;
				.. &#039; editing it&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		template = {&lt;br /&gt;
			description = &#039;For [[Wikipedia:High-risk templates|high-risk]]&#039;&lt;br /&gt;
				.. &#039; templates and Lua modules&#039;,&lt;br /&gt;
			text = &#039;This is a permanently [[Help:Protection|protected]] ${PAGETYPE},&#039;&lt;br /&gt;
				.. &#039; as it is [[Wikipedia:High-risk templates|high-risk]].&#039;,&lt;br /&gt;
			explanation = &#039;Please discuss any changes on the ${TALKPAGE}; you may&#039;&lt;br /&gt;
				.. &#039; ${EDITREQUEST} to ask an&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Administrators|administrator]] or&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Template editor|template editor]] to make an edit if&#039;&lt;br /&gt;
				.. &#039; it is [[Help:Minor edit#When to mark an edit as a minor edit&#039;&lt;br /&gt;
				.. &#039;|uncontroversial]] or supported by&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Consensus|consensus]]. You can also&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection|request]] that the page be&#039;&lt;br /&gt;
				.. &#039; unprotected.&#039;,&lt;br /&gt;
			tooltip = &#039;This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}&#039;&lt;br /&gt;
				.. &#039; to prevent vandalism&#039;,&lt;br /&gt;
			alt = &#039;Permanently protected ${PAGETYPE}&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		usertalk = {&lt;br /&gt;
			description = &#039;For pages protected against disruptive edits by a&#039;&lt;br /&gt;
				.. &#039; particular user&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,&#039;&lt;br /&gt;
				.. &#039; such as abusing the&#039;&lt;br /&gt;
				.. &#039; &amp;amp;#123;&amp;amp;#123;[[Template:unblock|unblock]]&amp;amp;#125;&amp;amp;#125; template.&#039;,&lt;br /&gt;
			explanation = &#039;If you cannot edit this user talk page and you need to&#039;&lt;br /&gt;
				.. &#039; make a change or leave a message, you can&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for edits to a protected page&#039;&lt;br /&gt;
				.. &#039;|request an edit]],&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]],&#039;&lt;br /&gt;
				.. &#039; [[Special:Userlogin|log in]],&#039;&lt;br /&gt;
				.. &#039; or [[Special:UserLogin/signup|create an account]].&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = &#039;For pages protected against&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Vandalism|vandalism]]&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].&#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;&#039;&lt;br /&gt;
				if protectionObj.level == &#039;sysop&#039; then&lt;br /&gt;
					ret = ret .. &amp;quot;This protection is &#039;&#039;&#039;not&#039;&#039;&#039; an endorsement of the&amp;quot;&lt;br /&gt;
						.. &#039; ${CURRENTVERSION}. &#039;&lt;br /&gt;
				end&lt;br /&gt;
				return ret .. &#039;${EXPLANATIONBLURB}&#039;&lt;br /&gt;
			end,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} due to vandalism&#039;,&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = &#039;For pages protected against page moves due to&#039;&lt;br /&gt;
				.. &#039; disputes over the page title&#039;,&lt;br /&gt;
			explanation = &amp;quot;This protection is &#039;&#039;&#039;not&#039;&#039;&#039; an endorsement of the&amp;quot;&lt;br /&gt;
				.. &#039; ${CURRENTVERSION}. ${EXPLANATIONBLURB}&#039;,&lt;br /&gt;
			image = &#039;Move-protection-shackle.svg&#039;&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = &#039;For pages protected against&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Vandalism#Page-move vandalism&#039;&lt;br /&gt;
				.. &#039; |page-move vandalism]]&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {},&lt;br /&gt;
	upload = {}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                            GENERAL DATA TABLES&lt;br /&gt;
--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection blurbs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the protection blurbs available with the&lt;br /&gt;
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and&lt;br /&gt;
-- protection level, and is checked by the module in the following order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#039;s protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
protectionBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;This ${PAGETYPE} is currently [[Help:Protection|&#039;&lt;br /&gt;
			.. &#039;protected]] from editing&#039;,&lt;br /&gt;
		autoconfirmed = &#039;Editing of this ${PAGETYPE} by [[Wikipedia:User access&#039;&lt;br /&gt;
			.. &#039; levels#New users|new]] or [[Wikipedia:User access levels#Unregistered&#039;&lt;br /&gt;
			.. &#039; users|unregistered]] users is currently [[Help:Protection|disabled]]&#039;,&lt;br /&gt;
		extendedconfirmed = &#039;This ${PAGETYPE} is currently under extended confirmed protection&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;This ${PAGETYPE} is currently [[Help:Protection|protected]]&#039;&lt;br /&gt;
			.. &#039; from [[Help:Moving a page|page moves]]&#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = &#039;All edits made to this ${PAGETYPE} by&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:User access levels#New users|new]] or&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:User access levels#Unregistered users|unregistered]]&#039;&lt;br /&gt;
			.. &#039; users are currently&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:Pending changes|subject to review]]&#039;&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &#039;Uploading new versions of this ${PAGETYPE} is currently disabled&#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Explanation blurbs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the explanation blurbs available with the&lt;br /&gt;
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,&lt;br /&gt;
-- protection level, and whether the page is a talk page or not. If the page is&lt;br /&gt;
-- a talk page it will have a talk key of &amp;quot;talk&amp;quot;; otherwise it will have a talk&lt;br /&gt;
-- key of &amp;quot;subject&amp;quot;. The table is checked in the following order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level, page&#039;s talk key&lt;br /&gt;
-- 2. page&#039;s protection action, page&#039;s protection level, default talk key&lt;br /&gt;
-- 3. page&#039;s protection action, default protection level, page&#039;s talk key&lt;br /&gt;
-- 4. page&#039;s protection action, default protection level, default talk key&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
explanationBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		autoconfirmed = {&lt;br /&gt;
			subject = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details. If you&#039;&lt;br /&gt;
				.. &#039; cannot edit this ${PAGETYPE} and you wish to make a change, you can&#039;&lt;br /&gt;
				.. &#039; ${EDITREQUEST}, discuss changes on the ${TALKPAGE},&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]], [[Special:Userlogin|log in]], or&#039;&lt;br /&gt;
				.. &#039; [[Special:UserLogin/signup|create an account]].&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details. If you&#039;&lt;br /&gt;
				.. &#039; cannot edit this ${PAGETYPE} and you wish to make a change, you can&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]], [[Special:Userlogin|log in]], or&#039;&lt;br /&gt;
				.. &#039; [[Special:UserLogin/signup|create an account]].&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		extendedconfirmed = {&lt;br /&gt;
			default = &#039;Extended confirmed protection prevents edits from all unregistered editors&#039;&lt;br /&gt;
				.. &#039; and registered users with fewer than 30 days tenure and 500 edits.&#039;&lt;br /&gt;
				.. &#039; The [[Wikipedia:Protection policy#extended|policy on community use]]&#039;&lt;br /&gt;
				.. &#039; specifies that extended confirmed protection can be applied to combat&#039;&lt;br /&gt;
				.. &#039; disruption, if semi-protection has proven to be ineffective.&#039;&lt;br /&gt;
				.. &#039; Extended confirmed protection may also be applied to enforce&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Arbitration Committee|arbitration sanctions]].&#039;&lt;br /&gt;
				.. &#039; Please discuss any changes on the ${TALKPAGE}; you may&#039;&lt;br /&gt;
				.. &#039; ${EDITREQUEST} to ask for uncontroversial changes supported by&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Consensus|consensus]].&#039;&lt;br /&gt;
		},&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; Please discuss any changes on the ${TALKPAGE}; you&#039;&lt;br /&gt;
				.. &#039; may ${EDITREQUEST} to ask an&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Administrators|administrator]] to make an edit if it&#039;&lt;br /&gt;
				.. &#039; is [[Help:Minor edit#When to mark an edit as a minor edit&#039;&lt;br /&gt;
				.. &#039;|uncontroversial]] or supported by [[Wikipedia:Consensus&#039;&lt;br /&gt;
				.. &#039;|consensus]]. You may also [[Wikipedia:Requests for&#039;&lt;br /&gt;
				.. &#039; page protection#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request]] that this page be unprotected.&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; You may [[Wikipedia:Requests for page&#039;&lt;br /&gt;
				.. &#039; protection#Current requests for edits to a protected page|request an&#039;&lt;br /&gt;
				.. &#039; edit]] to this page, or [[Wikipedia:Requests for&#039;&lt;br /&gt;
				.. &#039; page protection#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|ask]] for it to be unprotected.&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; The page may still be edited but cannot be moved&#039;&lt;br /&gt;
				.. &#039; until unprotected. Please discuss any suggested moves on the&#039;&lt;br /&gt;
				.. &#039; ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection|request]] that the page be&#039;&lt;br /&gt;
				.. &#039; unprotected.&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; The page may still be edited but cannot be moved&#039;&lt;br /&gt;
				.. &#039; until unprotected. Please discuss any suggested moves at&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requested moves]]. You can also&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection|request]] that the page be&#039;&lt;br /&gt;
				.. &#039; unprotected.&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; Edits to this ${PAGETYPE} by new and unregistered users&#039;&lt;br /&gt;
				.. &#039; will not be visible to readers until they are accepted by&#039;&lt;br /&gt;
				.. &#039; a reviewer. To avoid the need for your edits to be&#039;&lt;br /&gt;
				.. &#039; reviewed, you may&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]], [[Special:Userlogin|log in]], or&#039;&lt;br /&gt;
				.. &#039; [[Special:UserLogin/signup|create an account]].&#039;&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = {&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; The page may still be edited but new versions of the file&#039;&lt;br /&gt;
				.. &#039; cannot be uploaded until it is unprotected. You can&#039;&lt;br /&gt;
				.. &#039; request that a new version be uploaded by using a&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Edit requests|protected edit request]], or you&#039;&lt;br /&gt;
				.. &#039; can  [[Wikipedia:Requests for page protection|request]]&#039;&lt;br /&gt;
				.. &#039; that the file be unprotected.&#039;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection levels&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which&lt;br /&gt;
-- produces a short label for different protection levels. It is sorted by&lt;br /&gt;
-- protection action and protection level, and is checked in the following&lt;br /&gt;
-- order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#039;s protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
protectionLevels = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;protected&#039;,&lt;br /&gt;
		templateeditor = &#039;template-protected&#039;,&lt;br /&gt;
		extendedconfirmed = &#039;extended-confirmed-protected&#039;,&lt;br /&gt;
		autoconfirmed = &#039;semi-protected&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;move-protected&#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &#039;upload-protected&#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Images&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table lists different padlock images for each protection action and&lt;br /&gt;
-- protection level. It is used if an image is not specified in any of the&lt;br /&gt;
-- banner data tables, and if the page does not satisfy the conditions for using&lt;br /&gt;
-- the [&#039;image-filename-indef&#039;] image. It is checked in the following order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#039;s protection action, default protection level&lt;br /&gt;
images = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;Full-protection-shackle.svg&#039;,&lt;br /&gt;
		templateeditor = &#039;Template-protection-shackle.svg&#039;,&lt;br /&gt;
		extendedconfirmed = &#039;Extended-protection-shackle.svg&#039;,&lt;br /&gt;
		autoconfirmed = &#039;Semi-protection-shackle.svg&#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;Move-protection-shackle.svg&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = &#039;Pending-protection-shackle.svg&#039;&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &#039;Upload-protection-shackle.svg&#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- Pages with a reason specified in this table will show the special &amp;quot;indef&amp;quot;&lt;br /&gt;
-- padlock, defined in the &#039;image-filename-indef&#039; message, if no expiry is set.&lt;br /&gt;
indefImageReasons = {&lt;br /&gt;
	template = true&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Image links&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the ${IMAGELINK} parameter, which gets&lt;br /&gt;
-- the image link for small padlock icons based on the page&#039;s protection action&lt;br /&gt;
-- and protection level. It is checked in the following order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#039;s protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
imageLinks = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;Wikipedia:Protection policy#full&#039;,&lt;br /&gt;
		templateeditor = &#039;Wikipedia:Protection policy#template&#039;,&lt;br /&gt;
		extendedconfirmed = &#039;Wikipedia:Protection policy#extended&#039;,&lt;br /&gt;
		autoconfirmed = &#039;Wikipedia:Protection policy#semi&#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;Wikipedia:Protection policy#move&#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = &#039;Wikipedia:Protection policy#pending&#039;&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = &#039;Wikipedia:Protection policy#upload&#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock indicator names&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the &amp;quot;name&amp;quot; attribute for the &amp;lt;indicator&amp;gt; extension tag&lt;br /&gt;
-- with which small padlock icons are generated. All indicator tags on a page&lt;br /&gt;
-- are displayed in alphabetical order based on this attribute, and with&lt;br /&gt;
-- indicator tags with duplicate names, the last tag on the page wins.&lt;br /&gt;
-- The attribute is chosen based on the protection action; table keys must be a&lt;br /&gt;
-- protection action name or the string &amp;quot;default&amp;quot;.&lt;br /&gt;
padlockIndicatorNames = {&lt;br /&gt;
	autoreview = &#039;pp-autoreview&#039;,&lt;br /&gt;
	default = &#039;pp-default&#039;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection categories&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- The protection categories are stored in the protectionCategories table.&lt;br /&gt;
-- Keys to this table are made up of the following strings:&lt;br /&gt;
--&lt;br /&gt;
-- 1. the expiry date&lt;br /&gt;
-- 2. the namespace&lt;br /&gt;
-- 3. the protection reason (e.g. &amp;quot;dispute&amp;quot; or &amp;quot;vandalism&amp;quot;)&lt;br /&gt;
-- 4. the protection level (e.g. &amp;quot;sysop&amp;quot; or &amp;quot;autoconfirmed&amp;quot;)&lt;br /&gt;
-- 5. the action (e.g. &amp;quot;edit&amp;quot; or &amp;quot;move&amp;quot;)&lt;br /&gt;
-- &lt;br /&gt;
-- When the module looks up a category in the table, first it will will check to&lt;br /&gt;
-- see a key exists that corresponds to all five parameters. For example, a&lt;br /&gt;
-- user page semi-protected from vandalism for two weeks would have the key&lt;br /&gt;
-- &amp;quot;temp-user-vandalism-autoconfirmed-edit&amp;quot;. If no match is found, the module&lt;br /&gt;
-- changes the first part of the key to &amp;quot;all&amp;quot; and checks the table again. It&lt;br /&gt;
-- keeps checking increasingly generic key combinations until it finds the&lt;br /&gt;
-- field, or until it reaches the key &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- The module uses a binary matrix to determine the order in which to search.&lt;br /&gt;
-- This is best demonstrated by a table. In this table, the &amp;quot;0&amp;quot; values&lt;br /&gt;
-- represent &amp;quot;all&amp;quot;, and the &amp;quot;1&amp;quot; values represent the original data (e.g.&lt;br /&gt;
-- &amp;quot;indef&amp;quot; or &amp;quot;file&amp;quot; or &amp;quot;vandalism&amp;quot;).&lt;br /&gt;
--&lt;br /&gt;
--        expiry    namespace reason   level     action&lt;br /&gt;
-- order&lt;br /&gt;
-- 1      1         1         1        1         1&lt;br /&gt;
-- 2      0         1         1        1         1&lt;br /&gt;
-- 3      1         0         1        1         1&lt;br /&gt;
-- 4      0         0         1        1         1&lt;br /&gt;
-- 5      1         1         0        1         1&lt;br /&gt;
-- 6      0         1         0        1         1&lt;br /&gt;
-- 7      1         0         0        1         1&lt;br /&gt;
-- 8      0         0         0        1         1&lt;br /&gt;
-- 9      1         1         1        0         1&lt;br /&gt;
-- 10     0         1         1        0         1&lt;br /&gt;
-- 11     1         0         1        0         1&lt;br /&gt;
-- 12     0         0         1        0         1&lt;br /&gt;
-- 13     1         1         0        0         1&lt;br /&gt;
-- 14     0         1         0        0         1&lt;br /&gt;
-- 15     1         0         0        0         1&lt;br /&gt;
-- 16     0         0         0        0         1&lt;br /&gt;
-- 17     1         1         1        1         0&lt;br /&gt;
-- 18     0         1         1        1         0&lt;br /&gt;
-- 19     1         0         1        1         0&lt;br /&gt;
-- 20     0         0         1        1         0&lt;br /&gt;
-- 21     1         1         0        1         0&lt;br /&gt;
-- 22     0         1         0        1         0&lt;br /&gt;
-- 23     1         0         0        1         0&lt;br /&gt;
-- 24     0         0         0        1         0&lt;br /&gt;
-- 25     1         1         1        0         0&lt;br /&gt;
-- 26     0         1         1        0         0&lt;br /&gt;
-- 27     1         0         1        0         0&lt;br /&gt;
-- 28     0         0         1        0         0&lt;br /&gt;
-- 29     1         1         0        0         0&lt;br /&gt;
-- 30     0         1         0        0         0&lt;br /&gt;
-- 31     1         0         0        0         0&lt;br /&gt;
-- 32     0         0         0        0         0&lt;br /&gt;
--&lt;br /&gt;
-- In this scheme the action has the highest priority, as it is the last&lt;br /&gt;
-- to change, and the expiry has the least priority, as it changes the most.&lt;br /&gt;
-- The priorities of the expiry, the protection level and the action are&lt;br /&gt;
-- fixed, but the priorities of the reason and the namespace can be swapped&lt;br /&gt;
-- through the use of the cfg.bannerDataNamespaceHasPriority table.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- If the reason specified to the template is listed in this table,&lt;br /&gt;
-- namespace data will take priority over reason data in the protectionCategories&lt;br /&gt;
-- table.&lt;br /&gt;
reasonsWithNamespacePriority = {&lt;br /&gt;
	vandalism = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The string to use as a namespace key for the protectionCategories table for each&lt;br /&gt;
-- namespace number.&lt;br /&gt;
categoryNamespaceKeys = {&lt;br /&gt;
	[  2] = &#039;user&#039;,&lt;br /&gt;
	[  3] = &#039;user&#039;,&lt;br /&gt;
	[  4] = &#039;project&#039;,&lt;br /&gt;
	[  6] = &#039;file&#039;,&lt;br /&gt;
	[  8] = &#039;mediawiki&#039;,&lt;br /&gt;
	[ 10] = &#039;template&#039;,&lt;br /&gt;
	[ 12] = &#039;project&#039;,&lt;br /&gt;
	[ 14] = &#039;category&#039;,&lt;br /&gt;
	[100] = &#039;portal&#039;,&lt;br /&gt;
	[828] = &#039;module&#039;,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
protectionCategories = {&lt;br /&gt;
	[&#039;all|all|all|all|all&#039;]                     = &#039;Wikipedia fully protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|office|all|all&#039;]                  = &#039;Wikipedia Office-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|reset|all|all&#039;]                   = &#039;Wikipedia Office-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|dmca|all|all&#039;]                    = &#039;Wikipedia Office-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|mainpage|all|all&#039;]                = &#039;Wikipedia fully protected main page files&#039;,&lt;br /&gt;
	[&#039;all|all|all|extendedconfirmed|all&#039;]       = &#039;Wikipedia extended-confirmed-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|ecp|extendedconfirmed|all&#039;]       = &#039;Wikipedia extended-confirmed-protected pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|all|edit&#039;]               = &#039;Wikipedia fully protected templates&#039;,&lt;br /&gt;
	[&#039;all|all|all|autoconfirmed|edit&#039;]          = &#039;Wikipedia semi-protected pages&#039;,&lt;br /&gt;
	[&#039;indef|all|all|autoconfirmed|edit&#039;]        = &#039;Wikipedia indefinitely semi-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|blp|autoconfirmed|edit&#039;]          = &#039;Wikipedia indefinitely semi-protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;temp|all|blp|autoconfirmed|edit&#039;]         = &#039;Wikipedia temporarily semi-protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;all|all|dispute|autoconfirmed|edit&#039;]      = &#039;Wikipedia pages semi-protected due to dispute&#039;,&lt;br /&gt;
	[&#039;all|all|sock|autoconfirmed|edit&#039;]         = &#039;Wikipedia pages semi-protected from banned users&#039;,&lt;br /&gt;
	[&#039;all|all|vandalism|autoconfirmed|edit&#039;]    = &#039;Wikipedia pages semi-protected against vandalism&#039;,&lt;br /&gt;
	[&#039;all|category|all|autoconfirmed|edit&#039;]     = &#039;Wikipedia semi-protected categories&#039;,&lt;br /&gt;
	[&#039;all|file|all|autoconfirmed|edit&#039;]         = &#039;Wikipedia semi-protected files&#039;,&lt;br /&gt;
	[&#039;all|portal|all|autoconfirmed|edit&#039;]       = &#039;Wikipedia semi-protected portals&#039;,&lt;br /&gt;
	[&#039;all|project|all|autoconfirmed|edit&#039;]      = &#039;Wikipedia semi-protected project pages&#039;,&lt;br /&gt;
	[&#039;all|talk|all|autoconfirmed|edit&#039;]         = &#039;Wikipedia semi-protected talk pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|autoconfirmed|edit&#039;]     = &#039;Wikipedia semi-protected templates&#039;,&lt;br /&gt;
	[&#039;all|user|all|autoconfirmed|edit&#039;]         = &#039;Wikipedia semi-protected user and user talk pages&#039;,&lt;br /&gt;
	[&#039;all|all|all|templateeditor|move&#039;]         = &#039;Wikipedia template-protected pages other than templates and modules&#039;,&lt;br /&gt;
	[&#039;all|all|all|templateeditor|edit&#039;]         = &#039;Wikipedia template-protected pages other than templates and modules&#039;,&lt;br /&gt;
	[&#039;all|template|all|templateeditor|edit&#039;]    = &#039;Wikipedia template-protected templates&#039;,&lt;br /&gt;
	[&#039;all|template|all|templateeditor|move&#039;]    = &#039;Wikipedia template-protected templates&#039;, -- move-protected templates&lt;br /&gt;
	[&#039;all|all|blp|sysop|edit&#039;]                  = &#039;Wikipedia indefinitely protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;temp|all|blp|sysop|edit&#039;]                 = &#039;Wikipedia temporarily protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;all|all|dispute|sysop|edit&#039;]              = &#039;Wikipedia pages protected due to dispute&#039;,&lt;br /&gt;
	[&#039;all|all|sock|sysop|edit&#039;]                 = &#039;Wikipedia pages protected from banned users&#039;,&lt;br /&gt;
	[&#039;all|all|vandalism|sysop|edit&#039;]            = &#039;Wikipedia pages protected against vandalism&#039;,&lt;br /&gt;
	[&#039;all|category|all|sysop|edit&#039;]             = &#039;Wikipedia fully protected categories&#039;,&lt;br /&gt;
	[&#039;all|file|all|sysop|edit&#039;]                 = &#039;Wikipedia fully protected files&#039;,&lt;br /&gt;
	[&#039;all|project|all|sysop|edit&#039;]              = &#039;Wikipedia fully protected project pages&#039;,&lt;br /&gt;
	[&#039;all|talk|all|sysop|edit&#039;]                 = &#039;Wikipedia fully protected talk pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|extendedconfirmed|edit&#039;] = &#039;Wikipedia extended-confirmed-protected templates&#039;,&lt;br /&gt;
	[&#039;all|template|all|sysop|edit&#039;]             = &#039;Wikipedia fully protected templates&#039;,&lt;br /&gt;
	[&#039;all|user|all|sysop|edit&#039;]                 = &#039;Wikipedia fully protected user and user talk pages&#039;,&lt;br /&gt;
	[&#039;all|module|all|all|edit&#039;]                 = &#039;Wikipedia fully protected modules&#039;,&lt;br /&gt;
	[&#039;all|module|all|templateeditor|edit&#039;]      = &#039;Wikipedia template-protected modules&#039;,&lt;br /&gt;
	[&#039;all|module|all|extendedconfirmed|edit&#039;]   = &#039;Wikipedia extended-confirmed-protected modules&#039;,&lt;br /&gt;
	[&#039;all|module|all|autoconfirmed|edit&#039;]       = &#039;Wikipedia semi-protected modules&#039;,&lt;br /&gt;
	[&#039;all|all|all|sysop|move&#039;]                  = &#039;Wikipedia move-protected pages&#039;,&lt;br /&gt;
	[&#039;indef|all|all|sysop|move&#039;]                = &#039;Wikipedia indefinitely move-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|dispute|sysop|move&#039;]              = &#039;Wikipedia pages move-protected due to dispute&#039;,&lt;br /&gt;
	[&#039;all|all|vandalism|sysop|move&#039;]            = &#039;Wikipedia pages move-protected due to vandalism&#039;,&lt;br /&gt;
	[&#039;all|portal|all|sysop|move&#039;]               = &#039;Wikipedia move-protected portals&#039;,&lt;br /&gt;
	[&#039;all|project|all|sysop|move&#039;]              = &#039;Wikipedia move-protected project pages&#039;,&lt;br /&gt;
	[&#039;all|talk|all|sysop|move&#039;]                 = &#039;Wikipedia move-protected talk pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|sysop|move&#039;]             = &#039;Wikipedia move-protected templates&#039;,&lt;br /&gt;
	[&#039;all|user|all|sysop|move&#039;]                 = &#039;Wikipedia move-protected user and user talk pages&#039;,&lt;br /&gt;
	[&#039;all|all|all|autoconfirmed|autoreview&#039;]    = &#039;Wikipedia pending changes protected pages&#039;,&lt;br /&gt;
	[&#039;all|file|all|all|upload&#039;]                 = &#039;Wikipedia upload-protected files&#039;,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Expiry category config&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table configures the expiry category behaviour for each protection&lt;br /&gt;
-- action.&lt;br /&gt;
-- * If set to true, setting that action will always categorise the page if&lt;br /&gt;
--   an expiry parameter is not set.&lt;br /&gt;
-- * If set to false, setting that action will never categorise the page.&lt;br /&gt;
-- * If set to nil, the module will categorise the page if:&lt;br /&gt;
--   1) an expiry parameter is not set, and&lt;br /&gt;
--   2) a reason is provided, and&lt;br /&gt;
--   3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck&lt;br /&gt;
--      table.&lt;br /&gt;
&lt;br /&gt;
expiryCheckActions = {&lt;br /&gt;
	edit = nil,&lt;br /&gt;
	move = false,&lt;br /&gt;
	autoreview = true,&lt;br /&gt;
	upload = false&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
reasonsWithoutExpiryCheck = {&lt;br /&gt;
	blp = true,&lt;br /&gt;
	template = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Pagetypes&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the page types available with the ${PAGETYPE} parameter.&lt;br /&gt;
-- Keys are namespace numbers, or the string &amp;quot;default&amp;quot; for the default value.&lt;br /&gt;
pagetypes = {&lt;br /&gt;
	[0] = &#039;article&#039;,&lt;br /&gt;
	[6] = &#039;file&#039;,&lt;br /&gt;
	[10] = &#039;template&#039;,&lt;br /&gt;
	[14] = &#039;category&#039;,&lt;br /&gt;
	[828] = &#039;module&#039;,&lt;br /&gt;
	default = &#039;page&#039;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Strings marking indefinite protection&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table contains values passed to the expiry parameter that mean the page&lt;br /&gt;
-- is protected indefinitely.&lt;br /&gt;
indefStrings = {&lt;br /&gt;
	[&#039;indef&#039;] = true,&lt;br /&gt;
	[&#039;indefinite&#039;] = true,&lt;br /&gt;
	[&#039;indefinitely&#039;] = true,&lt;br /&gt;
	[&#039;infinite&#039;] = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Group hierarchy&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table maps each group to all groups that have a superset of the original&lt;br /&gt;
-- group&#039;s page editing permissions.&lt;br /&gt;
hierarchy = {&lt;br /&gt;
	sysop = {},&lt;br /&gt;
	reviewer = {&#039;sysop&#039;},&lt;br /&gt;
	filemover = {&#039;sysop&#039;},&lt;br /&gt;
	templateeditor = {&#039;sysop&#039;},&lt;br /&gt;
	extendedconfirmed = {&#039;sysop&#039;},&lt;br /&gt;
	autoconfirmed = {&#039;reviewer&#039;, &#039;filemover&#039;, &#039;templateeditor&#039;, &#039;extendedconfirmed&#039;},&lt;br /&gt;
	user = {&#039;autoconfirmed&#039;},&lt;br /&gt;
	[&#039;*&#039;] = {&#039;user&#039;}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Wrapper templates and their default arguments&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table contains wrapper templates used with the module, and their&lt;br /&gt;
-- default arguments. Templates specified in this table should contain the&lt;br /&gt;
-- following invocation, and no other template content:&lt;br /&gt;
--&lt;br /&gt;
-- {{#invoke:Protection banner|main}}&lt;br /&gt;
--&lt;br /&gt;
-- If other content is desired, it can be added between&lt;br /&gt;
-- &amp;lt;noinclude&amp;gt;...&amp;lt;/noinclude&amp;gt; tags.&lt;br /&gt;
--&lt;br /&gt;
-- When a user calls one of these wrapper templates, they will use the&lt;br /&gt;
-- default arguments automatically. However, users can override any of the&lt;br /&gt;
-- arguments.&lt;br /&gt;
wrappers = {&lt;br /&gt;
	[&#039;Template:Pp&#039;]                         = {},&lt;br /&gt;
	[&#039;Template:Protection padlock&#039;]         = {},&lt;br /&gt;
	[&#039;Template:Pp-extended&#039;]                = {&#039;ecp&#039;},&lt;br /&gt;
	[&#039;Template:Pp-blp&#039;]                     = {&#039;blp&#039;},&lt;br /&gt;
	-- we don&#039;t need Template:Pp-create&lt;br /&gt;
	[&#039;Template:Pp-dispute&#039;]                 = {&#039;dispute&#039;},&lt;br /&gt;
	[&#039;Template:Pp-main-page&#039;]               = {&#039;mainpage&#039;},&lt;br /&gt;
	[&#039;Template:Pp-move&#039;]                    = {action = &#039;move&#039;, catonly = &#039;yes&#039;},&lt;br /&gt;
	[&#039;Template:Pp-move-dispute&#039;]            = {&#039;dispute&#039;, action = &#039;move&#039;, catonly = &#039;yes&#039;},&lt;br /&gt;
	-- we don&#039;t need Template:Pp-move-indef&lt;br /&gt;
	[&#039;Template:Pp-move-vandalism&#039;]          = {&#039;vandalism&#039;, action = &#039;move&#039;, catonly = &#039;yes&#039;},&lt;br /&gt;
	[&#039;Template:Pp-office&#039;]                  = {&#039;office&#039;},&lt;br /&gt;
	[&#039;Template:Pp-office-dmca&#039;]             = {&#039;dmca&#039;},&lt;br /&gt;
	[&#039;Template:Pp-pc&#039;]                      = {action = &#039;autoreview&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-pc1&#039;]                     = {action = &#039;autoreview&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-reset&#039;]                   = {&#039;reset&#039;},&lt;br /&gt;
	[&#039;Template:Pp-semi-indef&#039;]              = {small = true},&lt;br /&gt;
	[&#039;Template:Pp-sock&#039;]                    = {&#039;sock&#039;},&lt;br /&gt;
	[&#039;Template:Pp-template&#039;]                = {&#039;template&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-upload&#039;]                  = {action = &#039;upload&#039;},&lt;br /&gt;
	[&#039;Template:Pp-usertalk&#039;]                = {&#039;usertalk&#039;},&lt;br /&gt;
	[&#039;Template:Pp-vandalism&#039;]               = {&#039;vandalism&#039;},&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- &lt;br /&gt;
--                                 MESSAGES&lt;br /&gt;
-- &lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
msg = {&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Intro blurb and intro fragment&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages specify what is produced by the ${INTROBLURB} and&lt;br /&gt;
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the&lt;br /&gt;
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use&lt;br /&gt;
-- intro-blurb-noexpiry or intro-fragment-noexpiry.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&#039;intro-blurb-expiry&#039;] = &#039;${PROTECTIONBLURB} until ${EXPIRY}.&#039;,&lt;br /&gt;
[&#039;intro-blurb-noexpiry&#039;] = &#039;${PROTECTIONBLURB}.&#039;,&lt;br /&gt;
[&#039;intro-fragment-expiry&#039;] = &#039;${PROTECTIONBLURB} until ${EXPIRY},&#039;,&lt;br /&gt;
[&#039;intro-fragment-noexpiry&#039;] = &#039;${PROTECTIONBLURB}&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tooltip blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.&lt;br /&gt;
-- If the protection is temporary the tooltip-blurb-expiry message is used, and&lt;br /&gt;
-- if not the tooltip-blurb-noexpiry message is used.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&#039;tooltip-blurb-expiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.&#039;,&lt;br /&gt;
[&#039;tooltip-blurb-noexpiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}.&#039;,&lt;br /&gt;
[&#039;tooltip-fragment-expiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},&#039;,&lt;br /&gt;
[&#039;tooltip-fragment-noexpiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Special explanation blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages&lt;br /&gt;
-- in the MediaWiki namespace.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
[&#039;explanation-blurb-nounprotect&#039;] = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
	.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
	.. &#039; Please discuss any changes on the ${TALKPAGE}; you&#039;&lt;br /&gt;
	.. &#039; may ${EDITREQUEST} to ask an&#039;&lt;br /&gt;
	.. &#039; [[Wikipedia:Administrators|administrator]] to make an edit if it&#039;&lt;br /&gt;
	.. &#039; is [[Help:Minor edit#When to mark an edit as a minor edit&#039;&lt;br /&gt;
	.. &#039;|uncontroversial]] or supported by [[Wikipedia:Consensus&#039;&lt;br /&gt;
	.. &#039;|consensus]].&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection log display values&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine the display values for the protection log link&lt;br /&gt;
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&#039;protection-log-display&#039;] = &#039;protection log&#039;,&lt;br /&gt;
[&#039;pc-log-display&#039;] = &#039;pending changes log&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Current version display values&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine the display values for the page history link&lt;br /&gt;
-- or the move log link produced by the ${CURRENTVERSION} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
[&#039;current-version-move-display&#039;] = &#039;current title&#039;,&lt;br /&gt;
[&#039;current-version-edit-display&#039;] = &#039;current version&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Talk page&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This message determines the display value of the talk page link produced&lt;br /&gt;
-- with the ${TALKPAGE} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
[&#039;talk-page-link-display&#039;] = &#039;talk page&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Edit requests&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This message determines the display value of the edit request link produced&lt;br /&gt;
-- with the ${EDITREQUEST} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
[&#039;edit-request-display&#039;] = &#039;submit an edit request&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Expiry date format&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This is the format for the blurb expiry date. It should be valid input for&lt;br /&gt;
-- the first parameter of the #time parser function.&lt;br /&gt;
[&#039;expiry-date-format&#039;] = &#039;F j, Y &amp;quot;at&amp;quot; H:i e&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking categories&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine which tracking categories the module outputs.&lt;br /&gt;
[&#039;tracking-category-incorrect&#039;] = &#039;Wikipedia pages with incorrect protection templates&#039;,&lt;br /&gt;
[&#039;tracking-category-template&#039;] = &#039;Wikipedia template-protected pages other than templates and modules&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Images&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These are images that are not defined by their protection action and protection level.&lt;br /&gt;
[&#039;image-filename-indef&#039;] = &#039;Full-protection-shackle.svg&#039;,&lt;br /&gt;
[&#039;image-filename-default&#039;] = &#039;Transparent.gif&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End messages&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:FULLROOTPAGENAME&amp;diff=2504</id>
		<title>Template:FULLROOTPAGENAME</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:FULLROOTPAGENAME&amp;diff=2504"/>
		<updated>2025-01-13T18:27:08Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Template:FULLROOTPAGENAME&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ safesubst:&amp;lt;noinclude/&amp;gt;#if: {{ safesubst:&amp;lt;noinclude/&amp;gt;Ns has subpages | {{ safesubst:&amp;lt;noinclude/&amp;gt;#if:{{{1|}}}|{{ safesubst:&amp;lt;noinclude/&amp;gt;NAMESPACE:{{{1}}}}}|{{ safesubst:&amp;lt;noinclude/&amp;gt;NAMESPACE}}}} }} &lt;br /&gt;
  | {{ safesubst:&amp;lt;noinclude/&amp;gt;#titleparts:{{ safesubst:&amp;lt;noinclude/&amp;gt;#if:{{{1|}}}|{{{1}}}|{{ safesubst:&amp;lt;noinclude/&amp;gt;FULLPAGENAME}}}}|1}}&lt;br /&gt;
  | {{ safesubst:&amp;lt;noinclude/&amp;gt;#if:{{{1|}}}|{{{1}}}|{{ safesubst:&amp;lt;noinclude/&amp;gt;FULLPAGENAME}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:Subpage_other/doc&amp;diff=2473</id>
		<title>Template:Subpage other/doc</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:Subpage_other/doc&amp;diff=2473"/>
		<updated>2025-01-12T22:23:33Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Template:Subpage_other/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --&amp;gt;&lt;br /&gt;
{{High-use}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template checks whether the current page is a subpage or not. A [[Wikipedia:Subpages|subpage]] is a page that has a slash: &lt;br /&gt;
:&#039;&#039;&amp;lt;nowiki&amp;gt;[[Template:Parentpage/Subpage]]&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Exception: in article space (mainspace) the slash is part of the title, and there are no subpages. Example, [[AC/DC]] is a parent page not a subpage.&lt;br /&gt;
&lt;br /&gt;
Usage example: We only want to categorise the parent page. So in the /doc page we add:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Subpage other|&amp;lt;!-- do not categorise --&amp;gt;|[[Category:Chemical element infobox]]}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Note: [[WP:Subpage]] uses an other definition than magic word &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SUBPAGENAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. This template uses the former definition (pagename has an after-slash part).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Foo other see also}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Pagename manipulation templates]]&lt;br /&gt;
[[Category:Template namespace templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:Foo_other_see_also&amp;diff=2471</id>
		<title>Template:Foo other see also</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:Foo_other_see_also&amp;diff=2471"/>
		<updated>2025-01-12T22:23:32Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Template:Foo_other_see_also&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* {{tl|Sandbox other}} &amp;amp;mdash; Distinguishes between the /sandbox subpages and the root template page and other subpages.&lt;br /&gt;
* {{tl|Testcases other}} &amp;amp;mdash; Distinguishes between the /testcases subpages and the root template page and other subpages.&lt;br /&gt;
* {{tl|Template other}} &amp;amp;mdash; Distinguishes between pages in the template namespace and other namespaces.&lt;br /&gt;
* {{tl|When on basepage}} &amp;amp;mdash; Distinguishes between the root template page and subpages, without special consideration in the mainspace.&lt;br /&gt;
* {{tl|Subpage other}} &amp;amp;mdash; Distinguisheds between the root page and subpages (any subpage), classifying pagenames in the mainspace with a slash as being the root page.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|content=&lt;br /&gt;
List of &amp;quot;Foo other&amp;quot; templates for inclusion in &amp;quot;See also&amp;quot; section of documentation.&lt;br /&gt;
[[Category:Documentation see also templates]]&lt;br /&gt;
}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:Transclusion_count/data/S&amp;diff=2469</id>
		<title>Module:Transclusion count/data/S</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:Transclusion_count/data/S&amp;diff=2469"/>
		<updated>2025-01-12T22:23:32Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:Transclusion_count/data/S&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;S&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;S-aca&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;S-ach&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;S-aft&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;S-aft/check&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;S-aft/filter&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;S-bef&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;S-bef/check&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;S-bef/filter&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;S-break&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;S-bus&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;S-civ&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;S-dip&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;S-end&amp;quot;] = 253000,&lt;br /&gt;
[&amp;quot;S-gov&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;S-hon&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;S-hou&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;S-inc&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;S-legal&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;S-mil&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;S-new&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;S-non&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;S-npo&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;S-off&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;S-par&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;S-par/en&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;S-par/gb&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;S-par/uk&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;S-par/us-hs&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;S-par/us-sen&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;S-ppo&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;S-prec&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;S-rail&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;S-rail-start&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;S-rail/lines&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;S-reg&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;S-rel&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;S-roy&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;S-sports&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;S-start&amp;quot;] = 246000,&lt;br /&gt;
[&amp;quot;S-ttl&amp;quot;] = 235000,&lt;br /&gt;
[&amp;quot;S-ttl/check&amp;quot;] = 235000,&lt;br /&gt;
[&amp;quot;S-vac&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;SCO&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;SDcat&amp;quot;] = 6160000,&lt;br /&gt;
[&amp;quot;SECOND&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;SGP&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;SIA&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;SIPA&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;SLO&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;SMS&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;SMU&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;SPI_archive_notice&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;SPIarchive_notice&amp;quot;] = 76000,&lt;br /&gt;
[&amp;quot;SPIcat&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;SPIclose&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;SPIpriorcases&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;SR/Olympics_profile&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;SRB&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;SS&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;SSPa&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;STN&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;SUBJECTSPACE_formatted&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;SUI&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;SVG&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;SVG-Logo&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;SVG-Res&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;SVG-logo&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;SVK&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;SVN&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;SWE&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Sandbox_other&amp;quot;] = 399000,&lt;br /&gt;
[&amp;quot;Saturday&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Saved_book&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;Sc&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Scholia&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;School_block&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;School_disambiguation&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Schoolblock&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Schooldis&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Schoolip&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Scientist_icon&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Scientist_icon2&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sclass&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Sclass2&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Screen_reader-only&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;Screen_reader-only/styles.css&amp;quot;] = 82000,&lt;br /&gt;
[&amp;quot;Script&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Script/Arabic&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Script/Hebrew&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Script/Nastaliq&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/core&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/is-iso-alpha4&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/name-to-alpha4&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/styles.css&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Script/styles_arabic.css&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Script/styles_hebrew.css&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Sdash&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Search_box&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Search_link&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Section_link&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Section_sizes&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;See&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;See_also&amp;quot;] = 200000,&lt;br /&gt;
[&amp;quot;Seealso&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Select_skin&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Selected_article&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Selected_picture&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Self&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Self-published_inline&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Self-published_source&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Self-reference&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Self-reference_tool&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Sent_off&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sentoff&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Separated_entries&amp;quot;] = 223000,&lt;br /&gt;
[&amp;quot;Sequence&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Series_overview&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Serif&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Set_category&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Set_index_article&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Sets_taxobox_colour&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Sfn&amp;quot;] = 178000,&lt;br /&gt;
[&amp;quot;SfnRef&amp;quot;] = 146000,&lt;br /&gt;
[&amp;quot;Sfnm&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Sfnp&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Sfnref&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Sfrac&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Sfrac/styles.css&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;SharedIPEDU&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Shared_IP&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Shared_IP_advice&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Shared_IP_corp&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Shared_IP_edu&amp;quot;] = 184000,&lt;br /&gt;
[&amp;quot;Shared_IP_gov&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Sharedip&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Sharedipedu&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Sherdog&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Ship&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Ship_index&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Shipboxflag&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Shipboxflag/core&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Shipwrecks_navbox_footer&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Shipwrecks_navbox_footer/link&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Short_description&amp;quot;] = 6270000,&lt;br /&gt;
[&amp;quot;Short_description/lowercasecheck&amp;quot;] = 6270000,&lt;br /&gt;
[&amp;quot;Short_pages_monitor&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Short_pages_monitor/maximum_length&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Shortcut&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Should_be_SVG&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;Show_by_date&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;Sic&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Side_box&amp;quot;] = 1210000,&lt;br /&gt;
[&amp;quot;Sidebar&amp;quot;] = 284000,&lt;br /&gt;
[&amp;quot;Sidebar_games_events&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Sidebar_person&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Sidebar_person/styles.css&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Sidebar_with_collapsible_lists&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;Sigfig&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Significant_figures&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Significant_figures/rnd&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Signpost-subscription&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Signpost-subscription/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Signpost/item&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Sildb_prim&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Silver02&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Silver2&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;Silver_medal&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Similar_names&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Single+double&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Single+space&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Single-innings_cricket_match&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Single_chart&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Single_chart/chartnote&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Single_namespace&amp;quot;] = 221000,&lt;br /&gt;
[&amp;quot;Single_source&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Singlechart&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Singles&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Sister-inline&amp;quot;] = 206000,&lt;br /&gt;
[&amp;quot;Sister_project&amp;quot;] = 1080000,&lt;br /&gt;
[&amp;quot;Sister_project/styles.css&amp;quot;] = 1080000,&lt;br /&gt;
[&amp;quot;Sister_project_links&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Skip_to_talk&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Skip_to_talk/styles.css&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Sky&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Sky/styles.css&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Slink&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Small&amp;quot;] = 637000,&lt;br /&gt;
[&amp;quot;Small_Solar_System_bodies&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Smallcaps&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Smallcaps/styles.css&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Smallcaps_all&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Smalldiv&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Smaller&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Smallsup&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Smiley&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Snd&amp;quot;] = 220000,&lt;br /&gt;
[&amp;quot;Snds&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Soccer_icon&amp;quot;] = 127000,&lt;br /&gt;
[&amp;quot;Soccer_icon2&amp;quot;] = 127000,&lt;br /&gt;
[&amp;quot;Soccer_icon4&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Soccerbase&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Soccerbase_season&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Soccerway&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Sock&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;Sock_list&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Sockcat&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Sockmaster&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Sockpuppet&amp;quot;] = 258000,&lt;br /&gt;
[&amp;quot;Sockpuppet/altmaster&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Sockpuppet/categorise&amp;quot;] = 258000,&lt;br /&gt;
[&amp;quot;SockpuppetCheckuser&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Sockpuppet_category&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Sockpuppet_category/confirmed&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Sockpuppet_category/suspected&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Sockpuppetcheckuser&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Sockpuppeteer&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Soft_hyphen&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Soft_redirect&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Soft_redirect_protection&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Softredirect&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Solar_luminosity&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Solar_mass&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Solar_radius&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Soldier_icon&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Soldier_icon2&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Songs_category&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Songs_category/core&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Sort&amp;quot;] = 109000,&lt;br /&gt;
[&amp;quot;Sortname&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Source-attribution&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Source_check&amp;quot;] = 939000,&lt;br /&gt;
[&amp;quot;Sourcecheck&amp;quot;] = 939000,&lt;br /&gt;
[&amp;quot;Sources&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Sources_exist&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;South_America_topic&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Sp&amp;quot;] = 180000,&lt;br /&gt;
[&amp;quot;Space&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Space+double&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Space+single&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Spaced_en_dash&amp;quot;] = 252000,&lt;br /&gt;
[&amp;quot;Spaced_en_dash_space&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Spaced_ndash&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Spaces&amp;quot;] = 598000,&lt;br /&gt;
[&amp;quot;Spain_metadata_Wikidata&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Spamlink&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Species_Latin_name_abbreviation_disambiguation&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Species_list&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Speciesbox&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Speciesbox/getGenus&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Speciesbox/getSpecies&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Speciesbox/name&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Speciesbox/parameterCheck&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Speciesbox/trim&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Specieslist&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Split_article&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Spnd&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Spoken_Wikipedia&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Sport_clubs_(dis)established_in_YYYY_category_header&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Sport_clubs_(dis)established_in_YYYY_category_header/core&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Sport_icon&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sport_icon2&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;SportsYearCatUSstate&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Sports_links&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;Sports_reference&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Squad_maintenance&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Sronly&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Srt&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Stack&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Stack/styles.css&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Stack_begin&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Stack_end&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;StaleIP&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Standings_table_end&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Standings_table_entry&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Standings_table_entry/record&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Standings_table_start&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Standings_table_start/colheader&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Standings_table_start/colspan&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Standings_table_start/styles.css&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Starbox_astrometry&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Starbox_begin&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_catalog&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Starbox_character&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Starbox_detail&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Starbox_end&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_image&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Starbox_observe&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Starbox_reference&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Start-Class&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Start-date&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Start_and_end_dates&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Start_box&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Start_date&amp;quot;] = 501000,&lt;br /&gt;
[&amp;quot;Start_date_and_age&amp;quot;] = 165000,&lt;br /&gt;
[&amp;quot;Start_date_and_years_ago&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Start_date_text&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Start_of_course_timeline&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Start_of_course_week&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Start_tab&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Startflatlist&amp;quot;] = 155000,&lt;br /&gt;
[&amp;quot;Static_IP&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Static_row_numbers&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Static_row_numbers/styles.css&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Station&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Station_link&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Stdinchicite&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Steady&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Sticky_header&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Sticky_header/styles.css&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Stl&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Stn&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;Stn_art_lnk&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stnlnk&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Storm_colour&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Storm_name&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Storm_path&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stortingetbio&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;StoryTeleplay&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Str_count&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Str_endswith&amp;quot;] = 207000,&lt;br /&gt;
[&amp;quot;Str_find&amp;quot;] = 294000,&lt;br /&gt;
[&amp;quot;Str_index&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Str_left&amp;quot;] = 968000,&lt;br /&gt;
[&amp;quot;Str_len&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Str_letter&amp;quot;] = 179000,&lt;br /&gt;
[&amp;quot;Str_letter/trim&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Str_number&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Str_number/trim&amp;quot;] = 204000,&lt;br /&gt;
[&amp;quot;Str_rep&amp;quot;] = 278000,&lt;br /&gt;
[&amp;quot;Str_trim&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Str_≠_len&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Str_≤_len&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Str_≥_len&amp;quot;] = 87000,&lt;br /&gt;
[&amp;quot;Strfind_short&amp;quot;] = 251000,&lt;br /&gt;
[&amp;quot;Strikethrough&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;String_split&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Strip_tags&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Strong&amp;quot;] = 916000,&lt;br /&gt;
[&amp;quot;Structurae&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stub-Class&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Stub_Category&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Stub_category&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Stub_documentation&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Student_editor&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Student_sandbox&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Student_table_row&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Students_table&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Su&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Su-census1989&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Sub&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Subinfobox_bodystyle&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Subject_bar&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Suboff&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Subon&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Subpage_other&amp;quot;] = 336000,&lt;br /&gt;
[&amp;quot;Subscription_required&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Subsidebar_bodystyle&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Subst_only&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Substituted_comment&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Succession_box&amp;quot;] = 119000,&lt;br /&gt;
[&amp;quot;Succession_box/check&amp;quot;] = 119000,&lt;br /&gt;
[&amp;quot;Succession_links&amp;quot;] = 195000,&lt;br /&gt;
[&amp;quot;Summer_Olympics_by_year_category_navigation&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Summer_Olympics_by_year_category_navigation/core&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Sunday&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Sup&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Suppress_categories&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Surname&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;Swiss_populations&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Swiss_populations_NC&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Swiss_populations_YM&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Swiss_populations_ref&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Switcher&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Module:SDcat&amp;quot;] = 6160000,&lt;br /&gt;
[&amp;quot;Module:SPI_archive_notice&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Module:Science_redirect&amp;quot;] = 295000,&lt;br /&gt;
[&amp;quot;Module:Science_redirect/conf&amp;quot;] = 295000,&lt;br /&gt;
[&amp;quot;Module:Section_link&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Module:Section_sizes&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Module:See_also_if_exists&amp;quot;] = 75000,&lt;br /&gt;
[&amp;quot;Module:Self&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Module:Self/license_migration_data.json&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Self/styles.css&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Module:Separated_entries&amp;quot;] = 2460000,&lt;br /&gt;
[&amp;quot;Module:Series_overview&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Module:Settlement_short_description&amp;quot;] = 710000,&lt;br /&gt;
[&amp;quot;Module:Shortcut&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Shortcut/config&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Shortcut/styles.css&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Side_box&amp;quot;] = 1240000,&lt;br /&gt;
[&amp;quot;Module:Side_box/styles.css&amp;quot;] = 1240000,&lt;br /&gt;
[&amp;quot;Module:Sidebar&amp;quot;] = 370000,&lt;br /&gt;
[&amp;quot;Module:Sidebar/configuration&amp;quot;] = 370000,&lt;br /&gt;
[&amp;quot;Module:Sidebar/styles.css&amp;quot;] = 377000,&lt;br /&gt;
[&amp;quot;Module:Sidebar_games_events&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Module:Sidebar_games_events/styles.css&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Module:Singles&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/bar/styles.css&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/config&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/styles.css&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Sock_list&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Module:Sort&amp;quot;] = 139000,&lt;br /&gt;
[&amp;quot;Module:Sort_title&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Sortkey&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Module:Split_article&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Module:Spoken_Wikipedia&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Spoken_Wikipedia/configuration&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Spoken_Wikipedia/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Sports_career&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Sports_color&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/baseball&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/basketball&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/ice_hockey&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Module:Sports_rbr_table&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Sports_rbr_table/styles.css&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Sports_reference&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Module:Sports_results&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Sports_results/styles.css&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Module:Sports_table&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/Volleyball&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WDL&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WDL_OT&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WL&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WL_OT&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:Sports_table/argcheck&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/styles.css&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/sub&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/totalscheck&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;Module:Stock_tickers/NYSE&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Module:Storm_categories&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/categories&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/colors&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/icons&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:String&amp;quot;] = 11100000,&lt;br /&gt;
[&amp;quot;Module:String2&amp;quot;] = 4870000,&lt;br /&gt;
[&amp;quot;Module:Su&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Subject_bar&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Suppress_categories&amp;quot;] = 5800,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:Subpage_other&amp;diff=2467</id>
		<title>Template:Subpage other</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:Subpage_other&amp;diff=2467"/>
		<updated>2025-01-12T22:23:32Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Template:Subpage_other&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{SUBPAGENAME}}|{{ROOTPAGENAME}}|{{{2|}}}|{{{1|}}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:Transclusion_count/data/R&amp;diff=2463</id>
		<title>Module:Transclusion count/data/R</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:Transclusion_count/data/R&amp;diff=2463"/>
		<updated>2025-01-12T22:23:14Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:Transclusion_count/data/R&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;R&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;R/ref&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;R/superscript&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;R/where&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;RA&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;RCS&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;REVISIONUSER2&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;RJL&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;RMS&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;RMnac&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;ROM&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;ROU&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;RSA&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;RSS-Atom_feed_notice&amp;quot;] = 221000,&lt;br /&gt;
[&amp;quot;RTGS&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;RT_data&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;RUS&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;R_ambig&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;R_animal_with_possibilities&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;R_avoided_double_redirect&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;R_cat_shell&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;R_category_shell&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;R_from_ASCII-only&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;R_from_ATC_code&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;R_from_ATCvet_code&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;R_from_British_English&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;R_from_DOI_prefix&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;R_from_IMO_number&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;R_from_ISO_4&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;R_from_ISO_4_abbreviation&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;R_from_ISO_639&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;R_from_ISO_639_code&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;R_from_NLM&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;R_from_NLM_abbreviation&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;R_from_UN/LOCODE&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;R_from_US_postal_abbreviation&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;R_from_Unicode&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;R_from_Unicode_character&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;R_from_abbreviation&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;R_from_acronym&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;R_from_adjective&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;R_from_airport_code&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;R_from_album&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;R_from_alt_name&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;R_from_alternate_name&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;R_from_alternate_spelling&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;R_from_alternative_capitalisation&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;R_from_alternative_capitalization&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;R_from_alternative_disambiguation&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;R_from_alternative_hyphenation&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;R_from_alternative_language&amp;quot;] = 85000,&lt;br /&gt;
[&amp;quot;R_from_alternative_name&amp;quot;] = 252000,&lt;br /&gt;
[&amp;quot;R_from_alternative_punctuation&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;R_from_alternative_scientific_name&amp;quot;] = 144000,&lt;br /&gt;
[&amp;quot;R_from_alternative_spacing&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;R_from_alternative_spelling&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;R_from_alternative_title&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;R_from_alternative_transliteration&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;R_from_ambiguous&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;R_from_ambiguous_page&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;R_from_ambiguous_sort_name&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;R_from_ambiguous_term&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;R_from_avoided_double_redirect&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;R_from_birth_name&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;R_from_book&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_from_case_citation&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;R_from_category_navigation&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;R_from_chemical_formula&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;R_from_comment_subpage&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;R_from_diacritic&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;R_from_diacritics&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;R_from_domain_name&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;R_from_draft&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;R_from_draft_namespace&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;R_from_drug_trade_name&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;R_from_emoji&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;R_from_fictional_character&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;R_from_fictional_element&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;R_from_former_name&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;R_from_full_name&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;R_from_gene_symbol&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;R_from_given_name&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;R_from_incomplete_disambiguation&amp;quot;] = 55000,&lt;br /&gt;
[&amp;quot;R_from_incomplete_name&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;R_from_incorrect_disambiguation&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;R_from_incorrect_name&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;R_from_initialism&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;R_from_legislation&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_from_less_specific_name&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;R_from_list_topic&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;R_from_long_name&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;R_from_longer_name&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;R_from_member&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;R_from_merge&amp;quot;] = 68000,&lt;br /&gt;
[&amp;quot;R_from_miscapitalisation&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;R_from_miscapitalization&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;R_from_misspelling&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;R_from_modification&amp;quot;] = 656000,&lt;br /&gt;
[&amp;quot;R_from_molecular_formula&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;R_from_monotypic_taxon&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;R_from_more_specific_geographic_name&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;R_from_more_specific_name&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;R_from_move&amp;quot;] = 2650000,&lt;br /&gt;
[&amp;quot;R_from_move/except&amp;quot;] = 2650000,&lt;br /&gt;
[&amp;quot;R_from_name_with_title&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;R_from_nickname&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_from_old_AfC_draft&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;R_from_other_capitalisation&amp;quot;] = 414000,&lt;br /&gt;
[&amp;quot;R_from_other_capitalization&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;R_from_other_disambiguation&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;R_from_other_language&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;R_from_other_name&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;R_from_other_spelling&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_from_person&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;R_from_plural&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;R_from_product_name&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;R_from_pseudonym&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;R_from_railroad_name_with_ampersand&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_from_related_topic&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;R_from_related_word&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;R_from_remote_page&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;R_from_remote_talk_page&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;R_from_school&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;R_from_scientific_name&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;R_from_short_name&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;R_from_shortcut&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;R_from_shorter_name&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;R_from_shorter_title&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;R_from_song&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;R_from_sort_name&amp;quot;] = 173000,&lt;br /&gt;
[&amp;quot;R_from_species_to_genus&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;R_from_subpage&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;R_from_subtopic&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;R_from_surname&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;R_from_symbol&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;R_from_synonym&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;R_from_television_episode&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;R_from_template_shortcut&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;R_from_title_with_diacritics&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;R_from_title_without_diacritics&amp;quot;] = 401000,&lt;br /&gt;
[&amp;quot;R_from_trade_name&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;R_from_typo&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;R_from_unnecessary_disambiguation&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;R_from_year&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;R_mentioned_in_hatnote&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;R_move&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_printworthy&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;R_protected&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;R_protected/semi&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;R_sect&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;R_section&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;R_shell&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;R_to_Swiss_municipality_(,_Switzerland)&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;R_to_Swiss_municipality_(canton)&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;R_to_Swiss_municipality_2L&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_to_TV_episode_list_entry&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;R_to_alternative_scientific_name&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;R_to_anchor&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;R_to_category_namespace&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;R_to_century&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_to_diacritic&amp;quot;] = 414000,&lt;br /&gt;
[&amp;quot;R_to_diacritics&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;R_to_disambiguation&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;R_to_disambiguation_page&amp;quot;] = 274000,&lt;br /&gt;
[&amp;quot;R_to_list&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;R_to_list_entry&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;R_to_monotypic_taxon&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;R_to_plural&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;R_to_project&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;R_to_project_namespace&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;R_to_redirect_template&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;R_to_related_topic&amp;quot;] = 82000,&lt;br /&gt;
[&amp;quot;R_to_scientific_name&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;R_to_section&amp;quot;] = 364000,&lt;br /&gt;
[&amp;quot;R_to_short_name&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;R_to_stub_template&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;R_to_subpage&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;R_to_subtopic&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;R_unprintworthy&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;R_with_Wikidata_item&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;R_with_history&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;R_with_possibilities&amp;quot;] = 98000,&lt;br /&gt;
[&amp;quot;Racing-Reference_driver&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Radio_Relay&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Radio_formats&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Rail-interchange&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;RailGauge&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rail_color&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Rail_color_box&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Rail_icon&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Rail_line&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rail_navbox_titlestyle&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Rail_pass_box&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Rail_start&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Rail_template_doc&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Railway-routemap&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Railway_division_link&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Railway_stations_in_countryname_opened_in_YYYY_category_header&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Railway_stations_in_countryname_opened_or_closed_in_YYYY_category_header&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Railway_stations_in_countryname_opened_or_closed_in_YYYY_category_header/core&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Rand&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Random_number&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Random_page_in_category&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Random_subpage&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Ranking_movements&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Rating&amp;quot;] = 106000,&lt;br /&gt;
[&amp;quot;Rating-Christgau&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Rayment&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Rayment-hc&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Rcat_shell&amp;quot;] = 208000,&lt;br /&gt;
[&amp;quot;Rcatsh&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Rcb&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rcr&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Re&amp;quot;] = 79000,&lt;br /&gt;
[&amp;quot;Recent_AfDs&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Recent_AfDs/core&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Red&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;Redacted&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Redirect&amp;quot;] = 55000,&lt;br /&gt;
[&amp;quot;Redirect-Class&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Redirect-distinguish&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Redirect_category&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Redirect_category_shell&amp;quot;] = 3280000,&lt;br /&gt;
[&amp;quot;Redirect_from_modification&amp;quot;] = 107000,&lt;br /&gt;
[&amp;quot;Redirect_from_move&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Redirect_shell&amp;quot;] = 341000,&lt;br /&gt;
[&amp;quot;Redirect_template&amp;quot;] = 6940000,&lt;br /&gt;
[&amp;quot;Redirect_to_section&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Redr&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Ref&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Ref_begin&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Ref_end&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Ref_improve&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Ref_label&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Refbegin&amp;quot;] = 208000,&lt;br /&gt;
[&amp;quot;Refbegin/styles.css&amp;quot;] = 208000,&lt;br /&gt;
[&amp;quot;Refend&amp;quot;] = 207000,&lt;br /&gt;
[&amp;quot;Reference_column_heading&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Reference_page&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Refideas&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Refimprove&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Refimprove_section&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Reflist&amp;quot;] = 6230000,&lt;br /&gt;
[&amp;quot;Reflist-talk&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Reflist-talk/styles.css&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Reflist/styles.css&amp;quot;] = 6230000,&lt;br /&gt;
[&amp;quot;Reflist_talk&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Refn&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Reftalk&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Region_history_sidebar_title&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Regional_notice_board_box&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Regional_notice_board_box/1&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Registered_Historic_Places&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Registration_required&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Reign&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;ReleaseVersionParameters&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Release_version_parameters&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Reliable_sources_for_medical_articles&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Remove_accents&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Remove_first_word&amp;quot;] = 167000,&lt;br /&gt;
[&amp;quot;Remove_last_word&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Removeaccents&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Repeat_vandal&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Repeated_IP_abuse&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Repeatvandal&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Replace&amp;quot;] = 1740000,&lt;br /&gt;
[&amp;quot;Reply&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Reply_to&amp;quot;] = 331000,&lt;br /&gt;
[&amp;quot;Replyto&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Republican_Party_(US)/meta/shading&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Reqmapin&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Reqphoto&amp;quot;] = 75000,&lt;br /&gt;
[&amp;quot;Request_edit_button&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Request_edit_button/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Resbox&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Resize&amp;quot;] = 134000,&lt;br /&gt;
[&amp;quot;Resolve_category_redirect&amp;quot;] = 920000,&lt;br /&gt;
[&amp;quot;Resolved&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Respell&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Respond&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;Resume-like&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Retired&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Retrieved&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Reverse_date&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Reviewer_topicon&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;RfA_watchlist_notice&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Rfd_log_header&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Ribbon_devices&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Ribbon_devices/alt&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Ribbon_devices/device&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Ribbon_devices/device_layout&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Ric&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Right&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Right_ascension&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Rint&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Rlp&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rlp/Positions&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rmri&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Rnd&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Rollback_topicon&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Roman&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Romania_metadata_Wikidata&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;RomanianSoccer&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Rotten-tomatoes&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Rotten_Tomatoes&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Rotten_Tomatoes_data&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Rotten_Tomatoes_prose&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Round&amp;quot;] = 324000,&lt;br /&gt;
[&amp;quot;Round4-with_third&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Round_corners&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Rounddown&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;RouteBox&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Routemap&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Routemap/styles.css&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;RoutemapRouteIcon&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Row_hover_highlight&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Row_hover_highlight/styles.css&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Rp&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Rshell&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Rtl-para&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Rto&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Ru&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Ru-census&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Ru-census2002&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Ru-census2010&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Ru-pop-ref&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Rugby_box&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Rugby_league_positions&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rugby_league_positions/Positions&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rugby_league_squad2_coach&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Rugby_union_team&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Rugby_union_team/link&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Rugbybox&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;RussiaAdmMunRef&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Russia_Time_Zone_Wikidata&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Russia_Time_Zone_Wikidata/getQID&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Rut&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Rwd&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Rws&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Module:R_avoided_double_redirect&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;Module:Rail-interchange_multi&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Random&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Ranking_movements&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Module:Ranking_movements/styles.css&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Module:Redirect&amp;quot;] = 4600000,&lt;br /&gt;
[&amp;quot;Module:Redirect-distinguish&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Module:RedirectData&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Module:Redirect_hatnote&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;Module:Redirect_template&amp;quot;] = 6940000,&lt;br /&gt;
[&amp;quot;Module:Redirect_template_handler&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Reply_to&amp;quot;] = 331000,&lt;br /&gt;
[&amp;quot;Module:ResolveEntityId&amp;quot;] = 470000,&lt;br /&gt;
[&amp;quot;Module:Resolve_category_redirect&amp;quot;] = 933000,&lt;br /&gt;
[&amp;quot;Module:Respell&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Rivals.com_recruit_url&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Module:Road_data&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Road_data/RJL_types&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Module:Road_data/banners/USA&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Module:Road_data/browse&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Road_data/browsetable&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Road_data/browsetable/styles.css&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Road_data/countrymask&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Module:Road_data/extra&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Module:Road_data/locations&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Road_data/parser&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Module:Road_data/parser/hooks&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Road_data/parser/namespace&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Module:Road_data/size&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/ASIA&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/CAN&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/EUR&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/IND&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/JPN&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/GRR&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/NER&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/Tour&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/Trails&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Road_data/util&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;Module:Roman&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Rotten_Tomatoes_data&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Module:RoundN&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Routemap&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Module:Rugby_box&amp;quot;] = 3300,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:Wd/i18n&amp;diff=2457</id>
		<title>Module:Wd/i18n</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:Wd/i18n&amp;diff=2457"/>
		<updated>2025-01-12T22:23:14Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:Wd/i18n&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- The values and functions in this submodule should be localized per wiki.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.init(aliasesP)&lt;br /&gt;
	p = {&lt;br /&gt;
		[&amp;quot;version&amp;quot;] = &amp;quot;7&amp;quot;,  -- increment this each time the below parameters are changed to avoid reference conflict errors&lt;br /&gt;
		[&amp;quot;errors&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;unknown-data-type&amp;quot;]          = &amp;quot;Unknown or unsupported datatype &#039;%s&#039;.&amp;quot;,&lt;br /&gt;
			[&amp;quot;missing-required-parameter&amp;quot;] = &amp;quot;No required parameters defined, needing at least one&amp;quot;,&lt;br /&gt;
			[&amp;quot;extra-required-parameter&amp;quot;]   = &amp;quot;Parameter &#039;%s&#039; must be defined as optional&amp;quot;,&lt;br /&gt;
			[&amp;quot;no-function-specified&amp;quot;]      = &amp;quot;You must specify a function to call&amp;quot;,  -- equal to the standard module error message&lt;br /&gt;
			[&amp;quot;main-called-twice&amp;quot;]          = &#039;The function &amp;quot;main&amp;quot; cannot be called twice&#039;,&lt;br /&gt;
			[&amp;quot;no-such-function&amp;quot;]           = &#039;The function &amp;quot;%s&amp;quot; does not exist&#039;,  -- equal to the standard module error message&lt;br /&gt;
            [&amp;quot;no-such-reference-template&amp;quot;] = &#039;Error: template &amp;quot;%s&amp;quot;, which is set in %s as the output template for the citation-output type &amp;quot;%s&amp;quot;, does not exist&#039;,&lt;br /&gt;
            -- Parts of the error message signalling a malformed reference.&lt;br /&gt;
            [&amp;quot;malformed-reference-header&amp;quot;] = &amp;quot;&amp;lt;span style=\&amp;quot;color:#dd3333\&amp;quot;&amp;gt;\nError: Unable to display the reference from Wikidata properly. Technical details:\n&amp;quot;,&lt;br /&gt;
            [&amp;quot;malformed-reference-footer&amp;quot;] = &amp;quot;See [[Module:wd/doc#References|the documentation]] for further details.\n&amp;lt;/span&amp;gt;\n[[Category:Module:Wd reference errors]]&amp;quot;,&lt;br /&gt;
            [&amp;quot;template-failure-reason&amp;quot;]    = &amp;quot;* Reason for the failure of {{tl|%s}}: %s\n&amp;quot;,&lt;br /&gt;
            [&amp;quot;missing-mandatory-param&amp;quot;]    = &#039;The output template call would miss the mandatory parameter &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;.&#039;,&lt;br /&gt;
            [&amp;quot;unknown-property-in-ref&amp;quot;]    = &#039;The Wikidata reference contains the property {{property|%s}}, which is not assigned to any parameter of this template.&#039;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;info&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;edit-on-wikidata&amp;quot;] = &amp;quot;Edit this on Wikidata&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;numeric&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;decimal-mark&amp;quot;] = &amp;quot;.&amp;quot;,&lt;br /&gt;
			[&amp;quot;delimiter&amp;quot;]    = &amp;quot;,&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;datetime&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;prefixes&amp;quot;] = {&lt;br /&gt;
				[&amp;quot;decade-period&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;suffixes&amp;quot;] = {&lt;br /&gt;
				[&amp;quot;decade-period&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
				[&amp;quot;millennium&amp;quot;]    = &amp;quot; millennium&amp;quot;,&lt;br /&gt;
				[&amp;quot;century&amp;quot;]       = &amp;quot; century&amp;quot;,&lt;br /&gt;
				[&amp;quot;million-years&amp;quot;] = &amp;quot; million years&amp;quot;,&lt;br /&gt;
				[&amp;quot;billion-years&amp;quot;] = &amp;quot; billion years&amp;quot;,&lt;br /&gt;
				[&amp;quot;year&amp;quot;]          = &amp;quot; year&amp;quot;,&lt;br /&gt;
				[&amp;quot;years&amp;quot;]         = &amp;quot; years&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;julian-calendar&amp;quot;] = &amp;quot;Julian calendar&amp;quot;,  -- linked page title&lt;br /&gt;
			[&amp;quot;julian&amp;quot;]          = &amp;quot;Julian&amp;quot;,&lt;br /&gt;
			[&amp;quot;BCE&amp;quot;]             = &amp;quot;BCE&amp;quot;,&lt;br /&gt;
			[&amp;quot;CE&amp;quot;]              = &amp;quot;CE&amp;quot;,&lt;br /&gt;
			[&amp;quot;common-era&amp;quot;]      = &amp;quot;Common Era&amp;quot;  -- linked page title&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;coord&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;latitude-north&amp;quot;] = &amp;quot;N&amp;quot;,&lt;br /&gt;
			[&amp;quot;latitude-south&amp;quot;] = &amp;quot;S&amp;quot;,&lt;br /&gt;
			[&amp;quot;longitude-east&amp;quot;] = &amp;quot;E&amp;quot;,&lt;br /&gt;
			[&amp;quot;longitude-west&amp;quot;] = &amp;quot;W&amp;quot;,&lt;br /&gt;
			[&amp;quot;degrees&amp;quot;]        = &amp;quot;°&amp;quot;,&lt;br /&gt;
			[&amp;quot;minutes&amp;quot;]        = &amp;quot;&#039;&amp;quot;,&lt;br /&gt;
			[&amp;quot;seconds&amp;quot;]        = &#039;&amp;quot;&#039;,&lt;br /&gt;
			[&amp;quot;separator&amp;quot;]      = &amp;quot;, &amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;values&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;unknown&amp;quot;] = &amp;quot;unknown&amp;quot;,&lt;br /&gt;
			[&amp;quot;none&amp;quot;]    = &amp;quot;none&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;cite&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;output-types&amp;quot;] = {&amp;quot;web&amp;quot;, &amp;quot;q&amp;quot;},  -- In this order, the output types will be tried&lt;br /&gt;
			[&amp;quot;param-mapping&amp;quot;] = {&lt;br /&gt;
				[&amp;quot;web&amp;quot;] = {&lt;br /&gt;
					-- &amp;lt;= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources&lt;br /&gt;
					-- =&amp;gt; right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. &amp;quot;&amp;quot;)&lt;br /&gt;
					[aliasesP.statedIn]                = &amp;quot;website&amp;quot;,&lt;br /&gt;
					[aliasesP.referenceURL]            = &amp;quot;url&amp;quot;,&lt;br /&gt;
					[aliasesP.publicationDate]         = &amp;quot;date&amp;quot;,&lt;br /&gt;
					[aliasesP.retrieved]               = &amp;quot;access-date&amp;quot;,&lt;br /&gt;
					[aliasesP.title]                   = &amp;quot;title&amp;quot;,&lt;br /&gt;
					[aliasesP.archiveURL]              = &amp;quot;archive-url&amp;quot;,&lt;br /&gt;
					[aliasesP.archiveDate]             = &amp;quot;archive-date&amp;quot;,&lt;br /&gt;
					[aliasesP.language]                = &amp;quot;language&amp;quot;,&lt;br /&gt;
					[aliasesP.author]                  = &amp;quot;author&amp;quot;,&lt;br /&gt;
					[aliasesP.authorNameString]        = &amp;quot;author&amp;quot;,&lt;br /&gt;
					[aliasesP.publisher]               = &amp;quot;publisher&amp;quot;,&lt;br /&gt;
					[aliasesP.quote]                   = &amp;quot;quote&amp;quot;,&lt;br /&gt;
					[aliasesP.pages]                   = &amp;quot;pages&amp;quot;,  -- extra option&lt;br /&gt;
					[aliasesP.publishedIn]             = &amp;quot;website&amp;quot;,&lt;br /&gt;
					[aliasesP.sectionVerseOrParagraph] = &amp;quot;at&amp;quot;&lt;br /&gt;
				},&lt;br /&gt;
				[&amp;quot;q&amp;quot;] = {&lt;br /&gt;
					-- &amp;lt;= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources&lt;br /&gt;
					-- =&amp;gt; right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. &amp;quot;&amp;quot;)&lt;br /&gt;
					[aliasesP.statedIn]                = &amp;quot;1&amp;quot;,&lt;br /&gt;
					[aliasesP.pages]                   = &amp;quot;pages&amp;quot;,&lt;br /&gt;
					[aliasesP.column]                  = &amp;quot;at&amp;quot;,&lt;br /&gt;
					[aliasesP.chapter]                 = &amp;quot;chapter&amp;quot;,&lt;br /&gt;
					[aliasesP.sectionVerseOrParagraph] = &amp;quot;section&amp;quot;,&lt;br /&gt;
					[&amp;quot;external-id&amp;quot;]                    = &amp;quot;id&amp;quot;,  -- used for any type of database property ID&lt;br /&gt;
					[aliasesP.title]                   = &amp;quot;title&amp;quot;,&lt;br /&gt;
					[aliasesP.publicationDate]         = &amp;quot;date&amp;quot;,&lt;br /&gt;
					[aliasesP.retrieved]               = &amp;quot;access-date&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;config&amp;quot;] = {&lt;br /&gt;
				-- supported fields:&lt;br /&gt;
				--     - template: name of the template used for output&lt;br /&gt;
				--     - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2)&lt;br /&gt;
				--     - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true)&lt;br /&gt;
				--     - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params)&lt;br /&gt;
				-- Leaving out the &amp;quot;template&amp;quot; field causes the output type to be ignored.&lt;br /&gt;
				[&amp;quot;web&amp;quot;] = {&lt;br /&gt;
					[&amp;quot;template&amp;quot;] = &amp;quot;Cite web&amp;quot;,&lt;br /&gt;
					[&amp;quot;numbered-params&amp;quot;] = {&amp;quot;author&amp;quot;},&lt;br /&gt;
					[&amp;quot;mandatory-params&amp;quot;] = {&amp;quot;url&amp;quot;}&lt;br /&gt;
				},&lt;br /&gt;
				[&amp;quot;q&amp;quot;] = {&lt;br /&gt;
					[&amp;quot;template&amp;quot;] = &amp;quot;Cite Q&amp;quot;,&lt;br /&gt;
					[&amp;quot;raw-value-params&amp;quot;] = {&amp;quot;1&amp;quot;},  -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited&lt;br /&gt;
					[&amp;quot;mandatory-params&amp;quot;] = {&amp;quot;1&amp;quot;}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	p.getOrdinalSuffix = function(num)&lt;br /&gt;
		if tostring(num):sub(-2,-2) == &#039;1&#039; then&lt;br /&gt;
			return &amp;quot;th&amp;quot;  -- 10th, 11th, 12th, 13th, ... 19th&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		num = tostring(num):sub(-1)&lt;br /&gt;
&lt;br /&gt;
		if num == &#039;1&#039; then&lt;br /&gt;
			return &amp;quot;st&amp;quot;&lt;br /&gt;
		elseif num == &#039;2&#039; then&lt;br /&gt;
			return &amp;quot;nd&amp;quot;&lt;br /&gt;
		elseif num == &#039;3&#039; then&lt;br /&gt;
			return &amp;quot;rd&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;th&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.addDelimiters = function(n)&lt;br /&gt;
		local left, num, right = string.match(n, &amp;quot;^([^%d]*%d)(%d*)(.-)$&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if left and num and right then&lt;br /&gt;
			return left .. (num:reverse():gsub(&amp;quot;(%d%d%d)&amp;quot;, &amp;quot;%1&amp;quot; .. p[&#039;numeric&#039;][&#039;delimiter&#039;]):reverse()) .. right&lt;br /&gt;
		else&lt;br /&gt;
			return n&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:Wd&amp;diff=2455</id>
		<title>Module:Wd</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:Wd&amp;diff=2455"/>
		<updated>2025-01-12T22:23:14Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:Wd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local module_arg = ...&lt;br /&gt;
local i18n&lt;br /&gt;
local i18nPath&lt;br /&gt;
&lt;br /&gt;
local function loadI18n(aliasesP, frame)&lt;br /&gt;
	local title&lt;br /&gt;
&lt;br /&gt;
	if frame then&lt;br /&gt;
		-- current module invoked by page/template, get its title from frame&lt;br /&gt;
		title = frame:getTitle()&lt;br /&gt;
	else&lt;br /&gt;
		-- current module included by other module, get its title from ...&lt;br /&gt;
		title = module_arg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not i18n then&lt;br /&gt;
		i18nPath = title .. &amp;quot;/i18n&amp;quot;&lt;br /&gt;
		i18n = require(i18nPath).init(aliasesP)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.claimCommands = {&lt;br /&gt;
	property   = &amp;quot;property&amp;quot;,&lt;br /&gt;
	properties = &amp;quot;properties&amp;quot;,&lt;br /&gt;
	qualifier  = &amp;quot;qualifier&amp;quot;,&lt;br /&gt;
	qualifiers = &amp;quot;qualifiers&amp;quot;,&lt;br /&gt;
	reference  = &amp;quot;reference&amp;quot;,&lt;br /&gt;
	references = &amp;quot;references&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.generalCommands = {&lt;br /&gt;
	label       = &amp;quot;label&amp;quot;,&lt;br /&gt;
	title       = &amp;quot;title&amp;quot;,&lt;br /&gt;
	description = &amp;quot;description&amp;quot;,&lt;br /&gt;
	alias       = &amp;quot;alias&amp;quot;,&lt;br /&gt;
	aliases     = &amp;quot;aliases&amp;quot;,&lt;br /&gt;
	badge       = &amp;quot;badge&amp;quot;,&lt;br /&gt;
	badges      = &amp;quot;badges&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.flags = {&lt;br /&gt;
	linked        = &amp;quot;linked&amp;quot;,&lt;br /&gt;
	short         = &amp;quot;short&amp;quot;,&lt;br /&gt;
	raw           = &amp;quot;raw&amp;quot;,&lt;br /&gt;
	multilanguage = &amp;quot;multilanguage&amp;quot;,&lt;br /&gt;
	unit          = &amp;quot;unit&amp;quot;,&lt;br /&gt;
	-------------&lt;br /&gt;
	preferred     = &amp;quot;preferred&amp;quot;,&lt;br /&gt;
	normal        = &amp;quot;normal&amp;quot;,&lt;br /&gt;
	deprecated    = &amp;quot;deprecated&amp;quot;,&lt;br /&gt;
	best          = &amp;quot;best&amp;quot;,&lt;br /&gt;
	future        = &amp;quot;future&amp;quot;,&lt;br /&gt;
	current       = &amp;quot;current&amp;quot;,&lt;br /&gt;
	former        = &amp;quot;former&amp;quot;,&lt;br /&gt;
	edit          = &amp;quot;edit&amp;quot;,&lt;br /&gt;
	editAtEnd     = &amp;quot;edit@end&amp;quot;,&lt;br /&gt;
	mdy           = &amp;quot;mdy&amp;quot;,&lt;br /&gt;
	single        = &amp;quot;single&amp;quot;,&lt;br /&gt;
	sourced       = &amp;quot;sourced&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.args = {&lt;br /&gt;
	eid  = &amp;quot;eid&amp;quot;,&lt;br /&gt;
	page = &amp;quot;page&amp;quot;,&lt;br /&gt;
	date = &amp;quot;date&amp;quot;,&lt;br /&gt;
	globalSiteId = &amp;quot;globalSiteId&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local aliasesP = {&lt;br /&gt;
	coord                   = &amp;quot;P625&amp;quot;,&lt;br /&gt;
	-----------------------&lt;br /&gt;
	image                   = &amp;quot;P18&amp;quot;,&lt;br /&gt;
	author                  = &amp;quot;P50&amp;quot;,&lt;br /&gt;
	authorNameString        = &amp;quot;P2093&amp;quot;,&lt;br /&gt;
	publisher               = &amp;quot;P123&amp;quot;,&lt;br /&gt;
	importedFrom            = &amp;quot;P143&amp;quot;,&lt;br /&gt;
	wikimediaImportURL      = &amp;quot;P4656&amp;quot;,&lt;br /&gt;
	statedIn                = &amp;quot;P248&amp;quot;,&lt;br /&gt;
	pages                   = &amp;quot;P304&amp;quot;,&lt;br /&gt;
	language                = &amp;quot;P407&amp;quot;,&lt;br /&gt;
	hasPart                 = &amp;quot;P527&amp;quot;,&lt;br /&gt;
	publicationDate         = &amp;quot;P577&amp;quot;,&lt;br /&gt;
	startTime               = &amp;quot;P580&amp;quot;,&lt;br /&gt;
	endTime                 = &amp;quot;P582&amp;quot;,&lt;br /&gt;
	chapter                 = &amp;quot;P792&amp;quot;,&lt;br /&gt;
	retrieved               = &amp;quot;P813&amp;quot;,&lt;br /&gt;
	referenceURL            = &amp;quot;P854&amp;quot;,&lt;br /&gt;
	sectionVerseOrParagraph = &amp;quot;P958&amp;quot;,&lt;br /&gt;
	archiveURL              = &amp;quot;P1065&amp;quot;,&lt;br /&gt;
	title                   = &amp;quot;P1476&amp;quot;,&lt;br /&gt;
	formatterURL            = &amp;quot;P1630&amp;quot;,&lt;br /&gt;
	quote                   = &amp;quot;P1683&amp;quot;,&lt;br /&gt;
	shortName               = &amp;quot;P1813&amp;quot;,&lt;br /&gt;
	definingFormula         = &amp;quot;P2534&amp;quot;,&lt;br /&gt;
	archiveDate             = &amp;quot;P2960&amp;quot;,&lt;br /&gt;
	inferredFrom            = &amp;quot;P3452&amp;quot;,&lt;br /&gt;
	typeOfReference         = &amp;quot;P3865&amp;quot;,&lt;br /&gt;
	column                  = &amp;quot;P3903&amp;quot;,&lt;br /&gt;
	subjectNamedAs          = &amp;quot;P1810&amp;quot;,&lt;br /&gt;
	wikidataProperty        = &amp;quot;P1687&amp;quot;,&lt;br /&gt;
	publishedIn             = &amp;quot;P1433&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local aliasesQ = {&lt;br /&gt;
	percentage              = &amp;quot;Q11229&amp;quot;,&lt;br /&gt;
	prolepticJulianCalendar = &amp;quot;Q1985786&amp;quot;,&lt;br /&gt;
	citeWeb                 = &amp;quot;Q5637226&amp;quot;,&lt;br /&gt;
	citeQ                   = &amp;quot;Q22321052&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local parameters = {&lt;br /&gt;
	property  = &amp;quot;%p&amp;quot;,&lt;br /&gt;
	qualifier = &amp;quot;%q&amp;quot;,&lt;br /&gt;
	reference = &amp;quot;%r&amp;quot;,&lt;br /&gt;
	alias     = &amp;quot;%a&amp;quot;,&lt;br /&gt;
	badge     = &amp;quot;%b&amp;quot;,&lt;br /&gt;
	separator = &amp;quot;%s&amp;quot;,&lt;br /&gt;
	general   = &amp;quot;%x&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local formats = {&lt;br /&gt;
	property              = &amp;quot;%p[%s][%r]&amp;quot;,&lt;br /&gt;
	qualifier             = &amp;quot;%q[%s][%r]&amp;quot;,&lt;br /&gt;
	reference             = &amp;quot;%r&amp;quot;,&lt;br /&gt;
	propertyWithQualifier = &amp;quot;%p[ &amp;lt;span style=\&amp;quot;font-size:85\\%\&amp;quot;&amp;gt;(%q)&amp;lt;/span&amp;gt;][%s][%r]&amp;quot;,&lt;br /&gt;
	alias                 = &amp;quot;%a[%s]&amp;quot;,&lt;br /&gt;
	badge                 = &amp;quot;%b[%s]&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local hookNames = {              -- {level_1, level_2}&lt;br /&gt;
	[parameters.property]         = {&amp;quot;getProperty&amp;quot;},&lt;br /&gt;
	[parameters.reference]        = {&amp;quot;getReferences&amp;quot;, &amp;quot;getReference&amp;quot;},&lt;br /&gt;
	[parameters.qualifier]        = {&amp;quot;getAllQualifiers&amp;quot;},&lt;br /&gt;
	[parameters.qualifier..&amp;quot;\\d&amp;quot;] = {&amp;quot;getQualifiers&amp;quot;, &amp;quot;getQualifier&amp;quot;},&lt;br /&gt;
	[parameters.alias]            = {&amp;quot;getAlias&amp;quot;},&lt;br /&gt;
	[parameters.badge]            = {&amp;quot;getBadge&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- default value objects, should NOT be mutated but instead copied&lt;br /&gt;
local defaultSeparators = {&lt;br /&gt;
	[&amp;quot;sep&amp;quot;]      = {&amp;quot; &amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%s&amp;quot;]    = {&amp;quot;,&amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%q&amp;quot;]    = {&amp;quot;; &amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%q\\d&amp;quot;] = {&amp;quot;, &amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%r&amp;quot;]    = nil,  -- none&lt;br /&gt;
	[&amp;quot;punc&amp;quot;]     = nil   -- none&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local rankTable = {&lt;br /&gt;
	[&amp;quot;preferred&amp;quot;]  = 1,&lt;br /&gt;
	[&amp;quot;normal&amp;quot;]     = 2,&lt;br /&gt;
	[&amp;quot;deprecated&amp;quot;] = 3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function replaceAlias(id)&lt;br /&gt;
	if aliasesP[id] then&lt;br /&gt;
		id = aliasesP[id]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function errorText(code, ...)&lt;br /&gt;
	local text = i18n[&amp;quot;errors&amp;quot;][code]&lt;br /&gt;
	if arg then text = mw.ustring.format(text, unpack(arg)) end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function throwError(errorMessage, ...)&lt;br /&gt;
	error(errorText(errorMessage, unpack(arg)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function replaceDecimalMark(num)&lt;br /&gt;
	return mw.ustring.gsub(num, &amp;quot;[.]&amp;quot;, i18n[&#039;numeric&#039;][&#039;decimal-mark&#039;], 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function padZeros(num, numDigits)&lt;br /&gt;
	local numZeros&lt;br /&gt;
	local negative = false&lt;br /&gt;
&lt;br /&gt;
	if num &amp;lt; 0 then&lt;br /&gt;
		negative = true&lt;br /&gt;
		num = num * -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	num = tostring(num)&lt;br /&gt;
	numZeros = numDigits - num:len()&lt;br /&gt;
&lt;br /&gt;
	for _ = 1, numZeros do&lt;br /&gt;
		num = &amp;quot;0&amp;quot;..num&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if negative then&lt;br /&gt;
		num = &amp;quot;-&amp;quot;..num&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return num&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function replaceSpecialChar(chr)&lt;br /&gt;
	if chr == &#039;_&#039; then&lt;br /&gt;
		-- replace underscores with spaces&lt;br /&gt;
		return &#039; &#039;&lt;br /&gt;
	else&lt;br /&gt;
		return chr&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function replaceSpecialChars(str)&lt;br /&gt;
	local chr&lt;br /&gt;
	local esc = false&lt;br /&gt;
	local strOut = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #str do&lt;br /&gt;
		chr = str:sub(i,i)&lt;br /&gt;
&lt;br /&gt;
		if not esc then&lt;br /&gt;
			if chr == &#039;\\&#039; then&lt;br /&gt;
				esc = true&lt;br /&gt;
			else&lt;br /&gt;
				strOut = strOut .. replaceSpecialChar(chr)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			strOut = strOut .. chr&lt;br /&gt;
			esc = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return strOut&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildWikilink(target, label)&lt;br /&gt;
	if not label or target == label then&lt;br /&gt;
		return &amp;quot;[[&amp;quot; .. target .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;[[&amp;quot; .. target .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used to make frame.args mutable, to replace #frame.args (which is always 0)&lt;br /&gt;
-- with the actual amount and to simply copy tables&lt;br /&gt;
local function copyTable(tIn)&lt;br /&gt;
	if not tIn then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tOut = {}&lt;br /&gt;
&lt;br /&gt;
	for i, v in pairs(tIn) do&lt;br /&gt;
		tOut[i] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tOut&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used to merge output arrays together;&lt;br /&gt;
-- note that it currently mutates the first input array&lt;br /&gt;
local function mergeArrays(a1, a2)&lt;br /&gt;
	for i = 1, #a2 do&lt;br /&gt;
		a1[#a1 + 1] = a2[i]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return a1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function split(str, del)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local i, j = str:find(del)&lt;br /&gt;
&lt;br /&gt;
	if i and j then&lt;br /&gt;
		out[1] = str:sub(1, i - 1)&lt;br /&gt;
		out[2] = str:sub(j + 1)&lt;br /&gt;
	else&lt;br /&gt;
		out[1] = str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseWikidataURL(url)&lt;br /&gt;
	local id&lt;br /&gt;
&lt;br /&gt;
	if url:match(&#039;^http[s]?://&#039;) then&lt;br /&gt;
		id = split(url, &amp;quot;Q&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if id[2] then&lt;br /&gt;
			return &amp;quot;Q&amp;quot; .. id[2]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseDate(dateStr, precision)&lt;br /&gt;
	precision = precision or &amp;quot;d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local i, j, index, ptr&lt;br /&gt;
	local parts = {nil, nil, nil}&lt;br /&gt;
&lt;br /&gt;
	if dateStr == nil then&lt;br /&gt;
		return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- &#039;T&#039; for snak values, &#039;/&#039; for outputs with &#039;/Julian&#039; attached&lt;br /&gt;
	i, j = dateStr:find(&amp;quot;[T/]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if i then&lt;br /&gt;
		dateStr = dateStr:sub(1, i-1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local from = 1&lt;br /&gt;
&lt;br /&gt;
	if dateStr:sub(1,1) == &amp;quot;-&amp;quot; then&lt;br /&gt;
		-- this is a negative number, look further ahead&lt;br /&gt;
		from = 2&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	index = 1&lt;br /&gt;
	ptr = 1&lt;br /&gt;
&lt;br /&gt;
	i, j = dateStr:find(&amp;quot;-&amp;quot;, from)&lt;br /&gt;
&lt;br /&gt;
	if i then&lt;br /&gt;
		-- year&lt;br /&gt;
		parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)  -- explicitly give base 10 to prevent error&lt;br /&gt;
&lt;br /&gt;
		if parts[index] == -0 then&lt;br /&gt;
			parts[index] = tonumber(&amp;quot;0&amp;quot;)  -- for some reason, &#039;parts[index] = 0&#039; may actually store &#039;-0&#039;, so parse from string instead&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if precision == &amp;quot;y&amp;quot; then&lt;br /&gt;
			-- we&#039;re done&lt;br /&gt;
			return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		index = index + 1&lt;br /&gt;
		ptr = i + 1&lt;br /&gt;
&lt;br /&gt;
		i, j = dateStr:find(&amp;quot;-&amp;quot;, ptr)&lt;br /&gt;
&lt;br /&gt;
		if i then&lt;br /&gt;
			-- month&lt;br /&gt;
			parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)&lt;br /&gt;
&lt;br /&gt;
			if precision == &amp;quot;m&amp;quot; then&lt;br /&gt;
				-- we&#039;re done&lt;br /&gt;
				return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			ptr = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dateStr:sub(ptr) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		-- day if we have month, month if we have year, or year&lt;br /&gt;
		parts[index] = tonumber(dateStr:sub(ptr), 10)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)&lt;br /&gt;
	if aY == nil or bY == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	aM = aM or 1&lt;br /&gt;
	aD = aD or 1&lt;br /&gt;
	bM = bM or 1&lt;br /&gt;
	bD = bD or 1&lt;br /&gt;
&lt;br /&gt;
	if aY &amp;lt; bY then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aY &amp;gt; bY then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aM &amp;lt; bM then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aM &amp;gt; bM then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aD &amp;lt; bD then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getHookName(param, index)&lt;br /&gt;
	if hookNames[param] then&lt;br /&gt;
		return hookNames[param][index]&lt;br /&gt;
	elseif param:len() &amp;gt; 2 then&lt;br /&gt;
		return hookNames[param:sub(1, 2)..&amp;quot;\\d&amp;quot;][index]&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function alwaysTrue()&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- The following function parses a format string.&lt;br /&gt;
--&lt;br /&gt;
-- The example below shows how a parsed string is structured in memory.&lt;br /&gt;
-- Variables other than &#039;str&#039; and &#039;child&#039; are left out for clarity&#039;s sake.&lt;br /&gt;
--&lt;br /&gt;
-- Example:&lt;br /&gt;
-- &amp;quot;A %p B [%s[%q1]] C [%r] D&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- Structure:&lt;br /&gt;
-- [&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot;A &amp;quot;&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot;%p&amp;quot;&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot; B &amp;quot;,&lt;br /&gt;
--     child =&lt;br /&gt;
--     [&lt;br /&gt;
--       {&lt;br /&gt;
--         str = &amp;quot;%s&amp;quot;,&lt;br /&gt;
--         child =&lt;br /&gt;
--         [&lt;br /&gt;
--           {&lt;br /&gt;
--             str = &amp;quot;%q1&amp;quot;&lt;br /&gt;
--           }&lt;br /&gt;
--         ]&lt;br /&gt;
--       }&lt;br /&gt;
--     ]&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot; C &amp;quot;,&lt;br /&gt;
--     child =&lt;br /&gt;
--     [&lt;br /&gt;
--       {&lt;br /&gt;
--         str = &amp;quot;%r&amp;quot;&lt;br /&gt;
--       }&lt;br /&gt;
--     ]&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot; D&amp;quot;&lt;br /&gt;
--   }&lt;br /&gt;
-- ]&lt;br /&gt;
--&lt;br /&gt;
local function parseFormat(str)&lt;br /&gt;
	local chr, esc, param, root, cur, prev, new&lt;br /&gt;
	local params = {}&lt;br /&gt;
&lt;br /&gt;
	local function newObject(array)&lt;br /&gt;
		local obj = {}  -- new object&lt;br /&gt;
		obj.str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		array[#array + 1] = obj  -- array{object}&lt;br /&gt;
		obj.parent = array&lt;br /&gt;
&lt;br /&gt;
		return obj&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function endParam()&lt;br /&gt;
		if param &amp;gt; 0 then&lt;br /&gt;
			if cur.str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				cur.str = &amp;quot;%&amp;quot;..cur.str&lt;br /&gt;
				cur.param = true&lt;br /&gt;
				params[cur.str] = true&lt;br /&gt;
				cur.parent.req[cur.str] = true&lt;br /&gt;
				prev = cur&lt;br /&gt;
				cur = newObject(cur.parent)&lt;br /&gt;
			end&lt;br /&gt;
			param = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	root = {}  -- array&lt;br /&gt;
	root.req = {}&lt;br /&gt;
	cur = newObject(root)&lt;br /&gt;
	prev = nil&lt;br /&gt;
&lt;br /&gt;
	esc = false&lt;br /&gt;
	param = 0&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #str do&lt;br /&gt;
		chr = str:sub(i,i)&lt;br /&gt;
&lt;br /&gt;
		if not esc then&lt;br /&gt;
			if chr == &#039;\\&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				esc = true&lt;br /&gt;
			elseif chr == &#039;%&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				if cur.str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					cur = newObject(cur.parent)&lt;br /&gt;
				end&lt;br /&gt;
				param = 2&lt;br /&gt;
			elseif chr == &#039;[&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				if prev and cur.str == &amp;quot;&amp;quot; then&lt;br /&gt;
					table.remove(cur.parent)&lt;br /&gt;
					cur = prev&lt;br /&gt;
				end&lt;br /&gt;
				cur.child = {}  -- new array&lt;br /&gt;
				cur.child.req = {}&lt;br /&gt;
				cur.child.parent = cur&lt;br /&gt;
				cur = newObject(cur.child)&lt;br /&gt;
			elseif chr == &#039;]&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				if cur.parent.parent then&lt;br /&gt;
					new = newObject(cur.parent.parent.parent)&lt;br /&gt;
					if cur.str == &amp;quot;&amp;quot; then&lt;br /&gt;
						table.remove(cur.parent)&lt;br /&gt;
					end&lt;br /&gt;
					cur = new&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				if param &amp;gt; 1 then&lt;br /&gt;
					param = param - 1&lt;br /&gt;
				elseif param == 1 then&lt;br /&gt;
					if not chr:match(&#039;%d&#039;) then&lt;br /&gt;
						endParam()&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				cur.str = cur.str .. replaceSpecialChar(chr)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur.str = cur.str .. chr&lt;br /&gt;
			esc = false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		prev = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	endParam()&lt;br /&gt;
&lt;br /&gt;
	-- make sure that at least one required parameter has been defined&lt;br /&gt;
	if not next(root.req) then&lt;br /&gt;
		throwError(&amp;quot;missing-required-parameter&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- make sure that the separator parameter &amp;quot;%s&amp;quot; is not amongst the required parameters&lt;br /&gt;
	if root.req[parameters.separator] then&lt;br /&gt;
		throwError(&amp;quot;extra-required-parameter&amp;quot;, parameters.separator)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return root, params&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function sortOnRank(claims)&lt;br /&gt;
	local rankPos&lt;br /&gt;
	local ranks = {{}, {}, {}, {}}  -- preferred, normal, deprecated, (default)&lt;br /&gt;
	local sorted = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(claims) do&lt;br /&gt;
		rankPos = rankTable[v.rank] or 4&lt;br /&gt;
		ranks[rankPos][#ranks[rankPos] + 1] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	sorted = ranks[1]&lt;br /&gt;
	sorted = mergeArrays(sorted, ranks[2])&lt;br /&gt;
	sorted = mergeArrays(sorted, ranks[3])&lt;br /&gt;
&lt;br /&gt;
	return sorted&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isValueInTable(searchedItem, inputTable)&lt;br /&gt;
	for _, item in pairs(inputTable) do&lt;br /&gt;
		if item == searchedItem 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;
local Config = {}&lt;br /&gt;
&lt;br /&gt;
-- allows for recursive calls&lt;br /&gt;
function Config:new()&lt;br /&gt;
	local cfg = {}&lt;br /&gt;
	setmetatable(cfg, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
&lt;br /&gt;
	cfg.separators = {&lt;br /&gt;
		-- single value objects wrapped in arrays so that we can pass by reference&lt;br /&gt;
		[&amp;quot;sep&amp;quot;]   = {copyTable(defaultSeparators[&amp;quot;sep&amp;quot;])},&lt;br /&gt;
		[&amp;quot;sep%s&amp;quot;] = {copyTable(defaultSeparators[&amp;quot;sep%s&amp;quot;])},&lt;br /&gt;
		[&amp;quot;sep%q&amp;quot;] = {copyTable(defaultSeparators[&amp;quot;sep%q&amp;quot;])},&lt;br /&gt;
		[&amp;quot;sep%r&amp;quot;] = {copyTable(defaultSeparators[&amp;quot;sep%r&amp;quot;])},&lt;br /&gt;
		[&amp;quot;punc&amp;quot;]  = {copyTable(defaultSeparators[&amp;quot;punc&amp;quot;])}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	cfg.entity = nil&lt;br /&gt;
	cfg.entityID = nil&lt;br /&gt;
	cfg.propertyID = nil&lt;br /&gt;
	cfg.propertyValue = nil&lt;br /&gt;
	cfg.qualifierIDs = {}&lt;br /&gt;
	cfg.qualifierIDsAndValues = {}&lt;br /&gt;
&lt;br /&gt;
	cfg.bestRank = true&lt;br /&gt;
	cfg.ranks = {true, true, false}  -- preferred = true, normal = true, deprecated = false&lt;br /&gt;
	cfg.foundRank = #cfg.ranks&lt;br /&gt;
	cfg.flagBest = false&lt;br /&gt;
	cfg.flagRank = false&lt;br /&gt;
&lt;br /&gt;
	cfg.periods = {true, true, true}  -- future = true, current = true, former = true&lt;br /&gt;
	cfg.flagPeriod = false&lt;br /&gt;
	cfg.atDate = {parseDate(os.date(&#039;!%Y-%m-%d&#039;))}  -- today as {year, month, day}&lt;br /&gt;
&lt;br /&gt;
	cfg.mdyDate = false&lt;br /&gt;
	cfg.singleClaim = false&lt;br /&gt;
	cfg.sourcedOnly = false&lt;br /&gt;
	cfg.editable = false&lt;br /&gt;
	cfg.editAtEnd = false&lt;br /&gt;
&lt;br /&gt;
	cfg.inSitelinks = false&lt;br /&gt;
&lt;br /&gt;
	cfg.langCode = mw.language.getContentLanguage().code&lt;br /&gt;
	cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)&lt;br /&gt;
	cfg.langObj = mw.language.new(cfg.langCode)&lt;br /&gt;
&lt;br /&gt;
	cfg.siteID = mw.wikibase.getGlobalSiteId()&lt;br /&gt;
&lt;br /&gt;
	cfg.states = {}&lt;br /&gt;
	cfg.states.qualifiersCount = 0&lt;br /&gt;
	cfg.curState = nil&lt;br /&gt;
&lt;br /&gt;
	cfg.prefetchedRefs = nil&lt;br /&gt;
&lt;br /&gt;
	return cfg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local State = {}&lt;br /&gt;
&lt;br /&gt;
function State:new(cfg, type)&lt;br /&gt;
	local stt = {}&lt;br /&gt;
	setmetatable(stt, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
&lt;br /&gt;
	stt.conf = cfg&lt;br /&gt;
	stt.type = type&lt;br /&gt;
&lt;br /&gt;
	stt.results = {}&lt;br /&gt;
&lt;br /&gt;
	stt.parsedFormat = {}&lt;br /&gt;
	stt.separator = {}&lt;br /&gt;
	stt.movSeparator = {}&lt;br /&gt;
	stt.puncMark = {}&lt;br /&gt;
&lt;br /&gt;
	stt.linked = false&lt;br /&gt;
	stt.rawValue = false&lt;br /&gt;
	stt.shortName = false&lt;br /&gt;
	stt.anyLanguage = false&lt;br /&gt;
	stt.unitOnly = false&lt;br /&gt;
	stt.singleValue = false&lt;br /&gt;
&lt;br /&gt;
	return stt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- if id == nil then item connected to current page is used&lt;br /&gt;
function Config:getLabel(id, raw, link, short)&lt;br /&gt;
	local label = nil&lt;br /&gt;
	local prefix, title= &amp;quot;&amp;quot;, nil&lt;br /&gt;
&lt;br /&gt;
	if not id then&lt;br /&gt;
		id = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
&lt;br /&gt;
		if not id then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	id = id:upper()  -- just to be sure&lt;br /&gt;
&lt;br /&gt;
	if raw then&lt;br /&gt;
		-- check if given id actually exists&lt;br /&gt;
		if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then&lt;br /&gt;
			label = id&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		prefix, title = &amp;quot;d:Special:EntityPage/&amp;quot;, label -- may be nil&lt;br /&gt;
	else&lt;br /&gt;
		-- try short name first if requested&lt;br /&gt;
		if short then&lt;br /&gt;
			label = p._property{aliasesP.shortName, [p.args.eid] = id}  -- get short name&lt;br /&gt;
&lt;br /&gt;
			if label == &amp;quot;&amp;quot; then&lt;br /&gt;
				label = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- get label&lt;br /&gt;
		if not label then&lt;br /&gt;
			label = mw.wikibase.getLabel(id)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not label then&lt;br /&gt;
		label = &amp;quot;&amp;quot;&lt;br /&gt;
	elseif link then&lt;br /&gt;
		-- build a link if requested&lt;br /&gt;
		if not title then&lt;br /&gt;
			if id:sub(1,1) == &amp;quot;Q&amp;quot; then&lt;br /&gt;
				title = mw.wikibase.getSitelink(id)&lt;br /&gt;
			elseif id:sub(1,1) == &amp;quot;P&amp;quot; then&lt;br /&gt;
				-- properties have no sitelink, link to Wikidata instead&lt;br /&gt;
				prefix, title = &amp;quot;d:Special:EntityPage/&amp;quot;, id&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup&lt;br /&gt;
		if title then&lt;br /&gt;
			label = buildWikilink(prefix .. title, label)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:getEditIcon()&lt;br /&gt;
	local value = &amp;quot;&amp;quot;&lt;br /&gt;
	local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
	local front = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	local back = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if self.entityID:sub(1,1) == &amp;quot;P&amp;quot; then&lt;br /&gt;
		prefix = &amp;quot;Property:&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.editAtEnd then&lt;br /&gt;
		front = &#039;&amp;lt;span style=&amp;quot;float:&#039;&lt;br /&gt;
&lt;br /&gt;
		if self.langObj:isRTL() then&lt;br /&gt;
			front = front .. &#039;left&#039;&lt;br /&gt;
		else&lt;br /&gt;
			front = front .. &#039;right&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		front = front .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		back = &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = &amp;quot;[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=&amp;quot; .. i18n[&#039;info&#039;][&#039;edit-on-wikidata&#039;] .. &amp;quot;|link=https://www.wikidata.org/wiki/&amp;quot; .. prefix .. self.entityID .. &amp;quot;?uselang=&amp;quot; .. self.langCode&lt;br /&gt;
&lt;br /&gt;
	if self.propertyID then&lt;br /&gt;
		value = value .. &amp;quot;#&amp;quot; .. self.propertyID&lt;br /&gt;
	elseif self.inSitelinks then&lt;br /&gt;
		value = value .. &amp;quot;#sitelinks-wikipedia&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = value .. &amp;quot;|&amp;quot; .. i18n[&#039;info&#039;][&#039;edit-on-wikidata&#039;] .. &amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	return front .. value .. back&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used to create the final output string when it&#039;s all done, so that for references the&lt;br /&gt;
-- function extensionTag(&amp;quot;ref&amp;quot;, ...) is only called when they really ended up in the final output&lt;br /&gt;
function Config:concatValues(valuesArray)&lt;br /&gt;
	local outString = &amp;quot;&amp;quot;&lt;br /&gt;
	local j, skip&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #valuesArray do&lt;br /&gt;
		-- check if this is a reference&lt;br /&gt;
		if valuesArray[i].refHash then&lt;br /&gt;
			j = i - 1&lt;br /&gt;
			skip = false&lt;br /&gt;
&lt;br /&gt;
			-- skip this reference if it is part of a continuous row of references that already contains the exact same reference&lt;br /&gt;
			while valuesArray[j] and valuesArray[j].refHash do&lt;br /&gt;
				if valuesArray[i].refHash == valuesArray[j].refHash then&lt;br /&gt;
					skip = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				j = j - 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not skip then&lt;br /&gt;
				-- add &amp;lt;ref&amp;gt; tag with the reference&#039;s hash as its name (to deduplicate references)&lt;br /&gt;
				outString = outString .. mw.getCurrentFrame():extensionTag(&amp;quot;ref&amp;quot;, valuesArray[i][1], {name = valuesArray[i].refHash})&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			outString = outString .. valuesArray[i][1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return outString&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:convertUnit(unit, raw, link, short, unitOnly)&lt;br /&gt;
	local space = &amp;quot; &amp;quot;&lt;br /&gt;
	local label = &amp;quot;&amp;quot;&lt;br /&gt;
	local itemID&lt;br /&gt;
&lt;br /&gt;
	if unit == &amp;quot;&amp;quot; or unit == &amp;quot;1&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if unitOnly then&lt;br /&gt;
		space = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	itemID = parseWikidataURL(unit)&lt;br /&gt;
&lt;br /&gt;
	if itemID then&lt;br /&gt;
		if itemID == aliasesQ.percentage then&lt;br /&gt;
			return &amp;quot;%&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			label = self:getLabel(itemID, raw, link, short)&lt;br /&gt;
&lt;br /&gt;
			if label ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				return space .. label&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:getValue(snak)&lt;br /&gt;
	return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)&lt;br /&gt;
	if snak.snaktype == &#039;value&#039; then&lt;br /&gt;
		local datatype = snak.datavalue.type&lt;br /&gt;
		local subtype = snak.datatype&lt;br /&gt;
		local datavalue = snak.datavalue.value&lt;br /&gt;
&lt;br /&gt;
		if datatype == &#039;string&#039; then&lt;br /&gt;
			if subtype == &#039;url&#039; and link then&lt;br /&gt;
				-- create link explicitly&lt;br /&gt;
				if raw then&lt;br /&gt;
					-- will render as a linked number like [1]&lt;br /&gt;
					return &amp;quot;[&amp;quot; .. datavalue .. &amp;quot;]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					return &amp;quot;[&amp;quot; .. datavalue .. &amp;quot; &amp;quot; .. datavalue .. &amp;quot;]&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			elseif subtype == &#039;commonsMedia&#039; then&lt;br /&gt;
				if link then&lt;br /&gt;
					return buildWikilink(&amp;quot;c:File:&amp;quot; .. datavalue, datavalue)&lt;br /&gt;
				elseif not raw then&lt;br /&gt;
					return &amp;quot;[[File:&amp;quot; .. datavalue .. &amp;quot;]]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					return datavalue&lt;br /&gt;
				end&lt;br /&gt;
			elseif subtype == &#039;geo-shape&#039; and link then&lt;br /&gt;
				return buildWikilink(&amp;quot;c:&amp;quot; .. datavalue, datavalue)&lt;br /&gt;
			elseif subtype == &#039;math&#039; and not raw then&lt;br /&gt;
				local attribute = nil&lt;br /&gt;
&lt;br /&gt;
				if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then&lt;br /&gt;
					attribute = {qid = self.entityID}&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				return mw.getCurrentFrame():extensionTag(&amp;quot;math&amp;quot;, datavalue, attribute)&lt;br /&gt;
			elseif subtype == &#039;external-id&#039; and link then&lt;br /&gt;
				local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property}  -- get formatter URL&lt;br /&gt;
&lt;br /&gt;
				if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					url = mw.ustring.gsub(url, &amp;quot;$1&amp;quot;, datavalue)&lt;br /&gt;
					return &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. datavalue .. &amp;quot;]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					return datavalue&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				return datavalue&lt;br /&gt;
			end&lt;br /&gt;
		elseif datatype == &#039;monolingualtext&#039; then&lt;br /&gt;
			if anyLang or datavalue[&#039;language&#039;] == self.langCode then&lt;br /&gt;
				return datavalue[&#039;text&#039;]&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		elseif datatype == &#039;quantity&#039; then&lt;br /&gt;
			local value = &amp;quot;&amp;quot;&lt;br /&gt;
			local unit&lt;br /&gt;
&lt;br /&gt;
			if not unitOnly then&lt;br /&gt;
				-- get value and strip + signs from front&lt;br /&gt;
				value = mw.ustring.gsub(datavalue[&#039;amount&#039;], &amp;quot;^%+(.+)$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
				if raw then&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- replace decimal mark based on locale&lt;br /&gt;
				value = replaceDecimalMark(value)&lt;br /&gt;
&lt;br /&gt;
				-- add delimiters for readability&lt;br /&gt;
				value = i18n.addDelimiters(value)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			unit = self:convertUnit(datavalue[&#039;unit&#039;], raw, link, short, unitOnly)&lt;br /&gt;
&lt;br /&gt;
			if unit then&lt;br /&gt;
				value = value .. unit&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return value&lt;br /&gt;
		elseif datatype == &#039;time&#039; then&lt;br /&gt;
			local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr&lt;br /&gt;
			local yFactor = 1&lt;br /&gt;
			local sign = 1&lt;br /&gt;
			local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
			local suffix = &amp;quot;&amp;quot;&lt;br /&gt;
			local mayAddCalendar = false&lt;br /&gt;
			local calendar = &amp;quot;&amp;quot;&lt;br /&gt;
			local precision = datavalue[&#039;precision&#039;]&lt;br /&gt;
&lt;br /&gt;
			if precision == 11 then&lt;br /&gt;
				p = &amp;quot;d&amp;quot;&lt;br /&gt;
			elseif precision == 10 then&lt;br /&gt;
				p = &amp;quot;m&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				p = &amp;quot;y&amp;quot;&lt;br /&gt;
				yFactor = 10^(9-precision)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			y, m, d = parseDate(datavalue[&#039;time&#039;], p)&lt;br /&gt;
&lt;br /&gt;
			if y &amp;lt; 0 then&lt;br /&gt;
				sign = -1&lt;br /&gt;
				y = y * sign&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- if precision is tens/hundreds/thousands/millions/billions of years&lt;br /&gt;
			if precision &amp;lt;= 8 then&lt;br /&gt;
				yDiv = y / yFactor&lt;br /&gt;
&lt;br /&gt;
				-- if precision is tens/hundreds/thousands of years&lt;br /&gt;
				if precision &amp;gt;= 6 then&lt;br /&gt;
					mayAddCalendar = true&lt;br /&gt;
&lt;br /&gt;
					if precision &amp;lt;= 7 then&lt;br /&gt;
						-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)&lt;br /&gt;
						yRound = math.ceil(yDiv)&lt;br /&gt;
&lt;br /&gt;
						if not raw then&lt;br /&gt;
							if precision == 6 then&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;millennium&#039;]&lt;br /&gt;
							else&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;century&#039;]&lt;br /&gt;
							end&lt;br /&gt;
&lt;br /&gt;
							suffix = i18n.getOrdinalSuffix(yRound) .. suffix&lt;br /&gt;
						else&lt;br /&gt;
							-- if not verbose, take the first year of the century/millennium&lt;br /&gt;
							-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)&lt;br /&gt;
							yRound = (yRound - 1) * yFactor + 1&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						-- precision == 8&lt;br /&gt;
						-- round decades down (e.g. 2010s)&lt;br /&gt;
						yRound = math.floor(yDiv) * yFactor&lt;br /&gt;
&lt;br /&gt;
						if not raw then&lt;br /&gt;
							prefix = i18n[&#039;datetime&#039;][&#039;prefixes&#039;][&#039;decade-period&#039;]&lt;br /&gt;
							suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;decade-period&#039;]&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if raw and sign &amp;lt; 0 then&lt;br /&gt;
						-- if BCE then compensate for &amp;quot;counting backwards&amp;quot;&lt;br /&gt;
						-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)&lt;br /&gt;
						yRound = yRound + yFactor - 1&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					local yReFactor, yReDiv, yReRound&lt;br /&gt;
&lt;br /&gt;
					-- round to nearest for tens of thousands of years or more&lt;br /&gt;
					yRound = math.floor(yDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
					if yRound == 0 then&lt;br /&gt;
						if precision &amp;lt;= 2 and y ~= 0 then&lt;br /&gt;
							yReFactor = 1e6&lt;br /&gt;
							yReDiv = y / yReFactor&lt;br /&gt;
							yReRound = math.floor(yReDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
							if yReDiv == yReRound then&lt;br /&gt;
								-- change precision to millions of years only if we have a whole number of them&lt;br /&gt;
								precision = 3&lt;br /&gt;
								yFactor = yReFactor&lt;br /&gt;
								yRound = yReRound&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						if yRound == 0 then&lt;br /&gt;
							-- otherwise, take the unrounded (original) number of years&lt;br /&gt;
							precision = 5&lt;br /&gt;
							yFactor = 1&lt;br /&gt;
							yRound = y&lt;br /&gt;
							mayAddCalendar = true&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if precision &amp;gt;= 1 and y ~= 0 then&lt;br /&gt;
						yFull = yRound * yFactor&lt;br /&gt;
&lt;br /&gt;
						yReFactor = 1e9&lt;br /&gt;
						yReDiv = yFull / yReFactor&lt;br /&gt;
						yReRound = math.floor(yReDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
						if yReDiv == yReRound then&lt;br /&gt;
							-- change precision to billions of years if we&#039;re in that range&lt;br /&gt;
							precision = 0&lt;br /&gt;
							yFactor = yReFactor&lt;br /&gt;
							yRound = yReRound&lt;br /&gt;
						else&lt;br /&gt;
							yReFactor = 1e6&lt;br /&gt;
							yReDiv = yFull / yReFactor&lt;br /&gt;
							yReRound = math.floor(yReDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
							if yReDiv == yReRound then&lt;br /&gt;
								-- change precision to millions of years if we&#039;re in that range&lt;br /&gt;
								precision = 3&lt;br /&gt;
								yFactor = yReFactor&lt;br /&gt;
								yRound = yReRound&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if not raw then&lt;br /&gt;
						if precision == 3 then&lt;br /&gt;
							suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;million-years&#039;]&lt;br /&gt;
						elseif precision == 0 then&lt;br /&gt;
							suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;billion-years&#039;]&lt;br /&gt;
						else&lt;br /&gt;
							yRound = yRound * yFactor&lt;br /&gt;
							if yRound == 1 then&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;year&#039;]&lt;br /&gt;
							else&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;years&#039;]&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						yRound = yRound * yFactor&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				yRound = y&lt;br /&gt;
				mayAddCalendar = true&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if mayAddCalendar then&lt;br /&gt;
				calendarID = parseWikidataURL(datavalue[&#039;calendarmodel&#039;])&lt;br /&gt;
&lt;br /&gt;
				if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then&lt;br /&gt;
					if not raw then&lt;br /&gt;
						if link then&lt;br /&gt;
							calendar = &amp;quot; (&amp;quot;..buildWikilink(i18n[&#039;datetime&#039;][&#039;julian-calendar&#039;], i18n[&#039;datetime&#039;][&#039;julian&#039;])..&amp;quot;)&amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							calendar = &amp;quot; (&amp;quot;..i18n[&#039;datetime&#039;][&#039;julian&#039;]..&amp;quot;)&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						calendar = &amp;quot;/&amp;quot;..i18n[&#039;datetime&#039;][&#039;julian&#039;]&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not raw then&lt;br /&gt;
				local ce = nil&lt;br /&gt;
&lt;br /&gt;
				if sign &amp;lt; 0 then&lt;br /&gt;
					ce = i18n[&#039;datetime&#039;][&#039;BCE&#039;]&lt;br /&gt;
				elseif precision &amp;lt;= 5 then&lt;br /&gt;
					ce = i18n[&#039;datetime&#039;][&#039;CE&#039;]&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if ce then&lt;br /&gt;
					if link then&lt;br /&gt;
						ce = buildWikilink(i18n[&#039;datetime&#039;][&#039;common-era&#039;], ce)&lt;br /&gt;
					end&lt;br /&gt;
					suffix = suffix .. &amp;quot; &amp;quot; .. ce&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				value = tostring(yRound)&lt;br /&gt;
&lt;br /&gt;
				if m then&lt;br /&gt;
					dateStr = self.langObj:formatDate(&amp;quot;F&amp;quot;, &amp;quot;1-&amp;quot;..m..&amp;quot;-1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
					if d then&lt;br /&gt;
						if self.mdyDate then&lt;br /&gt;
							dateStr = dateStr .. &amp;quot; &amp;quot; .. d .. &amp;quot;,&amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							dateStr = d .. &amp;quot; &amp;quot; .. dateStr&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					value = dateStr .. &amp;quot; &amp;quot; .. value&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				value = prefix .. value .. suffix .. calendar&lt;br /&gt;
			else&lt;br /&gt;
				value = padZeros(yRound * sign, 4)&lt;br /&gt;
&lt;br /&gt;
				if m then&lt;br /&gt;
					value = value .. &amp;quot;-&amp;quot; .. padZeros(m, 2)&lt;br /&gt;
&lt;br /&gt;
					if d then&lt;br /&gt;
						value = value .. &amp;quot;-&amp;quot; .. padZeros(d, 2)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				value = value .. calendar&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return value&lt;br /&gt;
		elseif datatype == &#039;globecoordinate&#039; then&lt;br /&gt;
			-- logic from https://github.com/DataValues/Geo (v4.0.1)&lt;br /&gt;
&lt;br /&gt;
			local precision, unitsPerDegree, numDigits, strFormat, value, globe&lt;br /&gt;
			local latitude, latConv, latValue, latLink&lt;br /&gt;
			local longitude, lonConv, lonValue, lonLink&lt;br /&gt;
			local latDirection, latDirectionN, latDirectionS, latDirectionEN&lt;br /&gt;
			local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN&lt;br /&gt;
			local degSymbol, minSymbol, secSymbol, separator&lt;br /&gt;
&lt;br /&gt;
			local latDegrees = nil&lt;br /&gt;
			local latMinutes = nil&lt;br /&gt;
			local latSeconds = nil&lt;br /&gt;
			local lonDegrees = nil&lt;br /&gt;
			local lonMinutes = nil&lt;br /&gt;
			local lonSeconds = nil&lt;br /&gt;
&lt;br /&gt;
			local latDegSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local latMinSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local latSecSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local lonDegSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local lonMinSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local lonSecSym = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			local latDirectionEN_N = &amp;quot;N&amp;quot;&lt;br /&gt;
			local latDirectionEN_S = &amp;quot;S&amp;quot;&lt;br /&gt;
			local lonDirectionEN_E = &amp;quot;E&amp;quot;&lt;br /&gt;
			local lonDirectionEN_W = &amp;quot;W&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			if not raw then&lt;br /&gt;
				latDirectionN = i18n[&#039;coord&#039;][&#039;latitude-north&#039;]&lt;br /&gt;
				latDirectionS = i18n[&#039;coord&#039;][&#039;latitude-south&#039;]&lt;br /&gt;
				lonDirectionE = i18n[&#039;coord&#039;][&#039;longitude-east&#039;]&lt;br /&gt;
				lonDirectionW = i18n[&#039;coord&#039;][&#039;longitude-west&#039;]&lt;br /&gt;
&lt;br /&gt;
				degSymbol = i18n[&#039;coord&#039;][&#039;degrees&#039;]&lt;br /&gt;
				minSymbol = i18n[&#039;coord&#039;][&#039;minutes&#039;]&lt;br /&gt;
				secSymbol = i18n[&#039;coord&#039;][&#039;seconds&#039;]&lt;br /&gt;
				separator = i18n[&#039;coord&#039;][&#039;separator&#039;]&lt;br /&gt;
			else&lt;br /&gt;
				latDirectionN = latDirectionEN_N&lt;br /&gt;
				latDirectionS = latDirectionEN_S&lt;br /&gt;
				lonDirectionE = lonDirectionEN_E&lt;br /&gt;
				lonDirectionW = lonDirectionEN_W&lt;br /&gt;
&lt;br /&gt;
				degSymbol = &amp;quot;/&amp;quot;&lt;br /&gt;
				minSymbol = &amp;quot;/&amp;quot;&lt;br /&gt;
				secSymbol = &amp;quot;/&amp;quot;&lt;br /&gt;
				separator = &amp;quot;/&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			latitude = datavalue[&#039;latitude&#039;]&lt;br /&gt;
			longitude = datavalue[&#039;longitude&#039;]&lt;br /&gt;
&lt;br /&gt;
			if latitude &amp;lt; 0 then&lt;br /&gt;
				latDirection = latDirectionS&lt;br /&gt;
				latDirectionEN = latDirectionEN_S&lt;br /&gt;
				latitude = math.abs(latitude)&lt;br /&gt;
			else&lt;br /&gt;
				latDirection = latDirectionN&lt;br /&gt;
				latDirectionEN = latDirectionEN_N&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if longitude &amp;lt; 0 then&lt;br /&gt;
				lonDirection = lonDirectionW&lt;br /&gt;
				lonDirectionEN = lonDirectionEN_W&lt;br /&gt;
				longitude = math.abs(longitude)&lt;br /&gt;
			else&lt;br /&gt;
				lonDirection = lonDirectionE&lt;br /&gt;
				lonDirectionEN = lonDirectionEN_E&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			precision = datavalue[&#039;precision&#039;]&lt;br /&gt;
&lt;br /&gt;
			if not precision or precision &amp;lt;= 0 then&lt;br /&gt;
				precision = 1 / 3600  -- precision not set (correctly), set to arcsecond&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- remove insignificant detail&lt;br /&gt;
			latitude = math.floor(latitude / precision + 0.5) * precision&lt;br /&gt;
			longitude = math.floor(longitude / precision + 0.5) * precision&lt;br /&gt;
&lt;br /&gt;
			if precision &amp;gt;= 1 - (1 / 60) and precision &amp;lt; 1 then&lt;br /&gt;
				precision = 1&lt;br /&gt;
			elseif precision &amp;gt;= (1 / 60) - (1 / 3600) and precision &amp;lt; (1 / 60) then&lt;br /&gt;
				precision = 1 / 60&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if precision &amp;gt;= 1 then&lt;br /&gt;
				unitsPerDegree = 1&lt;br /&gt;
			elseif precision &amp;gt;= (1 / 60)  then&lt;br /&gt;
				unitsPerDegree = 60&lt;br /&gt;
			else&lt;br /&gt;
				unitsPerDegree = 3600&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			numDigits = math.ceil(-math.log10(unitsPerDegree * precision))&lt;br /&gt;
&lt;br /&gt;
			if numDigits &amp;lt;= 0 then&lt;br /&gt;
				numDigits = tonumber(&amp;quot;0&amp;quot;)  -- for some reason, &#039;numDigits = 0&#039; may actually store &#039;-0&#039;, so parse from string instead&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			strFormat = &amp;quot;%.&amp;quot; .. numDigits .. &amp;quot;f&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			if precision &amp;gt;= 1 then&lt;br /&gt;
				latDegrees = strFormat:format(latitude)&lt;br /&gt;
				lonDegrees = strFormat:format(longitude)&lt;br /&gt;
&lt;br /&gt;
				if not raw then&lt;br /&gt;
					latDegSym = replaceDecimalMark(latDegrees) .. degSymbol&lt;br /&gt;
					lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol&lt;br /&gt;
				else&lt;br /&gt;
					latDegSym = latDegrees .. degSymbol&lt;br /&gt;
					lonDegSym = lonDegrees .. degSymbol&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits&lt;br /&gt;
				lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits&lt;br /&gt;
&lt;br /&gt;
				if precision &amp;gt;= (1 / 60) then&lt;br /&gt;
					latMinutes = latConv&lt;br /&gt;
					lonMinutes = lonConv&lt;br /&gt;
				else&lt;br /&gt;
					latSeconds = latConv&lt;br /&gt;
					lonSeconds = lonConv&lt;br /&gt;
&lt;br /&gt;
					latMinutes = math.floor(latSeconds / 60)&lt;br /&gt;
					lonMinutes = math.floor(lonSeconds / 60)&lt;br /&gt;
&lt;br /&gt;
					latSeconds = strFormat:format(latSeconds - (latMinutes * 60))&lt;br /&gt;
					lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))&lt;br /&gt;
&lt;br /&gt;
					if not raw then&lt;br /&gt;
						latSecSym = replaceDecimalMark(latSeconds) .. secSymbol&lt;br /&gt;
						lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol&lt;br /&gt;
					else&lt;br /&gt;
						latSecSym = latSeconds .. secSymbol&lt;br /&gt;
						lonSecSym = lonSeconds .. secSymbol&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				latDegrees = math.floor(latMinutes / 60)&lt;br /&gt;
				lonDegrees = math.floor(lonMinutes / 60)&lt;br /&gt;
&lt;br /&gt;
				latDegSym = latDegrees .. degSymbol&lt;br /&gt;
				lonDegSym = lonDegrees .. degSymbol&lt;br /&gt;
&lt;br /&gt;
				latMinutes = latMinutes - (latDegrees * 60)&lt;br /&gt;
				lonMinutes = lonMinutes - (lonDegrees * 60)&lt;br /&gt;
&lt;br /&gt;
				if precision &amp;gt;= (1 / 60) then&lt;br /&gt;
					latMinutes = strFormat:format(latMinutes)&lt;br /&gt;
					lonMinutes = strFormat:format(lonMinutes)&lt;br /&gt;
&lt;br /&gt;
					if not raw then&lt;br /&gt;
						latMinSym = replaceDecimalMark(latMinutes) .. minSymbol&lt;br /&gt;
						lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol&lt;br /&gt;
					else&lt;br /&gt;
						latMinSym = latMinutes .. minSymbol&lt;br /&gt;
						lonMinSym = lonMinutes .. minSymbol&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					latMinSym = latMinutes .. minSymbol&lt;br /&gt;
					lonMinSym = lonMinutes .. minSymbol&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			latValue = latDegSym .. latMinSym .. latSecSym .. latDirection&lt;br /&gt;
			lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection&lt;br /&gt;
&lt;br /&gt;
			value = latValue .. separator .. lonValue&lt;br /&gt;
&lt;br /&gt;
			if link then&lt;br /&gt;
				globe = parseWikidataURL(datavalue[&#039;globe&#039;])&lt;br /&gt;
&lt;br /&gt;
				if globe then&lt;br /&gt;
					globe = mw.wikibase.getLabelByLang(globe, &amp;quot;en&amp;quot;):lower()&lt;br /&gt;
				else&lt;br /&gt;
					globe = &amp;quot;earth&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				latLink = table.concat({latDegrees, latMinutes, latSeconds}, &amp;quot;_&amp;quot;)&lt;br /&gt;
				lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, &amp;quot;_&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
				value = &amp;quot;[https://geohack.toolforge.org/geohack.php?language=&amp;quot;..self.langCode..&amp;quot;&amp;amp;params=&amp;quot;..latLink..&amp;quot;_&amp;quot;..latDirectionEN..&amp;quot;_&amp;quot;..lonLink..&amp;quot;_&amp;quot;..lonDirectionEN..&amp;quot;_globe:&amp;quot;..globe..&amp;quot; &amp;quot;..value..&amp;quot;]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return value&lt;br /&gt;
		elseif datatype == &#039;wikibase-entityid&#039; then&lt;br /&gt;
			local label&lt;br /&gt;
			local itemID = datavalue[&#039;numeric-id&#039;]&lt;br /&gt;
&lt;br /&gt;
			if subtype == &#039;wikibase-item&#039; then&lt;br /&gt;
				itemID = &amp;quot;Q&amp;quot; .. itemID&lt;br /&gt;
			elseif subtype == &#039;wikibase-property&#039; then&lt;br /&gt;
				itemID = &amp;quot;P&amp;quot; .. itemID&lt;br /&gt;
			else&lt;br /&gt;
				return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. errorText(&#039;unknown-data-type&#039;, subtype) .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			label = self:getLabel(itemID, raw, link, short)&lt;br /&gt;
&lt;br /&gt;
			if label == &amp;quot;&amp;quot; then&lt;br /&gt;
				label = nil&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return label&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. errorText(&#039;unknown-data-type&#039;, datatype) .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif snak.snaktype == &#039;somevalue&#039; and not noSpecial then&lt;br /&gt;
		if raw then&lt;br /&gt;
			return &amp;quot; &amp;quot;  -- single space represents &#039;somevalue&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return i18n[&#039;values&#039;][&#039;unknown&#039;]&lt;br /&gt;
		end&lt;br /&gt;
	elseif snak.snaktype == &#039;novalue&#039; and not noSpecial then&lt;br /&gt;
		if raw then&lt;br /&gt;
			return &amp;quot;&amp;quot;  -- empty string represents &#039;novalue&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return i18n[&#039;values&#039;][&#039;none&#039;]&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:getSingleRawQualifier(claim, qualifierID)&lt;br /&gt;
	local qualifiers&lt;br /&gt;
&lt;br /&gt;
	if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end&lt;br /&gt;
&lt;br /&gt;
	if qualifiers and qualifiers[1] then&lt;br /&gt;
		return self:getValue(qualifiers[1], true)  -- raw = true&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:snakEqualsValue(snak, value)&lt;br /&gt;
	local snakValue = self:getValue(snak, true)  -- raw = true&lt;br /&gt;
&lt;br /&gt;
	if snakValue and snak.snaktype == &#039;value&#039; and snak.datavalue.type == &#039;wikibase-entityid&#039; then value = value:upper() end&lt;br /&gt;
&lt;br /&gt;
	return snakValue == value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:setRank(rank)&lt;br /&gt;
	local rankPos&lt;br /&gt;
&lt;br /&gt;
	if rank == p.flags.best then&lt;br /&gt;
		self.bestRank = true&lt;br /&gt;
		self.flagBest = true  -- mark that &#039;best&#039; flag was given&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if rank:sub(1,9) == p.flags.preferred then&lt;br /&gt;
		rankPos = 1&lt;br /&gt;
	elseif rank:sub(1,6) == p.flags.normal then&lt;br /&gt;
		rankPos = 2&lt;br /&gt;
	elseif rank:sub(1,10) == p.flags.deprecated then&lt;br /&gt;
		rankPos = 3&lt;br /&gt;
	else&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- one of the rank flags was given, check if another one was given before&lt;br /&gt;
	if not self.flagRank then&lt;br /&gt;
		self.ranks = {false, false, false}  -- no other rank flag given before, so unset ranks&lt;br /&gt;
		self.bestRank = self.flagBest       -- unsets bestRank only if &#039;best&#039; flag was not given before&lt;br /&gt;
		self.flagRank = true                -- mark that a rank flag was given&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if rank:sub(-1) == &amp;quot;+&amp;quot; then&lt;br /&gt;
		for i = rankPos, 1, -1 do&lt;br /&gt;
			self.ranks[i] = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif rank:sub(-1) == &amp;quot;-&amp;quot; then&lt;br /&gt;
		for i = rankPos, #self.ranks do&lt;br /&gt;
			self.ranks[i] = true&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		self.ranks[rankPos] = true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:setPeriod(period)&lt;br /&gt;
	local periodPos&lt;br /&gt;
&lt;br /&gt;
	if period == p.flags.future then&lt;br /&gt;
		periodPos = 1&lt;br /&gt;
	elseif period == p.flags.current then&lt;br /&gt;
		periodPos = 2&lt;br /&gt;
	elseif period == p.flags.former then&lt;br /&gt;
		periodPos = 3&lt;br /&gt;
	else&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- one of the period flags was given, check if another one was given before&lt;br /&gt;
	if not self.flagPeriod then&lt;br /&gt;
		self.periods = {false, false, false}  -- no other period flag given before, so unset periods&lt;br /&gt;
		self.flagPeriod = true                -- mark that a period flag was given&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	self.periods[periodPos] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:qualifierMatches(claim, id, value)&lt;br /&gt;
	local qualifiers&lt;br /&gt;
&lt;br /&gt;
	if claim.qualifiers then qualifiers = claim.qualifiers[id] end&lt;br /&gt;
	if qualifiers then&lt;br /&gt;
		for _, v in pairs(qualifiers) do&lt;br /&gt;
			if self:snakEqualsValue(v, value) then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif value == &amp;quot;&amp;quot; then&lt;br /&gt;
		-- if the qualifier is not present then treat it the same as the special value &#039;novalue&#039;&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:rankMatches(rankPos)&lt;br /&gt;
	if self.bestRank then&lt;br /&gt;
		return (self.ranks[rankPos] and self.foundRank &amp;gt;= rankPos)&lt;br /&gt;
	else&lt;br /&gt;
		return self.ranks[rankPos]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:timeMatches(claim)&lt;br /&gt;
	local startTime = nil&lt;br /&gt;
	local startTimeY = nil&lt;br /&gt;
	local startTimeM = nil&lt;br /&gt;
	local startTimeD = nil&lt;br /&gt;
	local endTime = nil&lt;br /&gt;
	local endTimeY = nil&lt;br /&gt;
	local endTimeM = nil&lt;br /&gt;
	local endTimeD = nil&lt;br /&gt;
&lt;br /&gt;
	if self.periods[1] and self.periods[2] and self.periods[3] then&lt;br /&gt;
		-- any time&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)&lt;br /&gt;
	if startTime and startTime ~= &amp;quot;&amp;quot; and startTime ~= &amp;quot; &amp;quot; then&lt;br /&gt;
		startTimeY, startTimeM, startTimeD = parseDate(startTime)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)&lt;br /&gt;
	if endTime and endTime ~= &amp;quot;&amp;quot; and endTime ~= &amp;quot; &amp;quot; then&lt;br /&gt;
		endTimeY, endTimeM, endTimeD = parseDate(endTime)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then&lt;br /&gt;
		-- invalidate end time if it precedes start time&lt;br /&gt;
		endTimeY = nil&lt;br /&gt;
		endTimeM = nil&lt;br /&gt;
		endTimeD = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.periods[1] then&lt;br /&gt;
		-- future&lt;br /&gt;
		if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.periods[2] then&lt;br /&gt;
		-- current&lt;br /&gt;
		if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and&lt;br /&gt;
		   (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.periods[3] then&lt;br /&gt;
		-- former&lt;br /&gt;
		if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:processFlag(flag)&lt;br /&gt;
	if not flag then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if flag == p.flags.linked then&lt;br /&gt;
		self.curState.linked = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.raw then&lt;br /&gt;
		self.curState.rawValue = true&lt;br /&gt;
&lt;br /&gt;
		if self.curState == self.states[parameters.reference] then&lt;br /&gt;
			-- raw reference values end with periods and require a separator (other than none)&lt;br /&gt;
			self.separators[&amp;quot;sep%r&amp;quot;][1] = {&amp;quot; &amp;quot;}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.short then&lt;br /&gt;
		self.curState.shortName = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.multilanguage then&lt;br /&gt;
		self.curState.anyLanguage = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.unit then&lt;br /&gt;
		self.curState.unitOnly = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.mdy then&lt;br /&gt;
		self.mdyDate = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.single then&lt;br /&gt;
		self.singleClaim = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.sourced then&lt;br /&gt;
		self.sourcedOnly = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.edit then&lt;br /&gt;
		self.editable = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.editAtEnd then&lt;br /&gt;
		self.editable = true&lt;br /&gt;
		self.editAtEnd = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.best or flag:match(&#039;^&#039;..p.flags.preferred..&#039;[+-]?$&#039;) or flag:match(&#039;^&#039;..p.flags.normal..&#039;[+-]?$&#039;) or flag:match(&#039;^&#039;..p.flags.deprecated..&#039;[+-]?$&#039;) then&lt;br /&gt;
		self:setRank(flag)&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then&lt;br /&gt;
		self:setPeriod(flag)&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == &amp;quot;&amp;quot; then&lt;br /&gt;
		-- ignore empty flags and carry on&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:processFlagOrCommand(flag)&lt;br /&gt;
	local param = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if not flag then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if flag == p.claimCommands.property or flag == p.claimCommands.properties then&lt;br /&gt;
		param = parameters.property&lt;br /&gt;
	elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then&lt;br /&gt;
		self.states.qualifiersCount = self.states.qualifiersCount + 1&lt;br /&gt;
		param = parameters.qualifier .. self.states.qualifiersCount&lt;br /&gt;
		self.separators[&amp;quot;sep&amp;quot;..param] = {copyTable(defaultSeparators[&amp;quot;sep%q\\d&amp;quot;])}&lt;br /&gt;
	elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then&lt;br /&gt;
		param = parameters.reference&lt;br /&gt;
	else&lt;br /&gt;
		return self:processFlag(flag)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.states[param] then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create a new state for each command&lt;br /&gt;
	self.states[param] = State:new(self, param)&lt;br /&gt;
&lt;br /&gt;
	-- use &amp;quot;%x&amp;quot; as the general parameter name&lt;br /&gt;
	self.states[param].parsedFormat = parseFormat(parameters.general)  -- will be overwritten for param==&amp;quot;%p&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- set the separator&lt;br /&gt;
	self.states[param].separator = self.separators[&amp;quot;sep&amp;quot;..param]  -- will be nil for param==&amp;quot;%p&amp;quot;, which will be set separately&lt;br /&gt;
&lt;br /&gt;
	if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then&lt;br /&gt;
		self.states[param].singleValue = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	self.curState = self.states[param]&lt;br /&gt;
&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:processSeparators(args)&lt;br /&gt;
	local sep&lt;br /&gt;
&lt;br /&gt;
	for i, v in pairs(self.separators) do&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			sep = replaceSpecialChars(args[i])&lt;br /&gt;
&lt;br /&gt;
			if sep ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				self.separators[i][1] = {sep}&lt;br /&gt;
			else&lt;br /&gt;
				self.separators[i][1] = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:setFormatAndSeparators(state, parsedFormat)&lt;br /&gt;
	state.parsedFormat = parsedFormat&lt;br /&gt;
	state.separator = self.separators[&amp;quot;sep&amp;quot;]&lt;br /&gt;
	state.movSeparator = self.separators[&amp;quot;sep&amp;quot;..parameters.separator]&lt;br /&gt;
	state.puncMark = self.separators[&amp;quot;punc&amp;quot;]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- determines if a claim has references by prefetching them from the claim using getReferences,&lt;br /&gt;
-- which applies some filtering that determines if a reference is actually returned,&lt;br /&gt;
-- and caches the references for later use&lt;br /&gt;
function State:isSourced(claim)&lt;br /&gt;
	self.conf.prefetchedRefs = self:getReferences(claim)&lt;br /&gt;
	return (#self.conf.prefetchedRefs &amp;gt; 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:resetCaches()&lt;br /&gt;
	-- any prefetched references of the previous claim must not be used&lt;br /&gt;
	self.conf.prefetchedRefs = nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:claimMatches(claim)&lt;br /&gt;
	local matches, rankPos&lt;br /&gt;
&lt;br /&gt;
	-- first of all, reset any cached values used for the previous claim&lt;br /&gt;
	self:resetCaches()&lt;br /&gt;
&lt;br /&gt;
	-- if a property value was given, check if it matches the claim&#039;s property value&lt;br /&gt;
	if self.conf.propertyValue then&lt;br /&gt;
		matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)&lt;br /&gt;
	else&lt;br /&gt;
		matches = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if any qualifier values were given, check if each matches one of the claim&#039;s qualifier values&lt;br /&gt;
	for i, v in pairs(self.conf.qualifierIDsAndValues) do&lt;br /&gt;
		matches = (matches and self.conf:qualifierMatches(claim, i, v))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check if the claim&#039;s rank and time period match&lt;br /&gt;
	rankPos = rankTable[claim.rank] or 4&lt;br /&gt;
	matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))&lt;br /&gt;
&lt;br /&gt;
	-- if only claims with references must be returned, check if this one has any&lt;br /&gt;
	if self.conf.sourcedOnly then&lt;br /&gt;
		matches = (matches and self:isSourced(claim))  -- prefetches and caches references&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return matches, rankPos&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:out()&lt;br /&gt;
	local result  -- collection of arrays with value objects&lt;br /&gt;
	local valuesArray  -- array with value objects&lt;br /&gt;
	local sep = nil  -- value object&lt;br /&gt;
	local out = {}  -- array with value objects&lt;br /&gt;
&lt;br /&gt;
	local function walk(formatTable, result)&lt;br /&gt;
		local valuesArray = {}  -- array with value objects&lt;br /&gt;
&lt;br /&gt;
		for i, v in pairs(formatTable.req) do&lt;br /&gt;
			if not result[i] or not result[i][1] then&lt;br /&gt;
				-- we&#039;ve got no result for a parameter that is required on this level,&lt;br /&gt;
				-- so skip this level (and its children) by returning an empty result&lt;br /&gt;
				return {}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, v in ipairs(formatTable) do&lt;br /&gt;
			if v.param then&lt;br /&gt;
				valuesArray = mergeArrays(valuesArray, result[v.str])&lt;br /&gt;
			elseif v.str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				valuesArray[#valuesArray + 1] = {v.str}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if v.child then&lt;br /&gt;
				valuesArray = mergeArrays(valuesArray, walk(v.child, result))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return valuesArray&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- iterate through the results from back to front, so that we know when to add separators&lt;br /&gt;
	for i = #self.results, 1, -1 do&lt;br /&gt;
		result = self.results[i]&lt;br /&gt;
&lt;br /&gt;
		-- if there is already some output, then add the separators&lt;br /&gt;
		if #out &amp;gt; 0 then&lt;br /&gt;
			sep = self.separator[1]  -- fixed separator&lt;br /&gt;
			result[parameters.separator] = {self.movSeparator[1]}  -- movable separator&lt;br /&gt;
		else&lt;br /&gt;
			sep = nil&lt;br /&gt;
			result[parameters.separator] = {self.puncMark[1]}  -- optional punctuation mark&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		valuesArray = walk(self.parsedFormat, result)&lt;br /&gt;
&lt;br /&gt;
		if #valuesArray &amp;gt; 0 then&lt;br /&gt;
			if sep then&lt;br /&gt;
				valuesArray[#valuesArray + 1] = sep&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			out = mergeArrays(valuesArray, out)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- reset state before next iteration&lt;br /&gt;
	self.results = {}&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getProperty(claim)&lt;br /&gt;
	local value = {self:getValue(claim.mainsnak)}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getQualifiers(claim, param)&lt;br /&gt;
	local qualifiers&lt;br /&gt;
&lt;br /&gt;
	if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end&lt;br /&gt;
	if qualifiers then&lt;br /&gt;
		-- iterate through claim&#039;s qualifier statements to collect their values;&lt;br /&gt;
		-- return array with multiple value objects&lt;br /&gt;
		return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier..&amp;quot;\\d&amp;quot;][2], count = 1})  -- pass qualifier state with level 2 hook&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 2 hook&lt;br /&gt;
function State:getQualifier(snak)&lt;br /&gt;
	local value = {self:getValue(snak)}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getAllQualifiers(claim, param, result, hooks)&lt;br /&gt;
	local out = {}  -- array with value objects&lt;br /&gt;
	local sep = self.conf.separators[&amp;quot;sep&amp;quot;..parameters.qualifier][1]  -- value object&lt;br /&gt;
&lt;br /&gt;
	-- iterate through the output of the separate &amp;quot;qualifier(s)&amp;quot; commands&lt;br /&gt;
	for i = 1, self.conf.states.qualifiersCount do&lt;br /&gt;
&lt;br /&gt;
		-- if a hook has not been called yet, call it now&lt;br /&gt;
		if not result[parameters.qualifier..i] then&lt;br /&gt;
			self:callHook(parameters.qualifier..i, hooks, claim, result)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- if there is output for this particular &amp;quot;qualifier(s)&amp;quot; command, then add it&lt;br /&gt;
		if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then&lt;br /&gt;
&lt;br /&gt;
			-- if there is already some output, then add the separator&lt;br /&gt;
			if #out &amp;gt; 0 and sep then&lt;br /&gt;
				out[#out + 1] = sep&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			out = mergeArrays(out, result[parameters.qualifier..i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getReferences(claim)&lt;br /&gt;
	if self.conf.prefetchedRefs then&lt;br /&gt;
		-- return references that have been prefetched by isSourced&lt;br /&gt;
		return self.conf.prefetchedRefs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if claim.references then&lt;br /&gt;
		-- iterate through claim&#039;s reference statements to collect their values;&lt;br /&gt;
		-- return array with multiple value objects&lt;br /&gt;
		return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1})  -- pass reference state with level 2 hook&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 2 hook&lt;br /&gt;
function State:getReference(statement)&lt;br /&gt;
	local citeParamMapping = i18n[&#039;cite&#039;][&#039;param-mapping&#039;]&lt;br /&gt;
	local citeConfig = i18n[&#039;cite&#039;][&#039;config&#039;]&lt;br /&gt;
	local citeTypes = i18n[&#039;cite&#039;][&#039;output-types&#039;]&lt;br /&gt;
	&lt;br /&gt;
	-- will hold rendered properties of the reference which are not directly from statement.snaks, &lt;br /&gt;
	-- Namely, these are a backup title from &amp;quot;subject named as&amp;quot; and a URL generated from an external ID.&lt;br /&gt;
    local additionalProcessedProperties = {}&lt;br /&gt;
    -- for each citation type, there will be an associative array that associates lists of rendered properties&lt;br /&gt;
    -- to citation-template parameters&lt;br /&gt;
    local groupedProcessedProperties = {}&lt;br /&gt;
    -- like above, but only associates one rendered property to each parameter; if the above variable&lt;br /&gt;
    -- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. &amp;quot;author1&amp;quot;)&lt;br /&gt;
	local citeParams = {}&lt;br /&gt;
&lt;br /&gt;
	local citeErrors = {}&lt;br /&gt;
	local referenceEmpty = true  -- will be set to false if at least one parameter is left unremoved&lt;br /&gt;
&lt;br /&gt;
	local version = 11  -- increment this each time the below logic is changed to avoid conflict errors&lt;br /&gt;
&lt;br /&gt;
	if not statement.snaks then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- don&#039;t use bot-added references referencing Wikimedia projects or containing &amp;quot;inferred from&amp;quot; (such references are not usable on Wikipedia)&lt;br /&gt;
	if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- don&#039;t include &amp;quot;type of reference&amp;quot;&lt;br /&gt;
	if statement.snaks[aliasesP.typeOfReference] then&lt;br /&gt;
		statement.snaks[aliasesP.typeOfReference] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- don&#039;t include &amp;quot;image&amp;quot; to prevent littering&lt;br /&gt;
	if statement.snaks[aliasesP.image] then&lt;br /&gt;
		statement.snaks[aliasesP.image] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- don&#039;t include &amp;quot;language&amp;quot; if it is equal to the local one&lt;br /&gt;
	if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then&lt;br /&gt;
		statement.snaks[aliasesP.language] = nil&lt;br /&gt;
	end&lt;br /&gt;
    &lt;br /&gt;
    if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then&lt;br /&gt;
    	-- &amp;quot;stated in&amp;quot; was given but &amp;quot;reference URL&amp;quot; was not.&lt;br /&gt;
    	-- get &amp;quot;Wikidata property&amp;quot; properties from the item in &amp;quot;stated in&amp;quot;&lt;br /&gt;
    	-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference&lt;br /&gt;
    	&lt;br /&gt;
    	-- find the &amp;quot;Wikidata property&amp;quot; properties in the item from &amp;quot;stated in&amp;quot;&lt;br /&gt;
    	local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, &amp;quot;, &amp;quot;, true)&lt;br /&gt;
    	for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do&lt;br /&gt;
    		if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == &amp;quot;external-id&amp;quot; then&lt;br /&gt;
    			local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true)  -- not raw, linked&lt;br /&gt;
    			if mw.ustring.match(tempLink, &amp;quot;^%[%Z- %Z+%]$&amp;quot;) then  -- getValue returned a URL in square brackets.&lt;br /&gt;
    				-- the link is in wiki markup, so strip the square brackets and the display text&lt;br /&gt;
    				-- gsub also returns another, discarted value, therefore the result is assigned to tempLink first&lt;br /&gt;
    				tempLink = mw.ustring.gsub(tempLink, &amp;quot;^%[(%Z-) %Z+%]$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
    		    	additionalProcessedProperties[aliasesP.referenceURL] = {tempLink}&lt;br /&gt;
    			    statement.snaks[wikidataPropertyOfSource] = nil&lt;br /&gt;
    			    break&lt;br /&gt;
    			end&lt;br /&gt;
    		end&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- don&#039;t include &amp;quot;subject named as&amp;quot;, but use it as the title when &amp;quot;title&amp;quot; is not present but a URL is&lt;br /&gt;
    if statement.snaks[aliasesP.subjectNamedAs] then&lt;br /&gt;
    	if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalProcessedProperties[aliasesP.referenceURL]) then&lt;br /&gt;
    		additionalProcessedProperties[aliasesP.title] = {self:getReferenceDetail(statement.snaks, aliasesP.subjectNamedAs, false, false, true)}  -- not raw, not linked, anyLang&lt;br /&gt;
    	end&lt;br /&gt;
    	statement.snaks[aliasesP.subjectNamedAs] = nil&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- initialize groupedProcessedProperties and citeParams&lt;br /&gt;
    for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
    	groupedProcessedProperties[citeType] = {}&lt;br /&gt;
    	citeParams[citeType] = {}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- fill groupedProcessedProperties&lt;br /&gt;
	for refProperty in pairs(statement.snaks) do&lt;br /&gt;
		-- add the parameter to each matching type of citation&lt;br /&gt;
		for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
			repeat  -- just a simple wrapper to emulate &amp;quot;continue&amp;quot;&lt;br /&gt;
				-- skip if there already have been errors&lt;br /&gt;
				if citeErrors[citeType] then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				-- set mappingKey and prefix&lt;br /&gt;
				local mappingKey&lt;br /&gt;
				local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
				if statement.snaks[refProperty][1].datatype == &#039;external-id&#039; then&lt;br /&gt;
					mappingKey = &amp;quot;external-id&amp;quot;&lt;br /&gt;
					prefix = self.conf:getLabel(refProperty)&lt;br /&gt;
		&lt;br /&gt;
					if prefix ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						prefix = prefix .. &amp;quot; &amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					mappingKey = refProperty&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local paramName = citeParamMapping[citeType][mappingKey]&lt;br /&gt;
				-- skip properties with empty parameter name&lt;br /&gt;
				if paramName == &amp;quot;&amp;quot; then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				referenceEmpty = false&lt;br /&gt;
&lt;br /&gt;
				-- handle unknown properties in the reference&lt;br /&gt;
				if not paramName then&lt;br /&gt;
					local error_message = errorText(&amp;quot;unknown-property-in-ref&amp;quot;, refProperty)&lt;br /&gt;
					assert(error_message)  -- Should not be nil&lt;br /&gt;
					citeErrors[citeType] = error_message&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				-- set processedProperty&lt;br /&gt;
				local processedProperty&lt;br /&gt;
				local raw = false  -- if the value is wanted raw&lt;br /&gt;
				if isValueInTable(paramName, citeConfig[citeType][&amp;quot;raw-value-params&amp;quot;] or {}) then&lt;br /&gt;
					raw = true&lt;br /&gt;
				end&lt;br /&gt;
				if isValueInTable(paramName, citeConfig[citeType][&amp;quot;numbered-params&amp;quot;] or {}) then&lt;br /&gt;
					-- Multiple values may be given.&lt;br /&gt;
					processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true)  -- anyLang = true&lt;br /&gt;
				else&lt;br /&gt;
					-- If multiple values are given, all but the first suitable one are discarted.&lt;br /&gt;
					processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= &#039;url&#039;), true)}  -- link = true/false, anyLang = true&lt;br /&gt;
				end&lt;br /&gt;
		&lt;br /&gt;
				if #processedProperty == 0 then&lt;br /&gt;
					break	&lt;br /&gt;
				end&lt;br /&gt;
                &lt;br /&gt;
                -- add an entry to groupedProcessedProperties&lt;br /&gt;
                if not groupedProcessedProperties[citeType][paramName] then&lt;br /&gt;
                	groupedProcessedProperties[citeType][paramName] = {}&lt;br /&gt;
                end&lt;br /&gt;
                for _, propertyValue in pairs(processedProperty) do&lt;br /&gt;
                	table.insert(groupedProcessedProperties[citeType][paramName], prefix .. propertyValue)&lt;br /&gt;
                end&lt;br /&gt;
            until true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- handle additional properties&lt;br /&gt;
	for refProperty in pairs(additionalProcessedProperties) do&lt;br /&gt;
		for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
			repeat&lt;br /&gt;
				-- skip if there already have been errors&lt;br /&gt;
				if citeErrors[citeType] then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
                local paramName = citeParamMapping[citeType][refProperty]&lt;br /&gt;
				-- handle unknown properties in the reference&lt;br /&gt;
				if not paramName then&lt;br /&gt;
					-- Skip this additional property, but do not cause an error.&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				if paramName == &amp;quot;&amp;quot; then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				referenceEmpty = false&lt;br /&gt;
                &lt;br /&gt;
                if not groupedProcessedProperties[citeType][paramName] then&lt;br /&gt;
                	groupedProcessedProperties[citeType][paramName] = {}&lt;br /&gt;
                end&lt;br /&gt;
                for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do&lt;br /&gt;
                	table.insert(groupedProcessedProperties[citeType][paramName], propertyValue)&lt;br /&gt;
                end&lt;br /&gt;
			until true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- fill citeParams&lt;br /&gt;
	for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
		for paramName, paramValues in pairs(groupedProcessedProperties[citeType]) do&lt;br /&gt;
			if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType][&amp;quot;numbered-params&amp;quot;] or {}) then&lt;br /&gt;
				citeParams[citeType][paramName] = paramValues[1]&lt;br /&gt;
			else&lt;br /&gt;
				-- There is more than one value for this parameter - the values will&lt;br /&gt;
				-- go into separate numbered parameters (e.g. &amp;quot;author1&amp;quot;, &amp;quot;author2&amp;quot;)&lt;br /&gt;
				for paramNum, paramValue in pairs(paramValues) do&lt;br /&gt;
					citeParams[citeType][paramName .. paramNum] = paramValue&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- handle missing mandatory parameters for the templates&lt;br /&gt;
	for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
		for _, requiredCiteParam in pairs(citeConfig[citeType][&amp;quot;mandatory-params&amp;quot;] or {}) do&lt;br /&gt;
			if not citeParams[citeType][requiredCiteParam] then  -- The required param is not present.&lt;br /&gt;
				if citeErrors[citeType] then  -- Do not override the previous error, if it exists.&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				local error_message = errorText(&amp;quot;missing-mandatory-param&amp;quot;, requiredCiteParam)&lt;br /&gt;
				assert(error_message)  -- Should not be nil&lt;br /&gt;
				citeErrors[citeType] = error_message&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local citeTypeToUse = nil&lt;br /&gt;
&lt;br /&gt;
    -- choose the output template&lt;br /&gt;
    for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
    	if not citeErrors[citeType] then&lt;br /&gt;
    		citeTypeToUse = citeType &lt;br /&gt;
    		break&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- set refContent&lt;br /&gt;
	local refContent = &amp;quot;&amp;quot;&lt;br /&gt;
	if citeTypeToUse then&lt;br /&gt;
		local templateToUse = citeConfig[citeTypeToUse][&amp;quot;template&amp;quot;]&lt;br /&gt;
		local paramsToUse = citeParams[citeTypeToUse]&lt;br /&gt;
		&lt;br /&gt;
		if not templateToUse or templateToUse == &amp;quot;&amp;quot; then &lt;br /&gt;
			throwError(&amp;quot;no-such-reference-template&amp;quot;, tostring(templateToUse), i18nPath, citeTypeToUse)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- if this module is being substituted then build a regular template call, otherwise expand the template&lt;br /&gt;
		if mw.isSubsting() then&lt;br /&gt;
			for i, v in pairs(paramsToUse) do&lt;br /&gt;
				refContent = refContent .. &amp;quot;|&amp;quot; .. i .. &amp;quot;=&amp;quot; .. v&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			refContent = &amp;quot;{{&amp;quot; .. templateToUse .. refContent .. &amp;quot;}}&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			xpcall(&lt;br /&gt;
				function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end,&lt;br /&gt;
				function () throwError(&amp;quot;no-such-reference-template&amp;quot;, templateToUse, i18nPath, citeTypeToUse) end&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	-- If the citation couldn&#039;t be displayed using any template, but is not empty (barring ignored propeties), throw an error.&lt;br /&gt;
	elseif not referenceEmpty then&lt;br /&gt;
		refContent = errorText(&amp;quot;malformed-reference-header&amp;quot;)&lt;br /&gt;
	    for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
	    	refContent = refContent .. errorText(&amp;quot;template-failure-reason&amp;quot;, citeConfig[citeType][&amp;quot;template&amp;quot;], citeErrors[citeType])&lt;br /&gt;
	    end&lt;br /&gt;
		refContent = refContent .. errorText(&amp;quot;malformed-reference-footer&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- wrap refContent&lt;br /&gt;
	local ref = {}&lt;br /&gt;
	if refContent ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		ref = {refContent}&lt;br /&gt;
&lt;br /&gt;
		if not self.rawValue then&lt;br /&gt;
			-- this should become a &amp;lt;ref&amp;gt; tag, so save the reference&#039;s hash for later&lt;br /&gt;
			ref.refHash = &amp;quot;wikidata-&amp;quot; .. statement.hash .. &amp;quot;-v&amp;quot; .. (tonumber(i18n[&#039;version&#039;]) + version)&lt;br /&gt;
		end&lt;br /&gt;
		return {ref}&lt;br /&gt;
	else&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- gets a detail of one particular type for a reference&lt;br /&gt;
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)&lt;br /&gt;
	local switchLang = anyLang&lt;br /&gt;
	local value = nil&lt;br /&gt;
&lt;br /&gt;
	if not snaks[dType] then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if anyLang, first try the local language and otherwise any language&lt;br /&gt;
	repeat&lt;br /&gt;
		for _, v in ipairs(snaks[dType]) do&lt;br /&gt;
			value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true)  -- noSpecial = true&lt;br /&gt;
&lt;br /&gt;
			if value then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if value or not anyLang then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		switchLang = not switchLang&lt;br /&gt;
	until anyLang and switchLang&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- gets the details of one particular type for a reference&lt;br /&gt;
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)&lt;br /&gt;
	local values = {}&lt;br /&gt;
&lt;br /&gt;
	if not snaks[dType] then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(snaks[dType]) do&lt;br /&gt;
		-- if nil is returned then it will not be added to the table&lt;br /&gt;
		values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true)  -- noSpecial = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return values&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getAlias(object)&lt;br /&gt;
	local value = object.value&lt;br /&gt;
	local title = nil&lt;br /&gt;
&lt;br /&gt;
	if value and self.linked then&lt;br /&gt;
		if self.conf.entityID:sub(1,1) == &amp;quot;Q&amp;quot; then&lt;br /&gt;
			title = mw.wikibase.getSitelink(self.conf.entityID)&lt;br /&gt;
		elseif self.conf.entityID:sub(1,1) == &amp;quot;P&amp;quot; then&lt;br /&gt;
			title = &amp;quot;d:Property:&amp;quot; .. self.conf.entityID&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if title then&lt;br /&gt;
			value = buildWikilink(title, value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = {value}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getBadge(value)&lt;br /&gt;
	value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)&lt;br /&gt;
&lt;br /&gt;
	if value == &amp;quot;&amp;quot; then&lt;br /&gt;
		value = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = {value}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:callHook(param, hooks, statement, result)&lt;br /&gt;
	-- call a parameter&#039;s hook if it has been defined and if it has not been called before&lt;br /&gt;
	if not result[param] and hooks[param] then&lt;br /&gt;
		local valuesArray = self[hooks[param]](self, statement, param, result, hooks)  -- array with value objects&lt;br /&gt;
&lt;br /&gt;
		-- add to the result&lt;br /&gt;
		if #valuesArray &amp;gt; 0 then&lt;br /&gt;
			result[param] = valuesArray&lt;br /&gt;
			result.count = result.count + 1&lt;br /&gt;
		else&lt;br /&gt;
			result[param] = {}  -- an empty array to indicate that we&#039;ve tried this hook already&lt;br /&gt;
			return true  -- miss == true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- iterate through claims, claim&#039;s qualifiers or claim&#039;s references to collect values&lt;br /&gt;
function State:iterate(statements, hooks, matchHook)&lt;br /&gt;
	matchHook = matchHook or alwaysTrue&lt;br /&gt;
&lt;br /&gt;
	local matches = false&lt;br /&gt;
	local rankPos = nil&lt;br /&gt;
	local result, gotRequired&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(statements) do&lt;br /&gt;
		-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)&lt;br /&gt;
		matches, rankPos = matchHook(self, v)&lt;br /&gt;
&lt;br /&gt;
		if matches then&lt;br /&gt;
			result = {count = 0}  -- collection of arrays with value objects&lt;br /&gt;
&lt;br /&gt;
			local function walk(formatTable)&lt;br /&gt;
				local miss&lt;br /&gt;
&lt;br /&gt;
				for i2, v2 in pairs(formatTable.req) do&lt;br /&gt;
					-- call a hook, adding its return value to the result&lt;br /&gt;
					miss = self:callHook(i2, hooks, v, result)&lt;br /&gt;
&lt;br /&gt;
					if miss then&lt;br /&gt;
						-- we miss a required value for this level, so return false&lt;br /&gt;
						return false&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if result.count == hooks.count then&lt;br /&gt;
						-- we&#039;re done if all hooks have been called;&lt;br /&gt;
						-- returning at this point breaks the loop&lt;br /&gt;
						return true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				for _, v2 in ipairs(formatTable) do&lt;br /&gt;
					if result.count == hooks.count then&lt;br /&gt;
						-- we&#039;re done if all hooks have been called;&lt;br /&gt;
						-- returning at this point prevents further childs from being processed&lt;br /&gt;
						return true&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if v2.child then&lt;br /&gt;
						walk(v2.child)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
			gotRequired = walk(self.parsedFormat)&lt;br /&gt;
&lt;br /&gt;
			-- only append the result if we got values for all required parameters on the root level&lt;br /&gt;
			if gotRequired then&lt;br /&gt;
				-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank&lt;br /&gt;
				if rankPos and self.conf.foundRank &amp;gt; rankPos then&lt;br /&gt;
					self.conf.foundRank = rankPos&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- append the result&lt;br /&gt;
				self.results[#self.results + 1] = result&lt;br /&gt;
&lt;br /&gt;
				-- break if we only need a single value&lt;br /&gt;
				if self.singleValue then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return self:out()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId)&lt;br /&gt;
	local id = nil&lt;br /&gt;
	local prop = nil&lt;br /&gt;
&lt;br /&gt;
	if arg then&lt;br /&gt;
		if arg:sub(1,1) == &amp;quot;:&amp;quot; then&lt;br /&gt;
			page = arg&lt;br /&gt;
			eid = nil&lt;br /&gt;
		elseif arg:sub(1,1):upper() == &amp;quot;Q&amp;quot; or arg:sub(1,9):lower() == &amp;quot;property:&amp;quot; or allowOmitPropPrefix then&lt;br /&gt;
			eid = arg&lt;br /&gt;
			page = nil&lt;br /&gt;
		else&lt;br /&gt;
			prop = arg&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if eid then&lt;br /&gt;
		if eid:sub(1,9):lower() == &amp;quot;property:&amp;quot; then&lt;br /&gt;
			id = replaceAlias(mw.text.trim(eid:sub(10)))&lt;br /&gt;
&lt;br /&gt;
			if id:sub(1,1):upper() ~= &amp;quot;P&amp;quot; then&lt;br /&gt;
				id = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			id = replaceAlias(eid)&lt;br /&gt;
		end&lt;br /&gt;
	elseif page then&lt;br /&gt;
		if page:sub(1,1) == &amp;quot;:&amp;quot; then&lt;br /&gt;
			page = mw.text.trim(page:sub(2))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not id then&lt;br /&gt;
		id = mw.wikibase.getEntityIdForCurrentPage() or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	id = id:upper()&lt;br /&gt;
&lt;br /&gt;
	if not mw.wikibase.isValidEntityId(id) then&lt;br /&gt;
		id = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return id, prop&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nextArg(args)&lt;br /&gt;
	local arg = args[args.pointer]&lt;br /&gt;
&lt;br /&gt;
	if arg then&lt;br /&gt;
		args.pointer = args.pointer + 1&lt;br /&gt;
		return mw.text.trim(arg)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function claimCommand(args, funcName)&lt;br /&gt;
	local cfg = Config:new()&lt;br /&gt;
	cfg:processFlagOrCommand(funcName)  -- process first command (== function name)&lt;br /&gt;
&lt;br /&gt;
	local lastArg, parsedFormat, formatParams, claims, value&lt;br /&gt;
	local hooks = {count = 0}&lt;br /&gt;
&lt;br /&gt;
	-- set the date if given;&lt;br /&gt;
	-- must come BEFORE processing the flags&lt;br /&gt;
	if args[p.args.date] then&lt;br /&gt;
		cfg.atDate = {parseDate(args[p.args.date])}&lt;br /&gt;
		cfg.periods = {false, true, false}  -- change default time constraint to &#039;current&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- process flags and commands&lt;br /&gt;
	repeat&lt;br /&gt;
		lastArg = nextArg(args)&lt;br /&gt;
	until not cfg:processFlagOrCommand(lastArg)&lt;br /&gt;
&lt;br /&gt;
	-- get the entity ID from either the positional argument, the eid argument or the page argument&lt;br /&gt;
	cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId])&lt;br /&gt;
&lt;br /&gt;
	if cfg.entityID == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- we cannot continue without a valid entity ID&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cfg.entity = mw.wikibase.getEntity(cfg.entityID)&lt;br /&gt;
&lt;br /&gt;
	if not cfg.propertyID then&lt;br /&gt;
		cfg.propertyID = nextArg(args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cfg.propertyID = replaceAlias(cfg.propertyID)&lt;br /&gt;
&lt;br /&gt;
	if not cfg.entity or not cfg.propertyID then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- we cannot continue without an entity or a property ID&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cfg.propertyID = cfg.propertyID:upper()&lt;br /&gt;
&lt;br /&gt;
	if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- there is no use to continue without any claims&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	claims = cfg.entity.claims[cfg.propertyID]&lt;br /&gt;
&lt;br /&gt;
	if cfg.states.qualifiersCount &amp;gt; 0 then&lt;br /&gt;
		-- do further processing if &amp;quot;qualifier(s)&amp;quot; command was given&lt;br /&gt;
&lt;br /&gt;
		if #args - args.pointer + 1 &amp;gt; cfg.states.qualifiersCount then&lt;br /&gt;
			-- claim ID or literal value has been given&lt;br /&gt;
&lt;br /&gt;
			cfg.propertyValue = nextArg(args)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for i = 1, cfg.states.qualifiersCount do&lt;br /&gt;
			-- check if given qualifier ID is an alias and add it&lt;br /&gt;
			cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
		end&lt;br /&gt;
	elseif cfg.states[parameters.reference] then&lt;br /&gt;
		-- do further processing if &amp;quot;reference(s)&amp;quot; command was given&lt;br /&gt;
&lt;br /&gt;
		cfg.propertyValue = nextArg(args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check for special property value &#039;somevalue&#039; or &#039;novalue&#039;&lt;br /&gt;
	if cfg.propertyValue then&lt;br /&gt;
		cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)&lt;br /&gt;
&lt;br /&gt;
		if cfg.propertyValue ~= &amp;quot;&amp;quot; and mw.text.trim(cfg.propertyValue) == &amp;quot;&amp;quot; then&lt;br /&gt;
			cfg.propertyValue = &amp;quot; &amp;quot;  -- single space represents &#039;somevalue&#039;, whereas empty string represents &#039;novalue&#039;&lt;br /&gt;
		else&lt;br /&gt;
			cfg.propertyValue = mw.text.trim(cfg.propertyValue)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- parse the desired format, or choose an appropriate format&lt;br /&gt;
	if args[&amp;quot;format&amp;quot;] then&lt;br /&gt;
		parsedFormat, formatParams = parseFormat(args[&amp;quot;format&amp;quot;])&lt;br /&gt;
	elseif cfg.states.qualifiersCount &amp;gt; 0 then  -- &amp;quot;qualifier(s)&amp;quot; command given&lt;br /&gt;
		if cfg.states[parameters.property] then  -- &amp;quot;propert(y|ies)&amp;quot; command given&lt;br /&gt;
			parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)&lt;br /&gt;
		else&lt;br /&gt;
			parsedFormat, formatParams = parseFormat(formats.qualifier)&lt;br /&gt;
		end&lt;br /&gt;
	elseif cfg.states[parameters.property] then  -- &amp;quot;propert(y|ies)&amp;quot; command given&lt;br /&gt;
		parsedFormat, formatParams = parseFormat(formats.property)&lt;br /&gt;
	else  -- &amp;quot;reference(s)&amp;quot; command given&lt;br /&gt;
		parsedFormat, formatParams = parseFormat(formats.reference)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if a &amp;quot;qualifier(s)&amp;quot; command and no &amp;quot;propert(y|ies)&amp;quot; command has been given, make the movable separator a semicolon&lt;br /&gt;
	if cfg.states.qualifiersCount &amp;gt; 0 and not cfg.states[parameters.property] then&lt;br /&gt;
		cfg.separators[&amp;quot;sep&amp;quot;..parameters.separator][1] = {&amp;quot;;&amp;quot;}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if only &amp;quot;reference(s)&amp;quot; has been given, set the default separator to none (except when raw)&lt;br /&gt;
	if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0&lt;br /&gt;
	   and not cfg.states[parameters.reference].rawValue then&lt;br /&gt;
		cfg.separators[&amp;quot;sep&amp;quot;][1] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if exactly one &amp;quot;qualifier(s)&amp;quot; command has been given, make &amp;quot;sep%q&amp;quot; point to &amp;quot;sep%q1&amp;quot; to make them equivalent&lt;br /&gt;
	if cfg.states.qualifiersCount == 1 then&lt;br /&gt;
		cfg.separators[&amp;quot;sep&amp;quot;..parameters.qualifier] = cfg.separators[&amp;quot;sep&amp;quot;..parameters.qualifier..&amp;quot;1&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- process overridden separator values;&lt;br /&gt;
	-- must come AFTER tweaking the default separators&lt;br /&gt;
	cfg:processSeparators(args)&lt;br /&gt;
&lt;br /&gt;
	-- define the hooks that should be called (getProperty, getQualifiers, getReferences);&lt;br /&gt;
	-- only define a hook if both its command (&amp;quot;propert(y|ies)&amp;quot;, &amp;quot;reference(s)&amp;quot;, &amp;quot;qualifier(s)&amp;quot;) and its parameter (&amp;quot;%p&amp;quot;, &amp;quot;%r&amp;quot;, &amp;quot;%q1&amp;quot;, &amp;quot;%q2&amp;quot;, &amp;quot;%q3&amp;quot;) have been given&lt;br /&gt;
	for i, v in pairs(cfg.states) do&lt;br /&gt;
		-- e.g. &#039;formatParams[&amp;quot;%q1&amp;quot;] or formatParams[&amp;quot;%q&amp;quot;]&#039; to define hook even if &amp;quot;%q1&amp;quot; was not defined to be able to build a complete value for &amp;quot;%q&amp;quot;&lt;br /&gt;
		if formatParams[i] or formatParams[i:sub(1, 2)] then&lt;br /&gt;
			hooks[i] = getHookName(i, 1)&lt;br /&gt;
			hooks.count = hooks.count + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- the &amp;quot;%q&amp;quot; parameter is not attached to a state, but is a collection of the results of multiple states (attached to &amp;quot;%q1&amp;quot;, &amp;quot;%q2&amp;quot;, &amp;quot;%q3&amp;quot;, ...);&lt;br /&gt;
	-- so if this parameter is given then this hook must be defined separately, but only if at least one &amp;quot;qualifier(s)&amp;quot; command has been given&lt;br /&gt;
	if formatParams[parameters.qualifier] and cfg.states.qualifiersCount &amp;gt; 0 then&lt;br /&gt;
		hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)&lt;br /&gt;
		hooks.count = hooks.count + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create a state for &amp;quot;properties&amp;quot; if it doesn&#039;t exist yet, which will be used as a base configuration for each claim iteration;&lt;br /&gt;
	-- must come AFTER defining the hooks&lt;br /&gt;
	if not cfg.states[parameters.property] then&lt;br /&gt;
		cfg.states[parameters.property] = State:new(cfg, parameters.property)&lt;br /&gt;
&lt;br /&gt;
		-- if the &amp;quot;single&amp;quot; flag has been given then this state should be equivalent to &amp;quot;property&amp;quot; (singular)&lt;br /&gt;
		if cfg.singleClaim then&lt;br /&gt;
			cfg.states[parameters.property].singleValue = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if the &amp;quot;sourced&amp;quot; flag has been given then create a state for &amp;quot;reference&amp;quot; if it doesn&#039;t exist yet, using default values,&lt;br /&gt;
	-- which must exist in order to be able to determine if a claim has any references;&lt;br /&gt;
	-- must come AFTER defining the hooks&lt;br /&gt;
	if cfg.sourcedOnly and not cfg.states[parameters.reference] then&lt;br /&gt;
		cfg:processFlagOrCommand(p.claimCommands.reference)  -- use singular &amp;quot;reference&amp;quot; to minimize overhead&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- set the parsed format and the separators (and optional punctuation mark);&lt;br /&gt;
	-- must come AFTER creating the additonal states&lt;br /&gt;
	cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)&lt;br /&gt;
&lt;br /&gt;
	-- process qualifier matching values, analogous to cfg.propertyValue&lt;br /&gt;
	for i, v in pairs(args) do&lt;br /&gt;
		i = tostring(i)&lt;br /&gt;
&lt;br /&gt;
		if i:match(&#039;^[Pp]%d+$&#039;) or aliasesP[i] then&lt;br /&gt;
			v = replaceSpecialChars(v)&lt;br /&gt;
&lt;br /&gt;
			-- check for special qualifier value &#039;somevalue&#039;&lt;br /&gt;
			if v ~= &amp;quot;&amp;quot; and mw.text.trim(v) == &amp;quot;&amp;quot; then&lt;br /&gt;
				v = &amp;quot; &amp;quot;  -- single space represents &#039;somevalue&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)&lt;br /&gt;
	claims = sortOnRank(claims)&lt;br /&gt;
&lt;br /&gt;
	-- then iterate through the claims to collect values&lt;br /&gt;
	value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches))  -- pass property state with level 1 hooks and matchHook&lt;br /&gt;
&lt;br /&gt;
	-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata&lt;br /&gt;
	if cfg.editable and value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		value = value .. cfg:getEditIcon()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function generalCommand(args, funcName)&lt;br /&gt;
	local cfg = Config:new()&lt;br /&gt;
	cfg.curState = State:new(cfg)&lt;br /&gt;
&lt;br /&gt;
	local lastArg&lt;br /&gt;
	local value = nil&lt;br /&gt;
&lt;br /&gt;
	repeat&lt;br /&gt;
		lastArg = nextArg(args)&lt;br /&gt;
	until not cfg:processFlag(lastArg)&lt;br /&gt;
&lt;br /&gt;
	-- get the entity ID from either the positional argument, the eid argument or the page argument&lt;br /&gt;
	cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId])&lt;br /&gt;
&lt;br /&gt;
	if cfg.entityID == &amp;quot;&amp;quot; or not mw.wikibase.entityExists(cfg.entityID) then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- we cannot continue without an entity&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- serve according to the given command&lt;br /&gt;
	if funcName == p.generalCommands.label then&lt;br /&gt;
		value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)&lt;br /&gt;
	elseif funcName == p.generalCommands.title then&lt;br /&gt;
		cfg.inSitelinks = true&lt;br /&gt;
&lt;br /&gt;
		if cfg.entityID:sub(1,1) == &amp;quot;Q&amp;quot; then&lt;br /&gt;
			value = mw.wikibase.getSitelink(cfg.entityID)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if cfg.curState.linked and value then&lt;br /&gt;
			value = buildWikilink(value)&lt;br /&gt;
		end&lt;br /&gt;
	elseif funcName == p.generalCommands.description then&lt;br /&gt;
		value = mw.wikibase.getDescription(cfg.entityID)&lt;br /&gt;
	else&lt;br /&gt;
		local parsedFormat, formatParams&lt;br /&gt;
		local hooks = {count = 0}&lt;br /&gt;
&lt;br /&gt;
		cfg.entity = mw.wikibase.getEntity(cfg.entityID)&lt;br /&gt;
&lt;br /&gt;
		if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then&lt;br /&gt;
			cfg.curState.singleValue = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then&lt;br /&gt;
			if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then&lt;br /&gt;
				return &amp;quot;&amp;quot;  -- there is no use to continue without any aliasses&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local aliases = cfg.entity.aliases[cfg.langCode]&lt;br /&gt;
&lt;br /&gt;
			-- parse the desired format, or parse the default aliases format&lt;br /&gt;
			if args[&amp;quot;format&amp;quot;] then&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(args[&amp;quot;format&amp;quot;])&lt;br /&gt;
			else&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(formats.alias)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- process overridden separator values;&lt;br /&gt;
			-- must come AFTER tweaking the default separators&lt;br /&gt;
			cfg:processSeparators(args)&lt;br /&gt;
&lt;br /&gt;
			-- define the hook that should be called (getAlias);&lt;br /&gt;
			-- only define the hook if the parameter (&amp;quot;%a&amp;quot;) has been given&lt;br /&gt;
			if formatParams[parameters.alias] then&lt;br /&gt;
				hooks[parameters.alias] = getHookName(parameters.alias, 1)&lt;br /&gt;
				hooks.count = hooks.count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- set the parsed format and the separators (and optional punctuation mark)&lt;br /&gt;
			cfg:setFormatAndSeparators(cfg.curState, parsedFormat)&lt;br /&gt;
&lt;br /&gt;
			-- iterate to collect values&lt;br /&gt;
			value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))&lt;br /&gt;
		elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then&lt;br /&gt;
			if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then&lt;br /&gt;
				return &amp;quot;&amp;quot;  -- there is no use to continue without any badges&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local badges = cfg.entity.sitelinks[cfg.siteID].badges&lt;br /&gt;
&lt;br /&gt;
			cfg.inSitelinks = true&lt;br /&gt;
&lt;br /&gt;
			-- parse the desired format, or parse the default aliases format&lt;br /&gt;
			if args[&amp;quot;format&amp;quot;] then&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(args[&amp;quot;format&amp;quot;])&lt;br /&gt;
			else&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(formats.badge)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- process overridden separator values;&lt;br /&gt;
			-- must come AFTER tweaking the default separators&lt;br /&gt;
			cfg:processSeparators(args)&lt;br /&gt;
&lt;br /&gt;
			-- define the hook that should be called (getBadge);&lt;br /&gt;
			-- only define the hook if the parameter (&amp;quot;%b&amp;quot;) has been given&lt;br /&gt;
			if formatParams[parameters.badge] then&lt;br /&gt;
				hooks[parameters.badge] = getHookName(parameters.badge, 1)&lt;br /&gt;
				hooks.count = hooks.count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- set the parsed format and the separators (and optional punctuation mark)&lt;br /&gt;
			cfg:setFormatAndSeparators(cfg.curState, parsedFormat)&lt;br /&gt;
&lt;br /&gt;
			-- iterate to collect values&lt;br /&gt;
			value = cfg:concatValues(cfg.curState:iterate(badges, hooks))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = value or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if cfg.editable and value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata&lt;br /&gt;
		value = value .. cfg:getEditIcon()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)&lt;br /&gt;
local function establishCommands(commandList, commandFunc)&lt;br /&gt;
	for _, commandName in pairs(commandList) do&lt;br /&gt;
		local function wikitextWrapper(frame)&lt;br /&gt;
			local args = copyTable(frame.args)&lt;br /&gt;
			args.pointer = 1&lt;br /&gt;
			loadI18n(aliasesP, frame)&lt;br /&gt;
			return commandFunc(args, commandName)&lt;br /&gt;
		end&lt;br /&gt;
		p[commandName] = wikitextWrapper&lt;br /&gt;
&lt;br /&gt;
		local function luaWrapper(args)&lt;br /&gt;
			args = copyTable(args)&lt;br /&gt;
			args.pointer = 1&lt;br /&gt;
			loadI18n(aliasesP)&lt;br /&gt;
			return commandFunc(args, commandName)&lt;br /&gt;
		end&lt;br /&gt;
		p[&amp;quot;_&amp;quot; .. commandName] = luaWrapper&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
establishCommands(p.claimCommands, claimCommand)&lt;br /&gt;
establishCommands(p.generalCommands, generalCommand)&lt;br /&gt;
&lt;br /&gt;
-- main function that is supposed to be used by wrapper templates&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	if not mw.wikibase then return nil end&lt;br /&gt;
&lt;br /&gt;
	local f, args&lt;br /&gt;
&lt;br /&gt;
	loadI18n(aliasesP, frame)&lt;br /&gt;
&lt;br /&gt;
	-- get the parent frame to take the arguments that were passed to the wrapper template&lt;br /&gt;
	frame = frame:getParent() or frame&lt;br /&gt;
&lt;br /&gt;
	if not frame.args[1] then&lt;br /&gt;
		throwError(&amp;quot;no-function-specified&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	f = mw.text.trim(frame.args[1])&lt;br /&gt;
&lt;br /&gt;
	if f == &amp;quot;main&amp;quot; then&lt;br /&gt;
		throwError(&amp;quot;main-called-twice&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	assert(p[&amp;quot;_&amp;quot;..f], errorText(&#039;no-such-function&#039;, f))&lt;br /&gt;
&lt;br /&gt;
	-- copy arguments from immutable to mutable table&lt;br /&gt;
	args = copyTable(frame.args)&lt;br /&gt;
&lt;br /&gt;
	-- remove the function name from the list&lt;br /&gt;
	table.remove(args, 1)&lt;br /&gt;
&lt;br /&gt;
	return p[&amp;quot;_&amp;quot;..f](args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=User:BETABot&amp;diff=2328</id>
		<title>User:BETABot</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=User:BETABot&amp;diff=2328"/>
		<updated>2025-01-09T16:55:05Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: /* BETABot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a bot for testing created by [[User:Awilh_37|Awilh_37]]&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=User:BETABot&amp;diff=2327</id>
		<title>User:BETABot</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=User:BETABot&amp;diff=2327"/>
		<updated>2025-01-09T16:54:52Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created page with &amp;quot;== BETABot == This is a bot for testing created by Awilh_37&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BETABot ==&lt;br /&gt;
This is a bot for testing created by [[User:Awilh_37|Awilh_37]]&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:SHORTDESC:&amp;diff=2326</id>
		<title>Template:SHORTDESC:</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:SHORTDESC:&amp;diff=2326"/>
		<updated>2025-01-09T16:43:39Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created page with &amp;quot;&amp;lt;!-- This is a placeholder for the SHORTDESC: template --&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- This is a placeholder for the SHORTDESC: template --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Module:R_avoided_double_redirect&amp;diff=2321</id>
		<title>Module:R avoided double redirect</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Module:R_avoided_double_redirect&amp;diff=2321"/>
		<updated>2025-01-09T16:10:27Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Module:R_avoided_double_redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local function noredir(page)&lt;br /&gt;
	local link = page:fullUrl(&amp;quot;redirect=no&amp;quot;)&lt;br /&gt;
	return &amp;quot;&amp;lt;span class=\&amp;quot;plainlinks\&amp;quot;&amp;gt;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. page.fullText .. &amp;quot;]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
&lt;br /&gt;
	local args = require(&amp;quot;Module:Arguments&amp;quot;).getArgs(frame, {removeBlanks=false})&lt;br /&gt;
&lt;br /&gt;
	-- Demo parameters, for demonstrating behavior with certain redirect &lt;br /&gt;
	-- targets and avoiding categorization (do not use in articles)&lt;br /&gt;
	local noError = args.noerror&lt;br /&gt;
	local demo = args.demo or noError or args.thistarget or args.othertarget&lt;br /&gt;
&lt;br /&gt;
	local function formatError(err)&lt;br /&gt;
		return &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;Error in [[Module:R avoided double redirect]]: &amp;quot; .. err .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			.. (demo and &amp;quot;&amp;quot; or &amp;quot;[[Category:Avoided double redirect errors]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local thisPage = mw.title.getCurrentTitle()&lt;br /&gt;
	local otherPage = mw.title.new(args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if not otherPage then&lt;br /&gt;
		return formatError(&amp;quot;No other page was specified.&amp;quot;);&lt;br /&gt;
	end&lt;br /&gt;
	if mw.title.equals(thisPage, otherPage) then&lt;br /&gt;
		return formatError(&amp;quot;The current page was passed as the parameter.&amp;quot;);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get mw.title objects for redirect targets.&lt;br /&gt;
	-- Note that using mw.title&#039;s redirectTarget will correctly handle preview mode, unlike Module:Redirect.&lt;br /&gt;
	local thisTarget, otherTarget&lt;br /&gt;
	if demo and args.thistarget then&lt;br /&gt;
		thisTarget = mw.title.new(args.thistarget)&lt;br /&gt;
	else&lt;br /&gt;
		thisTarget = thisPage.redirectTarget&lt;br /&gt;
	end&lt;br /&gt;
	if demo and args.othertarget then&lt;br /&gt;
		otherTarget = mw.title.new(args.othertarget)&lt;br /&gt;
	else&lt;br /&gt;
		otherTarget = otherPage.redirectTarget&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- For double redirects&lt;br /&gt;
	local thisDoubleTarget = thisTarget and thisTarget.redirectTarget&lt;br /&gt;
	local otherDoubleTarget = otherTarget and otherTarget.redirectTarget&lt;br /&gt;
&lt;br /&gt;
	local function formatOutput(update, info)&lt;br /&gt;
		local from, cat&lt;br /&gt;
&lt;br /&gt;
		if otherTarget then&lt;br /&gt;
			from = &amp;quot;an alternative title or related topic of &#039;&#039;&#039;&amp;quot; .. noredir(otherPage) .. &amp;quot;&#039;&#039;&#039;, another redirect to the same title&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			from = &amp;quot;an alternative title or related topic of &#039;&#039;&#039;[[:&amp;quot; .. otherPage.fullText .. &amp;quot;]]&#039;&#039;&#039;, a former redirect to the same title&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		cat = demo and &amp;quot;&amp;quot; or update and &amp;quot;Avoided double redirects to be updated&amp;quot; or &amp;quot;Avoided double redirects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		return frame:expandTemplate({&lt;br /&gt;
			title = &amp;quot;Redirect template&amp;quot;,&lt;br /&gt;
			args = {&lt;br /&gt;
				id = &#039;R avoided double redirect&#039;,&lt;br /&gt;
				from = from,&lt;br /&gt;
				info = update and &amp;quot;\n**&amp;quot; .. info or info,&lt;br /&gt;
				[&amp;quot;all category&amp;quot;] = cat,&lt;br /&gt;
				name = &amp;quot;From an avoided double redirect&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not noError then&lt;br /&gt;
		if not thisTarget then&lt;br /&gt;
			return formatError(&amp;quot;This page is not a functioning redirect – possibly disabled by RfD.&amp;quot;, demo)&lt;br /&gt;
		elseif mw.title.equals(thisPage, thisTarget) then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;This is a broken redirect (it redirects to itself).&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
		elseif not thisTarget.exists then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;This is a broken redirect (its target does not exist).&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
		elseif not otherPage.exists then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;[[:&amp;quot; .. otherPage.fullText .. &amp;quot;]] does not exist.&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
		elseif otherTarget and mw.title.equals(otherPage, otherTarget) then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;[[:&amp;quot; .. otherPage.fullText .. &amp;quot;]] is a broken redirect (it redirects to itself).&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
		elseif otherTarget and not otherTarget.exists then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;[[:&amp;quot; .. otherPage.fullText .. &amp;quot;]] is a broken redirect (it redirects to a page that does not exist).&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
		elseif mw.title.equals(thisTarget, otherPage) then&lt;br /&gt;
			if not otherTarget then&lt;br /&gt;
				return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;[[:&amp;quot; .. otherPage.fullText .. &amp;quot;]] is not a redirect, and this already points to it.&amp;lt;/span&amp;gt; Most likely this template should be removed.&amp;quot;)&lt;br /&gt;
			elseif mw.title.equals(otherTarget, thisPage) then&lt;br /&gt;
				return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;This is a circular redirect.&amp;lt;/span&amp;gt; Please change the target of both this redirect and &amp;quot; .. noredir(otherPage) .. &amp;quot; to the correct article.&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;This page redirects to &amp;quot; .. noredir(otherPage) .. &amp;quot;, which redirects to [[:&amp;quot; .. otherTarget.fullText .. &amp;quot;]].&amp;lt;/span&amp;gt; Please change this redirect&#039;s target to [[:&amp;quot; .. otherTarget.fullText .. &amp;quot;]] or otherwise resolve the situation.&amp;quot;)&lt;br /&gt;
		elseif not otherTarget then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;[[:&amp;quot; .. otherPage.fullText .. &amp;quot;]] is not a redirect.&amp;lt;/span&amp;gt; Most likely this redirect should be updated to point to [[:&amp;quot; .. otherPage.fullText .. &amp;quot;]] now that it is no longer a redirect, and this template removed.\n** If that is not the correct target for this redirect, update or remove this template and/or the redirect itself and/or the other page as appropriate.&amp;quot;)&lt;br /&gt;
		elseif thisDoubleTarget then&lt;br /&gt;
			if otherDoubleTarget then&lt;br /&gt;
				if mw.title.equals(thisDoubleTarget, otherDoubleTarget) then&lt;br /&gt;
					return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;Both this page and &amp;quot; .. noredir(otherPage) .. &amp;quot; are double redirects.&amp;lt;/span&amp;gt; Please change the redirect target of both to &amp;quot;&lt;br /&gt;
						.. (thisDoubleTarget.isRedirect and &amp;quot;the correct article.&amp;quot; or &amp;quot;[[:&amp;quot; .. thisDoubleTarget.fullText .. &amp;quot;]] (or some other correct article).&amp;quot;))&lt;br /&gt;
				end&lt;br /&gt;
				return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;Both this page and &amp;quot; .. noredir(otherPage) .. &amp;quot; are double redirects.&amp;lt;/span&amp;gt; Please fix them.&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;This is a double redirect.&amp;lt;/span&amp;gt; Please fix it, possibly by changing it to [[:&amp;quot; .. otherTarget.fullText .. &amp;quot;]].&amp;quot;)&lt;br /&gt;
		elseif not mw.title.equals(thisTarget, otherTarget) then&lt;br /&gt;
			return formatOutput(true, &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;This page and &amp;quot; .. noredir(otherPage) .. &amp;quot; redirect to different articles.&amp;lt;/span&amp;gt; Most likely you should change this redirect&#039;s target to [[:&amp;quot; .. otherTarget.fullText .. &amp;quot;]] to match.\n** If that is not the correct target for this redirect, update or remove this template and/or the redirect itself and/or the other page as appropriate.&amp;quot;)&lt;br /&gt;
		elseif thisTarget.fragment ~= otherTarget.fragment then&lt;br /&gt;
			-- Should this case report for update?&lt;br /&gt;
			return formatOutput(false, &amp;quot;Because [[Wikipedia:Double redirects|double redirects]] are disallowed,&amp;quot;&lt;br /&gt;
				.. &amp;quot; both pages currently point to [[:&amp;quot; .. otherTarget.prefixedText .. &amp;quot;]] (but with different anchors).\n&amp;quot;&lt;br /&gt;
				.. &amp;quot;**If &amp;quot; .. noredir(otherPage) .. &amp;quot; is retargeted or is expanded into a separate article, template, or other project page, &amp;quot;&lt;br /&gt;
				.. &amp;quot; this redirect will be recategorized to be updated.&amp;quot;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return formatOutput(false, &amp;quot;Because [[Wikipedia:Double redirects|double redirects]] are disallowed,&amp;quot;&lt;br /&gt;
		.. &amp;quot; both pages currently point to [[:&amp;quot; .. otherTarget.fullText .. &amp;quot;]].\n&amp;quot;&lt;br /&gt;
		.. &amp;quot;**If &amp;quot; .. noredir(otherPage) .. &amp;quot; is retargeted or is expanded into a separate article, template, or other project page, &amp;quot;&lt;br /&gt;
		.. &amp;quot; this redirect will be recategorized to be updated.&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:P2&amp;diff=2317</id>
		<title>Template:P2</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:P2&amp;diff=2317"/>
		<updated>2025-01-09T16:10:26Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Template:P2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{2}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Template:If&amp;diff=2315</id>
		<title>Template:If</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Template:If&amp;diff=2315"/>
		<updated>2025-01-09T16:10:26Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: 1 revision imported from :wikipedia:Template:If&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ safesubst:&amp;lt;noinclude/&amp;gt;p{{ safesubst:&amp;lt;noinclude/&amp;gt;#ifeq:{{{1}}}|eq|1|2}}|{{ safesubst:&amp;lt;noinclude/&amp;gt;p{{ safesubst:&amp;lt;noinclude/&amp;gt;#ifeq:{{{2}}}|{{{3}}}|1|2}}|{{{4|}}}|{{{5|}}}}}|{{ safesubst:&amp;lt;noinclude/&amp;gt;p{{ safesubst:&amp;lt;noinclude/&amp;gt;#if{{{1}}}:{{{2}}}|1|2}}|{{{3}}}|{{{4|}}}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Wikipedia_never-substituted_templates&amp;diff=2311</id>
		<title>Category:Wikipedia never-substituted templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Wikipedia_never-substituted_templates&amp;diff=2311"/>
		<updated>2025-01-09T15:08:29Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Template_namespace_templates&amp;diff=2301</id>
		<title>Category:Template namespace templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Template_namespace_templates&amp;diff=2301"/>
		<updated>2025-01-09T14:23:20Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Pages_with_non-numeric_formatnum_arguments&amp;diff=2293</id>
		<title>Category:Pages with non-numeric formatnum arguments</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Pages_with_non-numeric_formatnum_arguments&amp;diff=2293"/>
		<updated>2025-01-09T13:28:44Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Infobox_templates&amp;diff=2290</id>
		<title>Category:Infobox templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Infobox_templates&amp;diff=2290"/>
		<updated>2025-01-09T13:28:28Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Documentation_templates&amp;diff=2288</id>
		<title>Category:Documentation templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Documentation_templates&amp;diff=2288"/>
		<updated>2025-01-09T13:28:22Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Documentation_assistance_templates&amp;diff=2287</id>
		<title>Category:Documentation assistance templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Documentation_assistance_templates&amp;diff=2287"/>
		<updated>2025-01-09T13:28:20Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:All_articles_needing_an_update&amp;diff=2284</id>
		<title>Category:All articles needing an update</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:All_articles_needing_an_update&amp;diff=2284"/>
		<updated>2025-01-09T13:27:15Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Wikipedia_formatting_templates&amp;diff=2283</id>
		<title>Category:Wikipedia formatting templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Wikipedia_formatting_templates&amp;diff=2283"/>
		<updated>2025-01-09T13:27:04Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Template_test_cases&amp;diff=2280</id>
		<title>Category:Template test cases</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Template_test_cases&amp;diff=2280"/>
		<updated>2025-01-09T13:10:02Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:People_and_person_infobox_templates&amp;diff=2277</id>
		<title>Category:People and person infobox templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:People_and_person_infobox_templates&amp;diff=2277"/>
		<updated>2025-01-09T13:09:15Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
	<entry>
		<id>https://www.wickedgov.org/w/index.php?title=Category:Documentation_see_also_templates&amp;diff=2273</id>
		<title>Category:Documentation see also templates</title>
		<link rel="alternate" type="text/html" href="https://www.wickedgov.org/w/index.php?title=Category:Documentation_see_also_templates&amp;diff=2273"/>
		<updated>2025-01-09T12:49:57Z</updated>

		<summary type="html">&lt;p&gt;Awilh 37: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Awilh 37</name></author>
	</entry>
</feed>