<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.wikipasokh.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nazarzadeh</id>
	<title>WikiPasokh - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.wikipasokh.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nazarzadeh"/>
	<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/view/Special:Contributions/Nazarzadeh"/>
	<updated>2026-05-26T23:27:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Tree&amp;diff=1755</id>
		<title>Template:Tree</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Tree&amp;diff=1755"/>
		<updated>2025-07-09T14:25:15Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Undo revision 1753 by Nazarzadeh (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#if: {{{main branch|}}} | &amp;lt;indicator name=1&amp;gt;[[:category:{{{main branch|}}}{{!}}{{{main branch|}}}]] {{#if: {{{subbranch1|}}} | [[file:Arrow-right.png|10px||link=|frameless]] [[:category:{{{subbranch1|}}}{{!}}{{{subbranch1|}}}]] {{#if: {{{subbranch2|}}} | [[file:Arrow-right.png|10px||link=|frameless]] [[:category:{{{subbranch2|}}}{{!}}{{{subbranch2|}}}]] {{#if: {{{subbranch3|}}} | [[file:Arrow-right.png|10px||link=|frameless]] [[:category:{{{subbranch3|}}}|{{{subbranch3|}}}]] }}}}}}&amp;lt;/indicator&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--:category ها--&lt;br /&gt;
--&amp;gt;{{#if: {{{subbranch3|}}}|[[category:{{{subbranch3|}}}]]|{{#if: {{{subbranch2|}}}|[[category:{{{subbranch2|}}}]]|{{#if: {{{main branch|}}}|&amp;lt;!--[[category:{{{main branch|}}}]]--&amp;gt;|[[category:without main branch]] }} }} }}{{#if: {{{subbranch1|}}}|[[category:{{{subbranch1|}}}]]|[[category:without subbranch]]}}&amp;lt;!--&lt;br /&gt;
--ناوبری:--&lt;br /&gt;
--&amp;gt;{{#if: {{{subbranch1|}}}|&amp;lt;div class=&amp;quot;navbox related&amp;quot; style=&amp;quot;background-color: #fafffb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbox-title&amp;quot; style=&amp;quot;font-size: 120%; font-weight: bold; background-color: #b9e6be;&amp;quot; &amp;gt;Preguntas relacionadas&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbox-list&amp;quot; style=&amp;quot;text-align: left; max-height: 500px; overflow-x: hidden; overflow-y: show; -moz-column-width: 18em; -webkit-column-width: 18em; column-width: 18em;&amp;quot;&amp;gt;{{#tag:DynamicPageList|&lt;br /&gt;
category = {{{subbranch1|}}}&lt;br /&gt;
namespace= main&lt;br /&gt;
count = 20&lt;br /&gt;
ordermethod = firstedit&lt;br /&gt;
order = descending&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;main branch&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch2&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch3&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;inserting branch of the article&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
[[es:Plantilla:Tree]]&lt;br /&gt;
[[fa:الگو:شاخه]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=The_Prophet%27s_Washer_and_Shrouder_in_Sunni_Sources&amp;diff=1754</id>
		<title>The Prophet&#039;s Washer and Shrouder in Sunni Sources</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=The_Prophet%27s_Washer_and_Shrouder_in_Sunni_Sources&amp;diff=1754"/>
		<updated>2025-07-09T14:15:36Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
Sunni sources claim that Abu Bakr took responsibility for preparing and burying the Prophet Muhammad (PBUH), while Imam Ali (AS), due to his intense grief, was unable to participate. Is this account accurate?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
Reliable [[Sunni]] sources acknowledge that [[Imam Ali (AS)]] performed the washing, [[Shrouding|shrouding]], and [[burial rites]] of the [[Prophet Muhammad (PBUH)]] and led the first prayer over his body. Others, [[including]] the Prophet’s uncle [[Abbas ibn Abd al-Muttalib]] and his sons Qutham and Fadl, assisted Imam Ali (AS) in these rites. Prominent Sunni scholars and historians, such as Ibn Hisham in &#039;&#039;Al-Sirah al-Nabawiyyah&#039;&#039;, Ibn Sa&#039;d in &#039;&#039;Al-Tabaqat al-Kubra&#039;&#039;, and Ibn Kathir in &#039;&#039;Al-Bidaya wa’l-Nihaya&#039;&#039;, affirm that Imam Ali (AS) was responsible for the burial and shrouding of the Prophet, providing the names of those who helped him. There is no mention of [[Abu Bakr]] as the washer of the Prophet in these sources.&lt;br /&gt;
&lt;br /&gt;
== The Prophet&#039;s (PBUH) Will ==&lt;br /&gt;
In &#039;&#039;Jami&#039; al-Ahadith&#039;&#039;, Al-Suyuti narrates a tradition stating that before his passing, the Prophet Muhammad (PBUH) requested that Imam Ali (AS) wash his body.&amp;lt;ref&amp;gt;{{cite book|title=Jāmiʿ al-Aḥādīth|first=Jalāl al-Dīn (n.d.)|last=Al-Suyūṭī|publisher=د Ḥasan ʿAbbās Zakī|volume=31|page=135|language=|location=بی‌جا}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Washing of the Prophet in Sunni Sources ==&lt;br /&gt;
Ibn Sa&#039;d, a prominent historian and biographer of the 2nd and 3rd centuries AH known as Katib al-Waqidi, recounts in Al-Tabaqat al-Kubra an incident from Ka&#039;b al-Ahbar. Ka&#039;b al-Ahbar asked the second caliph what the Prophet (PBUH) had said during his final moments. Umar pointed to Ali (AS) and said, “Ask him.” Ali (AS) replied that, with the Prophet’s head resting on his shoulder, the Prophet had said, “Prayer, prayer…” Ka&#039;b then asked, “Who washed the Prophet?” Umar again directed him to Ali (AS), who responded, ::“I washed the Prophet, while Abbas was seated, and Usama ibn Zayd, a companion of the Prophet, along with Shuqran, the Prophet’s servant, poured water.”&amp;lt;ref&amp;gt;Ibn Saʿd, Muḥammad, al-Ṭabaqāt al-Kubrā, Beirut, Dār al-Kutub al-ʿIlmiyyah, 1410 AH, vol. 2, p. 202.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ibn Hisham, a 3rd-century historian and author of the most renowned biography of the Prophet, mentions the individuals involved in the washing: [[Ali ibn Abi Talib]], [[Abbas ibn Abd al-Muttalib]], Fadl ibn Abbas, Qutham ibn Abbas, [[Usama ibn Zayd]], Shuqran, and Aws ibn Khawli from the Ansar. He describes the washing process: Ali (AS) held the Prophet’s body against his chest, with Abbas and his sons Fadl and Qutham assisting in moving the body as needed, while Usama and Shuqran poured water. Ali (AS) washed the Prophet from under his garment.&amp;lt;ref&amp;gt;Ibn Hishām, ʿAbd al-Malik, al-Sīrah al-Nabawiyyah, Beirut, Dār al-Maʿrifah, n.d., vol. 2, pp. 622–663.&amp;lt;/ref&amp;gt; In a narration cited by Al-Suyuti, it is said that Fadl lifted the Prophet’s body to enable Imam Ali (AS) to wash him.&amp;lt;ref&amp;gt;{{cite book|title=Jāmiʿ al-Aḥādīth|year=بی‌تا|first=Jalāl al-Dīn (n.d.)|last=1.Al-Suyūṭī|publisher=د Ḥasan ʿAbbās Zakī|volume=31|page=135|language=|location=بی‌جا}}&amp;lt;/ref&amp;gt; Some traditions also mention the presence of [[Gabriel]] among those attending to the Prophet&#039;s washing.&amp;lt;ref&amp;gt;{{cite book|title=al-Muʿjam al-Kabīr|year=1415|first=Abū al-Qāsim|last=5.	Al-Ṭabarānī|publisher=Maktabat Ibn Taymiyyah|volume=3|page=58|language=|location=Cairo|url=https://lib.efatwa.ir/42124/3/58/علي_بن_أبي_طالب_مغمى_عليه}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Prophet&#039;s Burial in Sunni Sources ==&lt;br /&gt;
Ibn Hisham mentions that [[Imam Ali (AS)]], along with Fadl and Qutham, sons of the Prophet’s uncle Abbas, and Shuqran, were responsible for the [[Prophet Muhammad’s (PBUH)]] burial and entered his grave.&amp;lt;ref&amp;gt;Ibn Hishām, ʿAbd al-Malik, al-Sīrah al-Nabawiyyah, Beirut, Dār al-Maʿrifah, n.d., vol. 2, p. 664.&amp;lt;/ref&amp;gt; This account is echoed by Sunni scholars like Ibn al-Athir al-Jazari in &#039;&#039;Usd al-Ghabah&#039;&#039;&amp;lt;ref&amp;gt;Ibn Athīr Jazrī, ʿAlī ibn Muḥammad, Usd al-Ghābah fī Maʿrifat al-Ṣaḥābah, Beirut, Dār al-Fikr, 1409 AH, vol. 2, p. 388.&amp;lt;/ref&amp;gt;, Ibn Kathir in &#039;&#039;Al-Bidaya wa’l-Nihaya&#039;&#039;&amp;lt;ref&amp;gt;Ibn Kathīr, Ismāʿīl ibn ʿUmar, al-Bidāyah wa al-Nihāyah, Beirut, Dār al-Fikr, 1407 AH, vol. 5, p. 269.&amp;lt;/ref&amp;gt;, and al-Bayhaqi in &#039;&#039;Dala’il al-Nubuwwa&#039;&#039;&amp;lt;ref&amp;gt;Al-Bayhaqī, Aḥmad ibn Ḥusayn, Dalāʾil al-Nubuwwah wa Maʿrifat Aḥwāl Ṣāḥib al-Sharīʿah, Beirut, Dār al-Kutub al-ʿIlmiyyah, 1405 AH, vol. 7, p. 254.&amp;lt;/ref&amp;gt;, who state that only Ali (AS) and his close companions participated in the burial of the Prophet.&lt;br /&gt;
&lt;br /&gt;
Al-Tabari (d. 310 AH), a prominent Sunni historian, writes in &#039;&#039;Tarikh al-Umam wa’l-Muluk&#039;&#039; that there was initial disagreement regarding the Prophet&#039;s burial location. Some suggested al-Baqi&#039;, others the mosque, and some proposed his home. Ultimately, it was decided to bury him in the very room where he passed away. The grave was prepared by Abu Ubayda al-Jarrah, a companion, and Abu Talha al-Ansari, and the burial was carried out by Imam Ali (AS) with the assistance of the Prophet’s uncle Abbas and his sons Fadl and Qutham.&amp;lt;ref&amp;gt;Al-Ṭabarī, Muḥammad ibn Jarīr, Tārīkh al-Umam wa al-Mulūk, Beirut, Muʾassasat al-Aʿlamī, n.d., vol. 2, p. 452.&amp;lt;/ref&amp;gt; According to some Sunni sources, Abu Bakr narrated a tradition from the Prophet that “Prophets are buried in the place where they die.” Consequently, Abu Talha prepared the grave in the room where the Prophet had passed.&amp;lt;ref&amp;gt;Al-Ṭabarī, Muḥammad ibn Jarīr, Tārīkh al-Umam wa al-Mulūk, Beirut, Muʾassasat al-Aʿlamī, n.d., vol. 2, p. 452.&amp;lt;/ref&amp;gt; Meanwhile, al-Tabarani narrates that Imam Ali (AS), Ibn Abbas, and Abu Bakr jointly buried the Prophet.&amp;lt;ref&amp;gt;{{cite book|title=al-Muʿjam al-Kabīr|year=1415|first=Abū al-Qāsim|last=5.Al-Ṭabarānī|publisher=Maktabat Ibn Taymiyyah|volume=3|page=58|language=|location=Cairo|url=https://lib.efatwa.ir/42124/3/58/علي_بن_أبي_طالب_مغمى_عليه}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Funeral Prayer over the Prophet&#039;s Body ==&lt;br /&gt;
Sunni sources also recount that Imam Ali (AS) was the first to lead the prayer over the Prophet&#039;s body, followed by the Prophet’s companions who prayed in groups. According to the historian Ibn Kathir, the Prophet had instructed that his body be washed and shrouded by the men of his household, who would also lead the first prayers over his body. Thereafter, others were to pray, and following the men, the women would offer their prayers as well.&amp;lt;ref&amp;gt;Ibn Kathīr, Ismāʿīl ibn ʿUmar, al-Bidāyah wa al-Nihāyah, Beirut, Dār al-Fikr, 1407 AH, vol. 5, p. 266.&amp;lt;/ref&amp;gt; Reports indicate that the funeral prayers were performed individually, with groups of ten people entering to pay their respects one at a time.&amp;lt;ref&amp;gt;{{cite book|title=Khorshīd-e Nubuwwat (Farsi translation of al-Raḥīq al-Makhtūm by Muḥammad ʿAlī Lisānī Fashārakī)|year=1381|first=Ṣafī al-Raḥmān|last=Mubārakfūrī|publisher=Muwahhidīn|volume=|page=732-735|language=|location=|edition=Mohammad Ali Lisani Fisjaraki}}&amp;lt;/ref&amp;gt; Sunni sources also mention that angels, including Gabriel, prayed over the Prophet’s body.&amp;lt;ref&amp;gt;{{cite book|title=al-Muʿjam al-Kabīr|year=1415|first=Abū al-Qāsim|last=5.	Al-Ṭabarānī|publisher=Maktabat Ibn Taymiyyah|volume=3|page=58|language=|location=Cairo|url=https://lib.efatwa.ir/42124/3/58/علي_بن_أبي_طالب_مغمى_عليه}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== منابع ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: غسل‌دهنده و کفن‌کننده پیامبر اکرم در منابع اهل‌سنت]]&lt;br /&gt;
[[bn: আহলে সুন্নতের সূত্রগুলোতে মহানবী (স.)-এর গোসল ও কাফন সম্পন্নকারী]]&lt;br /&gt;
[[es: Bañar y envolver al Profeta en fuentes suníes]]&lt;br /&gt;
[[ps: د اهل سنتو په سرچینو کې  پېغمبر اکرم (ص) ته غسل او کفن ورکوونکی]]&lt;br /&gt;
[[ms: Orang Yang Memandikan Dan Mengkafani Rasulullah Saw Menurut Sumber Ahlusunah]]&lt;br /&gt;
[[ar: الغاسل والمكفِّن للنبي الأكرم في مصادر أهل السنة]]&lt;br /&gt;
{{tree&lt;br /&gt;
 | main branch =تاریخ&lt;br /&gt;
|subbranch1 =تاریخ و سیره معصومان&lt;br /&gt;
|subbranch2 =سیره نبوی&lt;br /&gt;
|subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{تکمیل مقاله&lt;br /&gt;
 | شناسه =شد&lt;br /&gt;
 | تیترها =شد&lt;br /&gt;
 | ویرایش =شد&lt;br /&gt;
 | لینک‌دهی =شد&lt;br /&gt;
 | ناوبری =&lt;br /&gt;
 | نمایه =&lt;br /&gt;
 | تغییر مسیر =شد&lt;br /&gt;
 | ارجاعات =&lt;br /&gt;
 | بازبینی =شد&lt;br /&gt;
 | تکمیل =&lt;br /&gt;
 | اولویت =ب&lt;br /&gt;
 | کیفیت =ب&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Tree&amp;diff=1753</id>
		<title>Template:Tree</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Tree&amp;diff=1753"/>
		<updated>2025-07-09T14:10:09Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#if: {{{main branch|}}} | &amp;lt;indicator name=1&amp;gt;[[:category:{{{main branch|}}}{{!}}{{{main branch|}}}]] {{#if: {{{subbranch1|}}} | [[file:Arrow-left.png|10px||link=|frameless]] [[:category:{{{subbranch1|}}}{{!}}{{{subbranch1|}}}]] {{#if: {{{subbranch2|}}} | [[file:Arrow-left.png|10px||link=|frameless]] [[:category:{{{subbranch2|}}}{{!}}{{{subbranch2|}}}]] {{#if: {{{subbranch3|}}} | [[file:Arrow-left.png|10px||link=|frameless]] [[:category:{{{subbranch3|}}}|{{{subbranch3|}}}]] }}}}}}&amp;lt;/indicator&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--:category ها--&lt;br /&gt;
--&amp;gt;{{#if: {{{subbranch3|}}}|[[category:{{{subbranch3|}}}]]|{{#if: {{{subbranch2|}}}|[[category:{{{subbranch2|}}}]]|{{#if: {{{main branch|}}}|&amp;lt;!--[[category:{{{main branch|}}}]]--&amp;gt;|[[category:without main branch]] }} }} }}{{#if: {{{subbranch1|}}}|[[category:{{{subbranch1|}}}]]|[[category:without subbranch]]}}&amp;lt;!--&lt;br /&gt;
--ناوبری:--&lt;br /&gt;
--&amp;gt;{{#if: {{{subbranch1|}}}|&amp;lt;div class=&amp;quot;navbox related&amp;quot; style=&amp;quot;background-color: #fafffb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbox-title&amp;quot; style=&amp;quot;font-size: 120%; font-weight: bold; background-color: #b9e6be;&amp;quot; &amp;gt;Preguntas relacionadas&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbox-list&amp;quot; style=&amp;quot;text-align: left; max-height: 500px; overflow-x: hidden; overflow-y: show; -moz-column-width: 18em; -webkit-column-width: 18em; column-width: 18em;&amp;quot;&amp;gt;{{#tag:DynamicPageList|&lt;br /&gt;
category = {{{subbranch1|}}}&lt;br /&gt;
namespace= main&lt;br /&gt;
count = 20&lt;br /&gt;
ordermethod = firstedit&lt;br /&gt;
order = descending&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;main branch&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch2&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch3&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;inserting branch of the article&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
[[es:Plantilla:Tree]]&lt;br /&gt;
[[fa:الگو:شاخه]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Tree&amp;diff=1752</id>
		<title>Template:Tree</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Tree&amp;diff=1752"/>
		<updated>2025-07-09T13:38:40Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#if: {{{main branch|}}} | &amp;lt;indicator name=1&amp;gt;[[:category:{{{main branch|}}}{{!}}{{{main branch|}}}]] {{#if: {{{subbranch1|}}} | [[file:Arrow-right.png|10px||link=|frameless]] [[:category:{{{subbranch1|}}}{{!}}{{{subbranch1|}}}]] {{#if: {{{subbranch2|}}} | [[file:Arrow-right.png|10px||link=|frameless]] [[:category:{{{subbranch2|}}}{{!}}{{{subbranch2|}}}]] {{#if: {{{subbranch3|}}} | [[file:Arrow-right.png|10px||link=|frameless]] [[:category:{{{subbranch3|}}}|{{{subbranch3|}}}]] }}}}}}&amp;lt;/indicator&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--:category ها--&lt;br /&gt;
--&amp;gt;{{#if: {{{subbranch3|}}}|[[category:{{{subbranch3|}}}]]|{{#if: {{{subbranch2|}}}|[[category:{{{subbranch2|}}}]]|{{#if: {{{main branch|}}}|&amp;lt;!--[[category:{{{main branch|}}}]]--&amp;gt;|[[category:without main branch]] }} }} }}{{#if: {{{subbranch1|}}}|[[category:{{{subbranch1|}}}]]|[[category:without subbranch]]}}&amp;lt;!--&lt;br /&gt;
--ناوبری:--&lt;br /&gt;
--&amp;gt;{{#if: {{{subbranch1|}}}|&amp;lt;div class=&amp;quot;navbox related&amp;quot; style=&amp;quot;background-color: #fafffb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbox-title&amp;quot; style=&amp;quot;font-size: 120%; font-weight: bold; background-color: #b9e6be;&amp;quot; &amp;gt;Preguntas relacionadas&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbox-list&amp;quot; style=&amp;quot;text-align: left; max-height: 500px; overflow-x: hidden; overflow-y: show; -moz-column-width: 18em; -webkit-column-width: 18em; column-width: 18em;&amp;quot;&amp;gt;{{#tag:DynamicPageList|&lt;br /&gt;
category = {{{subbranch1|}}}&lt;br /&gt;
namespace= main&lt;br /&gt;
count = 20&lt;br /&gt;
ordermethod = firstedit&lt;br /&gt;
order = descending&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;main branch&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch2&amp;quot;: {},&lt;br /&gt;
		&amp;quot;subbranch3&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;inserting branch of the article&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
[[es:Plantilla:Tree]]&lt;br /&gt;
[[fa:الگو:شاخه]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Those_Whom_God_Loves&amp;diff=1751</id>
		<title>Those Whom God Loves</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Those_Whom_God_Loves&amp;diff=1751"/>
		<updated>2025-07-07T13:34:17Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
According to the Qur&#039;an, who are the individuals that God loves?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
The [[Qur&#039;an]] explicitly mentions individuals whom [[God]] loves. These include those who practice goodness (&#039;&#039;[[Muḥsinīn]]&#039;&#039;), the pious (&#039;&#039;[[Muttaqīn]]&#039;&#039;), the patient (&#039;&#039;[[Ṣābirīn]]&#039;&#039;), the pure (&#039;&#039;[[Muṭahharīn]]&#039;&#039;), the repentant (&#039;&#039;[[Tawwābīn]]&#039;&#039;), and the just (&#039;&#039;[[Muqsiṭīn]]&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== The Good-Doers (Muḥsinīn) ==&lt;br /&gt;
{{Main Article|Muḥsinīn in the Qur&#039;an}}&lt;br /&gt;
God declares in the Qur&#039;an His love for those who act with excellence and kindness: {{quran|وَأَحْسِنُوا إِنَّ اللَّهَ یُحِبُّ الْمُحْسِنِینَ|ترجمه=And do good; indeed, Allah loves the doers of good.|سوره=Al-Baqarah|آیه=195}}.&lt;br /&gt;
This love is emphasized in five verses, including:&lt;br /&gt;
* [[Surah al-Baqarah]] (2:195)&lt;br /&gt;
* [[Surah Āl ʿImrān]] (3:134, 3:148)&lt;br /&gt;
* [[Surah al-Mā&#039;idah]] (5:13, 5:93)&lt;br /&gt;
[[Al-ʿAllāmah Ṭabāṭabāʾī]] defines &#039;&#039;iḥsān&#039;&#039; as performing any act in the best possible manner and solely for [[God]]&#039;s sake.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 4, p. 28.&amp;lt;/ref&amp;gt; God&#039;s love for the &#039;&#039;[[Muḥsinīn]]&#039;&#039; has both worldly and otherworldly effects, such as guidance, divine assistance, mercy, exalted status, acceptance of deeds, and immunity from punishment.&amp;lt;ref&amp;gt;Abū Dharr Tashakkurī Ṣāliḥ, &amp;quot;Āthār Maḥabbat Khudāwand bih Muḥsinīn dar Qurʾān,&amp;quot; Maʿrifat, Imām Khomeinī Educational and Research Institute, no. 180.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Repentant (Tawwābīn) and the Pure (Muṭahharīn) ==&lt;br /&gt;
According to Surah al-Baqarah (2:222), God loves those who constantly repent and purify themselves.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 2, p. 317.&amp;lt;/ref&amp;gt; [[Repentance]] (tawbah) refers to returning to God, while the term Tawwābīn denotes those who engage in frequent repentance.&amp;lt;ref&amp;gt;Ṭūsī, Muḥammad b. Ḥasan, al-Tibyān fī Tafsīr al-Qurʾān, Beirut: Dār Iḥyāʾ al-Turāth al-ʿArabī, 1st edition, n.d., vol. 6, p. 468.&amp;lt;/ref&amp;gt; God accepts all sincere forms of repentance—whether expressed through prayer, action, or true belief.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 2, p. 318.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In another verse, God affirms His love for the pure (Muṭahharīn): {{quran||ترجمه=Allah loves those who purify themselves.|سوره=At-Tawbah|آیه=108}}. Purity encompasses both spiritual cleanliness—freedom from sin and idolatry—and physical hygiene.&amp;lt;ref&amp;gt;Makāram Shīrāzī, Nāṣir, Tafsīr-i Namūneh, Tehran: Dār al-Kutub al-Islāmiyyah, 10th edition, 1371 SH, vol. 8, p. 140.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Pious (Muttaqīn) ==&lt;br /&gt;
{{See also|Attributes of the Pious in the Qur&#039;an}}&lt;br /&gt;
God&#039;s love for the pious is mentioned in [[Surah al-Tawbah]] (9:4, 9:7) and [[Surah Āl ʿImrān]] (3:76). In Qur&#039;anic terminology, [[taqwā]] (piety) refers to avoiding forbidden actions and maintaining a God-conscious life.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 9, p. 202.&amp;lt;/ref&amp;gt; Groups such as wrongdoers, deviators, rebels, oppressors, and criminals stand in opposition to the pious (Muttaqīn).&amp;lt;ref&amp;gt;ʿAbbāsī, Bābak, &amp;quot;Taqwā,&amp;quot; Dāneshnāmeh-yi Buzurg-i Islāmī, Islamic Encyclopaedia Foundation, 1393 SH, vol. 7, under the entry.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[Qur&#039;an]] outlines five qualities of the pious in Surah al-Baqarah:&lt;br /&gt;
* [[Belief in the unseen]],&lt;br /&gt;
* Establishment of [[Prayer|prayer]],&lt;br /&gt;
* Charity from their wealth,&lt;br /&gt;
* Faith in the revelations to the Prophet Muhammad (PBUH) and previous messengers,&lt;br /&gt;
* Certainty in the Hereafter.&amp;lt;ref&amp;gt;Sūrat al-Baqarah, verses 2–4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In [[Surah al-Ṣaff]]&amp;lt;ref&amp;gt;Al-Saff:4&amp;lt;/ref&amp;gt; and [[Surah al-Mā&#039;idah]]&amp;lt;ref&amp;gt;al-Mā&#039;idah:54&amp;lt;/ref&amp;gt;, God expresses His love for those who strive for His cause: {{quran|إِنَّ اللَّهَ یُحِبُّ الَّذِینَ یُقَاتِلُونَ فِی سَبِیلِهِ|ترجمه=Indeed, God loves those who fight in His cause.|سوره=Al-Saff|آیه=4}}.&lt;br /&gt;
&lt;br /&gt;
== Those Who Rely Upon God (Mutawakkilīn) ==&lt;br /&gt;
{{Main Article|Tawakkul (Reliance on God)}}&lt;br /&gt;
God also loves those who place their trust in Him: {{quran|إِنَّ اللَّهَ یُحِبُّ الْمُتَوَکِّلینَ|ترجمه=Indeed, God loves those who rely upon Him.|سوره=Al-&#039;Imran|آیه=159}}.&lt;br /&gt;
Tawakkul refers to placing trust and reliance upon God.&amp;lt;ref&amp;gt;Makāram Shīrāzī, Nāṣir, Tafsīr-i Namūneh, Tehran: Dār al-Kutub al-Islāmiyyah, 10th edition, 1371 SH, vol. 15, p. 541.&amp;lt;/ref&amp;gt; It is considered one of the gateways to faith.&amp;lt;ref&amp;gt;Makāram Shīrāzī, Nāṣir, Akhlāq dar Qurʾān, Qom: Madrasa ʿAlī b. Abī Ṭālib, 1st edition, 1377 SH, vol. 2, p. 266.&amp;lt;/ref&amp;gt; A person who practices tawakkul recognizes that God is the provider of sustenance and the caretaker of all affairs, relying solely on Him without hoping for assistance from others.&amp;lt;ref&amp;gt;Ḥusaynī, Mālik et al., &amp;quot;Tawakkul,&amp;quot; Dāneshnāmeh-yi Jahān-i Islām, Islamic Encyclopaedia Foundation, 1393 SH, vol. 8, under the entry.&amp;lt;/ref&amp;gt; The Qur&#039;an emphasizes that God loves those who trust in Him and do not depend on others.&amp;lt;ref&amp;gt;Ṭabrisī, Faḍl, Majmaʿ al-Bayān fī Tafsīr al-Qurʾān, trans. by a group of translators, Tehran: Farāhānī, 1st edition, n.d., vol. 4, p. 315.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exegetes define the essence of tawakkul as contentment and submission to God&#039;s [[decree and destiny]].&amp;lt;ref&amp;gt;Maybudī, Tafsīr Kashf al-Asrār wa ʿUddat al-Abrār, cited in Dāneshnāmeh-yi Jahān-i Islām, Islamic Encyclopaedia Foundation, vol. 1, p. 4062.&amp;lt;/ref&amp;gt; Al-Ghazālī, one of Islam&#039;s greatest scholars, describes tawakkul as: &lt;br /&gt;
::A station of the closest to God&amp;quot; and defines it as the heart&#039;s reliance on God.&amp;lt;ref&amp;gt;Ghazālī, Kimiyāʾ-yi Saʿādat, cited in Shahīdī, Sayyid Jaʿfar, Sharḥ-i Masnavī, vol. 6, p. 353.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ayatollah Ja&#039;far Subhani]] explains that [[tawakkul]] means entrusting one&#039;s affairs to God. However, this does not imply disregarding the natural laws of cause and effect or passively waiting for miraculous interventions. Instead, it encourages active effort alongside a firm trust in God&#039;s ultimate will and power.&amp;lt;ref&amp;gt;Ṣubḥānī, Jaʿfar, Manṣūr-i Jāvīd, vol. 3, p. 419.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Patient (Ṣābirīn) ==&lt;br /&gt;
[[God]] praises the patient, those who endure trials and maintain their faith and efforts despite challenges: {{quran|وَ اللَّهُ یُحِبُّ الصَّابِرینَ|ترجمه=And God loves the patient.|سوره=An-Nur|آیه=146}}.&lt;br /&gt;
&lt;br /&gt;
It is narrated that the [[Prophet Muhammad (PBUH)]] supplicated to God for a certainty (yaqīn) that would make the hardships of this world bearable for him.&amp;lt;ref&amp;gt;Muḥammad Ṣādiq ʿĀrif, Rāh-i Rūshan (trans. al-Maḥajja al-Bayḍāʾ), al-Fayḍ al-Kāshānī, vol. 7, p. 160.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Just (Muqsiṭīn) ==&lt;br /&gt;
[[The Qur&#039;an]] highlights God&#039;s love for the just in three instances:&lt;br /&gt;
{{quran|إِنَّ اللَّهَ یُحِبُّ الْمُقْسِطِینَ|translation=Indeed, God loves the just.|sura=Al-Ma&#039;ida|verse=8}}&amp;lt;ref&amp;gt;Sūrat al-Māʾidah, verse 42; Sūrat al-Ḥujurāt, verse 9; Sūrat al-Mumtaḥanah, verse 8.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Justice]], a fundamental principle in [[Islam]], is upheld as the goal of [[divine revelation]] and the [[mission of the Prophets]].&amp;lt;ref&amp;gt;Ṣubḥānī, Shaykh Jaʿfar, Manṣūr-i Jāvīd, vol. 13, p. 168.&amp;lt;/ref&amp;gt; The Qur&#039;an emphasizes justice as the antithesis of oppression and an essential quality for human interactions.&amp;lt;ref&amp;gt;Sūrat al-Ḥadīd, verse 25.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
{{footnotes|2}}&lt;br /&gt;
&lt;br /&gt;
[[fa: کسانی که خداوند دوست می‌دارد]]&lt;br /&gt;
[[bn: আল্লাহ যাদেরকে পছন্দ করেন]]&lt;br /&gt;
[[ur: پروردگار عالم جنہیں دوست رکھتا ہے]]&lt;br /&gt;
[[ru: Кто любимцы Бога]]&lt;br /&gt;
[[ms: Orang-orang Yang Dicintai Allah Swt]]&lt;br /&gt;
[[ar: الذين يحبهم الله]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Resentment&amp;diff=1750</id>
		<title>Resentment</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Resentment&amp;diff=1750"/>
		<updated>2025-07-07T13:32:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Remedies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What is resentment? What are its consequences, causes, and remedies?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
{{portal|واژه‌ها}}&lt;br /&gt;
{{رذائل اخلاقی}}&lt;br /&gt;
&#039;&#039;&#039;Resentment&#039;&#039;&#039; is a [[moral vice]] and a psychological state in which a person harbors hostility towards another while concealing it, waiting for an opportune moment to express it. It is often considered a byproduct of anger. Remedies for resentment include reflecting on its consequences, cultivating a spirit of forgiveness, and engaging in amicable interactions with the individual towards whom resentment is directed.&lt;br /&gt;
&lt;br /&gt;
One significant cause of resentment is a sense of inadequacy, which leads an individual to begrudge others&#039; success. Other causes include [[verbal disputes]], [[blame]], [[gossip]], [[mockery]], [[curses]], and [[abusive language]], all of which can provoke feelings of hostility in the affected party.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Resentment is a psychological state where an individual harbors hidden animosity toward another, awaiting the right moment to act upon it.&amp;lt;ref&amp;gt;Narāqī, Aḥmad, Miʿrāj al-Saʿāda, Nāshir: Kashf al-Ghiṭāʾ, First Edition, 82, p. 200.&amp;lt;/ref&amp;gt; It is distinguished as a purely internal feeling; if acted upon, it escalates to enmity. Resentment arises as a consequence of unresolved anger, especially when an individual suppresses their anger rather than expressing it.&amp;lt;ref&amp;gt;Narāqī, Aḥmad, Miʿrāj al-Saʿāda, Nāshir: Kashf al-Ghiṭāʾ, First Edition, 82, p. 200.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Islamic teachings describe resentment as incompatible with genuine faith. A resentful person is considered deprived of true belief.&amp;lt;ref&amp;gt;Muḥammadī Ray Shahrī, Mīzān al-Ḥikma, trans. Ḥamīd Riḍā Mashāyikhī, Dār al-Ḥadīth, First Edition, 1377 SH, vol. 3, p. 1221, Bāb Ḥiqd.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Causes ==&lt;br /&gt;
{{Main Article|Key factors of resentment}}&lt;br /&gt;
Key factors contributing to resentment include:&lt;br /&gt;
* [[Verbal Disputes]]: Continued debates, especially those where neither party accepts the other&#039;s perspective, can lead to animosity.&amp;lt;ref&amp;gt;ʿĀmilī Jubaʿī, Zayn al-Dīn b. ʿAlī (known as Shahīd Thānī), Muniyat al-Murīd fī Ādāb al-Mufīd wa al-Mustafīd, Bāb al-Marāʾ.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Faultfinding (&#039;&#039;[[Merā&#039;]]&#039;&#039;): Criticizing others&#039; speech disrupts relationships and fosters resentment.&amp;lt;ref&amp;gt;Tehrānī, Mujtabā, Akhlāq-i Ilāhī, Muʾassasa-yi Farhangī Dānish wa Andīsha-yi Muʿāṣir, First Edition, 1381 SH, vol. 4, pp. 173–174.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Excessive Expectations and [[Blame]]: Overburdening others with expectations beyond their capacity and criticizing them for unmet expectations cultivates resentment.&amp;lt;ref&amp;gt;Muḥammadī Ray Shahrī, Mīzān al-Ḥikma, trans. Ḥamīd Riḍā Mashāyikhī, Dār al-Ḥadīth, First Edition, 1377 SH, vol. 3, p. 1221, Bāb Ḥiqd.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Feelings of Inadequacy: Those who feel insufficient may develop resentment upon witnessing others&#039; success.&amp;lt;ref&amp;gt;Ibn Abī al-Ḥadīd, Sharḥ Nahj al-Balāgha, 20 vols., Beirut: Dār Iḥyāʾ al-Turāth, 1385 AH, vol. 20, p. 322, Ḥadīth 696, and p. 327, Ḥadīth 743.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Gossip]]: Slander tarnishes the reputation of the subject, prompting them to harbor resentment toward the gossiper.&amp;lt;ref&amp;gt;Tehrānī, Mujtabā, Akhlāq-i Ilāhī, Muʾassasa-yi Farhangī Dānish wa Andīsha-yi Muʿāṣir, First Edition, 1381 SH, vol. 4, p. 95 or 65.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Mockery]]: Ridiculing others can lead to suppressed anger, eventually transforming into resentment.&amp;lt;ref&amp;gt;Tehrānī, Mujtabā, Akhlāq-i Ilāhī, Muʾassasa-yi Farhangī Dānish wa Andīsha-yi Muʿāṣir, First Edition, 1381 SH, vol. 4, p. 295.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Curses and Abuse: Excessive verbal abuse or cursing fosters resentment among those targeted.&amp;lt;ref&amp;gt;Tehrānī, Mujtabā, Akhlāq-i Ilāhī, Muʾassasa-yi Farhangī Dānish wa Andīsha-yi Muʿāṣir, First Edition, 1381 SH, vol. 4, p. 247.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Consequences of Resentment ==&lt;br /&gt;
A resentful person experiences perpetual discomfort, lacking peace of mind and enduring social isolation due to strained relationships. Resentment also paves the way for other sins, such as envy, gossip, slander, and humiliation of others. Additionally, Islam emphasizes that a true believer should not harbor resentment for extended periods, as stated in prophetic traditions.&amp;lt;ref&amp;gt;Muḥammadī Ray Shahrī, Mīzān al-Ḥikma, trans. Ḥamīd Riḍā Mashāyikhī, Dār al-Ḥadīth, First Edition, 1377 SH, vol. 3, p. 1221, Bāb Ḥiqd.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remedies ==&lt;br /&gt;
{{Main Article|Remedies for Resentment}}&lt;br /&gt;
To overcome resentment, scholars suggest:&lt;br /&gt;
# Reflecting on Its Consequences: Understanding that harboring resentment only harms the resentful individual, perpetuating their distress.&lt;br /&gt;
# Cultivating a Spirit of Forgiveness: When an individual is harmed or insulted by another, instead of succumbing to anger and resentment, they should embody the virtue of forgiveness. As stated by the [[Prophet Muhammad (PBUH)]], forgiveness elevates a person’s honor and dignity.&amp;lt;ref&amp;gt;ʿAbd Allāh Shubbar, Akhlāq-i Shubbar, Hijrat Publications, Second Edition, 1377 SH, pp. 253–254.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Kindness Toward the Resented Individual: Demonstrating goodwill, fulfilling their needs, and acknowledging their positive traits in social settings to mitigate hostility.&amp;lt;ref&amp;gt;Narāqī, Aḥmad, Miʿrāj al-Saʿāda, p. 201.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: کینه]]&lt;br /&gt;
[[bn: বিদ্বেষ]]&lt;br /&gt;
[[ru: Ненависть]]&lt;br /&gt;
[[ms: Dendam]]&lt;br /&gt;
[[es:Rencor]]&lt;br /&gt;
[[ar: الحقد]]&lt;br /&gt;
&lt;br /&gt;
{{tree&lt;br /&gt;
 | main branch = اخلاق&lt;br /&gt;
| subbranch1 = رذائل اخلاقی&lt;br /&gt;
| subbranch2 = کینه&lt;br /&gt;
| subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{تکمیل مقاله&lt;br /&gt;
 | شناسه = شد&lt;br /&gt;
 | تیترها = شد&lt;br /&gt;
 | ویرایش = شد&lt;br /&gt;
 | لینک‌دهی = شد&lt;br /&gt;
 | ناوبری =&lt;br /&gt;
 | نمایه =&lt;br /&gt;
 | تغییر مسیر = شد&lt;br /&gt;
 | ارجاعات =&lt;br /&gt;
 | ارزیابی کمی =&lt;br /&gt;
 | ارزیابی کیفی =&lt;br /&gt;
 | تکمیل =&lt;br /&gt;
 | اولویت = ج&lt;br /&gt;
 | کیفیت = ب&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1749</id>
		<title>Characteristics of war and jihad from the perspective of Imam Ali (a)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1749"/>
		<updated>2025-07-07T13:32:14Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What are the characteristics of war and jihad from the perspective of Imam Ali (AS)?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
Divine motivation and fighting for the sake of God are among the main characteristics of war and jihad in the view of [[Imam Ali (AS)]]. According to the Imam&#039;s advice, fighters should not let personal grudges interfere in their battle with the enemy. Imam Ali (AS) regarded war as the last resort and emphasized that efforts should be made to prevent war through counsel and goodwill. He considered [[peace]] superior to war, as reflected in his advice to Malik al-Ashtar, where he stated that if the enemy proposes peace, and it benefits the nation and pleases God, peace should be immediately accepted. [[Amir al-Mu&#039;minin (AS)]] considered initiating war without first offering the opportunity for reconciliation to be a wrongful act and made great efforts to guide the opposing side.&lt;br /&gt;
&lt;br /&gt;
== Characteristics of Jihad in the words of Amir al-Mu&#039;minin ==&lt;br /&gt;
In the view of [[Amir al-Mu&#039;minin (AS)]], the Islamic front, in addition to adhering to general principles of warfare, should observe a set of specific characteristics and etiquette. Following these principles is not only effective in achieving victory but also in demonstrating the righteousness of the Islamic cause. Some of these principles and characteristics include:&lt;br /&gt;
&lt;br /&gt;
=== War and Jihad for the sake of God (Pure Intention) ===&lt;br /&gt;
In Imam Ali&#039;s view, war and [[jihad]], if motivated by divine intentions and pursued for the sake of God, have value and importance. He advised his companions not to fight the enemy out of personal grudges, but rather to wage war solely for God&#039;s sake. He instructed his military commander, Ma&#039;qal ibn Qays, with the following words: {{Arabic text|وَلَا يَحْمِلَنَّكُمُ شَنَآنُهُمْ عَلَى قِتَالِهِم‏|Translation=Do not fight the enemy out of personal animosity.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=493}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abdulrahman ibn Abi Laila reports that when Imam Ali (AS)&#039;s army faced the forces of Sham at [[Siffin]], Imam Ali (AS) delivered a speech in which he said: {{Arabic text|أَيُّهَا الْمُؤْمِنُونَ إِنَّهُ مَنْ رَأَى عُدْوَاناً يُعْمَلُ بِهِ وَ مُنْكَراً يُدْعَى إِلَيْهِ فَأَنْكَرَهُ بِقَلْبِهِ فَقَدْ سَلِمَ وَ بَرِئ|Translation=If we confront oppression to uphold God&#039;s word and silence the words of the oppressors, then we have found the path to salvation.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=541}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Imam Ali (AS) was struck by the blow of [[Ibn Muljam]], he left a will for his children, urging them to engage in jihad with their wealth, lives, and tongues for the sake of God: {{Arabic text|وَ اللَّهَ اللَّهَ فِي الْجِهَادِ بِأَمْوَالِكُمْ وَ أَنْفُسِكُمْ وَ أَلْسِنَتِكُمْ فِي سَبِيلِ اللَّهِ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=421}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War as the Last Resort ===&lt;br /&gt;
Imam Ali (AS) considered war a last resort and stressed that it should be prevented through counsel and goodwill. He regarded [[peace]] as superior to war, and he told [[Malik al-Ashtar]]: {{Arabic text|وَ لَا تَدْفَعَنَّ صُلْحاً دَعَاكَ إِلَيْهِ عَدُوُّكَ وَ لِلَّهِ فِيهِ رِضًا فَإِنَّ فِي الصُّلْحِ دَعَةً لِجُنُودِكَ وَ رَاحَةً مِنْ هُمُومِكَ وَ أَمْناً لِبِلَادِكَ وَ لَكِنِ الْحَذَرَ كُلَّ الْحَذَرِ مِنْ عَدُوِّكَ بَعْدَ صُلْحِهِ|Translation=If the enemy raises the banner of peace and you trust them, and if you find it beneficial for the country and pleasing to God, then immediately accept peace; for peace, whatever it may be, is better than war...}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=422}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Imam Ali (AS) believed that if appropriate political strategies to prevent war failed and it led to war, every opportunity should be seized to end the conflict and restore peace. He wrote to one of his commanders about a group of rebels: {{Arabic text|فَإِنْ عَادُوا إِلَى ظِلِّ الطَّاعَةِ فَذَاكَ الَّذِي نُحِبُّ|Translation=If those who broke their covenant return to the shade of obedience, this is what we desire.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=366}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of [[Jamal]], Imam Ali (AS) expressed hope for peace, provided the opposition accepted. However, if they did not accept, he would resort to the final remedy, which was war.&amp;lt;ref&amp;gt;{{cite book|title=The Fitna and Battle of Jamal|year=1404|author=Sif ibn Umar Tamimi|publisher=Beirut, Dar al-Nafaes|page=150}}&amp;lt;/ref&amp;gt; Before the Battle of Jamal, Rifa&#039;ah ibn Rafi&#039; asked Imam Ali (AS) what his decision was, and the Imam replied: &amp;quot;What I intend is reform. If they accept, we will proceed. If they do not accept, we will offer them a portion of the truth, hoping to persuade them.&amp;quot; Rifa&#039;ah asked: &amp;quot;If they do not accept?&amp;quot; Imam replied: &amp;quot;If they leave us to ourselves, we will leave them to their own devices.&amp;quot; Rifa&#039;ah then asked: &amp;quot;What if they do not leave us alone?&amp;quot; Imam Ali (AS) replied: &amp;quot;We will defend ourselves against them.&amp;quot; Rifa&#039;ah said: &amp;quot;That seems like a good decision.&amp;quot;&amp;lt;ref&amp;gt;{{cite book|title=Sharh Nahj al-Balagha|year=1404|author=Abdul Hamid Ibn Hiba Allah|publisher=Qom, Ayatollah Marashi Najafi Library|volume=14|page=17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of Siffin, Imam Ali (AS)&#039;s army expressed dissatisfaction with the delay in fighting the Syrians. Imam explained that the delay was for the hope that some of the enemies would join his side and be [[guided]]: {{Arabic text|فَوَاللَّهِ مَا دَفَعْتُ الْحَرْبَ يَوْماً إِلَّا وَ أَنَا أَطْمَعُ أَنْ تَلْحَقَ بِي طَائِفَةٌ فَتَهْتَدِيَ بِي وَ تَعْشُوَ إِلَى ضَوْئِي وَ ذَلِكَ أَحَبُّ إِلَيَّ مِنْ أَنْ أَقْتُلَهَا عَلَى ضَلَالِهَا وَ إِنْ كَانَتْ تَبُوءُ بِآثَامِهَا}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=106}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avoiding War Before Exhausting All Peaceful Measures ===&lt;br /&gt;
It is said that Imam Ali (AS) never initiated war without exhausting all peaceful avenues first. [[Sheikh Mufid]] writes about the Battle of Jamal: Imam Ali (AS) said to the people: &amp;quot;Do not rush into war! Let me complete the argument with this group.&amp;quot; He then summoned [[Abdullah ibn Abbas]], gave him a [[Quran]], and asked him to take it to [[Talhah]], [[Zubair]], and [[Aisha]], calling them to the rulings of the Quran.&amp;lt;ref&amp;gt;{{cite book|title=Al-Jamal|year=1413|author=Muhammad Ibn Muhammad Mufid|publisher=Qom, Maktab al-Ilm al-Islami|page=336}}&amp;lt;/ref&amp;gt; Ibn Abbas went to the enemy and upon his return, he said: &amp;quot;This group is only seeking war.&amp;quot; The enemy archers began shooting, and Ibn Abbas urged Imam Ali (AS) to order the battle to begin. However, Imam Ali (AS) did not give the order to fight and called for another opportunity to complete the argument with them.&amp;lt;ref&amp;gt;{{cite book|title=Al-Mujam al-Awsat|year=1384|author=Taha Hussein|publisher=Beirut, Dar al-Qalam|volume=2|page=456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patience in War ===&lt;br /&gt;
Imam Ali (AS) repeatedly encouraged his army to exercise patience and perseverance during the battles, advising them that while the enemy may be more numerous, the true strength lies in resolve and in fighting for the sake of God. In his speech during the Battle of Siffin, Imam Ali (AS) said: {{Arabic text|يَا أَيُّهَا النَّاسُ فِي حَقِّ رَبِّكُمْ وَ فِي دِمَائِكُمْ فِي أَمْوَالِكُمْ وَ فِي أَعْرَاضِكُمْ فِي مَالِكُمْ وَ فِي عَمَلِكُمْ}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=591}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War for the Defense of the Faith and the Protection of Innocent People ===&lt;br /&gt;
For Imam Ali (AS), the primary aim of war was the defense of the faith and the protection of the innocent. For him, fighting was not about gaining wealth or revenge but was solely for the preservation of Islam and justice. One of the Imam&#039;s most famous speeches during his reign was his declaration: {{Arabic text|وَاللَّهِ لَا أُحِبُّ لَكُمْ النَّصْرَ عَلَى عَدُوِّكُمْ فِي السُّوءِ وَلَا فِي زَخْرَفٍ وَ لَا فِي دُورٍ وَ لَا فِي خَيْلٍ وَ لَا فِي بُسْتَانٍ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=527}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
From Imam Ali&#039;s perspective, war is not a preferred option but a means to protect the faith and ensure justice. His view on jihad emphasizes a commitment to peace, self-control, and integrity, stressing the importance of sincerity in fighting for God&#039;s cause. The Imam&#039;s guidelines in the conduct of war underscore the crucial balance between upholding the dignity of Islam and achieving victory through righteous means.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{footnotes}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1748</id>
		<title>Characteristics of war and jihad from the perspective of Imam Ali (a)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1748"/>
		<updated>2025-07-07T13:31:43Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What are the characteristics of war and jihad from the perspective of Imam Ali (AS)?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
Divine motivation and fighting for the sake of God are among the main characteristics of war and jihad in the view of [[Imam Ali (AS)]]. According to the Imam&#039;s advice, fighters should not let personal grudges interfere in their battle with the enemy. Imam Ali (AS) regarded war as the last resort and emphasized that efforts should be made to prevent war through counsel and goodwill. He considered [[peace]] superior to war, as reflected in his advice to Malik al-Ashtar, where he stated that if the enemy proposes peace, and it benefits the nation and pleases God, peace should be immediately accepted. [[Amir al-Mu&#039;minin (AS)]] considered initiating war without first offering the opportunity for reconciliation to be a wrongful act and made great efforts to guide the opposing side.&lt;br /&gt;
&lt;br /&gt;
== Characteristics of Jihad in the words of Amir al-Mu&#039;minin ==&lt;br /&gt;
In the view of [[Amir al-Mu&#039;minin (AS)]], the Islamic front, in addition to adhering to general principles of warfare, should observe a set of specific characteristics and etiquette. Following these principles is not only effective in achieving victory but also in demonstrating the righteousness of the Islamic cause. Some of these principles and characteristics include:&lt;br /&gt;
&lt;br /&gt;
=== War and Jihad for the sake of God (Pure Intention) ===&lt;br /&gt;
In Imam Ali&#039;s view, war and [[jihad]], if motivated by divine intentions and pursued for the sake of God, have value and importance. He advised his companions not to fight the enemy out of personal grudges, but rather to wage war solely for God&#039;s sake. He instructed his military commander, Ma&#039;qal ibn Qays, with the following words: {{Arabic text|وَلَا يَحْمِلَنَّكُمُ شَنَآنُهُمْ عَلَى قِتَالِهِم‏|Translation=Do not fight the enemy out of personal animosity.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=493}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abdulrahman ibn Abi Laila reports that when Imam Ali (AS)&#039;s army faced the forces of Sham at [[Siffin]], Imam Ali (AS) delivered a speech in which he said: {{Arabic text|أَيُّهَا الْمُؤْمِنُونَ إِنَّهُ مَنْ رَأَى عُدْوَاناً يُعْمَلُ بِهِ وَ مُنْكَراً يُدْعَى إِلَيْهِ فَأَنْكَرَهُ بِقَلْبِهِ فَقَدْ سَلِمَ وَ بَرِئ|Translation=If we confront oppression to uphold God&#039;s word and silence the words of the oppressors, then we have found the path to salvation.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=541}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Imam Ali (AS) was struck by the blow of [[Ibn Muljam]], he left a will for his children, urging them to engage in jihad with their wealth, lives, and tongues for the sake of God: {{Arabic text|وَ اللَّهَ اللَّهَ فِي الْجِهَادِ بِأَمْوَالِكُمْ وَ أَنْفُسِكُمْ وَ أَلْسِنَتِكُمْ فِي سَبِيلِ اللَّهِ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=421}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War as the Last Resort ===&lt;br /&gt;
Imam Ali (AS) considered war a last resort and stressed that it should be prevented through counsel and goodwill. He regarded [[peace]] as superior to war, and he told [[Malik al-Ashtar]]: {{Arabic text|وَ لَا تَدْفَعَنَّ صُلْحاً دَعَاكَ إِلَيْهِ عَدُوُّكَ وَ لِلَّهِ فِيهِ رِضًا فَإِنَّ فِي الصُّلْحِ دَعَةً لِجُنُودِكَ وَ رَاحَةً مِنْ هُمُومِكَ وَ أَمْناً لِبِلَادِكَ وَ لَكِنِ الْحَذَرَ كُلَّ الْحَذَرِ مِنْ عَدُوِّكَ بَعْدَ صُلْحِهِ|Translation=If the enemy raises the banner of peace and you trust them, and if you find it beneficial for the country and pleasing to God, then immediately accept peace; for peace, whatever it may be, is better than war...}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=422}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Imam Ali (AS) believed that if appropriate political strategies to prevent war failed and it led to war, every opportunity should be seized to end the conflict and restore peace. He wrote to one of his commanders about a group of rebels: {{Arabic text|فَإِنْ عَادُوا إِلَى ظِلِّ الطَّاعَةِ فَذَاكَ الَّذِي نُحِبُّ|Translation=If those who broke their covenant return to the shade of obedience, this is what we desire.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=366}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of [[Jamal]], Imam Ali (AS) expressed hope for peace, provided the opposition accepted. However, if they did not accept, he would resort to the final remedy, which was war.&amp;lt;ref&amp;gt;{{cite book|title=The Fitna and Battle of Jamal|year=1404|author=Sif ibn Umar Tamimi|publisher=Beirut, Dar al-Nafaes|page=150}}&amp;lt;/ref&amp;gt; Before the Battle of Jamal, Rifa&#039;ah ibn Rafi&#039; asked Imam Ali (AS) what his decision was, and the Imam replied: &amp;quot;What I intend is reform. If they accept, we will proceed. If they do not accept, we will offer them a portion of the truth, hoping to persuade them.&amp;quot; Rifa&#039;ah asked: &amp;quot;If they do not accept?&amp;quot; Imam replied: &amp;quot;If they leave us to ourselves, we will leave them to their own devices.&amp;quot; Rifa&#039;ah then asked: &amp;quot;What if they do not leave us alone?&amp;quot; Imam Ali (AS) replied: &amp;quot;We will defend ourselves against them.&amp;quot; Rifa&#039;ah said: &amp;quot;That seems like a good decision.&amp;quot;&amp;lt;ref&amp;gt;{{cite book|title=Sharh Nahj al-Balagha|year=1404|author=Abdul Hamid Ibn Hiba Allah|publisher=Qom, Ayatollah Marashi Najafi Library|volume=14|page=17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of Siffin, Imam Ali (AS)&#039;s army expressed dissatisfaction with the delay in fighting the Syrians. Imam explained that the delay was for the hope that some of the enemies would join his side and be [[guided]]: {{Arabic text|فَوَاللَّهِ مَا دَفَعْتُ الْحَرْبَ يَوْماً إِلَّا وَ أَنَا أَطْمَعُ أَنْ تَلْحَقَ بِي طَائِفَةٌ فَتَهْتَدِيَ بِي وَ تَعْشُوَ إِلَى ضَوْئِي وَ ذَلِكَ أَحَبُّ إِلَيَّ مِنْ أَنْ أَقْتُلَهَا عَلَى ضَلَالِهَا وَ إِنْ كَانَتْ تَبُوءُ بِآثَامِهَا}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=106}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avoiding War Before Exhausting All Peaceful Measures ===&lt;br /&gt;
It is said that Imam Ali (AS) never initiated war without exhausting all peaceful avenues first. [[Sheikh Mufid]] writes about the Battle of Jamal: Imam Ali (AS) said to the people: &amp;quot;Do not rush into war! Let me complete the argument with this group.&amp;quot; He then summoned [[Abdullah ibn Abbas]], gave him a [[Quran]], and asked him to take it to [[Talhah]], [[Zubair]], and [[Aisha]], calling them to the rulings of the Quran.&amp;lt;ref&amp;gt;{{cite book|title=Al-Jamal|year=1413|author=Muhammad Ibn Muhammad Mufid|publisher=Qom, Maktab al-Ilm al-Islami|page=336}}&amp;lt;/ref&amp;gt; Ibn Abbas went to the enemy and upon his return, he said: &amp;quot;This group is only seeking war.&amp;quot; The enemy archers began shooting, and Ibn Abbas urged Imam Ali (AS) to order the battle to begin. However, Imam Ali (AS) did not give the order to fight and called for another opportunity to complete the argument with them.&amp;lt;ref&amp;gt;{{cite book|title=Al-Mujam al-Awsat|year=1384|author=Taha Hussein|publisher=Beirut, Dar al-Qalam|volume=2|page=456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patience in War ===&lt;br /&gt;
Imam Ali (AS) repeatedly encouraged his army to exercise patience and perseverance during the battles, advising them that while the enemy may be more numerous, the true strength lies in resolve and in fighting for the sake of God. In his speech during the Battle of Siffin, Imam Ali (AS) said: {{Arabic text|يَا أَيُّهَا النَّاسُ فِي حَقِّ رَبِّكُمْ وَ فِي دِمَائِكُمْ فِي أَمْوَالِكُمْ وَ فِي أَعْرَاضِكُمْ فِي مَالِكُمْ وَ فِي عَمَلِكُمْ}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=591}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War for the Defense of the Faith and the Protection of Innocent People ===&lt;br /&gt;
For Imam Ali (AS), the primary aim of war was the defense of the faith and the protection of the innocent. For him, fighting was not about gaining wealth or revenge but was solely for the preservation of Islam and justice. One of the Imam&#039;s most famous speeches during his reign was his declaration: {{Arabic text|وَاللَّهِ لَا أُحِبُّ لَكُمْ النَّصْرَ عَلَى عَدُوِّكُمْ فِي السُّوءِ وَلَا فِي زَخْرَفٍ وَ لَا فِي دُورٍ وَ لَا فِي خَيْلٍ وَ لَا فِي بُسْتَانٍ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=527}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
From Imam Ali&#039;s perspective, war is not a preferred option but a means to protect the faith and ensure justice. His view on jihad emphasizes a commitment to peace, self-control, and integrity, stressing the importance of sincerity in fighting for God&#039;s cause. The Imam&#039;s guidelines in the conduct of war underscore the crucial balance between upholding the dignity of Islam and achieving victory through righteous means.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{references}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1747</id>
		<title>Characteristics of war and jihad from the perspective of Imam Ali (a)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1747"/>
		<updated>2025-07-07T13:30:58Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What are the characteristics of war and jihad from the perspective of Imam Ali (AS)?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
Divine motivation and fighting for the sake of God are among the main characteristics of war and jihad in the view of [[Imam Ali (AS)]]. According to the Imam&#039;s advice, fighters should not let personal grudges interfere in their battle with the enemy. Imam Ali (AS) regarded war as the last resort and emphasized that efforts should be made to prevent war through counsel and goodwill. He considered [[peace]] superior to war, as reflected in his advice to Malik al-Ashtar, where he stated that if the enemy proposes peace, and it benefits the nation and pleases God, peace should be immediately accepted. [[Amir al-Mu&#039;minin (AS)]] considered initiating war without first offering the opportunity for reconciliation to be a wrongful act and made great efforts to guide the opposing side.&lt;br /&gt;
&lt;br /&gt;
== Characteristics of Jihad in the words of Amir al-Mu&#039;minin ==&lt;br /&gt;
In the view of [[Amir al-Mu&#039;minin (AS)]], the Islamic front, in addition to adhering to general principles of warfare, should observe a set of specific characteristics and etiquette. Following these principles is not only effective in achieving victory but also in demonstrating the righteousness of the Islamic cause. Some of these principles and characteristics include:&lt;br /&gt;
&lt;br /&gt;
=== War and Jihad for the sake of God (Pure Intention) ===&lt;br /&gt;
In Imam Ali&#039;s view, war and [[jihad]], if motivated by divine intentions and pursued for the sake of God, have value and importance. He advised his companions not to fight the enemy out of personal grudges, but rather to wage war solely for God&#039;s sake. He instructed his military commander, Ma&#039;qal ibn Qays, with the following words: {{Arabic text|وَلَا يَحْمِلَنَّكُمُ شَنَآنُهُمْ عَلَى قِتَالِهِم‏|Translation=Do not fight the enemy out of personal animosity.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=493}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abdulrahman ibn Abi Laila reports that when Imam Ali (AS)&#039;s army faced the forces of Sham at [[Siffin]], Imam Ali (AS) delivered a speech in which he said: {{Arabic text|أَيُّهَا الْمُؤْمِنُونَ إِنَّهُ مَنْ رَأَى عُدْوَاناً يُعْمَلُ بِهِ وَ مُنْكَراً يُدْعَى إِلَيْهِ فَأَنْكَرَهُ بِقَلْبِهِ فَقَدْ سَلِمَ وَ بَرِئ|Translation=If we confront oppression to uphold God&#039;s word and silence the words of the oppressors, then we have found the path to salvation.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=541}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Imam Ali (AS) was struck by the blow of [[Ibn Muljam]], he left a will for his children, urging them to engage in jihad with their wealth, lives, and tongues for the sake of God: {{Arabic text|وَ اللَّهَ اللَّهَ فِي الْجِهَادِ بِأَمْوَالِكُمْ وَ أَنْفُسِكُمْ وَ أَلْسِنَتِكُمْ فِي سَبِيلِ اللَّهِ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=421}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War as the Last Resort ===&lt;br /&gt;
Imam Ali (AS) considered war a last resort and stressed that it should be prevented through counsel and goodwill. He regarded [[peace]] as superior to war, and he told [[Malik al-Ashtar]]: {{Arabic text|وَ لَا تَدْفَعَنَّ صُلْحاً دَعَاكَ إِلَيْهِ عَدُوُّكَ وَ لِلَّهِ فِيهِ رِضًا فَإِنَّ فِي الصُّلْحِ دَعَةً لِجُنُودِكَ وَ رَاحَةً مِنْ هُمُومِكَ وَ أَمْناً لِبِلَادِكَ وَ لَكِنِ الْحَذَرَ كُلَّ الْحَذَرِ مِنْ عَدُوِّكَ بَعْدَ صُلْحِهِ|Translation=If the enemy raises the banner of peace and you trust them, and if you find it beneficial for the country and pleasing to God, then immediately accept peace; for peace, whatever it may be, is better than war...}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=422}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Imam Ali (AS) believed that if appropriate political strategies to prevent war failed and it led to war, every opportunity should be seized to end the conflict and restore peace. He wrote to one of his commanders about a group of rebels: {{Arabic text|فَإِنْ عَادُوا إِلَى ظِلِّ الطَّاعَةِ فَذَاكَ الَّذِي نُحِبُّ|Translation=If those who broke their covenant return to the shade of obedience, this is what we desire.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=366}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of [[Jamal]], Imam Ali (AS) expressed hope for peace, provided the opposition accepted. However, if they did not accept, he would resort to the final remedy, which was war.&amp;lt;ref&amp;gt;{{cite book|title=The Fitna and Battle of Jamal|year=1404|author=Sif ibn Umar Tamimi|publisher=Beirut, Dar al-Nafaes|page=150}}&amp;lt;/ref&amp;gt; Before the Battle of Jamal, Rifa&#039;ah ibn Rafi&#039; asked Imam Ali (AS) what his decision was, and the Imam replied: &amp;quot;What I intend is reform. If they accept, we will proceed. If they do not accept, we will offer them a portion of the truth, hoping to persuade them.&amp;quot; Rifa&#039;ah asked: &amp;quot;If they do not accept?&amp;quot; Imam replied: &amp;quot;If they leave us to ourselves, we will leave them to their own devices.&amp;quot; Rifa&#039;ah then asked: &amp;quot;What if they do not leave us alone?&amp;quot; Imam Ali (AS) replied: &amp;quot;We will defend ourselves against them.&amp;quot; Rifa&#039;ah said: &amp;quot;That seems like a good decision.&amp;quot;&amp;lt;ref&amp;gt;{{cite book|title=Sharh Nahj al-Balagha|year=1404|author=Abdul Hamid Ibn Hiba Allah|publisher=Qom, Ayatollah Marashi Najafi Library|volume=14|page=17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of Siffin, Imam Ali (AS)&#039;s army expressed dissatisfaction with the delay in fighting the Syrians. Imam explained that the delay was for the hope that some of the enemies would join his side and be [[guided]]: {{Arabic text|فَوَاللَّهِ مَا دَفَعْتُ الْحَرْبَ يَوْماً إِلَّا وَ أَنَا أَطْمَعُ أَنْ تَلْحَقَ بِي طَائِفَةٌ فَتَهْتَدِيَ بِي وَ تَعْشُوَ إِلَى ضَوْئِي وَ ذَلِكَ أَحَبُّ إِلَيَّ مِنْ أَنْ أَقْتُلَهَا عَلَى ضَلَالِهَا وَ إِنْ كَانَتْ تَبُوءُ بِآثَامِهَا}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=106}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avoiding War Before Exhausting All Peaceful Measures ===&lt;br /&gt;
It is said that Imam Ali (AS) never initiated war without exhausting all peaceful avenues first. [[Sheikh Mufid]] writes about the Battle of Jamal: Imam Ali (AS) said to the people: &amp;quot;Do not rush into war! Let me complete the argument with this group.&amp;quot; He then summoned [[Abdullah ibn Abbas]], gave him a [[Quran]], and asked him to take it to [[Talhah]], [[Zubair]], and [[Aisha]], calling them to the rulings of the Quran.&amp;lt;ref&amp;gt;{{cite book|title=Al-Jamal|year=1413|author=Muhammad Ibn Muhammad Mufid|publisher=Qom, Maktab al-Ilm al-Islami|page=336}}&amp;lt;/ref&amp;gt; Ibn Abbas went to the enemy and upon his return, he said: &amp;quot;This group is only seeking war.&amp;quot; The enemy archers began shooting, and Ibn Abbas urged Imam Ali (AS) to order the battle to begin. However, Imam Ali (AS) did not give the order to fight and called for another opportunity to complete the argument with them.&amp;lt;ref&amp;gt;{{cite book|title=Al-Mujam al-Awsat|year=1384|author=Taha Hussein|publisher=Beirut, Dar al-Qalam|volume=2|page=456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patience in War ===&lt;br /&gt;
Imam Ali (AS) repeatedly encouraged his army to exercise patience and perseverance during the battles, advising them that while the enemy may be more numerous, the true strength lies in resolve and in fighting for the sake of God. In his speech during the Battle of Siffin, Imam Ali (AS) said: {{Arabic text|يَا أَيُّهَا النَّاسُ فِي حَقِّ رَبِّكُمْ وَ فِي دِمَائِكُمْ فِي أَمْوَالِكُمْ وَ فِي أَعْرَاضِكُمْ فِي مَالِكُمْ وَ فِي عَمَلِكُمْ}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=591}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War for the Defense of the Faith and the Protection of Innocent People ===&lt;br /&gt;
For Imam Ali (AS), the primary aim of war was the defense of the faith and the protection of the innocent. For him, fighting was not about gaining wealth or revenge but was solely for the preservation of Islam and justice. One of the Imam&#039;s most famous speeches during his reign was his declaration: {{Arabic text|وَاللَّهِ لَا أُحِبُّ لَكُمْ النَّصْرَ عَلَى عَدُوِّكُمْ فِي السُّوءِ وَلَا فِي زَخْرَفٍ وَ لَا فِي دُورٍ وَ لَا فِي خَيْلٍ وَ لَا فِي بُسْتَانٍ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=527}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
From Imam Ali&#039;s perspective, war is not a preferred option but a means to protect the faith and ensure justice. His view on jihad emphasizes a commitment to peace, self-control, and integrity, stressing the importance of sincerity in fighting for God&#039;s cause. The Imam&#039;s guidelines in the conduct of war underscore the crucial balance between upholding the dignity of Islam and achieving victory through righteous means.&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1746</id>
		<title>Characteristics of war and jihad from the perspective of Imam Ali (a)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1746"/>
		<updated>2025-07-07T13:30:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What are the characteristics of war and jihad from the perspective of Imam Ali (AS)?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
Divine motivation and fighting for the sake of God are among the main characteristics of war and jihad in the view of [[Imam Ali (AS)]]. According to the Imam&#039;s advice, fighters should not let personal grudges interfere in their battle with the enemy. Imam Ali (AS) regarded war as the last resort and emphasized that efforts should be made to prevent war through counsel and goodwill. He considered [[peace]] superior to war, as reflected in his advice to Malik al-Ashtar, where he stated that if the enemy proposes peace, and it benefits the nation and pleases God, peace should be immediately accepted. [[Amir al-Mu&#039;minin (AS)]] considered initiating war without first offering the opportunity for reconciliation to be a wrongful act and made great efforts to guide the opposing side.&lt;br /&gt;
&lt;br /&gt;
== Characteristics of Jihad in the words of Amir al-Mu&#039;minin ==&lt;br /&gt;
In the view of [[Amir al-Mu&#039;minin (AS)]], the Islamic front, in addition to adhering to general principles of warfare, should observe a set of specific characteristics and etiquette. Following these principles is not only effective in achieving victory but also in demonstrating the righteousness of the Islamic cause. Some of these principles and characteristics include:&lt;br /&gt;
&lt;br /&gt;
=== War and Jihad for the sake of God (Pure Intention) ===&lt;br /&gt;
In Imam Ali&#039;s view, war and [[jihad]], if motivated by divine intentions and pursued for the sake of God, have value and importance. He advised his companions not to fight the enemy out of personal grudges, but rather to wage war solely for God&#039;s sake. He instructed his military commander, Ma&#039;qal ibn Qays, with the following words: {{Arabic text|وَلَا يَحْمِلَنَّكُمُ شَنَآنُهُمْ عَلَى قِتَالِهِم‏|Translation=Do not fight the enemy out of personal animosity.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=493}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abdulrahman ibn Abi Laila reports that when Imam Ali (AS)&#039;s army faced the forces of Sham at [[Siffin]], Imam Ali (AS) delivered a speech in which he said: {{Arabic text|أَيُّهَا الْمُؤْمِنُونَ إِنَّهُ مَنْ رَأَى عُدْوَاناً يُعْمَلُ بِهِ وَ مُنْكَراً يُدْعَى إِلَيْهِ فَأَنْكَرَهُ بِقَلْبِهِ فَقَدْ سَلِمَ وَ بَرِئ|Translation=If we confront oppression to uphold God&#039;s word and silence the words of the oppressors, then we have found the path to salvation.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=541}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Imam Ali (AS) was struck by the blow of [[Ibn Muljam]], he left a will for his children, urging them to engage in jihad with their wealth, lives, and tongues for the sake of God: {{Arabic text|وَ اللَّهَ اللَّهَ فِي الْجِهَادِ بِأَمْوَالِكُمْ وَ أَنْفُسِكُمْ وَ أَلْسِنَتِكُمْ فِي سَبِيلِ اللَّهِ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=421}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War as the Last Resort ===&lt;br /&gt;
Imam Ali (AS) considered war a last resort and stressed that it should be prevented through counsel and goodwill. He regarded [[peace]] as superior to war, and he told [[Malik al-Ashtar]]: {{Arabic text|وَ لَا تَدْفَعَنَّ صُلْحاً دَعَاكَ إِلَيْهِ عَدُوُّكَ وَ لِلَّهِ فِيهِ رِضًا فَإِنَّ فِي الصُّلْحِ دَعَةً لِجُنُودِكَ وَ رَاحَةً مِنْ هُمُومِكَ وَ أَمْناً لِبِلَادِكَ وَ لَكِنِ الْحَذَرَ كُلَّ الْحَذَرِ مِنْ عَدُوِّكَ بَعْدَ صُلْحِهِ|Translation=If the enemy raises the banner of peace and you trust them, and if you find it beneficial for the country and pleasing to God, then immediately accept peace; for peace, whatever it may be, is better than war...}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=422}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Imam Ali (AS) believed that if appropriate political strategies to prevent war failed and it led to war, every opportunity should be seized to end the conflict and restore peace. He wrote to one of his commanders about a group of rebels: {{Arabic text|فَإِنْ عَادُوا إِلَى ظِلِّ الطَّاعَةِ فَذَاكَ الَّذِي نُحِبُّ|Translation=If those who broke their covenant return to the shade of obedience, this is what we desire.}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=366}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of [[Jamal]], Imam Ali (AS) expressed hope for peace, provided the opposition accepted. However, if they did not accept, he would resort to the final remedy, which was war.&amp;lt;ref&amp;gt;{{cite book|title=The Fitna and Battle of Jamal|year=1404|author=Sif ibn Umar Tamimi|publisher=Beirut, Dar al-Nafaes|page=150}}&amp;lt;/ref&amp;gt; Before the Battle of Jamal, Rifa&#039;ah ibn Rafi&#039; asked Imam Ali (AS) what his decision was, and the Imam replied: &amp;quot;What I intend is reform. If they accept, we will proceed. If they do not accept, we will offer them a portion of the truth, hoping to persuade them.&amp;quot; Rifa&#039;ah asked: &amp;quot;If they do not accept?&amp;quot; Imam replied: &amp;quot;If they leave us to ourselves, we will leave them to their own devices.&amp;quot; Rifa&#039;ah then asked: &amp;quot;What if they do not leave us alone?&amp;quot; Imam Ali (AS) replied: &amp;quot;We will defend ourselves against them.&amp;quot; Rifa&#039;ah said: &amp;quot;That seems like a good decision.&amp;quot;&amp;lt;ref&amp;gt;{{cite book|title=Sharh Nahj al-Balagha|year=1404|author=Abdul Hamid Ibn Hiba Allah|publisher=Qom, Ayatollah Marashi Najafi Library|Volume=14|page=17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of Siffin, Imam Ali (AS)&#039;s army expressed dissatisfaction with the delay in fighting the Syrians. Imam explained that the delay was for the hope that some of the enemies would join his side and be [[guided]]: {{Arabic text|فَوَاللَّهِ مَا دَفَعْتُ الْحَرْبَ يَوْماً إِلَّا وَ أَنَا أَطْمَعُ أَنْ تَلْحَقَ بِي طَائِفَةٌ فَتَهْتَدِيَ بِي وَ تَعْشُوَ إِلَى ضَوْئِي وَ ذَلِكَ أَحَبُّ إِلَيَّ مِنْ أَنْ أَقْتُلَهَا عَلَى ضَلَالِهَا وَ إِنْ كَانَتْ تَبُوءُ بِآثَامِهَا}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=106}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avoiding War Before Exhausting All Peaceful Measures ===&lt;br /&gt;
It is said that Imam Ali (AS) never initiated war without exhausting all peaceful avenues first. [[Sheikh Mufid]] writes about the Battle of Jamal: Imam Ali (AS) said to the people: &amp;quot;Do not rush into war! Let me complete the argument with this group.&amp;quot; He then summoned [[Abdullah ibn Abbas]], gave him a [[Quran]], and asked him to take it to [[Talhah]], [[Zubair]], and [[Aisha]], calling them to the rulings of the Quran.&amp;lt;ref&amp;gt;{{cite book|title=Al-Jamal|year=1413|author=Muhammad Ibn Muhammad Mufid|publisher=Qom, Maktab al-Ilm al-Islami|page=336}}&amp;lt;/ref&amp;gt; Ibn Abbas went to the enemy and upon his return, he said: &amp;quot;This group is only seeking war.&amp;quot; The enemy archers began shooting, and Ibn Abbas urged Imam Ali (AS) to order the battle to begin. However, Imam Ali (AS) did not give the order to fight and called for another opportunity to complete the argument with them.&amp;lt;ref&amp;gt;{{cite book|title=Al-Mujam al-Awsat|year=1384|author=Taha Hussein|publisher=Beirut, Dar al-Qalam|Volume=2|page=456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patience in War ===&lt;br /&gt;
Imam Ali (AS) repeatedly encouraged his army to exercise patience and perseverance during the battles, advising them that while the enemy may be more numerous, the true strength lies in resolve and in fighting for the sake of God. In his speech during the Battle of Siffin, Imam Ali (AS) said: {{Arabic text|يَا أَيُّهَا النَّاسُ فِي حَقِّ رَبِّكُمْ وَ فِي دِمَائِكُمْ فِي أَمْوَالِكُمْ وَ فِي أَعْرَاضِكُمْ فِي مَالِكُمْ وَ فِي عَمَلِكُمْ}}&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=591}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War for the Defense of the Faith and the Protection of Innocent People ===&lt;br /&gt;
For Imam Ali (AS), the primary aim of war was the defense of the faith and the protection of the innocent. For him, fighting was not about gaining wealth or revenge but was solely for the preservation of Islam and justice. One of the Imam&#039;s most famous speeches during his reign was his declaration: {{Arabic text|وَاللَّهِ لَا أُحِبُّ لَكُمْ النَّصْرَ عَلَى عَدُوِّكُمْ فِي السُّوءِ وَلَا فِي زَخْرَفٍ وَ لَا فِي دُورٍ وَ لَا فِي خَيْلٍ وَ لَا فِي بُسْتَانٍ}}.&amp;lt;ref&amp;gt;{{cite book|title=Nahj al-Balagha|year=1414|author=Sharif Razi|publisher=Qom, Hijrat Publications|page=527}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
From Imam Ali&#039;s perspective, war is not a preferred option but a means to protect the faith and ensure justice. His view on jihad emphasizes a commitment to peace, self-control, and integrity, stressing the importance of sincerity in fighting for God&#039;s cause. The Imam&#039;s guidelines in the conduct of war underscore the crucial balance between upholding the dignity of Islam and achieving victory through righteous means.&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1745</id>
		<title>Characteristics of war and jihad from the perspective of Imam Ali (a)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Characteristics_of_war_and_jihad_from_the_perspective_of_Imam_Ali_(a)&amp;diff=1745"/>
		<updated>2025-07-07T13:29:02Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What are the characteristics of war and jihad from the perspective of Imam Ali (AS)?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
Divine motivation and fighting for the sake of God are among the main characteristics of war and jihad in the view of [[Imam Ali (AS)]]. According to the Imam&#039;s advice, fighters should not let personal grudges interfere in their battle with the enemy. Imam Ali (AS) regarded war as the last resort and emphasized that efforts should be made to prevent war through counsel and goodwill. He considered [[peace]] superior to war, as reflected in his advice to Malik al-Ashtar, where he stated that if the enemy proposes peace, and it benefits the nation and pleases God, peace should be immediately accepted. [[Amir al-Mu&#039;minin (AS)]] considered initiating war without first offering the opportunity for reconciliation to be a wrongful act and made great efforts to guide the opposing side.&lt;br /&gt;
&lt;br /&gt;
== Characteristics of Jihad in the words of Amir al-Mu&#039;minin ==&lt;br /&gt;
In the view of [[Amir al-Mu&#039;minin (AS)]], the Islamic front, in addition to adhering to general principles of warfare, should observe a set of specific characteristics and etiquette. Following these principles is not only effective in achieving victory but also in demonstrating the righteousness of the Islamic cause. Some of these principles and characteristics include:&lt;br /&gt;
&lt;br /&gt;
=== War and Jihad for the sake of God (Pure Intention) ===&lt;br /&gt;
In Imam Ali&#039;s view, war and [[jihad]], if motivated by divine intentions and pursued for the sake of God, have value and importance. He advised his companions not to fight the enemy out of personal grudges, but rather to wage war solely for God&#039;s sake. He instructed his military commander, Ma&#039;qal ibn Qays, with the following words: {{Arabic text|وَلَا يَحْمِلَنَّكُمُ شَنَآنُهُمْ عَلَى قِتَالِهِم‏|Translation=Do not fight the enemy out of personal animosity.}}&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=493}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abdulrahman ibn Abi Laila reports that when Imam Ali (AS)&#039;s army faced the forces of Sham at [[Siffin]], Imam Ali (AS) delivered a speech in which he said: {{Arabic text|أَيُّهَا الْمُؤْمِنُونَ إِنَّهُ مَنْ رَأَى عُدْوَاناً يُعْمَلُ بِهِ وَ مُنْكَراً يُدْعَى إِلَيْهِ فَأَنْكَرَهُ بِقَلْبِهِ فَقَدْ سَلِمَ وَ بَرِئ|Translation=If we confront oppression to uphold God&#039;s word and silence the words of the oppressors, then we have found the path to salvation.}}&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=541}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Imam Ali (AS) was struck by the blow of [[Ibn Muljam]], he left a will for his children, urging them to engage in jihad with their wealth, lives, and tongues for the sake of God: {{Arabic text|وَ اللَّهَ اللَّهَ فِي الْجِهَادِ بِأَمْوَالِكُمْ وَ أَنْفُسِكُمْ وَ أَلْسِنَتِكُمْ فِي سَبِيلِ اللَّهِ}}.&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=421}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War as the Last Resort ===&lt;br /&gt;
Imam Ali (AS) considered war a last resort and stressed that it should be prevented through counsel and goodwill. He regarded [[peace]] as superior to war, and he told [[Malik al-Ashtar]]: {{Arabic text|وَ لَا تَدْفَعَنَّ صُلْحاً دَعَاكَ إِلَيْهِ عَدُوُّكَ وَ لِلَّهِ فِيهِ رِضًا فَإِنَّ فِي الصُّلْحِ دَعَةً لِجُنُودِكَ وَ رَاحَةً مِنْ هُمُومِكَ وَ أَمْناً لِبِلَادِكَ وَ لَكِنِ الْحَذَرَ كُلَّ الْحَذَرِ مِنْ عَدُوِّكَ بَعْدَ صُلْحِهِ|Translation=If the enemy raises the banner of peace and you trust them, and if you find it beneficial for the country and pleasing to God, then immediately accept peace; for peace, whatever it may be, is better than war...}}&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=422}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Imam Ali (AS) believed that if appropriate political strategies to prevent war failed and it led to war, every opportunity should be seized to end the conflict and restore peace. He wrote to one of his commanders about a group of rebels: {{Arabic text|فَإِنْ عَادُوا إِلَى ظِلِّ الطَّاعَةِ فَذَاكَ الَّذِي نُحِبُّ|Translation=If those who broke their covenant return to the shade of obedience, this is what we desire.}}&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=366}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of [[Jamal]], Imam Ali (AS) expressed hope for peace, provided the opposition accepted. However, if they did not accept, he would resort to the final remedy, which was war.&amp;lt;ref&amp;gt;{{cite book|Title=The Fitna and Battle of Jamal|Year=1404|Author=Sif ibn Umar Tamimi|Publisher=Beirut, Dar al-Nafaes|Page=150}}&amp;lt;/ref&amp;gt; Before the Battle of Jamal, Rifa&#039;ah ibn Rafi&#039; asked Imam Ali (AS) what his decision was, and the Imam replied: &amp;quot;What I intend is reform. If they accept, we will proceed. If they do not accept, we will offer them a portion of the truth, hoping to persuade them.&amp;quot; Rifa&#039;ah asked: &amp;quot;If they do not accept?&amp;quot; Imam replied: &amp;quot;If they leave us to ourselves, we will leave them to their own devices.&amp;quot; Rifa&#039;ah then asked: &amp;quot;What if they do not leave us alone?&amp;quot; Imam Ali (AS) replied: &amp;quot;We will defend ourselves against them.&amp;quot; Rifa&#039;ah said: &amp;quot;That seems like a good decision.&amp;quot;&amp;lt;ref&amp;gt;{{cite book|Title=Sharh Nahj al-Balagha|Year=1404|Author=Abdul Hamid Ibn Hiba Allah|Publisher=Qom, Ayatollah Marashi Najafi Library|Volume=14|Page=17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before the Battle of Siffin, Imam Ali (AS)&#039;s army expressed dissatisfaction with the delay in fighting the Syrians. Imam explained that the delay was for the hope that some of the enemies would join his side and be [[guided]]: {{Arabic text|فَوَاللَّهِ مَا دَفَعْتُ الْحَرْبَ يَوْماً إِلَّا وَ أَنَا أَطْمَعُ أَنْ تَلْحَقَ بِي طَائِفَةٌ فَتَهْتَدِيَ بِي وَ تَعْشُوَ إِلَى ضَوْئِي وَ ذَلِكَ أَحَبُّ إِلَيَّ مِنْ أَنْ أَقْتُلَهَا عَلَى ضَلَالِهَا وَ إِنْ كَانَتْ تَبُوءُ بِآثَامِهَا}}.&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=106}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Avoiding War Before Exhausting All Peaceful Measures ===&lt;br /&gt;
It is said that Imam Ali (AS) never initiated war without exhausting all peaceful avenues first. [[Sheikh Mufid]] writes about the Battle of Jamal: Imam Ali (AS) said to the people: &amp;quot;Do not rush into war! Let me complete the argument with this group.&amp;quot; He then summoned [[Abdullah ibn Abbas]], gave him a [[Quran]], and asked him to take it to [[Talhah]], [[Zubair]], and [[Aisha]], calling them to the rulings of the Quran.&amp;lt;ref&amp;gt;{{cite book|Title=Al-Jamal|Year=1413|Author=Muhammad Ibn Muhammad Mufid|Publisher=Qom, Maktab al-Ilm al-Islami|Page=336}}&amp;lt;/ref&amp;gt; Ibn Abbas went to the enemy and upon his return, he said: &amp;quot;This group is only seeking war.&amp;quot; The enemy archers began shooting, and Ibn Abbas urged Imam Ali (AS) to order the battle to begin. However, Imam Ali (AS) did not give the order to fight and called for another opportunity to complete the argument with them.&amp;lt;ref&amp;gt;{{cite book|Title=Al-Mujam al-Awsat|Year=1384|Author=Taha Hussein|Publisher=Beirut, Dar al-Qalam|Volume=2|Page=456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patience in War ===&lt;br /&gt;
Imam Ali (AS) repeatedly encouraged his army to exercise patience and perseverance during the battles, advising them that while the enemy may be more numerous, the true strength lies in resolve and in fighting for the sake of God. In his speech during the Battle of Siffin, Imam Ali (AS) said: {{Arabic text|يَا أَيُّهَا النَّاسُ فِي حَقِّ رَبِّكُمْ وَ فِي دِمَائِكُمْ فِي أَمْوَالِكُمْ وَ فِي أَعْرَاضِكُمْ فِي مَالِكُمْ وَ فِي عَمَلِكُمْ}}&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=591}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== War for the Defense of the Faith and the Protection of Innocent People ===&lt;br /&gt;
For Imam Ali (AS), the primary aim of war was the defense of the faith and the protection of the innocent. For him, fighting was not about gaining wealth or revenge but was solely for the preservation of Islam and justice. One of the Imam&#039;s most famous speeches during his reign was his declaration: {{Arabic text|وَاللَّهِ لَا أُحِبُّ لَكُمْ النَّصْرَ عَلَى عَدُوِّكُمْ فِي السُّوءِ وَلَا فِي زَخْرَفٍ وَ لَا فِي دُورٍ وَ لَا فِي خَيْلٍ وَ لَا فِي بُسْتَانٍ}}.&amp;lt;ref&amp;gt;{{cite book|Title=Nahj al-Balagha|Year=1414|Author=Sharif Razi|Publisher=Qom, Hijrat Publications|Page=527}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
From Imam Ali&#039;s perspective, war is not a preferred option but a means to protect the faith and ensure justice. His view on jihad emphasizes a commitment to peace, self-control, and integrity, stressing the importance of sincerity in fighting for God&#039;s cause. The Imam&#039;s guidelines in the conduct of war underscore the crucial balance between upholding the dignity of Islam and achieving victory through righteous means.&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1744</id>
		<title>Collection and Compilation of the Quran</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1744"/>
		<updated>2025-07-07T13:27:50Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
When was the Quran first compiled? Did the Prophet (PBUH) oversee the collection and compilation of the Quran, or was this done at the discretion of the companions?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
{{text start}}&lt;br /&gt;
Islamic scholars and commentators differ on the issue of who undertook the collection and compilation of the [[Quran]], and when this process was completed. Some believe that the order of the verses and surahs was divinely ordained, and that the Quran was compiled during the [[Prophet Muhammad’s (PBUH)]] lifetime. Others, however, argue that the compilation and collection of the Quran occurred after the Prophet’s passing, through the initiative and discretion of his [[The Prophet&#039;s Companions|Companions]].&lt;br /&gt;
&lt;br /&gt;
== The Order of Surahs and Verses ==&lt;br /&gt;
=== Compilation of the Quran in the era of the Prophet (PBUH) ===&lt;br /&gt;
Some Quranic scholars maintain that the current Quran, with its specific order of surahs and verses, was indeed compiled in the Prophet’s (PBUH) time.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Zaqzūq, Maḥmūd Ḥamdī, al-Mawsūʿah al-Qurʾāniyyah al-Mutakhaṣṣiṣah, Cairo, Egypt, Wizārat al-Awqāf, al-Majlis al-Aʿlá li-al-Shuʾūn al-Islāmiyyah, 1423 AH, p. 224, Khurramshāhī, Bahāʾ al-Dīn, Dāneshnāmeh-ye Qurʾān-e Karīm, vol. 1, p. 459. ; Tārīkh Tadwīn Qurʾān Karīm, Sayyid Jaʿfar Murtaḍá ʿĀmilī, Kayhān Andīsheh, 1368 SH, no. 28.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This view is supported by several arguments, including:&lt;br /&gt;
# The Prophet&#039;s care for the [[Quran]], as he encouraged its recitation and memorization.&lt;br /&gt;
# The fact that Quran memorizers used to present their recitations to the Prophet.&lt;br /&gt;
# The presence of scribes of revelation to whom the [[Prophet (PBUH)]] dictated the verses, reviewed their work, corrected errors, and validated the written text—indicating his close supervision over the Quran’s transcription.&lt;br /&gt;
# The [[Completion of the Quran|completion of the Quran]] recitation among the [[The Prophet&#039;s Companions|Companions]] in the Prophet’s time, showing that the Quran had a defined beginning and end even then.&lt;br /&gt;
# Narrations suggesting that some Companions compiled the Quran during the Prophet&#039;s life.&lt;br /&gt;
# Furthermore, the notion that the Prophet (PBUH) might leave this task incomplete could raise the potential risk of Quranic distortion, diverse versions, and lack of unity in the text. Therefore, it can be inferred that gathering the Quran was an integral part of his mission.&lt;br /&gt;
&lt;br /&gt;
These evidences suggest that the arrangement of surahs and verses was overseen by the Prophet (PBUH), or that if the Companions were involved in compilation, it was within the framework of his guidance. It is unlikely that the Companions would have independently reached a consensus on the Quran’s exact order without his direction.&lt;br /&gt;
&lt;br /&gt;
=== Compilation of the Quran after the Prophet (PBUH) ===&lt;br /&gt;
{{نوشتار اصلی|The Order of Surahs in the Quran by the Companions}}&lt;br /&gt;
The Quran was also collected by the Companions after the Prophet’s death. Al-Suyuti reports that there is general agreement among Islamic scholars on this point.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān1394 AH|first=ʿAbd al-Raḥmān ibn Abī Bakr|last=Al-Suyūṭīal-Hayʾah al-Miṣriyyah al-ʿĀmmah lil-Kitāb1|page=135|language=|location=Cairo|url=}}&amp;lt;/ref&amp;gt; It is believed that the first official compilation was carried out under the first caliph, with [[Zaid ibn Thabit]] taking a leading role. Prior to this, [[Imam Ali (AS)]] also had compiled his own codex of the Quran. Other notable Companions engaged in collecting the Quran, which led to the emergence of multiple versions. The lack of diacritical marks resulted in differences in recitation, prompting a later standardization of the Quranic text during the caliphate of [[Uthman bin Affan|Uthman]].&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|first=Ḥusayn|last=Javān Ārāstah|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Formation of a Unified Codex ==&lt;br /&gt;
During the [[Prophet’s (PBUH)]] lifetime, the process of recording revelation was ongoing. However, since the revelation continued, the Quran had not yet been compiled into a single codex. Key scribes of the revelation included Imam Ali (AS), [[Ubayy ibn Ka&#039;b]], and [[Zaid ibn Thabit]], while other scribes held less prominent roles.&amp;lt;ref&amp;gt;{{cite book|title=Tārīkh Qurʾān|first=Muḥammad Hādī|last=Maʿrifat|volume=1|page=28|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Some believe that important scribes in Mecca included the [[Rashidun Caliphs]], [[Talha]], [[Zubair]], [[Sa’d ibn Abi Waqqas]], and others.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the caliphate of the first caliph, the task of compiling a codex was undertaken by Zaid ibn Thabit. Notable Companions, including Imam Ali (AS), also worked on compiling the “Mushaf”, and their versions quickly gained attention among Muslims.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|first=Ḥusayn|last=Javān Ārāstah|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The major effort to unify and eliminate conflicting versions took place during Uthman’s rule. He gathered reciters and scribes of the Quran for this purpose. There were various versions of the codex that differed in order, recitation, and other aspects, which led to disputes among people. On the suggestion of [[Hudhayfa ibn al-Yaman]], the third caliph consulted with the Companions and resolved to unify the codices. A committee under the supervision of Ubayy ibn Ka&#039;b was formed to standardize the Quranic text.&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{cite book|title=al-Tamhīd fī ʿUlūm al-Qurʾān|first=Muḥammad Hādī|last=Maʿrifat|volume=1|page=334–385|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al-Suyuti notes that [[Imam Ali (AS)]] also gave his principled support for this step.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān|first=|last=|publisher=|volume=1|page=126|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Due to the diversity in codices, readings, and dialects, Uthman ordered the burning of other codices after the completion of a standardized version, a decision that led to criticism and reproach towards him.&amp;lt;ref name=&amp;quot;:2&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Imams&#039; Endorsement of the Compiled Quran ===&lt;br /&gt;
The [[infallible Imams (AS)]] advocated for reciting the Quran according to the officially compiled version and its established reading. After assuming the [[Caliphate|caliphate]], Imam Ali (AS) encouraged people to adhere to the codex compiled by Uthman without any alteration. This was to ensure that no one would introduce changes or modifications in the name of correcting the [[Quran]].&amp;lt;ref&amp;gt;{{cite book|title=Pazhūhishī dar Tārīkh Qurʾān|first=|last=|publisher=|volume=|page=448–462|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Likewise, [[Shiites]], in adherence to the guidance of the Imams (AS), believe that the Quran we have today is complete and unaltered. It is narrated that once, when a man recited a verse differently from the accepted reading, [[Imam al-Sadiq (AS)]] advised him, saying, &lt;br /&gt;
::«Do not recite it this way; recite it as the people do.».&amp;lt;ref&amp;gt;{{cite book|title=Wasāʾil al-Shīʿah|first=Muhammad|last=Shaykh Ḥurr ʿĀmilī|volume=4|page=821|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{answer end}}&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Tārīkh wa ʿUlūm Qurʾān, Mīr Muḥammadī Zarandī.&lt;br /&gt;
* Nigāhī bih Qurʾān, ʿAlī Akbar Quraishī.&lt;br /&gt;
* Tārīkh Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
* ʿUlūm Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: جمع‌آوری و تدوین قرآن کریم]]&lt;br /&gt;
[[bn: কুরআন শরীফের সংগ্রহ ও সংকলন]]&lt;br /&gt;
[[ur: قرآن مجید کی تدوین]]&lt;br /&gt;
[[es: Recopilación y compilación del Sagrado Corán]]&lt;br /&gt;
[[ps: د قرآن کریم راغونډول او تدوینول]]&lt;br /&gt;
[[ru: Сбор и составление Священного Корана]]&lt;br /&gt;
[[ms: Pengumpulan Dan Penyusunan Alquran]]&lt;br /&gt;
[[ar: جمع وتدوين القرآن الكريم]]&lt;br /&gt;
{{tree&lt;br /&gt;
| main branch = علوم و معارف قرآن&lt;br /&gt;
| subbranch1 = تدوین قرآن&lt;br /&gt;
| subbranch2 =&lt;br /&gt;
| subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{ارزیابی&lt;br /&gt;
| شناسه = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| عکس = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| درگاه = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ادبیات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| پیوند = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ناوبری = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| تغییرمسیر = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارجاعات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کمی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کیفی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| اولویت = ب &amp;lt;!--الف | ب | ج | د--&amp;gt;&lt;br /&gt;
| کیفیت = متوسط &amp;lt;!--خیلی خوب | خوب | متوسط | ضعیف--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;br /&gt;
&lt;br /&gt;
[[رده:امام علی(ع) و خلفا]]&lt;br /&gt;
[[رده:حجیت قرآن]]&lt;br /&gt;
[[رده:علوم قرآن]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1743</id>
		<title>Collection and Compilation of the Quran</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1743"/>
		<updated>2025-07-07T13:25:42Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
When was the Quran first compiled? Did the Prophet (PBUH) oversee the collection and compilation of the Quran, or was this done at the discretion of the companions?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
{{text start}}&lt;br /&gt;
Islamic scholars and commentators differ on the issue of who undertook the collection and compilation of the [[Quran]], and when this process was completed. Some believe that the order of the verses and surahs was divinely ordained, and that the Quran was compiled during the [[Prophet Muhammad’s (PBUH)]] lifetime. Others, however, argue that the compilation and collection of the Quran occurred after the Prophet’s passing, through the initiative and discretion of his [[The Prophet&#039;s Companions|Companions]].&lt;br /&gt;
&lt;br /&gt;
== The Order of Surahs and Verses ==&lt;br /&gt;
=== Compilation of the Quran in the era of the Prophet (PBUH) ===&lt;br /&gt;
Some Quranic scholars maintain that the current Quran, with its specific order of surahs and verses, was indeed compiled in the Prophet’s (PBUH) time.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Zaqzūq, Maḥmūd Ḥamdī, al-Mawsūʿah al-Qurʾāniyyah al-Mutakhaṣṣiṣah, Cairo, Egypt, Wizārat al-Awqāf, al-Majlis al-Aʿlá li-al-Shuʾūn al-Islāmiyyah, 1423 AH, p. 224, Khurramshāhī, Bahāʾ al-Dīn, Dāneshnāmeh-ye Qurʾān-e Karīm, vol. 1, p. 459. ; Tārīkh Tadwīn Qurʾān Karīm, Sayyid Jaʿfar Murtaḍá ʿĀmilī, Kayhān Andīsheh, 1368 SH, no. 28.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This view is supported by several arguments, including:&lt;br /&gt;
# The Prophet&#039;s care for the [[Quran]], as he encouraged its recitation and memorization.&lt;br /&gt;
# The fact that Quran memorizers used to present their recitations to the Prophet.&lt;br /&gt;
# The presence of scribes of revelation to whom the [[Prophet (PBUH)]] dictated the verses, reviewed their work, corrected errors, and validated the written text—indicating his close supervision over the Quran’s transcription.&lt;br /&gt;
# The [[Completion of the Quran|completion of the Quran]] recitation among the [[The Prophet&#039;s Companions|Companions]] in the Prophet’s time, showing that the Quran had a defined beginning and end even then.&lt;br /&gt;
# Narrations suggesting that some Companions compiled the Quran during the Prophet&#039;s life.&lt;br /&gt;
# Furthermore, the notion that the Prophet (PBUH) might leave this task incomplete could raise the potential risk of Quranic distortion, diverse versions, and lack of unity in the text. Therefore, it can be inferred that gathering the Quran was an integral part of his mission.&lt;br /&gt;
&lt;br /&gt;
These evidences suggest that the arrangement of surahs and verses was overseen by the Prophet (PBUH), or that if the Companions were involved in compilation, it was within the framework of his guidance. It is unlikely that the Companions would have independently reached a consensus on the Quran’s exact order without his direction.&lt;br /&gt;
&lt;br /&gt;
=== Compilation of the Quran after the Prophet (PBUH) ===&lt;br /&gt;
{{نوشتار اصلی|The Order of Surahs in the Quran by the Companions}}&lt;br /&gt;
The Quran was also collected by the Companions after the Prophet’s death. Al-Suyuti reports that there is general agreement among Islamic scholars on this point.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān1394 AH|first=ʿAbd al-Raḥmān ibn Abī Bakr|last=Al-Suyūṭīal-Hayʾah al-Miṣriyyah al-ʿĀmmah lil-Kitāb|جلد=1|page=135|language=|location=Cairo|ویرایش=|url=}}&amp;lt;/ref&amp;gt; It is believed that the first official compilation was carried out under the first caliph, with [[Zaid ibn Thabit]] taking a leading role. Prior to this, [[Imam Ali (AS)]] also had compiled his own codex of the Quran. Other notable Companions engaged in collecting the Quran, which led to the emergence of multiple versions. The lack of diacritical marks resulted in differences in recitation, prompting a later standardization of the Quranic text during the caliphate of [[Uthman bin Affan|Uthman]].&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|first=Ḥusayn|last=Javān Ārāstah|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Formation of a Unified Codex ==&lt;br /&gt;
During the [[Prophet’s (PBUH)]] lifetime, the process of recording revelation was ongoing. However, since the revelation continued, the Quran had not yet been compiled into a single codex. Key scribes of the revelation included Imam Ali (AS), [[Ubayy ibn Ka&#039;b]], and [[Zaid ibn Thabit]], while other scribes held less prominent roles.&amp;lt;ref&amp;gt;{{cite book|title=Tārīkh Qurʾān|first=Muḥammad Hādī|last=Maʿrifat|volume=1|page=28|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Some believe that important scribes in Mecca included the [[Rashidun Caliphs]], [[Talha]], [[Zubair]], [[Sa’d ibn Abi Waqqas]], and others.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the caliphate of the first caliph, the task of compiling a codex was undertaken by Zaid ibn Thabit. Notable Companions, including Imam Ali (AS), also worked on compiling the “Mushaf”, and their versions quickly gained attention among Muslims.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|first=Ḥusayn|last=Javān Ārāstah|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The major effort to unify and eliminate conflicting versions took place during Uthman’s rule. He gathered reciters and scribes of the Quran for this purpose. There were various versions of the codex that differed in order, recitation, and other aspects, which led to disputes among people. On the suggestion of [[Hudhayfa ibn al-Yaman]], the third caliph consulted with the Companions and resolved to unify the codices. A committee under the supervision of Ubayy ibn Ka&#039;b was formed to standardize the Quranic text.&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{cite book|title=al-Tamhīd fī ʿUlūm al-Qurʾān|first=Muḥammad Hādī|last=Maʿrifat|volume=1|page=334–385|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al-Suyuti notes that [[Imam Ali (AS)]] also gave his principled support for this step.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān|first=|last=|publisher=|volume=1|page=126|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Due to the diversity in codices, readings, and dialects, Uthman ordered the burning of other codices after the completion of a standardized version, a decision that led to criticism and reproach towards him.&amp;lt;ref name=&amp;quot;:2&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Imams&#039; Endorsement of the Compiled Quran ===&lt;br /&gt;
The [[infallible Imams (AS)]] advocated for reciting the Quran according to the officially compiled version and its established reading. After assuming the [[Caliphate|caliphate]], Imam Ali (AS) encouraged people to adhere to the codex compiled by Uthman without any alteration. This was to ensure that no one would introduce changes or modifications in the name of correcting the [[Quran]].&amp;lt;ref&amp;gt;{{cite book|title=Pazhūhishī dar Tārīkh Qurʾān|first=|last=|publisher=|volume=|page=448–462|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Likewise, [[Shiites]], in adherence to the guidance of the Imams (AS), believe that the Quran we have today is complete and unaltered. It is narrated that once, when a man recited a verse differently from the accepted reading, [[Imam al-Sadiq (AS)]] advised him, saying, &lt;br /&gt;
::«Do not recite it this way; recite it as the people do.».&amp;lt;ref&amp;gt;{{cite book|title=Wasāʾil al-Shīʿah|first=محمد|last=Shaykh Ḥurr ʿĀmilī|volume=4|page=821|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{answer end}}&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Tārīkh wa ʿUlūm Qurʾān, Mīr Muḥammadī Zarandī.&lt;br /&gt;
* Nigāhī bih Qurʾān, ʿAlī Akbar Quraishī.&lt;br /&gt;
* Tārīkh Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
* ʿUlūm Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: جمع‌آوری و تدوین قرآن کریم]]&lt;br /&gt;
[[bn: কুরআন শরীফের সংগ্রহ ও সংকলন]]&lt;br /&gt;
[[ur: قرآن مجید کی تدوین]]&lt;br /&gt;
[[es: Recopilación y compilación del Sagrado Corán]]&lt;br /&gt;
[[ps: د قرآن کریم راغونډول او تدوینول]]&lt;br /&gt;
[[ru: Сбор и составление Священного Корана]]&lt;br /&gt;
[[ms: Pengumpulan Dan Penyusunan Alquran]]&lt;br /&gt;
[[ar: جمع وتدوين القرآن الكريم]]&lt;br /&gt;
{{tree&lt;br /&gt;
| main branch = علوم و معارف قرآن&lt;br /&gt;
| subbranch1 = تدوین قرآن&lt;br /&gt;
| subbranch2 =&lt;br /&gt;
| subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{ارزیابی&lt;br /&gt;
| شناسه = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| عکس = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| درگاه = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ادبیات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| پیوند = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ناوبری = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| تغییرمسیر = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارجاعات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کمی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کیفی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| اولویت = ب &amp;lt;!--الف | ب | ج | د--&amp;gt;&lt;br /&gt;
| کیفیت = متوسط &amp;lt;!--خیلی خوب | خوب | متوسط | ضعیف--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;br /&gt;
&lt;br /&gt;
[[رده:امام علی(ع) و خلفا]]&lt;br /&gt;
[[رده:حجیت قرآن]]&lt;br /&gt;
[[رده:علوم قرآن]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1742</id>
		<title>Collection and Compilation of the Quran</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1742"/>
		<updated>2025-07-07T13:22:03Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
When was the Quran first compiled? Did the Prophet (PBUH) oversee the collection and compilation of the Quran, or was this done at the discretion of the companions?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
{{text start}}&lt;br /&gt;
Islamic scholars and commentators differ on the issue of who undertook the collection and compilation of the [[Quran]], and when this process was completed. Some believe that the order of the verses and surahs was divinely ordained, and that the Quran was compiled during the [[Prophet Muhammad’s (PBUH)]] lifetime. Others, however, argue that the compilation and collection of the Quran occurred after the Prophet’s passing, through the initiative and discretion of his [[The Prophet&#039;s Companions|Companions]].&lt;br /&gt;
&lt;br /&gt;
== The Order of Surahs and Verses ==&lt;br /&gt;
=== Compilation of the Quran in the era of the Prophet (PBUH) ===&lt;br /&gt;
Some Quranic scholars maintain that the current Quran, with its specific order of surahs and verses, was indeed compiled in the Prophet’s (PBUH) time.&amp;lt;ref&amp;gt;Zaqzūq, Maḥmūd Ḥamdī, al-Mawsūʿah al-Qurʾāniyyah al-Mutakhaṣṣiṣah, Cairo, Egypt, Wizārat al-Awqāf, al-Majlis al-Aʿlá li-al-Shuʾūn al-Islāmiyyah, 1423 AH, p. 224, Khurramshāhī, Bahāʾ al-Dīn, Dāneshnāmeh-ye Qurʾān-e Karīm, vol. 1, p. 459. ; Tārīkh Tadwīn Qurʾān Karīm, Sayyid Jaʿfar Murtaḍá ʿĀmilī, Kayhān Andīsheh, 1368 SH, no. 28.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This view is supported by several arguments, including:&lt;br /&gt;
# The Prophet&#039;s care for the [[Quran]], as he encouraged its recitation and memorization.&lt;br /&gt;
# The fact that Quran memorizers used to present their recitations to the Prophet.&lt;br /&gt;
# The presence of scribes of revelation to whom the [[Prophet (PBUH)]] dictated the verses, reviewed their work, corrected errors, and validated the written text—indicating his close supervision over the Quran’s transcription.&lt;br /&gt;
# The [[Completion of the Quran|completion of the Quran]] recitation among the [[The Prophet&#039;s Companions|Companions]] in the Prophet’s time, showing that the Quran had a defined beginning and end even then.&lt;br /&gt;
# Narrations suggesting that some Companions compiled the Quran during the Prophet&#039;s life.&lt;br /&gt;
# Furthermore, the notion that the Prophet (PBUH) might leave this task incomplete could raise the potential risk of Quranic distortion, diverse versions, and lack of unity in the text. Therefore, it can be inferred that gathering the Quran was an integral part of his mission.&lt;br /&gt;
&lt;br /&gt;
These evidences suggest that the arrangement of surahs and verses was overseen by the Prophet (PBUH), or that if the Companions were involved in compilation, it was within the framework of his guidance. It is unlikely that the Companions would have independently reached a consensus on the Quran’s exact order without his direction.&lt;br /&gt;
&lt;br /&gt;
=== Compilation of the Quran after the Prophet (PBUH) ===&lt;br /&gt;
{{نوشتار اصلی|The Order of Surahs in the Quran by the Companions}}&lt;br /&gt;
The Quran was also collected by the Companions after the Prophet’s death. Al-Suyuti reports that there is general agreement among Islamic scholars on this point.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān1394 AH|first=ʿAbd al-Raḥmān ibn Abī Bakr|last=Al-Suyūṭīal-Hayʾah al-Miṣriyyah al-ʿĀmmah lil-Kitāb|جلد=1|page=135|language=|location=Cairo|ویرایش=|url=}}&amp;lt;/ref&amp;gt; It is believed that the first official compilation was carried out under the first caliph, with [[Zaid ibn Thabit]] taking a leading role. Prior to this, [[Imam Ali (AS)]] also had compiled his own codex of the Quran. Other notable Companions engaged in collecting the Quran, which led to the emergence of multiple versions. The lack of diacritical marks resulted in differences in recitation, prompting a later standardization of the Quranic text during the caliphate of [[Uthman bin Affan|Uthman]].&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|first=Ḥusayn|last=Javān Ārāstah|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Formation of a Unified Codex ==&lt;br /&gt;
During the [[Prophet’s (PBUH)]] lifetime, the process of recording revelation was ongoing. However, since the revelation continued, the Quran had not yet been compiled into a single codex. Key scribes of the revelation included Imam Ali (AS), [[Ubayy ibn Ka&#039;b]], and [[Zaid ibn Thabit]], while other scribes held less prominent roles.&amp;lt;ref&amp;gt;{{cite book|title=Tārīkh Qurʾān|first=Muḥammad Hādī|last=Maʿrifat|volume=1|page=28|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Some believe that important scribes in Mecca included the [[Rashidun Caliphs]], [[Talha]], [[Zubair]], [[Sa’d ibn Abi Waqqas]], and others.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the caliphate of the first caliph, the task of compiling a codex was undertaken by Zaid ibn Thabit. Notable Companions, including Imam Ali (AS), also worked on compiling the “Mushaf”, and their versions quickly gained attention among Muslims.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|first=Ḥusayn|last=Javān Ārāstah|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The major effort to unify and eliminate conflicting versions took place during Uthman’s rule. He gathered reciters and scribes of the Quran for this purpose. There were various versions of the codex that differed in order, recitation, and other aspects, which led to disputes among people. On the suggestion of [[Hudhayfa ibn al-Yaman]], the third caliph consulted with the Companions and resolved to unify the codices. A committee under the supervision of Ubayy ibn Ka&#039;b was formed to standardize the Quranic text.&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{cite book|title=al-Tamhīd fī ʿUlūm al-Qurʾān|first=Muḥammad Hādī|last=Maʿrifat|volume=1|page=334–385|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al-Suyuti notes that [[Imam Ali (AS)]] also gave his principled support for this step.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān|first=|last=|publisher=|volume=1|page=126|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Due to the diversity in codices, readings, and dialects, Uthman ordered the burning of other codices after the completion of a standardized version, a decision that led to criticism and reproach towards him.&amp;lt;ref name=&amp;quot;:2&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Imams&#039; Endorsement of the Compiled Quran ===&lt;br /&gt;
The [[infallible Imams (AS)]] advocated for reciting the Quran according to the officially compiled version and its established reading. After assuming the [[Caliphate|caliphate]], Imam Ali (AS) encouraged people to adhere to the codex compiled by Uthman without any alteration. This was to ensure that no one would introduce changes or modifications in the name of correcting the [[Quran]].&amp;lt;ref&amp;gt;{{cite book|title=Pazhūhishī dar Tārīkh Qurʾān|first=|last=|publisher=|volume=|page=448–462|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Likewise, [[Shiites]], in adherence to the guidance of the Imams (AS), believe that the Quran we have today is complete and unaltered. It is narrated that once, when a man recited a verse differently from the accepted reading, [[Imam al-Sadiq (AS)]] advised him, saying, &lt;br /&gt;
::«Do not recite it this way; recite it as the people do.».&amp;lt;ref&amp;gt;{{cite book|title=Wasāʾil al-Shīʿah|first=محمد|last=Shaykh Ḥurr ʿĀmilī|volume=4|page=821|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{answer end}}&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Tārīkh wa ʿUlūm Qurʾān, Mīr Muḥammadī Zarandī.&lt;br /&gt;
* Nigāhī bih Qurʾān, ʿAlī Akbar Quraishī.&lt;br /&gt;
* Tārīkh Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
* ʿUlūm Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: جمع‌آوری و تدوین قرآن کریم]]&lt;br /&gt;
[[bn: কুরআন শরীফের সংগ্রহ ও সংকলন]]&lt;br /&gt;
[[ur: قرآن مجید کی تدوین]]&lt;br /&gt;
[[es: Recopilación y compilación del Sagrado Corán]]&lt;br /&gt;
[[ps: د قرآن کریم راغونډول او تدوینول]]&lt;br /&gt;
[[ru: Сбор и составление Священного Корана]]&lt;br /&gt;
[[ms: Pengumpulan Dan Penyusunan Alquran]]&lt;br /&gt;
[[ar: جمع وتدوين القرآن الكريم]]&lt;br /&gt;
{{tree&lt;br /&gt;
| main branch = علوم و معارف قرآن&lt;br /&gt;
| subbranch1 = تدوین قرآن&lt;br /&gt;
| subbranch2 =&lt;br /&gt;
| subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{ارزیابی&lt;br /&gt;
| شناسه = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| عکس = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| درگاه = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ادبیات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| پیوند = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ناوبری = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| تغییرمسیر = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارجاعات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کمی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کیفی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| اولویت = ب &amp;lt;!--الف | ب | ج | د--&amp;gt;&lt;br /&gt;
| کیفیت = متوسط &amp;lt;!--خیلی خوب | خوب | متوسط | ضعیف--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;br /&gt;
&lt;br /&gt;
[[رده:امام علی(ع) و خلفا]]&lt;br /&gt;
[[رده:حجیت قرآن]]&lt;br /&gt;
[[رده:علوم قرآن]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1741</id>
		<title>Collection and Compilation of the Quran</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Collection_and_Compilation_of_the_Quran&amp;diff=1741"/>
		<updated>2025-07-07T13:19:06Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
When was the Quran first compiled? Did the Prophet (PBUH) oversee the collection and compilation of the Quran, or was this done at the discretion of the companions?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
{{text start}}&lt;br /&gt;
Islamic scholars and commentators differ on the issue of who undertook the collection and compilation of the [[Quran]], and when this process was completed. Some believe that the order of the verses and surahs was divinely ordained, and that the Quran was compiled during the [[Prophet Muhammad’s (PBUH)]] lifetime. Others, however, argue that the compilation and collection of the Quran occurred after the Prophet’s passing, through the initiative and discretion of his [[The Prophet&#039;s Companions|Companions]].&lt;br /&gt;
&lt;br /&gt;
== The Order of Surahs and Verses ==&lt;br /&gt;
=== Compilation of the Quran in the era of the Prophet (PBUH) ===&lt;br /&gt;
Some Quranic scholars maintain that the current Quran, with its specific order of surahs and verses, was indeed compiled in the Prophet’s (PBUH) time.&amp;lt;ref&amp;gt;Zaqzūq, Maḥmūd Ḥamdī, al-Mawsūʿah al-Qurʾāniyyah al-Mutakhaṣṣiṣah, Cairo, Egypt, Wizārat al-Awqāf, al-Majlis al-Aʿlá li-al-Shuʾūn al-Islāmiyyah, 1423 AH, p. 224, Khurramshāhī, Bahāʾ al-Dīn, Dāneshnāmeh-ye Qurʾān-e Karīm, vol. 1, p. 459. ; Tārīkh Tadwīn Qurʾān Karīm, Sayyid Jaʿfar Murtaḍá ʿĀmilī, Kayhān Andīsheh, 1368 SH, no. 28.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This view is supported by several arguments, including:&lt;br /&gt;
# The Prophet&#039;s care for the [[Quran]], as he encouraged its recitation and memorization.&lt;br /&gt;
# The fact that Quran memorizers used to present their recitations to the Prophet.&lt;br /&gt;
# The presence of scribes of revelation to whom the [[Prophet (PBUH)]] dictated the verses, reviewed their work, corrected errors, and validated the written text—indicating his close supervision over the Quran’s transcription.&lt;br /&gt;
# The [[Completion of the Quran|completion of the Quran]] recitation among the [[The Prophet&#039;s Companions|Companions]] in the Prophet’s time, showing that the Quran had a defined beginning and end even then.&lt;br /&gt;
# Narrations suggesting that some Companions compiled the Quran during the Prophet&#039;s life.&lt;br /&gt;
# Furthermore, the notion that the Prophet (PBUH) might leave this task incomplete could raise the potential risk of Quranic distortion, diverse versions, and lack of unity in the text. Therefore, it can be inferred that gathering the Quran was an integral part of his mission.&lt;br /&gt;
&lt;br /&gt;
These evidences suggest that the arrangement of surahs and verses was overseen by the Prophet (PBUH), or that if the Companions were involved in compilation, it was within the framework of his guidance. It is unlikely that the Companions would have independently reached a consensus on the Quran’s exact order without his direction.&lt;br /&gt;
&lt;br /&gt;
=== Compilation of the Quran after the Prophet (PBUH) ===&lt;br /&gt;
{{نوشتار اصلی|The Order of Surahs in the Quran by the Companions}}&lt;br /&gt;
The Quran was also collected by the Companions after the Prophet’s death. Al-Suyuti reports that there is general agreement among Islamic scholars on this point.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān|سال=1394 AH|first=ʿAbd al-Raḥmān ibn Abī Bakr|نام خانوادگی=Al-Suyūṭī|ناشر=al-Hayʾah al-Miṣriyyah al-ʿĀmmah lil-Kitāb|جلد=1|page=135|language=|location=Cairo|ویرایش=|url=}}&amp;lt;/ref&amp;gt; It is believed that the first official compilation was carried out under the first caliph, with [[Zaid ibn Thabit]] taking a leading role. Prior to this, [[Imam Ali (AS)]] also had compiled his own codex of the Quran. Other notable Companions engaged in collecting the Quran, which led to the emergence of multiple versions. The lack of diacritical marks resulted in differences in recitation, prompting a later standardization of the Quranic text during the caliphate of [[Uthman bin Affan|Uthman]].&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|سال=|first=Ḥusayn|نام خانوادگی=Javān Ārāstah|ناشر=|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Formation of a Unified Codex ==&lt;br /&gt;
During the [[Prophet’s (PBUH)]] lifetime, the process of recording revelation was ongoing. However, since the revelation continued, the Quran had not yet been compiled into a single codex. Key scribes of the revelation included Imam Ali (AS), [[Ubayy ibn Ka&#039;b]], and [[Zaid ibn Thabit]], while other scribes held less prominent roles.&amp;lt;ref&amp;gt;{{cite book|title=Tārīkh Qurʾān|سال=|first=Muḥammad Hādī|نام خانوادگی=Maʿrifat|ناشر=|volume=1|page=28|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Some believe that important scribes in Mecca included the [[Rashidun Caliphs]], [[Talha]], [[Zubair]], [[Sa’d ibn Abi Waqqas]], and others.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the caliphate of the first caliph, the task of compiling a codex was undertaken by Zaid ibn Thabit. Notable Companions, including Imam Ali (AS), also worked on compiling the “Mushaf”, and their versions quickly gained attention among Muslims.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{cite book|title=Darsnāmah-ye ʿUlūm Qurʾānī|سال=|first=Ḥusayn|نام خانوادگی=Javān Ārāstah|ناشر=|volume=1|page=7|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The major effort to unify and eliminate conflicting versions took place during Uthman’s rule. He gathered reciters and scribes of the Quran for this purpose. There were various versions of the codex that differed in order, recitation, and other aspects, which led to disputes among people. On the suggestion of [[Hudhayfa ibn al-Yaman]], the third caliph consulted with the Companions and resolved to unify the codices. A committee under the supervision of Ubayy ibn Ka&#039;b was formed to standardize the Quranic text.&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{cite book|title=al-Tamhīd fī ʿUlūm al-Qurʾān|سال=|first=Muḥammad Hādī|نام خانوادگی=Maʿrifat|ناشر=|volume=1|page=334–385|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al-Suyuti notes that [[Imam Ali (AS)]] also gave his principled support for this step.&amp;lt;ref&amp;gt;{{cite book|title=al-Itqān fī ʿUlūm al-Qurʾān|سال=|first=|last=|publisher=|volume=1|page=126|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Due to the diversity in codices, readings, and dialects, Uthman ordered the burning of other codices after the completion of a standardized version, a decision that led to criticism and reproach towards him.&amp;lt;ref name=&amp;quot;:2&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Imams&#039; Endorsement of the Compiled Quran ===&lt;br /&gt;
The [[infallible Imams (AS)]] advocated for reciting the Quran according to the officially compiled version and its established reading. After assuming the [[Caliphate|caliphate]], Imam Ali (AS) encouraged people to adhere to the codex compiled by Uthman without any alteration. This was to ensure that no one would introduce changes or modifications in the name of correcting the [[Quran]].&amp;lt;ref&amp;gt;{{cite book|title=Pazhūhishī dar Tārīkh Qurʾān|سال=|first=|last=|publisher=|volume=|page=448–462|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt; Likewise, [[Shiites]], in adherence to the guidance of the Imams (AS), believe that the Quran we have today is complete and unaltered. It is narrated that once, when a man recited a verse differently from the accepted reading, [[Imam al-Sadiq (AS)]] advised him, saying, &lt;br /&gt;
::«Do not recite it this way; recite it as the people do.».&amp;lt;ref&amp;gt;{{cite book|title=Wasāʾil al-Shīʿah|سال=|first=محمد|نام خانوادگی=Shaykh Ḥurr ʿĀmilī|ناشر=|volume=4|page=821|language=|location=|edition=|url=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{answer end}}&lt;br /&gt;
{{مطالعه بیشتر}}&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Tārīkh wa ʿUlūm Qurʾān, Mīr Muḥammadī Zarandī.&lt;br /&gt;
* Nigāhī bih Qurʾān, ʿAlī Akbar Quraishī.&lt;br /&gt;
* Tārīkh Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
* ʿUlūm Qurʾān, Āyat Allāh Maʿrifat.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: جمع‌آوری و تدوین قرآن کریم]]&lt;br /&gt;
[[bn: কুরআন শরীফের সংগ্রহ ও সংকলন]]&lt;br /&gt;
[[ur: قرآن مجید کی تدوین]]&lt;br /&gt;
[[es: Recopilación y compilación del Sagrado Corán]]&lt;br /&gt;
[[ps: د قرآن کریم راغونډول او تدوینول]]&lt;br /&gt;
[[ru: Сбор и составление Священного Корана]]&lt;br /&gt;
[[ms: Pengumpulan Dan Penyusunan Alquran]]&lt;br /&gt;
[[ar: جمع وتدوين القرآن الكريم]]&lt;br /&gt;
{{tree&lt;br /&gt;
| main branch = علوم و معارف قرآن&lt;br /&gt;
| subbranch1 = تدوین قرآن&lt;br /&gt;
| subbranch2 =&lt;br /&gt;
| subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{ارزیابی&lt;br /&gt;
| شناسه = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| عکس = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| درگاه = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ادبیات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| پیوند = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ناوبری = &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| تغییرمسیر = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارجاعات = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کمی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| ارزیابی کیفی = شد &amp;lt;!--خالی | شد--&amp;gt;&lt;br /&gt;
| اولویت = ب &amp;lt;!--الف | ب | ج | د--&amp;gt;&lt;br /&gt;
| کیفیت = متوسط &amp;lt;!--خیلی خوب | خوب | متوسط | ضعیف--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;br /&gt;
&lt;br /&gt;
[[رده:امام علی(ع) و خلفا]]&lt;br /&gt;
[[رده:حجیت قرآن]]&lt;br /&gt;
[[رده:علوم قرآن]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:See_also/doc&amp;diff=1740</id>
		<title>Template:See also/doc</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:See_also/doc&amp;diff=1740"/>
		<updated>2025-07-07T13:17:14Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{used in system|in [[MediaWiki:wantedpages-summary]]}}&lt;br /&gt;
{{lua|Module:Labelled list hatnote}}&lt;br /&gt;
&lt;br /&gt;
This template is used to create {{strong|[[WP:Hatnotes|hatnotes]] to point to a small number of other related titles}} at the {{strong|top of article &#039;&#039;[[Help:Section|sections]]&#039;&#039;}} (excluding the [[WP:LEAD|lead]]). It looks like this:&lt;br /&gt;
&lt;br /&gt;
{{See also|Wikipedia:Article title}}&lt;br /&gt;
&lt;br /&gt;
Do not use this template on top of a page, where hatnotes are for disambiguation and not for related topics (according to [[WP:RELATED]]). Do not use this template inside [[Wikipedia:Manual of Style/Layout#&amp;quot;See also&amp;quot; section|the &#039;&#039;&amp;quot;See also&amp;quot; section&#039;&#039;]] at the end of an article, or for links to other articles or subsections of the same article within regular article text. Where subsections are linked to, [[Template:Section link]] may be suitable instead. For use on category pages, the corresponding template is [[Template:Category see also]].&lt;br /&gt;
&lt;br /&gt;
Refer to the examples below to see how the template handles link targets containing section links and commas.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
{{see|WP:SUMMARYHATNOTE}}&lt;br /&gt;
; Basic usage:&lt;br /&gt;
 &amp;amp;#123;{See also|&#039;&#039;page1&#039;&#039;|&#039;&#039;page2&#039;&#039;|&#039;&#039;page3&#039;&#039;|...}}&lt;br /&gt;
&lt;br /&gt;
; All parameters:&lt;br /&gt;
 &amp;amp;#123;{See also|&#039;&#039;page1&#039;&#039;|&#039;&#039;page2&#039;&#039;|&#039;&#039;page3&#039;&#039;| ...&lt;br /&gt;
 |label 1 = &#039;&#039;label 1&#039;&#039;|label 2 = &#039;&#039;label2&#039;&#039;|label 3 = &#039;&#039;label3&#039;&#039;| ...&lt;br /&gt;
 |l1 = &#039;&#039;label1&#039;&#039;|l2 = &#039;&#039;label2&#039;&#039;|l3 = &#039;&#039;label3&#039;&#039;| ...&lt;br /&gt;
 |selfref = &#039;&#039;yes&#039;&#039;|category = &#039;&#039;no&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
This template accepts the following parameters:&lt;br /&gt;
* {{para|1}}, {{para|2}}, {{para|3}}, ... – the pages to link to. At least one page name is required. Categories and files are automatically escaped with the [[Help:Colon trick|colon trick]], and links to sections are automatically formatted as &#039;&#039;page § section&#039;&#039;, rather than the MediaWiki default of &#039;&#039;page#section&#039;&#039;.&lt;br /&gt;
* {{para|label 1}}, {{para|label 2}}, {{para|label 3}}, ...; or {{para|l1}}, {{para|l2}}, {{para|l3}}, ...; optional labels for each of the pages to link to.&lt;br /&gt;
* {{para|selfref}} – if set to {{pval|yes}}, {{pval|y}}, {{pval|true}}, or {{pval|1}}, adds the CSS class &amp;lt;code&amp;gt;selfref&amp;lt;/code&amp;gt;. This is used to denote self-references to Wikipedia. See [[Template:Selfref]] for more information.&lt;br /&gt;
* {{para|category}} – if set to {{pval|no}}, {{pval|n}}, {{pval|false}}, or {{pval|0}}, suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This only has an effect if the first positional parameter (the page to link to) is omitted.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Article}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Article#Section}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Article#Section|label 1=Custom section label}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Article1|Article2|Article3}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Veni, vidi, vici|Julius Caesar}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Veni, vidi, vici|Julius Caesar#Civil war}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Julius Caesar#Civil war|Veni, vidi, vici}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{See also|Julius Caesar#Civil war|Crossing the Rubicon}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
If no page names are supplied, the template outputs the following message with the (help) wikilink pointing to the &amp;quot;Errors&amp;quot; section of this page: &lt;br /&gt;
*{{See also|category=no}}&lt;br /&gt;
&lt;br /&gt;
If you see this error message, it is for one of three reasons:&lt;br /&gt;
# No parameters were specified (the template code was &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; with no pipe character nor page to link to). Please use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|&amp;lt;/nowiki&amp;gt;&#039;&#039;page&#039;&#039;&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
# Some parameters were specified, but no page names were included. For example, the template text &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|selfref=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; will produce this error. Please use (for example) &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|&amp;lt;/nowiki&amp;gt;&#039;&#039;page&#039;&#039;&amp;lt;nowiki&amp;gt;|selfref=yes}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
# A page name was specified, but it contains an equals sign (&amp;quot;=&amp;quot;). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|1+1=2|2+2=4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; will produce this error. To work around this, you can specify the parameter name explicitly by using &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, etc., before the page name, like this: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{See also|1=1+1=2|2=2+2=4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you see this error message and are unsure of what to do, please post a message on [[WP:HD|the help desk (WP:HD)]], and someone should be able to help you.&lt;br /&gt;
&lt;br /&gt;
To see a list of wikilinks to articles that contain this error message, see the [[Wikipedia:Maintenance|maintenance category]]: [[:Category:Hatnote templates with errors]].&lt;br /&gt;
&lt;br /&gt;
==TemplateData==&lt;br /&gt;
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}&lt;br /&gt;
{{TemplateData header|noheader=1}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template creates a hatnote to point to a small number of related pages. It is placed at the top of a section, directly underneath the section heading.&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 1&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the first page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Article name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the second page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the third page that you want to link to. More pages can be added using the parameters \&amp;quot;4\&amp;quot;, \&amp;quot;5\&amp;quot;, \&amp;quot;6\&amp;quot;, etc.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the fourth page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the fifth page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the sixth page that you want to link to.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the first linked article is to be displayed as. &amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l1&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 2&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the second linked article is to be displayed as.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l2&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 3&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l3&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the third linked article is to be displayed as. Other labels can be added by using increasing numbers (starting with \&amp;quot;label 4\&amp;quot; or \&amp;quot;l4\&amp;quot; for page 4) as parameter names.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;selfref&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Self reference&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Set to \&amp;quot;yes\&amp;quot; if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;no&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;category&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Category&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Set to \&amp;quot;no\&amp;quot;, \&amp;quot;n\&amp;quot;, \&amp;quot;false\&amp;quot;, or \&amp;quot;0\&amp;quot; to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;no&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 4&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l4&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the fourth linked article is to be displayed as. &amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 5&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l5&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the fifth linked article is to be displayed as. &amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;label 6&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;l6&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the sixth linked article is to be displayed as. &amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;2&amp;quot;,&lt;br /&gt;
		&amp;quot;3&amp;quot;,&lt;br /&gt;
		&amp;quot;4&amp;quot;,&lt;br /&gt;
		&amp;quot;5&amp;quot;,&lt;br /&gt;
		&amp;quot;6&amp;quot;,&lt;br /&gt;
		&amp;quot;label 1&amp;quot;,&lt;br /&gt;
		&amp;quot;label 2&amp;quot;,&lt;br /&gt;
		&amp;quot;label 3&amp;quot;,&lt;br /&gt;
		&amp;quot;label 4&amp;quot;,&lt;br /&gt;
		&amp;quot;label 5&amp;quot;,&lt;br /&gt;
		&amp;quot;label 6&amp;quot;,&lt;br /&gt;
		&amp;quot;selfref&amp;quot;,&lt;br /&gt;
		&amp;quot;category&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*{{tl|For}}&lt;br /&gt;
*{{t|Further}}&lt;br /&gt;
**{{tl|See}} (redirect to {{tl|Further}})&lt;br /&gt;
*{{tl|Template see also}}&lt;br /&gt;
*{{tl|Category see also}}&lt;br /&gt;
*{{tl|Main}}&lt;br /&gt;
*{{tl|Hatnote}}&lt;br /&gt;
{{Hatnote templates}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories go here and interwikis go in Wikidata. --&amp;gt;&lt;br /&gt;
[[Category:Hatnote templates]]&lt;br /&gt;
[[Category:Related-topic templates]]&lt;br /&gt;
[[Category:Wikipedia page-section templates]]&lt;br /&gt;
[[Category:Wikipedia see also]]&lt;br /&gt;
[[Category:Variadic templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Transclusion_count/data/S&amp;diff=1738</id>
		<title>Module:Transclusion count/data/S</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Transclusion_count/data/S&amp;diff=1738"/>
		<updated>2025-07-07T13:17:14Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;S&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;S-aca&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;S-ach&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;S-aft&amp;quot;] = 226000,&lt;br /&gt;
[&amp;quot;S-aft/check&amp;quot;] = 226000,&lt;br /&gt;
[&amp;quot;S-aft/filter&amp;quot;] = 226000,&lt;br /&gt;
[&amp;quot;S-bef&amp;quot;] = 230000,&lt;br /&gt;
[&amp;quot;S-bef/check&amp;quot;] = 230000,&lt;br /&gt;
[&amp;quot;S-bef/filter&amp;quot;] = 230000,&lt;br /&gt;
[&amp;quot;S-break&amp;quot;] = 6200,&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;] = 5700,&lt;br /&gt;
[&amp;quot;S-end&amp;quot;] = 256000,&lt;br /&gt;
[&amp;quot;S-gov&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;S-hon&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;S-hou&amp;quot;] = 9700,&lt;br /&gt;
[&amp;quot;S-inc&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;S-legal&amp;quot;] = 9700,&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;] = 11000,&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;] = 52000,&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;] = 6000,&lt;br /&gt;
[&amp;quot;S-rail-start&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;S-rail/lines&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;S-reg&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;S-rel&amp;quot;] = 19000,&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;] = 249000,&lt;br /&gt;
[&amp;quot;S-ttl&amp;quot;] = 237000,&lt;br /&gt;
[&amp;quot;S-ttl/check&amp;quot;] = 237000,&lt;br /&gt;
[&amp;quot;S-vac&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;SCO&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;SDcat&amp;quot;] = 6360000,&lt;br /&gt;
[&amp;quot;SECOND&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;SGP&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;SIA&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;SIPA&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;SLO&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;SMS&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;SMU&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;SPI_archive_notice&amp;quot;] = 79000,&lt;br /&gt;
[&amp;quot;SPIarchive_notice&amp;quot;] = 79000,&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;] = 73000,&lt;br /&gt;
[&amp;quot;SR/Olympics_profile&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;SRB&amp;quot;] = 4100,&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;] = 45000,&lt;br /&gt;
[&amp;quot;SUI&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;SVG&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;SVG-Logo&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;SVG-Res&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;SVG-logo&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;SVK&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;SVN&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;SWE&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Sandbox_other&amp;quot;] = 417000,&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;] = 3000,&lt;br /&gt;
[&amp;quot;Scholia&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;School_block&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;School_disambiguation&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Schoolblock&amp;quot;] = 7000,&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;] = 33000,&lt;br /&gt;
[&amp;quot;Sclass2&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Screen_reader-only&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Screen_reader-only/styles.css&amp;quot;] = 86000,&lt;br /&gt;
[&amp;quot;Script&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Script/Arabic&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Script/Hebrew&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Script/Nastaliq&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/core&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/is-iso-alpha4&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/name-to-alpha4&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Script/styles.css&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Script/styles_arabic.css&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Script/styles_hebrew.css&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Sdash&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Search_box&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Search_link&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Section_link&amp;quot;] = 95000,&lt;br /&gt;
[&amp;quot;Section_sizes&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;See&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;See_also&amp;quot;] = 204000,&lt;br /&gt;
[&amp;quot;Seealso&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Select_skin&amp;quot;] = 5300,&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;] = 44000,&lt;br /&gt;
[&amp;quot;Self-published_inline&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Self-published_source&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Self-reference&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Self-reference_tool&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Sent_off&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sentoff&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Separated_entries&amp;quot;] = 243000,&lt;br /&gt;
[&amp;quot;Sequence&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Series_overview&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Serif&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Set_category&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Set_index_article&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Sets_taxobox_colour&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Sfn&amp;quot;] = 187000,&lt;br /&gt;
[&amp;quot;SfnRef&amp;quot;] = 152000,&lt;br /&gt;
[&amp;quot;Sfn_whitelist&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Sfnm&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Sfnp&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Sfnref&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sfrac&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Sfrac/styles.css&amp;quot;] = 4900,&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;] = 18000,&lt;br /&gt;
[&amp;quot;Shared_IP_corp&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Shared_IP_edu&amp;quot;] = 185000,&lt;br /&gt;
[&amp;quot;Shared_IP_gov&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Sharedip&amp;quot;] = 3000,&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;] = 40000,&lt;br /&gt;
[&amp;quot;Ship_index&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Shipboxflag&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Shipboxflag/core&amp;quot;] = 21000,&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;] = 6490000,&lt;br /&gt;
[&amp;quot;Short_description/lowercasecheck&amp;quot;] = 6490000,&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;] = 21000,&lt;br /&gt;
[&amp;quot;Should_be_SVG&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Show_by_date&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Shy&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Sic&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Side_box&amp;quot;] = 1220000,&lt;br /&gt;
[&amp;quot;Sidebar&amp;quot;] = 317000,&lt;br /&gt;
[&amp;quot;Sidebar_games_events&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Sidebar_person&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Sidebar_person/styles.css&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Sidebar_with_collapsible_lists&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;Sigfig&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Significant_figures&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Significant_figures/rnd&amp;quot;] = 5200,&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;] = 46000,&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;] = 55000,&lt;br /&gt;
[&amp;quot;Silver_medal&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Similar_names&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Single+double&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Single+space&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Single-innings_cricket_match&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Single_chart&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Single_chart/chartnote&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Single_namespace&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;Single_source&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Singlechart&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Singles&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Sister-inline&amp;quot;] = 211000,&lt;br /&gt;
[&amp;quot;Sister_project&amp;quot;] = 1090000,&lt;br /&gt;
[&amp;quot;Sister_project/styles.css&amp;quot;] = 1090000,&lt;br /&gt;
[&amp;quot;Sister_project_links&amp;quot;] = 13000,&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;] = 3000,&lt;br /&gt;
[&amp;quot;Sky/styles.css&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Slink&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Small&amp;quot;] = 641000,&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;] = 3100,&lt;br /&gt;
[&amp;quot;Smalldiv&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Smaller&amp;quot;] = 79000,&lt;br /&gt;
[&amp;quot;Smallsup&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Smiley&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Snd&amp;quot;] = 239000,&lt;br /&gt;
[&amp;quot;Snds&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Soccer_icon&amp;quot;] = 128000,&lt;br /&gt;
[&amp;quot;Soccer_icon2&amp;quot;] = 128000,&lt;br /&gt;
[&amp;quot;Soccer_icon4&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Soccerbase&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Soccerbase_season&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Soccerway&amp;quot;] = 82000,&lt;br /&gt;
[&amp;quot;Sock&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;Sock_list&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Sockcat&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Sockmaster&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Sockpuppet&amp;quot;] = 265000,&lt;br /&gt;
[&amp;quot;Sockpuppet/altmaster&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Sockpuppet/categorise&amp;quot;] = 265000,&lt;br /&gt;
[&amp;quot;SockpuppetCheckuser&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Sockpuppet_category&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Sockpuppet_category/confirmed&amp;quot;] = 26000,&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;] = 6400,&lt;br /&gt;
[&amp;quot;Soft_redirect_protection&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Softredirect&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Solar_luminosity&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Solar_mass&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Solar_radius&amp;quot;] = 4900,&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;] = 9200,&lt;br /&gt;
[&amp;quot;Songs_category/core&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;Sort&amp;quot;] = 112000,&lt;br /&gt;
[&amp;quot;Sortname&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Source-attribution&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Source_check&amp;quot;] = 935000,&lt;br /&gt;
[&amp;quot;Sourcecheck&amp;quot;] = 934000,&lt;br /&gt;
[&amp;quot;Sources&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Sources_exist&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;South_America_topic&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Sp&amp;quot;] = 187000,&lt;br /&gt;
[&amp;quot;Space&amp;quot;] = 100000,&lt;br /&gt;
[&amp;quot;Space+double&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Space+single&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Spaced_en_dash&amp;quot;] = 272000,&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;] = 650000,&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;] = 2300,&lt;br /&gt;
[&amp;quot;Species_list&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Speciesbox&amp;quot;] = 352000,&lt;br /&gt;
[&amp;quot;Speciesbox/getGenus&amp;quot;] = 352000,&lt;br /&gt;
[&amp;quot;Speciesbox/getSpecies&amp;quot;] = 352000,&lt;br /&gt;
[&amp;quot;Speciesbox/name&amp;quot;] = 352000,&lt;br /&gt;
[&amp;quot;Speciesbox/parameterCheck&amp;quot;] = 352000,&lt;br /&gt;
[&amp;quot;Speciesbox/trim&amp;quot;] = 352000,&lt;br /&gt;
[&amp;quot;Specieslist&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Split_article&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Spnd&amp;quot;] = 4600,&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;] = 16000,&lt;br /&gt;
[&amp;quot;Sport_icon2&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;SportsYearCatUSstate&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Sports_links&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Sports_reference&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Squad_maintenance&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Sronly&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Srt&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Stack&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Stack/styles.css&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Stack_begin&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Stack_end&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;StaleIP&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;StandardEbooks&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Standings_table_end&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_entry&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_entry/record&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start/colheader&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start/colspan&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start/styles.css&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Starbox_astrometry&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_begin&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Starbox_catalog&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_character&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_detail&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Starbox_end&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Starbox_image&amp;quot;] = 3300,&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;] = 3100,&lt;br /&gt;
[&amp;quot;Start_and_end_dates&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Start_box&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Start_date&amp;quot;] = 510000,&lt;br /&gt;
[&amp;quot;Start_date_and_age&amp;quot;] = 174000,&lt;br /&gt;
[&amp;quot;Start_date_and_years_ago&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Start_date_text&amp;quot;] = 3900,&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;] = 6000,&lt;br /&gt;
[&amp;quot;Startflatlist&amp;quot;] = 156000,&lt;br /&gt;
[&amp;quot;Startplainlist&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Static_IP&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Static_row_numbers&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Static_row_numbers/styles.css&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Station&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Station_link&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Stdinchicite&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Steady&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Sticky_header&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Sticky_header/styles.css&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Stl&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Stn&amp;quot;] = 10000,&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;] = 5500,&lt;br /&gt;
[&amp;quot;Storm_name&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Storm_path&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stortingetbio&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;StoryTeleplay&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Str_count&amp;quot;] = 161000,&lt;br /&gt;
[&amp;quot;Str_endswith&amp;quot;] = 214000,&lt;br /&gt;
[&amp;quot;Str_find&amp;quot;] = 295000,&lt;br /&gt;
[&amp;quot;Str_index&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Str_left&amp;quot;] = 377000,&lt;br /&gt;
[&amp;quot;Str_len&amp;quot;] = 248000,&lt;br /&gt;
[&amp;quot;Str_letter&amp;quot;] = 180000,&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;] = 202000,&lt;br /&gt;
[&amp;quot;Str_rep&amp;quot;] = 285000,&lt;br /&gt;
[&amp;quot;Str_trim&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Str_≠_len&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Str_≤_len&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Str_≥_len&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;Strfind_short&amp;quot;] = 260000,&lt;br /&gt;
[&amp;quot;Strikethrough&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;String_split&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Strip_tags&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Strong&amp;quot;] = 948000,&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;] = 19000,&lt;br /&gt;
[&amp;quot;Stub_documentation&amp;quot;] = 39000,&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;] = 6400,&lt;br /&gt;
[&amp;quot;Students_table&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Su&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Su-census1989&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Sub&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Subinfobox_bodystyle&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Subject_bar&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Suboff&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Subon&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Subpage_other&amp;quot;] = 356000,&lt;br /&gt;
[&amp;quot;Subscription_required&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Subsidebar_bodystyle&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Subst_only&amp;quot;] = 5400,&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;] = 199000,&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;] = 67000,&lt;br /&gt;
[&amp;quot;Suppress_categories&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Surname&amp;quot;] = 75000,&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;] = 6900,&lt;br /&gt;
[&amp;quot;Sz&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:SDcat&amp;quot;] = 6360000,&lt;br /&gt;
[&amp;quot;Module:SPI_archive_notice&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Module:Science_redirect&amp;quot;] = 303000,&lt;br /&gt;
[&amp;quot;Module:Science_redirect/conf&amp;quot;] = 303000,&lt;br /&gt;
[&amp;quot;Module:Section_link&amp;quot;] = 95000,&lt;br /&gt;
[&amp;quot;Module:Section_sizes&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Module:See_also_if_exists&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;Module:Self&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Module:Self/license_migration_data.json&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Module:Self/styles.css&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Module:Separated_entries&amp;quot;] = 2500000,&lt;br /&gt;
[&amp;quot;Module:Series_overview&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Module:Set_to_list&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Module:Settlement_short_description&amp;quot;] = 712000,&lt;br /&gt;
[&amp;quot;Module:Shortcut&amp;quot;] = 27000,&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;] = 1260000,&lt;br /&gt;
[&amp;quot;Module:Side_box/styles.css&amp;quot;] = 1250000,&lt;br /&gt;
[&amp;quot;Module:Sidebar&amp;quot;] = 406000,&lt;br /&gt;
[&amp;quot;Module:Sidebar/configuration&amp;quot;] = 406000,&lt;br /&gt;
[&amp;quot;Module:Sidebar/styles.css&amp;quot;] = 413000,&lt;br /&gt;
[&amp;quot;Module:Sidebar_games_events&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Module:Sidebar_games_events/styles.css&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Module:Singles&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/bar/styles.css&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/config&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/styles.css&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Sock_list&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Module:Sort&amp;quot;] = 143000,&lt;br /&gt;
[&amp;quot;Module:Sort_title&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Sortkey&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;Module:Split_article&amp;quot;] = 4000,&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;] = 73000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/baseball&amp;quot;] = 36000,&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;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Sports_rbr_table/styles.css&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Sports_reference&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Module:Sports_results&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Sports_results/styles.css&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:Sports_table&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/Volleyball&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WDL&amp;quot;] = 59000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WDL_OT&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WL&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WL_OT&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Module:Sports_table/argcheck&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/styles.css&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/sub&amp;quot;] = 68000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/totalscheck&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Module:Stock_tickers/NYSE&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Module:Storm_categories&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/categories&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/colors&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/icons&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Module:String&amp;quot;] = 11700000,&lt;br /&gt;
[&amp;quot;Module:String2&amp;quot;] = 4990000,&lt;br /&gt;
[&amp;quot;Module:Su&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Subject_bar&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Suppress_categories&amp;quot;] = 6000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Hatnote_templates&amp;diff=1736</id>
		<title>Template:Hatnote templates</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Hatnote_templates&amp;diff=1736"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
| name = Hatnote templates&lt;br /&gt;
| state = {{{state|&amp;lt;includeonly&amp;gt;autocollapse&amp;lt;/includeonly&amp;gt;}}}&lt;br /&gt;
| bodyclass = hlist&lt;br /&gt;
| belowclass = hlist&lt;br /&gt;
| title  = [[WP:Hatnote#Hatnote templates|Hatnote templates]]&lt;br /&gt;
&lt;br /&gt;
| above =&lt;br /&gt;
*[[Wikipedia:Hatnote]]&lt;br /&gt;
*[[Wikipedia:Disambiguation]]&lt;br /&gt;
*[[Wikipedia:Redirect]]&lt;br /&gt;
&lt;br /&gt;
| group1 = Generic&lt;br /&gt;
| list1 =&lt;br /&gt;
*{{tl|Hatnote}}&lt;br /&gt;
*{{tl|Hatnote group}}&lt;br /&gt;
*{{tl|Self-reference}}&lt;br /&gt;
&lt;br /&gt;
| group2 = For and about&lt;br /&gt;
| list2 =&lt;br /&gt;
*{{tl|For}}&lt;br /&gt;
*{{tl|For-text}} (for custom text)&lt;br /&gt;
*{{tl|For-multi}} (for multiple uses)&lt;br /&gt;
*{{tl|About}}&lt;br /&gt;
*Variations: {{tl|Other uses}}&lt;br /&gt;
*{{tl|Other uses of}}&lt;br /&gt;
*{{tl|Redirect-distinguish-for}}&lt;br /&gt;
*{{tl|About-distinguish}}&lt;br /&gt;
*{{tl|About-distinguish-text}}&lt;br /&gt;
&lt;br /&gt;
| group3 = Other topics&lt;br /&gt;
| list3 =&lt;br /&gt;
*{{tl|Other people}}&lt;br /&gt;
*{{tl|About other people}} (adds &amp;quot;about&amp;quot; description)&lt;br /&gt;
*{{tl|Similar names}}&lt;br /&gt;
*{{tl|Other storms}}&lt;br /&gt;
*{{tl|Other places}}&lt;br /&gt;
*{{tl|Other ships}}&lt;br /&gt;
&lt;br /&gt;
| group4 = Redirect&lt;br /&gt;
| list4 =&lt;br /&gt;
*{{tl|Redirect}}&lt;br /&gt;
*{{tl|Redirect2}} (for two redirects)&lt;br /&gt;
*{{tl|Redirect-multi}} (for multiple redirects)&lt;br /&gt;
*{{tl|Redirect-several}} (for several redirects, without listing each)&lt;br /&gt;
*{{tl|Redirect-synonym}}&lt;br /&gt;
*{{tl|Redirect-distinguish}}&lt;br /&gt;
*{{tl|Redirect-distinguish-text}}&lt;br /&gt;
*{{tl|Redirect-distinguish-for}}&lt;br /&gt;
*{{tl|Technical reasons}}&lt;br /&gt;
&lt;br /&gt;
| group5 = Distinguish&lt;br /&gt;
| list5 =&lt;br /&gt;
*{{tl|Distinguish}} (supports custom text)&lt;br /&gt;
*{{tl|About-distinguish}}&lt;br /&gt;
*{{tl|About-distinguish-text}} (for custom text)&lt;br /&gt;
*{{tl|Redirect-distinguish}}&lt;br /&gt;
*{{tl|Redirect-distinguish-text}} (for custom text)&lt;br /&gt;
*{{tl|Redirect-distinguish-for}}&lt;br /&gt;
&lt;br /&gt;
| group6 = For use in sections&lt;br /&gt;
| list6 =&lt;br /&gt;
*{{tl|Main}}&lt;br /&gt;
*{{tl|Main if exists}}&lt;br /&gt;
*{{tl|Main list}}&lt;br /&gt;
*{{tl|Further}}&lt;br /&gt;
*{{tl|Further-text}} (for custom text)&lt;br /&gt;
*{{tl|Further interlanguage link}}&lt;br /&gt;
*{{tl|See also}}&lt;br /&gt;
*{{tl|See also-text}} (for custom text)&lt;br /&gt;
*{{tl|For outline}}&lt;br /&gt;
*{{tl|For timeline}}&lt;br /&gt;
&lt;br /&gt;
| group7 = Special&lt;br /&gt;
| list7 =&lt;br /&gt;
*{{tl|Broader}}&lt;br /&gt;
*{{tl|For introduction}}&lt;br /&gt;
*{{tl|See Wiktionary}}&lt;br /&gt;
*{{tl|Transcluding article}}&lt;br /&gt;
*{{tl|Transcluded section}}&lt;br /&gt;
&lt;br /&gt;
| group8 = Subject specific&lt;br /&gt;
| list8 = &lt;br /&gt;
* {{tl|About year}}&lt;br /&gt;
* {{tl|Highway detail hatnote}}&lt;br /&gt;
* {{tl|For LMST}}&lt;br /&gt;
* {{tl|WikiIPA}}&lt;br /&gt;
&lt;br /&gt;
| below =&lt;br /&gt;
*{{Icon|cat}} [[:Category:Hatnote templates]]&lt;br /&gt;
**[[:Category:Hatnote modules|modules]]&lt;br /&gt;
**[[:Category:Hatnote templates for names|for [family] names]]&lt;br /&gt;
**[[:Category:Hatnote templates for lists|for lists]]&lt;br /&gt;
*[[Template:Category hatnote templates|hatnote templates for category pages]]&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Documentation/styles.css&amp;diff=1734</id>
		<title>Module:Documentation/styles.css</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Documentation/styles.css&amp;diff=1734"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=yes}} */&lt;br /&gt;
.documentation,&lt;br /&gt;
.documentation-metadata {&lt;br /&gt;
	border: 1px solid var( --border-color-base, #a2a9b1 );&lt;br /&gt;
	background-color: #ecfcf4;&lt;br /&gt;
	clear: both;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.documentation {&lt;br /&gt;
	margin: 1em 0 0 0;&lt;br /&gt;
	padding: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.documentation-metadata {&lt;br /&gt;
	margin: 0.2em 0; /* same margin left-right as .documentation */&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding: 0.4em 1em; /* same padding left-right as .documentation */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.documentation-startbox {&lt;br /&gt;
	padding-bottom: 3px;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-base, #a2a9b1 );&lt;br /&gt;
	margin-bottom: 1ex;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.documentation-heading {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: 125%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.documentation-clear { /* Don&#039;t want things to stick out where they shouldn&#039;t. */&lt;br /&gt;
	clear: both;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.documentation-toolbar {&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	font-size: 85%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
    html.skin-theme-clientpref-night .documentation,&lt;br /&gt;
	html.skin-theme-clientpref-night .documentation-metadata {&lt;br /&gt;
	    background-color: #0b1e1c;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark ) {&lt;br /&gt;
    html.skin-theme-clientpref-os .documentation,&lt;br /&gt;
    html.skin-theme-clientpref-os .documentation-metadata {&lt;br /&gt;
        background-color: #0b1e1c;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Documentation&amp;diff=1732</id>
		<title>Module:Documentation</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Documentation&amp;diff=1732"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{documentation}}.&lt;br /&gt;
&lt;br /&gt;
-- Get required modules.&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
-- Get the config table.&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Documentation/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Often-used functions.&lt;br /&gt;
local ugsub = mw.ustring.gsub&lt;br /&gt;
local format = mw.ustring.format&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--&lt;br /&gt;
-- These are defined as local functions, but are made available in the p&lt;br /&gt;
-- table for testing purposes.&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function message(cfgKey, valArray, expectType)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Gets a message from the cfg table and formats it if appropriate.&lt;br /&gt;
	-- The function raises an error if the value from the cfg table is not&lt;br /&gt;
	-- of the type expectType. The default type for expectType is &#039;string&#039;.&lt;br /&gt;
	-- If the table valArray is present, strings such as $1, $2 etc. in the&lt;br /&gt;
	-- message are substituted with values from the table keys [1], [2] etc.&lt;br /&gt;
	-- For example, if the message &amp;quot;foo-message&amp;quot; had the value &#039;Foo $2 bar $1.&#039;,&lt;br /&gt;
	-- message(&#039;foo-message&#039;, {&#039;baz&#039;, &#039;qux&#039;}) would return &amp;quot;Foo qux bar baz.&amp;quot;&lt;br /&gt;
	--]]&lt;br /&gt;
	local msg = cfg[cfgKey]&lt;br /&gt;
	expectType = expectType or &#039;string&#039;&lt;br /&gt;
	if type(msg) ~= expectType then&lt;br /&gt;
		error(&#039;message: type error in message cfg.&#039; .. cfgKey .. &#039; (&#039; .. expectType .. &#039; expected, got &#039; .. type(msg) .. &#039;)&#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if not valArray then&lt;br /&gt;
		return msg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getMessageVal(match)&lt;br /&gt;
		match = tonumber(match)&lt;br /&gt;
		return valArray[match] or error(&#039;message: no value found for key $&#039; .. match .. &#039; in message cfg.&#039; .. cfgKey, 4)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ugsub(msg, &#039;$([1-9][0-9]*)&#039;, getMessageVal)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.message = message&lt;br /&gt;
&lt;br /&gt;
local function makeWikilink(page, display)&lt;br /&gt;
	if display then&lt;br /&gt;
		return format(&#039;[[%s|%s]]&#039;, page, display)&lt;br /&gt;
	else&lt;br /&gt;
		return format(&#039;[[%s]]&#039;, page)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeWikilink = makeWikilink&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat, sort)&lt;br /&gt;
	local catns = mw.site.namespaces[14].name&lt;br /&gt;
	return makeWikilink(catns .. &#039;:&#039; .. cat, sort)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeCategoryLink = makeCategoryLink&lt;br /&gt;
&lt;br /&gt;
local function makeUrlLink(url, display)&lt;br /&gt;
	return format(&#039;[%s %s]&#039;, url, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeUrlLink = makeUrlLink&lt;br /&gt;
&lt;br /&gt;
local function makeToolbar(...)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local lim = select(&#039;#&#039;, ...)&lt;br /&gt;
	if lim &amp;lt; 1 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	for i = 1, lim do&lt;br /&gt;
		ret[#ret + 1] = select(i, ...)&lt;br /&gt;
	end&lt;br /&gt;
	-- &#039;documentation-toolbar&#039;&lt;br /&gt;
	return format(&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;(%s)&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		message(&#039;toolbar-class&#039;),&lt;br /&gt;
		table.concat(ret, &#039; &amp;amp;#124; &#039;)&lt;br /&gt;
	)&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
p.makeToolbar = makeToolbar&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Argument processing&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
				if type(value) == &#039;string&#039; then&lt;br /&gt;
					value = value:match(&#039;^%s*(.-)%s*$&#039;) -- Remove whitespace.&lt;br /&gt;
					if key == &#039;heading&#039; or value ~= &#039;&#039; then&lt;br /&gt;
						return value&lt;br /&gt;
					else&lt;br /&gt;
						return nil&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Entry points&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.nonexistent(frame)&lt;br /&gt;
	if mw.title.getCurrentTitle().subpageText == &#039;testcases&#039; then&lt;br /&gt;
		return frame:expandTemplate{title = &#039;module test cases notice&#039;}&lt;br /&gt;
	else&lt;br /&gt;
		return p.main(frame)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.main = makeInvokeFunc(&#039;_main&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- This function defines logic flow for the module.&lt;br /&gt;
	-- @args - table of arguments passed by the user&lt;br /&gt;
	--]]&lt;br /&gt;
	local env = p.getEnvironment(args)&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	root&lt;br /&gt;
		:wikitext(p._getModuleWikitext(args, env))&lt;br /&gt;
		:wikitext(p.protectionTemplate(env))&lt;br /&gt;
		:wikitext(p.sandboxNotice(args, env))&lt;br /&gt;
		:tag(&#039;div&#039;)&lt;br /&gt;
			-- &#039;documentation-container&#039;&lt;br /&gt;
			:addClass(message(&#039;container&#039;))&lt;br /&gt;
			:attr(&#039;role&#039;, &#039;complementary&#039;)&lt;br /&gt;
			:attr(&#039;aria-labelledby&#039;, args.heading ~= &#039;&#039; and &#039;documentation-heading&#039; or nil)&lt;br /&gt;
			:attr(&#039;aria-label&#039;, args.heading == &#039;&#039; and &#039;Documentation&#039; or nil)&lt;br /&gt;
			:newline()&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				-- &#039;documentation&#039;&lt;br /&gt;
				:addClass(message(&#039;main-div-classes&#039;))&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(p._startBox(args, env))&lt;br /&gt;
				:wikitext(p._content(args, env))&lt;br /&gt;
				:tag(&#039;div&#039;)&lt;br /&gt;
					-- &#039;documentation-clear&#039;&lt;br /&gt;
					:addClass(message(&#039;clear&#039;))&lt;br /&gt;
					:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
				:done()&lt;br /&gt;
			:wikitext(p._endBox(args, env))&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(p.addTrackingCategories(env))&lt;br /&gt;
	-- &#039;Module:Documentation/styles.css&#039;&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag (&lt;br /&gt;
		&#039;templatestyles&#039;, &#039;&#039;, {src=cfg[&#039;templatestyles&#039;]&lt;br /&gt;
	}) .. tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Environment settings&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.getEnvironment(args)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Returns a table with information about the environment, including title&lt;br /&gt;
	-- objects and other namespace- or path-related data.&lt;br /&gt;
	-- @args - table of arguments passed by the user&lt;br /&gt;
	--&lt;br /&gt;
	-- Title objects include:&lt;br /&gt;
	-- env.title - the page we are making documentation for (usually the current title)&lt;br /&gt;
	-- env.templateTitle - the template (or module, file, etc.)&lt;br /&gt;
	-- env.docTitle - the /doc subpage.&lt;br /&gt;
	-- env.sandboxTitle - the /sandbox subpage.&lt;br /&gt;
	-- env.testcasesTitle - the /testcases subpage.&lt;br /&gt;
	--&lt;br /&gt;
	-- Data includes:&lt;br /&gt;
	-- env.protectionLevels - the protection levels table of the title object.&lt;br /&gt;
	-- env.subjectSpace - the number of the title&#039;s subject namespace.&lt;br /&gt;
	-- env.docSpace - the number of the namespace the title puts its documentation in.&lt;br /&gt;
	-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.&lt;br /&gt;
	-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.&lt;br /&gt;
	-- &lt;br /&gt;
	-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value&lt;br /&gt;
	-- returned will be nil.&lt;br /&gt;
	--]]&lt;br /&gt;
	&lt;br /&gt;
	local env, envFuncs = {}, {}&lt;br /&gt;
&lt;br /&gt;
	-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value&lt;br /&gt;
	-- returned by that function is memoized in the env table so that we don&#039;t call any of the functions&lt;br /&gt;
	-- more than once. (Nils won&#039;t be memoized.)&lt;br /&gt;
	setmetatable(env, {&lt;br /&gt;
		__index = function (t, key)&lt;br /&gt;
			local envFunc = envFuncs[key]&lt;br /&gt;
			if envFunc then&lt;br /&gt;
				local success, val = pcall(envFunc)&lt;br /&gt;
				if success then&lt;br /&gt;
					env[key] = val -- Memoise the value.&lt;br /&gt;
					return val&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	})	&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.title()&lt;br /&gt;
		-- The title object for the current page, or a test page passed with args.page.&lt;br /&gt;
		local title&lt;br /&gt;
		local titleArg = args.page&lt;br /&gt;
		if titleArg then&lt;br /&gt;
			title = mw.title.new(titleArg)&lt;br /&gt;
		else&lt;br /&gt;
			title = mw.title.getCurrentTitle()&lt;br /&gt;
		end&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.templateTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- The template (or module, etc.) title object.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;sandbox-subpage&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
		-- &#039;testcases-subpage&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		local subjectSpace = env.subjectSpace&lt;br /&gt;
		local title = env.title&lt;br /&gt;
		local subpage = title.subpageText&lt;br /&gt;
		if subpage == message(&#039;sandbox-subpage&#039;) or subpage == message(&#039;testcases-subpage&#039;) or (subpage == message(&#039;doc-subpage&#039;) and mw.title.getCurrentTitle().namespace == env.docSpace) then&lt;br /&gt;
			return mw.title.makeTitle(subjectSpace, title.baseText)&lt;br /&gt;
		else&lt;br /&gt;
			return mw.title.makeTitle(subjectSpace, title.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.docTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object of the /doc subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;doc-subpage&#039; --&amp;gt; &#039;doc&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		local title = env.title&lt;br /&gt;
		local docname = args[1] -- User-specified doc page.&lt;br /&gt;
		local docpage&lt;br /&gt;
		if docname then&lt;br /&gt;
			docpage = docname&lt;br /&gt;
		else&lt;br /&gt;
			docpage = env.docpageBase .. &#039;/&#039; .. message(&#039;doc-subpage&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		return mw.title.new(docpage)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.sandboxTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object for the /sandbox subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;sandbox-subpage&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		return mw.title.new(env.docpageBase .. &#039;/&#039; .. message(&#039;sandbox-subpage&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.testcasesTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object for the /testcases subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;testcases-subpage&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		return mw.title.new(env.docpageBase .. &#039;/&#039; .. message(&#039;testcases-subpage&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.protectionLevels()&lt;br /&gt;
		-- The protection levels table of the title object.&lt;br /&gt;
		return env.title.protectionLevels&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.subjectSpace()&lt;br /&gt;
		-- The subject namespace number.&lt;br /&gt;
		return mw.site.namespaces[env.title.namespace].subject.id&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.docSpace()&lt;br /&gt;
		-- The documentation namespace number. For most namespaces this is the&lt;br /&gt;
		-- same as the subject namespace. However, pages in the Article, File,&lt;br /&gt;
		-- MediaWiki or Category namespaces must have their /doc, /sandbox and&lt;br /&gt;
		-- /testcases pages in talk space.&lt;br /&gt;
		local subjectSpace = env.subjectSpace&lt;br /&gt;
		if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then&lt;br /&gt;
			return subjectSpace + 1&lt;br /&gt;
		else&lt;br /&gt;
			return subjectSpace&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.docpageBase()&lt;br /&gt;
		-- The base page of the /doc, /sandbox, and /testcases subpages.&lt;br /&gt;
		-- For some namespaces this is the talk page, rather than the template page.&lt;br /&gt;
		local templateTitle = env.templateTitle&lt;br /&gt;
		local docSpace = env.docSpace&lt;br /&gt;
		local docSpaceText = mw.site.namespaces[docSpace].name&lt;br /&gt;
		-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.&lt;br /&gt;
		return docSpaceText .. &#039;:&#039; .. templateTitle.text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.compareUrl()&lt;br /&gt;
		-- Diff link between the sandbox and the main template using [[Special:ComparePages]].&lt;br /&gt;
		local templateTitle = env.templateTitle&lt;br /&gt;
		local sandboxTitle = env.sandboxTitle&lt;br /&gt;
		if templateTitle.exists and sandboxTitle.exists then&lt;br /&gt;
			local compareUrl = mw.uri.canonicalUrl(&lt;br /&gt;
				&#039;Special:ComparePages&#039;,&lt;br /&gt;
				{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}&lt;br /&gt;
			)&lt;br /&gt;
			return tostring(compareUrl)&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end		&lt;br /&gt;
&lt;br /&gt;
	return env&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Auxiliary templates&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.getModuleWikitext = makeInvokeFunc(&#039;_getModuleWikitext&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._getModuleWikitext(args, env)&lt;br /&gt;
	local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
	if currentTitle.contentModel ~= &#039;Scribunto&#039; then return end&lt;br /&gt;
	pcall(require, currentTitle.prefixedText) -- if it fails, we don&#039;t care&lt;br /&gt;
	local moduleWikitext =  package.loaded[&amp;quot;Module:Module wikitext&amp;quot;]&lt;br /&gt;
	if moduleWikitext then&lt;br /&gt;
		return moduleWikitext.main()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sandboxNotice(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Generates a sandbox notice for display above sandbox pages.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;sandbox-notice-image&#039; --&amp;gt; &#039;[[File:Sandbox.svg|50px|alt=|link=]]&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-blurb&#039; --&amp;gt; &#039;This is the $1 for $2.&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-diff-blurb&#039; --&amp;gt; &#039;This is the $1 for $2 ($3).&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-pagetype-template&#039; --&amp;gt; &#039;[[Wikipedia:Template test cases|template sandbox]] page&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-pagetype-module&#039; --&amp;gt; &#039;[[Wikipedia:Template test cases|module sandbox]] page&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-pagetype-other&#039; --&amp;gt; &#039;sandbox page&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-compare-link-display&#039; --&amp;gt; &#039;diff&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-testcases-blurb&#039; --&amp;gt; &#039;See also the companion subpage for $1.&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-testcases-link-display&#039; --&amp;gt; &#039;test cases&#039;&lt;br /&gt;
	-- &#039;sandbox-category&#039; --&amp;gt; &#039;Template sandboxes&#039;&lt;br /&gt;
	-- &#039;module-sandbox-category&#039; --&amp;gt; &#039;Module sandboxes&#039;&lt;br /&gt;
	-- &#039;other-sandbox-category&#039; --&amp;gt; &#039;Sandboxes outside of template or module namespace&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	local sandboxTitle = env.sandboxTitle&lt;br /&gt;
	local templateTitle = env.templateTitle&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	if not (subjectSpace and title and sandboxTitle and templateTitle&lt;br /&gt;
		and mw.title.equals(title, sandboxTitle)) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- Build the table of arguments to pass to {{ombox}}. We need just two fields, &amp;quot;image&amp;quot; and &amp;quot;text&amp;quot;.&lt;br /&gt;
	local omargs = {}&lt;br /&gt;
	omargs.image = message(&#039;sandbox-notice-image&#039;)&lt;br /&gt;
	-- Get the text. We start with the opening blurb, which is something like&lt;br /&gt;
	-- &amp;quot;This is the template sandbox for [[Template:Foo]] (diff).&amp;quot;&lt;br /&gt;
	local text = &#039;__EXPECTUNUSEDTEMPLATE__&#039;&lt;br /&gt;
	local pagetype, sandboxCat&lt;br /&gt;
	if subjectSpace == 10 then&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-template&#039;)&lt;br /&gt;
		sandboxCat = message(&#039;sandbox-category&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-module&#039;)&lt;br /&gt;
		sandboxCat = message(&#039;module-sandbox-category&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-other&#039;)&lt;br /&gt;
		sandboxCat = message(&#039;other-sandbox-category&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local templateLink = makeWikilink(templateTitle.prefixedText)&lt;br /&gt;
	local compareUrl = env.compareUrl&lt;br /&gt;
	if compareUrl then&lt;br /&gt;
		local compareDisplay = message(&#039;sandbox-notice-compare-link-display&#039;)&lt;br /&gt;
		local compareLink = makeUrlLink(compareUrl, compareDisplay)&lt;br /&gt;
		text = text .. message(&#039;sandbox-notice-diff-blurb&#039;, {pagetype, templateLink, compareLink})&lt;br /&gt;
	else&lt;br /&gt;
		text = text .. message(&#039;sandbox-notice-blurb&#039;, {pagetype, templateLink})&lt;br /&gt;
	end&lt;br /&gt;
	-- Get the test cases page blurb if the page exists. This is something like&lt;br /&gt;
	-- &amp;quot;See also the companion subpage for [[Template:Foo/testcases|test cases]].&amp;quot;&lt;br /&gt;
	local testcasesTitle = env.testcasesTitle&lt;br /&gt;
	if testcasesTitle and testcasesTitle.exists then&lt;br /&gt;
		if testcasesTitle.contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
			local testcasesLinkDisplay = message(&#039;sandbox-notice-testcases-link-display&#039;)&lt;br /&gt;
			local testcasesRunLinkDisplay = message(&#039;sandbox-notice-testcases-run-link-display&#039;)&lt;br /&gt;
			local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)&lt;br /&gt;
			local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)&lt;br /&gt;
			text = text .. &#039;&amp;lt;br /&amp;gt;&#039; .. message(&#039;sandbox-notice-testcases-run-blurb&#039;, {testcasesLink, testcasesRunLink})&lt;br /&gt;
		else&lt;br /&gt;
			local testcasesLinkDisplay = message(&#039;sandbox-notice-testcases-link-display&#039;)&lt;br /&gt;
			local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)&lt;br /&gt;
			text = text .. &#039;&amp;lt;br /&amp;gt;&#039; .. message(&#039;sandbox-notice-testcases-blurb&#039;, {testcasesLink})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Add the sandbox to the sandbox category.&lt;br /&gt;
	omargs.text = text .. makeCategoryLink(sandboxCat)&lt;br /&gt;
&lt;br /&gt;
	-- &#039;documentation-clear&#039;&lt;br /&gt;
	return &#039;&amp;lt;div class=&amp;quot;&#039; .. message(&#039;clear&#039;) .. &#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. require(&#039;Module:Message box&#039;).main(&#039;ombox&#039;, omargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.protectionTemplate(env)&lt;br /&gt;
	-- Generates the padlock icon in the top right.&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;protection-template&#039; --&amp;gt; &#039;pp-template&#039;&lt;br /&gt;
	-- &#039;protection-template-args&#039; --&amp;gt; {docusage = &#039;yes&#039;}&lt;br /&gt;
	local protectionLevels = env.protectionLevels&lt;br /&gt;
	if not protectionLevels then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local editProt = protectionLevels.edit and protectionLevels.edit[1]&lt;br /&gt;
	local moveProt = protectionLevels.move and protectionLevels.move[1]&lt;br /&gt;
	if editProt then&lt;br /&gt;
		-- The page is edit-protected.&lt;br /&gt;
		return require(&#039;Module:Protection banner&#039;)._main{&lt;br /&gt;
			message(&#039;protection-reason-edit&#039;), small = true&lt;br /&gt;
		}&lt;br /&gt;
	elseif moveProt and moveProt ~= &#039;autoconfirmed&#039; then&lt;br /&gt;
		-- The page is move-protected but not edit-protected. Exclude move&lt;br /&gt;
		-- protection with the level &amp;quot;autoconfirmed&amp;quot;, as this is equivalent to&lt;br /&gt;
		-- no move protection at all.&lt;br /&gt;
		return require(&#039;Module:Protection banner&#039;)._main{&lt;br /&gt;
			action = &#039;move&#039;, small = true&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Start box&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.startBox = makeInvokeFunc(&#039;_startBox&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._startBox(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- This function generates the start box.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make&lt;br /&gt;
	-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox&lt;br /&gt;
	-- which generate the box HTML.&lt;br /&gt;
	--]]&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local links&lt;br /&gt;
	local content = args.content&lt;br /&gt;
	if not content or args[1] then&lt;br /&gt;
		-- No need to include the links if the documentation is on the template page itself.&lt;br /&gt;
		local linksData = p.makeStartBoxLinksData(args, env)&lt;br /&gt;
		if linksData then&lt;br /&gt;
			links = p.renderStartBoxLinks(linksData)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Generate the start box html.&lt;br /&gt;
	local data = p.makeStartBoxData(args, env, links)&lt;br /&gt;
	if data then&lt;br /&gt;
		return p.renderStartBox(data)&lt;br /&gt;
	else&lt;br /&gt;
		-- User specified no heading.&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeStartBoxLinksData(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Does initial processing of data to make the [view] [edit] [history] [purge] links.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;view-link-display&#039; --&amp;gt; &#039;view&#039;&lt;br /&gt;
	-- &#039;edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;history-link-display&#039; --&amp;gt; &#039;history&#039;&lt;br /&gt;
	-- &#039;purge-link-display&#039; --&amp;gt; &#039;purge&#039;&lt;br /&gt;
	-- &#039;module-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-doc&#039;&lt;br /&gt;
	-- &#039;docpage-preload&#039; --&amp;gt; &#039;Template:Documentation/preload&#039;&lt;br /&gt;
	-- &#039;create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not title or not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if docTitle.isRedirect then &lt;br /&gt;
		docTitle = docTitle.redirectTarget&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create link if /doc doesn&#039;t exist.&lt;br /&gt;
	local preload = args.preload&lt;br /&gt;
	if not preload then&lt;br /&gt;
		if subjectSpace == 828 then -- Module namespace&lt;br /&gt;
			preload = message(&#039;module-preload&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			preload = message(&#039;docpage-preload&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return {&lt;br /&gt;
		title = title,&lt;br /&gt;
		docTitle = docTitle,&lt;br /&gt;
		-- View, display, edit, and purge links if /doc exists.&lt;br /&gt;
		viewLinkDisplay = message(&#039;view-link-display&#039;),&lt;br /&gt;
		editLinkDisplay = message(&#039;edit-link-display&#039;),&lt;br /&gt;
		historyLinkDisplay = message(&#039;history-link-display&#039;),&lt;br /&gt;
		purgeLinkDisplay = message(&#039;purge-link-display&#039;),&lt;br /&gt;
		preload = preload,&lt;br /&gt;
		createLinkDisplay = message(&#039;create-link-display&#039;)&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderStartBoxLinks(data)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.&lt;br /&gt;
	-- @data - a table of data generated by p.makeStartBoxLinksData&lt;br /&gt;
	--]]&lt;br /&gt;
	local docTitle = data.docTitle&lt;br /&gt;
	-- yes, we do intend to purge the template page on which the documentation appears&lt;br /&gt;
	local purgeLink = makeWikilink(&amp;quot;Special:Purge/&amp;quot; .. data.title.prefixedText, data.purgeLinkDisplay)&lt;br /&gt;
	&lt;br /&gt;
	if docTitle.exists then&lt;br /&gt;
		local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)&lt;br /&gt;
		local editLink = makeWikilink(&amp;quot;Special:EditPage/&amp;quot; .. docTitle.prefixedText, data.editLinkDisplay)&lt;br /&gt;
		local historyLink = makeWikilink(&amp;quot;Special:PageHistory/&amp;quot; .. docTitle.prefixedText, data.historyLinkDisplay)&lt;br /&gt;
		return &amp;quot;&amp;amp;#91;&amp;quot; .. viewLink .. &amp;quot;&amp;amp;#93; &amp;amp;#91;&amp;quot; .. editLink .. &amp;quot;&amp;amp;#93; &amp;amp;#91;&amp;quot; .. historyLink .. &amp;quot;&amp;amp;#93; &amp;amp;#91;&amp;quot; .. purgeLink .. &amp;quot;&amp;amp;#93;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local createLink = makeUrlLink(docTitle:canonicalUrl{action = &#039;edit&#039;, preload = data.preload}, data.createLinkDisplay)&lt;br /&gt;
		return  &amp;quot;&amp;amp;#91;&amp;quot; .. createLink .. &amp;quot;&amp;amp;#93; &amp;amp;#91;&amp;quot; .. purgeLink .. &amp;quot;&amp;amp;#93;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeStartBoxData(args, env, links)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- @links - a string containing the [view][edit][history][purge] links - could be nil if there&#039;s an error.&lt;br /&gt;
	--&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;documentation-icon-wikitext&#039; --&amp;gt; &#039;[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]&#039;&lt;br /&gt;
	-- &#039;template-namespace-heading&#039; --&amp;gt; &#039;Template documentation&#039;&lt;br /&gt;
	-- &#039;module-namespace-heading&#039; --&amp;gt; &#039;Module documentation&#039;&lt;br /&gt;
	-- &#039;file-namespace-heading&#039; --&amp;gt; &#039;Summary&#039;&lt;br /&gt;
	-- &#039;other-namespaces-heading&#039; --&amp;gt; &#039;Documentation&#039;&lt;br /&gt;
	-- &#039;testcases-create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	if not subjectSpace then&lt;br /&gt;
		-- Default to an &amp;quot;other namespaces&amp;quot; namespace, so that we get at least some output&lt;br /&gt;
		-- if an error occurs.&lt;br /&gt;
		subjectSpace = 2&lt;br /&gt;
	end&lt;br /&gt;
	local data = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Heading&lt;br /&gt;
	local heading = args.heading -- Blank values are not removed.&lt;br /&gt;
	if heading == &#039;&#039; then&lt;br /&gt;
		-- Don&#039;t display the start box if the heading arg is defined but blank.&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if heading then&lt;br /&gt;
		data.heading = heading&lt;br /&gt;
	elseif subjectSpace == 10 then -- Template namespace&lt;br /&gt;
		data.heading = message(&#039;documentation-icon-wikitext&#039;) .. &#039; &#039; .. message(&#039;template-namespace-heading&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then -- Module namespace&lt;br /&gt;
		data.heading = message(&#039;documentation-icon-wikitext&#039;) .. &#039; &#039; .. message(&#039;module-namespace-heading&#039;)&lt;br /&gt;
	elseif subjectSpace == 6 then -- File namespace&lt;br /&gt;
		data.heading = message(&#039;file-namespace-heading&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		data.heading = message(&#039;other-namespaces-heading&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Heading CSS&lt;br /&gt;
	local headingStyle = args[&#039;heading-style&#039;]&lt;br /&gt;
	if headingStyle then&lt;br /&gt;
		data.headingStyleText = headingStyle&lt;br /&gt;
	else&lt;br /&gt;
		-- &#039;documentation-heading&#039;&lt;br /&gt;
		data.headingClass = message(&#039;main-div-heading-class&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Data for the [view][edit][history][purge] or [create] links.&lt;br /&gt;
	if links then&lt;br /&gt;
		-- &#039;mw-editsection-like plainlinks&#039;&lt;br /&gt;
		data.linksClass = message(&#039;start-box-link-classes&#039;)&lt;br /&gt;
		data.links = links&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderStartBox(data)&lt;br /&gt;
	-- Renders the start box html.&lt;br /&gt;
	-- @data - a table of data generated by p.makeStartBoxData.&lt;br /&gt;
	local sbox = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	sbox&lt;br /&gt;
		-- &#039;documentation-startbox&#039;&lt;br /&gt;
		:addClass(message(&#039;start-box-class&#039;))&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag(&#039;span&#039;)&lt;br /&gt;
			:addClass(data.headingClass)&lt;br /&gt;
			:attr(&#039;id&#039;, &#039;documentation-heading&#039;)&lt;br /&gt;
			:cssText(data.headingStyleText)&lt;br /&gt;
			:wikitext(data.heading)&lt;br /&gt;
	local links = data.links&lt;br /&gt;
	if links then&lt;br /&gt;
		sbox:tag(&#039;span&#039;)&lt;br /&gt;
			:addClass(data.linksClass)&lt;br /&gt;
			:attr(&#039;id&#039;, data.linksId)&lt;br /&gt;
			:wikitext(links)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(sbox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Documentation content&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.content = makeInvokeFunc(&#039;_content&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._content(args, env)&lt;br /&gt;
	-- Displays the documentation contents&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	local content = args.content&lt;br /&gt;
	if not content and docTitle and docTitle.exists then&lt;br /&gt;
		content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}&lt;br /&gt;
	end&lt;br /&gt;
	-- The line breaks below are necessary so that &amp;quot;=== Headings ===&amp;quot; at the start and end&lt;br /&gt;
	-- of docs are interpreted correctly.&lt;br /&gt;
	return &#039;\n&#039; .. (content or &#039;&#039;) .. &#039;\n&#039; &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.contentTitle = makeInvokeFunc(&#039;_contentTitle&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._contentTitle(args, env)&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not args.content and docTitle and docTitle.exists then&lt;br /&gt;
		return docTitle.prefixedText&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- End box&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.endBox = makeInvokeFunc(&#039;_endBox&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._endBox(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- This function generates the end box (also known as the link box).&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	--]=]&lt;br /&gt;
	&lt;br /&gt;
	-- Get environment data.&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not subjectSpace or not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- Check whether we should output the end box at all. Add the end&lt;br /&gt;
	-- box by default if the documentation exists or if we are in the&lt;br /&gt;
	-- user, module or template namespaces.&lt;br /&gt;
	local linkBox = args[&#039;link box&#039;]&lt;br /&gt;
	if linkBox == &#039;off&#039;&lt;br /&gt;
		or not (&lt;br /&gt;
			docTitle.exists&lt;br /&gt;
			or subjectSpace == 2&lt;br /&gt;
			or subjectSpace == 828&lt;br /&gt;
			or subjectSpace == 10&lt;br /&gt;
		)&lt;br /&gt;
	then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assemble the link box.&lt;br /&gt;
	local text = &#039;&#039;&lt;br /&gt;
	if linkBox then&lt;br /&gt;
		text = text .. linkBox&lt;br /&gt;
	else&lt;br /&gt;
		text = text .. (p.makeDocPageBlurb(args, env) or &#039;&#039;) -- &amp;quot;This documentation is transcluded from [[Foo]].&amp;quot; &lt;br /&gt;
		if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then&lt;br /&gt;
			-- We are in the user, template or module namespaces.&lt;br /&gt;
			-- Add sandbox and testcases links.&lt;br /&gt;
			-- &amp;quot;Editors can experiment in this template&#039;s sandbox and testcases pages.&amp;quot;&lt;br /&gt;
			text = text .. (p.makeExperimentBlurb(args, env) or &#039;&#039;) .. &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
			if not args.content and not args[1] then&lt;br /&gt;
				-- &amp;quot;Please add categories to the /doc subpage.&amp;quot;&lt;br /&gt;
				-- Don&#039;t show this message with inline docs or with an explicitly specified doc page,&lt;br /&gt;
				-- as then it is unclear where to add the categories.&lt;br /&gt;
				text = text .. (p.makeCategoriesBlurb(args, env) or &#039;&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			text = text .. &#039; &#039; .. (p.makeSubpagesBlurb(args, env) or &#039;&#039;) --&amp;quot;Subpages of this template&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local box = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	-- &#039;documentation-metadata&#039;&lt;br /&gt;
	box:attr(&#039;role&#039;, &#039;note&#039;)&lt;br /&gt;
		:addClass(message(&#039;end-box-class&#039;))&lt;br /&gt;
		-- &#039;plainlinks&#039;&lt;br /&gt;
		:addClass(message(&#039;end-box-plainlinks&#039;))&lt;br /&gt;
		:wikitext(text)&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	return &#039;\n&#039; .. tostring(box)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeDocPageBlurb(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Makes the blurb &amp;quot;This documentation is transcluded from [[Template:Foo]] (edit, history)&amp;quot;.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;history-link-display&#039; --&amp;gt; &#039;history&#039;&lt;br /&gt;
	-- &#039;transcluded-from-blurb&#039; --&amp;gt; &lt;br /&gt;
	-- &#039;The above [[Wikipedia:Template documentation|documentation]] &lt;br /&gt;
	-- is [[Help:Transclusion|transcluded]] from $1.&#039;&lt;br /&gt;
	-- &#039;module-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-doc&#039;&lt;br /&gt;
	-- &#039;create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	-- &#039;create-module-doc-blurb&#039; --&amp;gt;&lt;br /&gt;
	-- &#039;You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if docTitle.exists then&lt;br /&gt;
		-- /doc exists; link to it.&lt;br /&gt;
		local docLink = makeWikilink(docTitle.prefixedText)&lt;br /&gt;
		local editDisplay = message(&#039;edit-link-display&#039;)&lt;br /&gt;
		local editLink = makeWikilink(&amp;quot;Special:EditPage/&amp;quot; .. docTitle.prefixedText, editDisplay)&lt;br /&gt;
		local historyDisplay = message(&#039;history-link-display&#039;)&lt;br /&gt;
		local historyLink = makeWikilink(&amp;quot;Special:PageHistory/&amp;quot; .. docTitle.prefixedText, historyDisplay)&lt;br /&gt;
		return message(&#039;transcluded-from-blurb&#039;, {docLink})&lt;br /&gt;
			.. &#039; &#039;&lt;br /&gt;
			.. makeToolbar(editLink, historyLink)&lt;br /&gt;
			.. &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
	elseif env.subjectSpace == 828 then&lt;br /&gt;
		-- /doc does not exist; ask to create it.&lt;br /&gt;
		local createUrl = docTitle:canonicalUrl{action = &#039;edit&#039;, preload = message(&#039;module-preload&#039;)}&lt;br /&gt;
		local createDisplay = message(&#039;create-link-display&#039;)&lt;br /&gt;
		local createLink = makeUrlLink(createUrl, createDisplay)&lt;br /&gt;
		return message(&#039;create-module-doc-blurb&#039;, {createLink})&lt;br /&gt;
			.. &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeExperimentBlurb(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Renders the text &amp;quot;Editors can experiment in this template&#039;s sandbox (edit | diff) and testcases (edit) pages.&amp;quot;&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;sandbox-link-display&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
	-- &#039;sandbox-edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;compare-link-display&#039; --&amp;gt; &#039;diff&#039;&lt;br /&gt;
	-- &#039;module-sandbox-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-sandbox&#039;&lt;br /&gt;
	-- &#039;template-sandbox-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-sandbox&#039;&lt;br /&gt;
	-- &#039;sandbox-create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	-- &#039;mirror-edit-summary&#039; --&amp;gt; &#039;Create sandbox version of $1&#039;&lt;br /&gt;
	-- &#039;mirror-link-display&#039; --&amp;gt; &#039;mirror&#039;&lt;br /&gt;
	-- &#039;mirror-link-preload&#039; --&amp;gt; &#039;Template:Documentation/mirror&#039;&lt;br /&gt;
	-- &#039;sandbox-link-display&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
	-- &#039;testcases-link-display&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
	-- &#039;testcases-edit-link-display&#039;--&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;template-sandbox-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-sandbox&#039;&lt;br /&gt;
	-- &#039;testcases-create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	-- &#039;testcases-link-display&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
	-- &#039;testcases-edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;module-testcases-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-testcases&#039;&lt;br /&gt;
	-- &#039;template-testcases-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-testcases&#039;&lt;br /&gt;
	-- &#039;experiment-blurb-module&#039; --&amp;gt; &#039;Editors can experiment in this module&#039;s $1 and $2 pages.&#039;&lt;br /&gt;
	-- &#039;experiment-blurb-template&#039; --&amp;gt; &#039;Editors can experiment in this template&#039;s $1 and $2 pages.&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local templateTitle = env.templateTitle&lt;br /&gt;
	local sandboxTitle = env.sandboxTitle&lt;br /&gt;
	local testcasesTitle = env.testcasesTitle&lt;br /&gt;
	local templatePage = templateTitle.prefixedText&lt;br /&gt;
	if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- Make links.&lt;br /&gt;
	local sandboxLinks, testcasesLinks&lt;br /&gt;
	if sandboxTitle.exists then&lt;br /&gt;
		local sandboxPage = sandboxTitle.prefixedText&lt;br /&gt;
		local sandboxDisplay = message(&#039;sandbox-link-display&#039;)&lt;br /&gt;
		local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)&lt;br /&gt;
		local sandboxEditDisplay = message(&#039;sandbox-edit-link-display&#039;)&lt;br /&gt;
		local sandboxEditLink = makeWikilink(&amp;quot;Special:EditPage/&amp;quot; .. sandboxPage, sandboxEditDisplay)&lt;br /&gt;
		local compareUrl = env.compareUrl&lt;br /&gt;
		local compareLink&lt;br /&gt;
		if compareUrl then&lt;br /&gt;
			local compareDisplay = message(&#039;compare-link-display&#039;)&lt;br /&gt;
			compareLink = makeUrlLink(compareUrl, compareDisplay)&lt;br /&gt;
		end&lt;br /&gt;
		sandboxLinks = sandboxLink .. &#039; &#039; .. makeToolbar(sandboxEditLink, compareLink)&lt;br /&gt;
	else&lt;br /&gt;
		local sandboxPreload&lt;br /&gt;
		if subjectSpace == 828 then&lt;br /&gt;
			sandboxPreload = message(&#039;module-sandbox-preload&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			sandboxPreload = message(&#039;template-sandbox-preload&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = &#039;edit&#039;, preload = sandboxPreload}&lt;br /&gt;
		local sandboxCreateDisplay = message(&#039;sandbox-create-link-display&#039;)&lt;br /&gt;
		local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)&lt;br /&gt;
		local mirrorSummary = message(&#039;mirror-edit-summary&#039;, {makeWikilink(templatePage)})&lt;br /&gt;
		local mirrorPreload = message(&#039;mirror-link-preload&#039;)&lt;br /&gt;
		local mirrorUrl = sandboxTitle:canonicalUrl{action = &#039;edit&#039;, preload = mirrorPreload, summary = mirrorSummary}&lt;br /&gt;
		if subjectSpace == 828 then&lt;br /&gt;
			mirrorUrl = sandboxTitle:canonicalUrl{action = &#039;edit&#039;, preload = templateTitle.prefixedText, summary = mirrorSummary}&lt;br /&gt;
		end&lt;br /&gt;
		local mirrorDisplay = message(&#039;mirror-link-display&#039;)&lt;br /&gt;
		local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)&lt;br /&gt;
		sandboxLinks = message(&#039;sandbox-link-display&#039;) .. &#039; &#039; .. makeToolbar(sandboxCreateLink, mirrorLink)&lt;br /&gt;
	end&lt;br /&gt;
	if testcasesTitle.exists then&lt;br /&gt;
		local testcasesPage = testcasesTitle.prefixedText&lt;br /&gt;
		local testcasesDisplay = message(&#039;testcases-link-display&#039;)&lt;br /&gt;
		local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)&lt;br /&gt;
		local testcasesEditUrl = testcasesTitle:canonicalUrl{action = &#039;edit&#039;}&lt;br /&gt;
		local testcasesEditDisplay = message(&#039;testcases-edit-link-display&#039;)&lt;br /&gt;
		local testcasesEditLink = makeWikilink(&amp;quot;Special:EditPage/&amp;quot; .. testcasesPage, testcasesEditDisplay)&lt;br /&gt;
		-- for Modules, add testcases run link if exists&lt;br /&gt;
		if testcasesTitle.contentModel == &amp;quot;Scribunto&amp;quot;  and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then&lt;br /&gt;
			local testcasesRunLinkDisplay = message(&#039;testcases-run-link-display&#039;)&lt;br /&gt;
			local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)&lt;br /&gt;
			testcasesLinks = testcasesLink .. &#039; &#039; .. makeToolbar(testcasesEditLink, testcasesRunLink)&lt;br /&gt;
		else&lt;br /&gt;
			testcasesLinks = testcasesLink .. &#039; &#039; .. makeToolbar(testcasesEditLink)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local testcasesPreload&lt;br /&gt;
		if subjectSpace == 828 then&lt;br /&gt;
			testcasesPreload = message(&#039;module-testcases-preload&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			testcasesPreload = message(&#039;template-testcases-preload&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = &#039;edit&#039;, preload = testcasesPreload}&lt;br /&gt;
		local testcasesCreateDisplay = message(&#039;testcases-create-link-display&#039;)&lt;br /&gt;
		local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)&lt;br /&gt;
		testcasesLinks = message(&#039;testcases-link-display&#039;) .. &#039; &#039; .. makeToolbar(testcasesCreateLink)&lt;br /&gt;
	end&lt;br /&gt;
	local messageName&lt;br /&gt;
	if subjectSpace == 828 then&lt;br /&gt;
		messageName = &#039;experiment-blurb-module&#039;&lt;br /&gt;
	else&lt;br /&gt;
		messageName = &#039;experiment-blurb-template&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return message(messageName, {sandboxLinks, testcasesLinks})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeCategoriesBlurb(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generates the text &amp;quot;Please add categories to the /doc subpage.&amp;quot;&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;doc-link-display&#039; --&amp;gt; &#039;/doc&#039;&lt;br /&gt;
	-- &#039;add-categories-blurb&#039; --&amp;gt; &#039;Please add categories to the $1 subpage.&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local docPathLink = makeWikilink(docTitle.prefixedText, message(&#039;doc-link-display&#039;))&lt;br /&gt;
	return message(&#039;add-categories-blurb&#039;, {docPathLink})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeSubpagesBlurb(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generates the &amp;quot;Subpages of this template&amp;quot; link.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;template-pagetype&#039; --&amp;gt; &#039;template&#039;&lt;br /&gt;
	-- &#039;module-pagetype&#039; --&amp;gt; &#039;module&#039;&lt;br /&gt;
	-- &#039;default-pagetype&#039; --&amp;gt; &#039;page&#039;&lt;br /&gt;
	-- &#039;subpages-link-display&#039; --&amp;gt; &#039;Subpages of this $1&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local templateTitle = env.templateTitle&lt;br /&gt;
	if not subjectSpace or not templateTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local pagetype&lt;br /&gt;
	if subjectSpace == 10 then&lt;br /&gt;
		pagetype = message(&#039;template-pagetype&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then&lt;br /&gt;
		pagetype = message(&#039;module-pagetype&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		pagetype = message(&#039;default-pagetype&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local subpagesLink = makeWikilink(&lt;br /&gt;
		&#039;Special:PrefixIndex/&#039; .. templateTitle.prefixedText .. &#039;/&#039;,&lt;br /&gt;
		message(&#039;subpages-link-display&#039;, {pagetype})&lt;br /&gt;
	)&lt;br /&gt;
	return message(&#039;subpages-blurb&#039;, {subpagesLink})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Tracking categories&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.addTrackingCategories(env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Check if {{documentation}} is transcluded on a /doc or /testcases page.&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;display-strange-usage-category&#039; --&amp;gt; true&lt;br /&gt;
	-- &#039;doc-subpage&#039; --&amp;gt; &#039;doc&#039;&lt;br /&gt;
	-- &#039;testcases-subpage&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
	-- &#039;strange-usage-category&#039; --&amp;gt; &#039;Wikipedia pages with strange ((documentation)) usage&#039;&lt;br /&gt;
	-- &lt;br /&gt;
	-- /testcases pages in the module namespace are not categorised, as they may have&lt;br /&gt;
	-- {{documentation}} transcluded automatically.&lt;br /&gt;
	--]]&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	if not title or not subjectSpace then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	if message(&#039;display-strange-usage-category&#039;, nil, &#039;boolean&#039;)&lt;br /&gt;
		and (&lt;br /&gt;
			subpage == message(&#039;doc-subpage&#039;)&lt;br /&gt;
			or subjectSpace ~= 828 and subpage == message(&#039;testcases-subpage&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	then&lt;br /&gt;
		return makeCategoryLink(message(&#039;strange-usage-category&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Color_contrast&amp;diff=1730</id>
		<title>Module:Color contrast</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Color_contrast&amp;diff=1730"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&lt;br /&gt;
-- This module implements&lt;br /&gt;
--  {{Color contrast ratio}}&lt;br /&gt;
--  {{Greater color contrast ratio}}&lt;br /&gt;
--  {{ColorToLum}}&lt;br /&gt;
--  {{RGBColorToLum}}&lt;br /&gt;
--&lt;br /&gt;
local p = {}&lt;br /&gt;
local HTMLcolor = mw.loadData( &#039;Module:Color contrast/colors&#039; )&lt;br /&gt;
&lt;br /&gt;
local function sRGB (v)&lt;br /&gt;
	if (v &amp;lt;= 0.03928) then&lt;br /&gt;
		v = v / 12.92&lt;br /&gt;
	else&lt;br /&gt;
		v = math.pow((v+0.055)/1.055, 2.4)&lt;br /&gt;
	end&lt;br /&gt;
	return v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function rgbdec2lum(R, G, B)&lt;br /&gt;
	if ( 0 &amp;lt;= R and R &amp;lt; 256 and 0 &amp;lt;= G and G &amp;lt; 256 and 0 &amp;lt;= B and B &amp;lt; 256 ) then&lt;br /&gt;
		return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hsl2lum(h, s, l)&lt;br /&gt;
	if ( 0 &amp;lt;= h and h &amp;lt; 360 and 0 &amp;lt;= s and s &amp;lt;= 1 and 0 &amp;lt;= l and l &amp;lt;= 1 ) then&lt;br /&gt;
		local c = (1 - math.abs(2*l - 1))*s&lt;br /&gt;
		local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )&lt;br /&gt;
		local m = l - c/2&lt;br /&gt;
&lt;br /&gt;
		local r, g, b = m, m, m&lt;br /&gt;
		if( 0 &amp;lt;= h and h &amp;lt; 60 ) then&lt;br /&gt;
			r = r + c&lt;br /&gt;
			g = g + x&lt;br /&gt;
		elseif( 60 &amp;lt;= h and h &amp;lt; 120 ) then&lt;br /&gt;
			r = r + x&lt;br /&gt;
			g = g + c&lt;br /&gt;
		elseif( 120 &amp;lt;= h and h &amp;lt; 180 ) then&lt;br /&gt;
			g = g + c&lt;br /&gt;
			b = b + x&lt;br /&gt;
		elseif( 180 &amp;lt;= h and h &amp;lt; 240 ) then&lt;br /&gt;
			g = g + x&lt;br /&gt;
			b = b + c&lt;br /&gt;
		elseif( 240 &amp;lt;= h and h &amp;lt; 300 ) then&lt;br /&gt;
			r = r + x&lt;br /&gt;
			b = b + c&lt;br /&gt;
		elseif( 300 &amp;lt;= h and h &amp;lt; 360 ) then&lt;br /&gt;
			r = r + c&lt;br /&gt;
			b = b + x&lt;br /&gt;
		end&lt;br /&gt;
		return rgbdec2lum(255*r, 255*g, 255*b)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function color2lum(c)&lt;br /&gt;
&lt;br /&gt;
	if (c == nil) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- html &#039;#&#039; entity&lt;br /&gt;
	c = c:gsub(&amp;quot;&amp;amp;#35;&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- whitespace&lt;br /&gt;
	c = c:match( &#039;^%s*(.-)[%s;]*$&#039; )&lt;br /&gt;
&lt;br /&gt;
	-- unstrip nowiki strip markers&lt;br /&gt;
	c = mw.text.unstripNoWiki(c)&lt;br /&gt;
&lt;br /&gt;
	-- lowercase&lt;br /&gt;
	c = c:lower()&lt;br /&gt;
&lt;br /&gt;
	-- first try to look it up&lt;br /&gt;
	local L = HTMLcolor[c]&lt;br /&gt;
	if (L ~= nil) then&lt;br /&gt;
		return L&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert from hsl&lt;br /&gt;
	if mw.ustring.match(c,&#039;^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$&#039;) then&lt;br /&gt;
		local h, s, l = mw.ustring.match(c,&#039;^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$&#039;)&lt;br /&gt;
		return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert from rgb&lt;br /&gt;
	if mw.ustring.match(c,&#039;^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$&#039;) then&lt;br /&gt;
		local R, G, B = mw.ustring.match(c,&#039;^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$&#039;)&lt;br /&gt;
		return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert from rgb percent&lt;br /&gt;
	if mw.ustring.match(c,&#039;^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$&#039;) then&lt;br /&gt;
		local R, G, B = mw.ustring.match(c,&#039;^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$&#039;)&lt;br /&gt;
		return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- remove leading # (if there is one) and whitespace&lt;br /&gt;
	c = mw.ustring.match(c, &#039;^[%s#]*([a-f0-9]*)[%s]*$&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- split into rgb&lt;br /&gt;
	local cs = mw.text.split(c or &#039;&#039;, &#039;&#039;)&lt;br /&gt;
	if( #cs == 6 ) then&lt;br /&gt;
		local R = 16*tonumber(&#039;0x&#039; .. cs[1]) + tonumber(&#039;0x&#039; .. cs[2])&lt;br /&gt;
		local G = 16*tonumber(&#039;0x&#039; .. cs[3]) + tonumber(&#039;0x&#039; .. cs[4])&lt;br /&gt;
		local B = 16*tonumber(&#039;0x&#039; .. cs[5]) + tonumber(&#039;0x&#039; .. cs[6])&lt;br /&gt;
&lt;br /&gt;
		return rgbdec2lum(R, G, B)&lt;br /&gt;
	elseif ( #cs == 3 ) then&lt;br /&gt;
		local R = 16*tonumber(&#039;0x&#039; .. cs[1]) + tonumber(&#039;0x&#039; .. cs[1])&lt;br /&gt;
		local G = 16*tonumber(&#039;0x&#039; .. cs[2]) + tonumber(&#039;0x&#039; .. cs[2])&lt;br /&gt;
		local B = 16*tonumber(&#039;0x&#039; .. cs[3]) + tonumber(&#039;0x&#039; .. cs[3])&lt;br /&gt;
&lt;br /&gt;
		return rgbdec2lum(R, G, B)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- failure, return blank&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This exports the function for use in other modules.&lt;br /&gt;
-- The colour is passed as a string.&lt;br /&gt;
function p._lum(color)&lt;br /&gt;
	return color2lum(color)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._greatercontrast(args)&lt;br /&gt;
	local bias = tonumber(args[&#039;bias&#039;] or &#039;0&#039;) or 0&lt;br /&gt;
	local css = (args[&#039;css&#039;] and args[&#039;css&#039;] ~= &#039;&#039;) and true or false&lt;br /&gt;
	local v1 = color2lum(args[1] or &#039;&#039;)&lt;br /&gt;
	local c2 = args[2] or &#039;white&#039;&lt;br /&gt;
	local v2 = color2lum(c2)&lt;br /&gt;
	local c3 = args[3] or &#039;black&#039;&lt;br /&gt;
	local v3 = color2lum(c3)&lt;br /&gt;
	local ratio1 = -1;&lt;br /&gt;
	local ratio2 = -1;&lt;br /&gt;
	if (type(v1) == &#039;number&#039; and type(v2) == &#039;number&#039;) then&lt;br /&gt;
		ratio1 = (v2 + 0.05)/(v1 + 0.05)&lt;br /&gt;
		ratio1 = (ratio1 &amp;lt; 1) and 1/ratio1 or ratio1&lt;br /&gt;
	end&lt;br /&gt;
	if (type(v1) == &#039;number&#039; and type(v3) == &#039;number&#039;) then&lt;br /&gt;
		ratio2 = (v3 + 0.05)/(v1 + 0.05)&lt;br /&gt;
		ratio2 = (ratio2 &amp;lt; 1) and 1/ratio2 or ratio2&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if css then&lt;br /&gt;
		local c1 = args[1] or &#039;&#039;&lt;br /&gt;
		if mw.ustring.match(c1, &#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&#039;) or&lt;br /&gt;
			mw.ustring.match(c1, &#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&#039;) then&lt;br /&gt;
				c1 = &#039;#&#039; .. c1&lt;br /&gt;
		end&lt;br /&gt;
		if mw.ustring.match(c2, &#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&#039;) or&lt;br /&gt;
			mw.ustring.match(c2, &#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&#039;) then&lt;br /&gt;
				c2 = &#039;#&#039; .. c2&lt;br /&gt;
		end&lt;br /&gt;
		if mw.ustring.match(v3, &#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&#039;) or&lt;br /&gt;
			mw.ustring.match(v3, &#039;^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$&#039;) then&lt;br /&gt;
				c3 = &#039;#&#039; .. c3&lt;br /&gt;
		end&lt;br /&gt;
		return &#039;background-color:&#039; .. c1 .. &#039;; color:&#039; .. ((ratio1 &amp;gt; 0) and (ratio2 &amp;gt; 0) and ((ratio1 + bias &amp;gt; ratio2) and c2 or c3) or &#039;&#039;) .. &#039;;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return (ratio1 &amp;gt; 0) and (ratio2 &amp;gt; 0) and ((ratio1 + bias &amp;gt; ratio2) and c2 or c3) or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._ratio(args)&lt;br /&gt;
	local v1 = color2lum(args[1])&lt;br /&gt;
	local v2 = color2lum(args[2])&lt;br /&gt;
	if (type(v1) == &#039;number&#039; and type(v2) == &#039;number&#039;) then&lt;br /&gt;
		-- v1 should be the brighter of the two.&lt;br /&gt;
		if v2 &amp;gt; v1 then&lt;br /&gt;
			v1, v2 = v2, v1&lt;br /&gt;
		end&lt;br /&gt;
		return (v1 + 0.05)/(v2 + 0.05)&lt;br /&gt;
	else&lt;br /&gt;
		return args[&#039;error&#039;] or &#039;?&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._styleratio(args)&lt;br /&gt;
	local style = (args[1] or &#039;&#039;):lower()&lt;br /&gt;
	local bg, fg = &#039;white&#039;, &#039;black&#039;&lt;br /&gt;
	local lum_bg, lum_fg = 1, 0&lt;br /&gt;
&lt;br /&gt;
	if args[2] then&lt;br /&gt;
		local lum = color2lum(args[2])&lt;br /&gt;
		if lum ~= &#039;&#039; then bg, lum_bg = args[2], lum end&lt;br /&gt;
	end&lt;br /&gt;
	if args[3] then&lt;br /&gt;
		local lum = color2lum(args[3])&lt;br /&gt;
		if lum ~= &#039;&#039; then fg, lum_fg = args[3], lum end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or &#039;&#039;, &#039;&amp;amp;#[Xx]23;&#039;, &#039;#&#039;), &#039;&amp;amp;#35;&#039;, &#039;#&#039;), &#039;;&#039;)&lt;br /&gt;
	for k = 1,#slist do&lt;br /&gt;
		local s = slist[k]&lt;br /&gt;
		local k,v = s:match( &#039;^[%s]*([^:]-):([^:]-)[%s;]*$&#039; )&lt;br /&gt;
		k = k or &#039;&#039;&lt;br /&gt;
		v = v or &#039;&#039;&lt;br /&gt;
		if (k:match(&#039;^[%s]*(background)[%s]*$&#039;) or k:match(&#039;^[%s]*(background%-color)[%s]*$&#039;)) then&lt;br /&gt;
			local lum = color2lum(v)&lt;br /&gt;
			if( lum ~= &#039;&#039; ) then bg, lum_bg = v, lum end&lt;br /&gt;
		elseif (k:match(&#039;^[%s]*(color)[%s]*$&#039;)) then&lt;br /&gt;
			local lum = color2lum(v)&lt;br /&gt;
			if( lum ~= &#039;&#039; ) then bg, lum_fg = v, lum end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if lum_bg &amp;gt; lum_fg then&lt;br /&gt;
		return (lum_bg + 0.05)/(lum_fg + 0.05)&lt;br /&gt;
	else&lt;br /&gt;
		return (lum_fg + 0.05)/(lum_bg + 0.05)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Use {{#invoke:Color contrast|somecolor}} directly or&lt;br /&gt;
{{#invoke:Color contrast}} from a wrapper template.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
	-- |1=	— required; A color to check.&lt;br /&gt;
--]]&lt;br /&gt;
function p.lum(frame)&lt;br /&gt;
	local color = frame.args[1] or frame:getParent().args[1]&lt;br /&gt;
	return p._lum(color)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ratio(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	return p._ratio(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.styleratio(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	return p._styleratio(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.greatercontrast(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	return p._greatercontrast(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Strong&amp;diff=1728</id>
		<title>Template:Strong</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Strong&amp;diff=1728"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong {{#if:{{{role|}}}|role=&amp;quot;{{{role}}}&amp;quot;}} {{#if:{{{class|}}}|class=&amp;quot;{{{class}}}&amp;quot;}} {{#if:{{{id|}}}|id=&amp;quot;{{{id}}}&amp;quot;}} {{#if:{{{style|}}}|style=&amp;quot;{{{style}}}&amp;quot;}} {{#if:{{{title|}}}|title=&amp;quot;{{{title}}}&amp;quot;}}&amp;gt;{{{1}}}&amp;lt;/strong&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add cats and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Protection_banner/config&amp;diff=1726</id>
		<title>Module:Protection banner/config</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Protection_banner/config&amp;diff=1726"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&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>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Protection_banner&amp;diff=1724</id>
		<title>Module:Protection banner</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Protection_banner&amp;diff=1724"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{pp-meta}} and its daughter templates such as&lt;br /&gt;
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.&lt;br /&gt;
&lt;br /&gt;
-- Initialise necessary modules.&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
local makeFileLink = require(&#039;Module:File link&#039;)._main&lt;br /&gt;
local effectiveProtectionLevel = require(&#039;Module:Effective protection level&#039;)._main&lt;br /&gt;
local effectiveProtectionExpiry = require(&#039;Module:Effective protection expiry&#039;)._main&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Lazily initialise modules and objects we don&#039;t always need.&lt;br /&gt;
local getArgs, makeMessageBox, lang&lt;br /&gt;
&lt;br /&gt;
-- Set constants.&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Protection banner/config&#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat, sort)&lt;br /&gt;
	if cat then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;[[%s:%s|%s]]&#039;,&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			cat,&lt;br /&gt;
			sort&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Validation function for the expiry and the protection date&lt;br /&gt;
local function validateDate(dateString, dateType)&lt;br /&gt;
	if not lang then&lt;br /&gt;
		lang = mw.language.getContentLanguage()&lt;br /&gt;
	end&lt;br /&gt;
	local success, result = pcall(lang.formatDate, lang, &#039;U&#039;, dateString)&lt;br /&gt;
	if success then&lt;br /&gt;
		result = tonumber(result)&lt;br /&gt;
		if result then&lt;br /&gt;
			return result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	error(string.format(&lt;br /&gt;
		&#039;invalid %s: %s&#039;,&lt;br /&gt;
		dateType,&lt;br /&gt;
		tostring(dateString)&lt;br /&gt;
	), 4)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeFullUrl(page, query, display)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[%s %s]&#039;,&lt;br /&gt;
		tostring(mw.uri.fullUrl(page, query)),&lt;br /&gt;
		display&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Given a directed graph formatted as node -&amp;gt; table of direct successors,&lt;br /&gt;
-- get a table of all nodes reachable from a given node (though always&lt;br /&gt;
-- including the given node).&lt;br /&gt;
local function getReachableNodes(graph, start)&lt;br /&gt;
	local toWalk, retval = {[start] = true}, {}&lt;br /&gt;
	while true do&lt;br /&gt;
		-- Can&#039;t use pairs() since we&#039;re adding and removing things as we&#039;re iterating&lt;br /&gt;
		local k = next(toWalk) -- This always gets the &amp;quot;first&amp;quot; key&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return retval&lt;br /&gt;
		end&lt;br /&gt;
		toWalk[k] = nil&lt;br /&gt;
		retval[k] = true&lt;br /&gt;
		for _,v in ipairs(graph[k]) do&lt;br /&gt;
			if not retval[v] then&lt;br /&gt;
				toWalk[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Protection = {}&lt;br /&gt;
Protection.__index = Protection&lt;br /&gt;
&lt;br /&gt;
Protection.supportedActions = {&lt;br /&gt;
	edit = true,&lt;br /&gt;
	move = true,&lt;br /&gt;
	autoreview = true,&lt;br /&gt;
	upload = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Protection.bannerConfigFields = {&lt;br /&gt;
	&#039;text&#039;,&lt;br /&gt;
	&#039;explanation&#039;,&lt;br /&gt;
	&#039;tooltip&#039;,&lt;br /&gt;
	&#039;alt&#039;,&lt;br /&gt;
	&#039;link&#039;,&lt;br /&gt;
	&#039;image&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Protection.new(args, cfg, title)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
	obj.title = title or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set action&lt;br /&gt;
	if not args.action then&lt;br /&gt;
		obj.action = &#039;edit&#039;&lt;br /&gt;
	elseif Protection.supportedActions[args.action] then&lt;br /&gt;
		obj.action = args.action&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;invalid action: %s&#039;,&lt;br /&gt;
			tostring(args.action)&lt;br /&gt;
		), 3)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set level&lt;br /&gt;
	obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)&lt;br /&gt;
	if not obj.level or (obj.action == &#039;move&#039; and obj.level == &#039;autoconfirmed&#039;) then&lt;br /&gt;
		-- Users need to be autoconfirmed to move pages anyway, so treat&lt;br /&gt;
		-- semi-move-protected pages as unprotected.&lt;br /&gt;
		obj.level = &#039;*&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set expiry&lt;br /&gt;
	local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)&lt;br /&gt;
	if effectiveExpiry == &#039;infinity&#039; then&lt;br /&gt;
		obj.expiry = &#039;indef&#039;&lt;br /&gt;
	elseif effectiveExpiry ~= &#039;unknown&#039; then&lt;br /&gt;
		obj.expiry = validateDate(effectiveExpiry, &#039;expiry date&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set reason&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		obj.reason = mw.ustring.lower(args[1])&lt;br /&gt;
		if obj.reason:find(&#039;|&#039;) then&lt;br /&gt;
			error(&#039;reasons cannot contain the pipe character (&amp;quot;|&amp;quot;)&#039;, 3)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set protection date&lt;br /&gt;
	if args.date then&lt;br /&gt;
		obj.protectionDate = validateDate(args.date, &#039;protection date&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Set banner config&lt;br /&gt;
	do&lt;br /&gt;
		obj.bannerConfig = {}&lt;br /&gt;
		local configTables = {}&lt;br /&gt;
		if cfg.banners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]&lt;br /&gt;
		end&lt;br /&gt;
		if cfg.defaultBanners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default&lt;br /&gt;
		end&lt;br /&gt;
		configTables[#configTables + 1] = cfg.masterBanner&lt;br /&gt;
		for i, field in ipairs(Protection.bannerConfigFields) do&lt;br /&gt;
			for j, t in ipairs(configTables) do&lt;br /&gt;
				if t[field] then&lt;br /&gt;
					obj.bannerConfig[field] = t[field]&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, Protection)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isUserScript()&lt;br /&gt;
	-- Whether the page is a user JavaScript or CSS page.&lt;br /&gt;
	local title = self.title&lt;br /&gt;
	return title.namespace == 2 and (&lt;br /&gt;
		title.contentModel == &#039;javascript&#039; or title.contentModel == &#039;css&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isProtected()&lt;br /&gt;
	return self.level ~= &#039;*&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:shouldShowLock()&lt;br /&gt;
	-- Whether we should output a banner/padlock&lt;br /&gt;
	return self:isProtected() and not self:isUserScript()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Whether this page needs a protection category.&lt;br /&gt;
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemporary()&lt;br /&gt;
	return type(self.expiry) == &#039;number&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeProtectionCategory()&lt;br /&gt;
	if not self:shouldHaveProtectionCategory() then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cfg = self._cfg&lt;br /&gt;
	local title = self.title&lt;br /&gt;
	&lt;br /&gt;
	-- Get the expiry key fragment.&lt;br /&gt;
	local expiryFragment&lt;br /&gt;
	if self.expiry == &#039;indef&#039; then&lt;br /&gt;
		expiryFragment = self.expiry&lt;br /&gt;
	elseif type(self.expiry) == &#039;number&#039; then&lt;br /&gt;
		expiryFragment = &#039;temp&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get the namespace key fragment.&lt;br /&gt;
	local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]&lt;br /&gt;
	if not namespaceFragment and title.namespace % 2 == 1 then&lt;br /&gt;
			namespaceFragment = &#039;talk&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define the order that key fragments are tested in. This is done with an&lt;br /&gt;
	-- array of tables containing the value to be tested, along with its&lt;br /&gt;
	-- position in the cfg.protectionCategories table.&lt;br /&gt;
	local order = {&lt;br /&gt;
		{val = expiryFragment,    keypos = 1},&lt;br /&gt;
		{val = namespaceFragment, keypos = 2},&lt;br /&gt;
		{val = self.reason,       keypos = 3},&lt;br /&gt;
		{val = self.level,        keypos = 4},&lt;br /&gt;
		{val = self.action,       keypos = 5}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- The old protection templates used an ad-hoc protection category system,&lt;br /&gt;
	-- with some templates prioritising namespaces in their categories, and&lt;br /&gt;
	-- others prioritising the protection reason. To emulate this in this module&lt;br /&gt;
	-- we use the config table cfg.reasonsWithNamespacePriority to set the&lt;br /&gt;
	-- reasons for which namespaces have priority over protection reason.&lt;br /&gt;
	-- If we are dealing with one of those reasons, move the namespace table to&lt;br /&gt;
	-- the end of the order table, i.e. give it highest priority. If not, the&lt;br /&gt;
	-- reason should have highest priority, so move that to the end of the table&lt;br /&gt;
	-- instead.&lt;br /&gt;
	--]]&lt;br /&gt;
	table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define the attempt order. Inactive subtables (subtables with nil &amp;quot;value&amp;quot;&lt;br /&gt;
	-- fields) are moved to the end, where they will later be given the key&lt;br /&gt;
	-- &amp;quot;all&amp;quot;. This is to cut down on the number of table lookups in&lt;br /&gt;
	-- cfg.protectionCategories, which grows exponentially with the number of&lt;br /&gt;
	-- non-nil keys. We keep track of the number of active subtables with the&lt;br /&gt;
	-- noActive parameter.&lt;br /&gt;
	--]]&lt;br /&gt;
	local noActive, attemptOrder&lt;br /&gt;
	do&lt;br /&gt;
		local active, inactive = {}, {}&lt;br /&gt;
		for i, t in ipairs(order) do&lt;br /&gt;
			if t.val then&lt;br /&gt;
				active[#active + 1] = t&lt;br /&gt;
			else&lt;br /&gt;
				inactive[#inactive + 1] = t&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		noActive = #active&lt;br /&gt;
		attemptOrder = active&lt;br /&gt;
		for i, t in ipairs(inactive) do&lt;br /&gt;
			attemptOrder[#attemptOrder + 1] = t&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Check increasingly generic key combinations until we find a match. If a&lt;br /&gt;
	-- specific category exists for the combination of key fragments we are&lt;br /&gt;
	-- given, that match will be found first. If not, we keep trying different&lt;br /&gt;
	-- key fragment combinations until we match using the key&lt;br /&gt;
	-- &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- To generate the keys, we index the key subtables using a binary matrix&lt;br /&gt;
	-- with indexes i and j. j is only calculated up to the number of active&lt;br /&gt;
	-- subtables. For example, if there were three active subtables, the matrix&lt;br /&gt;
	-- would look like this, with 0 corresponding to the key fragment &amp;quot;all&amp;quot;, and&lt;br /&gt;
	-- 1 corresponding to other key fragments.&lt;br /&gt;
	-- &lt;br /&gt;
	--   j 1  2  3&lt;br /&gt;
	-- i  &lt;br /&gt;
	-- 1   1  1  1&lt;br /&gt;
	-- 2   0  1  1&lt;br /&gt;
	-- 3   1  0  1&lt;br /&gt;
	-- 4   0  0  1&lt;br /&gt;
	-- 5   1  1  0&lt;br /&gt;
	-- 6   0  1  0&lt;br /&gt;
	-- 7   1  0  0&lt;br /&gt;
	-- 8   0  0  0&lt;br /&gt;
	-- &lt;br /&gt;
	-- Values of j higher than the number of active subtables are set&lt;br /&gt;
	-- to the string &amp;quot;all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- A key for cfg.protectionCategories is constructed for each value of i.&lt;br /&gt;
	-- The position of the value in the key is determined by the keypos field in&lt;br /&gt;
	-- each subtable.&lt;br /&gt;
	--]]&lt;br /&gt;
	local cats = cfg.protectionCategories&lt;br /&gt;
	for i = 1, 2^noActive do&lt;br /&gt;
		local key = {}&lt;br /&gt;
		for j, t in ipairs(attemptOrder) do&lt;br /&gt;
			if j &amp;gt; noActive then&lt;br /&gt;
				key[t.keypos] = &#039;all&#039;&lt;br /&gt;
			else&lt;br /&gt;
				local quotient = i / 2 ^ (j - 1)&lt;br /&gt;
				quotient = math.ceil(quotient)&lt;br /&gt;
				if quotient % 2 == 1 then&lt;br /&gt;
					key[t.keypos] = t.val&lt;br /&gt;
				else&lt;br /&gt;
					key[t.keypos] = &#039;all&#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		key = table.concat(key, &#039;|&#039;)&lt;br /&gt;
		local attempt = cats[key]&lt;br /&gt;
		if attempt then&lt;br /&gt;
			return makeCategoryLink(attempt, title.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isIncorrect()&lt;br /&gt;
	local expiry = self.expiry&lt;br /&gt;
	return not self:shouldHaveProtectionCategory()&lt;br /&gt;
		or type(expiry) == &#039;number&#039; and expiry &amp;lt; os.time()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemplateProtectedNonTemplate()&lt;br /&gt;
	local action, namespace = self.action, self.title.namespace&lt;br /&gt;
	return self.level == &#039;templateeditor&#039;&lt;br /&gt;
		and (&lt;br /&gt;
			(action ~= &#039;edit&#039; and action ~= &#039;move&#039;)&lt;br /&gt;
			or (namespace ~= 10 and namespace ~= 828)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeCategoryLinks()&lt;br /&gt;
	local msg = self._cfg.msg&lt;br /&gt;
	local ret = {self:makeProtectionCategory()}&lt;br /&gt;
	if self:isIncorrect() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&#039;tracking-category-incorrect&#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	if self:isTemplateProtectedNonTemplate() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&#039;tracking-category-template&#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Blurb class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Blurb = {}&lt;br /&gt;
Blurb.__index = Blurb&lt;br /&gt;
&lt;br /&gt;
Blurb.bannerTextFields = {&lt;br /&gt;
	text = true,&lt;br /&gt;
	explanation = true,&lt;br /&gt;
	tooltip = true,&lt;br /&gt;
	alt = true,&lt;br /&gt;
	link = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	return setmetatable({&lt;br /&gt;
		_cfg = cfg,&lt;br /&gt;
		_protectionObj = protectionObj,&lt;br /&gt;
		_args = args&lt;br /&gt;
	}, Blurb)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Private methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:_formatDate(num)&lt;br /&gt;
	-- Formats a Unix timestamp into dd Month, YYYY format.&lt;br /&gt;
	lang = lang or mw.language.getContentLanguage()&lt;br /&gt;
	local success, date = pcall(&lt;br /&gt;
		lang.formatDate,&lt;br /&gt;
		lang,&lt;br /&gt;
		self._cfg.msg[&#039;expiry-date-format&#039;] or &#039;j F Y&#039;,&lt;br /&gt;
		&#039;@&#039; .. tostring(num)&lt;br /&gt;
	)&lt;br /&gt;
	if success then&lt;br /&gt;
		return date&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_getExpandedMessage(msgKey)&lt;br /&gt;
	return self:_substituteParameters(self._cfg.msg[msgKey])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_substituteParameters(msg)&lt;br /&gt;
	if not self._params then&lt;br /&gt;
		local parameterFuncs = {}&lt;br /&gt;
&lt;br /&gt;
		parameterFuncs.CURRENTVERSION     = self._makeCurrentVersionParameter&lt;br /&gt;
		parameterFuncs.EDITREQUEST        = self._makeEditRequestParameter&lt;br /&gt;
		parameterFuncs.EXPIRY             = self._makeExpiryParameter&lt;br /&gt;
		parameterFuncs.EXPLANATIONBLURB   = self._makeExplanationBlurbParameter&lt;br /&gt;
		parameterFuncs.IMAGELINK          = self._makeImageLinkParameter&lt;br /&gt;
		parameterFuncs.INTROBLURB         = self._makeIntroBlurbParameter&lt;br /&gt;
		parameterFuncs.INTROFRAGMENT      = self._makeIntroFragmentParameter&lt;br /&gt;
		parameterFuncs.PAGETYPE           = self._makePagetypeParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONBLURB    = self._makeProtectionBlurbParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONDATE     = self._makeProtectionDateParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLEVEL    = self._makeProtectionLevelParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLOG      = self._makeProtectionLogParameter&lt;br /&gt;
		parameterFuncs.TALKPAGE           = self._makeTalkPageParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPBLURB       = self._makeTooltipBlurbParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPFRAGMENT    = self._makeTooltipFragmentParameter&lt;br /&gt;
		parameterFuncs.VANDAL             = self._makeVandalTemplateParameter&lt;br /&gt;
		&lt;br /&gt;
		self._params = setmetatable({}, {&lt;br /&gt;
			__index = function (t, k)&lt;br /&gt;
				local param&lt;br /&gt;
				if parameterFuncs[k] then&lt;br /&gt;
					param = parameterFuncs[k](self)&lt;br /&gt;
				end&lt;br /&gt;
				param = param or &#039;&#039;&lt;br /&gt;
				t[k] = param&lt;br /&gt;
				return param&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	msg = msg:gsub(&#039;${(%u+)}&#039;, self._params)&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeCurrentVersionParameter()&lt;br /&gt;
	-- A link to the page history or the move log, depending on the kind of&lt;br /&gt;
	-- protection.&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == &#039;move&#039; then&lt;br /&gt;
		-- We need the move log link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&#039;Special:Log&#039;,&lt;br /&gt;
			{type = &#039;move&#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&#039;current-version-move-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the history link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			pagename,&lt;br /&gt;
			{action = &#039;history&#039;},&lt;br /&gt;
			self:_getExpandedMessage(&#039;current-version-edit-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeEditRequestParameter()&lt;br /&gt;
	local mEditRequest = require(&#039;Module:Submit an edit request&#039;)&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	&lt;br /&gt;
	-- Get the edit request type.&lt;br /&gt;
	local requestType&lt;br /&gt;
	if action == &#039;edit&#039; then&lt;br /&gt;
		if level == &#039;autoconfirmed&#039; then&lt;br /&gt;
			requestType = &#039;semi&#039;&lt;br /&gt;
		elseif level == &#039;extendedconfirmed&#039; then&lt;br /&gt;
			requestType = &#039;extended&#039;&lt;br /&gt;
		elseif level == &#039;templateeditor&#039; then&lt;br /&gt;
			requestType = &#039;template&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	requestType = requestType or &#039;full&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Get the display value.&lt;br /&gt;
	local display = self:_getExpandedMessage(&#039;edit-request-display&#039;)&lt;br /&gt;
&lt;br /&gt;
	return mEditRequest._link{type = requestType, display = display}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExpiryParameter()&lt;br /&gt;
	local expiry = self._protectionObj.expiry&lt;br /&gt;
	if type(expiry) == &#039;number&#039; then&lt;br /&gt;
		return self:_formatDate(expiry)&lt;br /&gt;
	else&lt;br /&gt;
		return expiry&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExplanationBlurbParameter()&lt;br /&gt;
	-- Cover special cases first.&lt;br /&gt;
	if self._protectionObj.title.namespace == 8 then&lt;br /&gt;
		-- MediaWiki namespace&lt;br /&gt;
		return self:_getExpandedMessage(&#039;explanation-blurb-nounprotect&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get explanation blurb table keys&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local talkKey = self._protectionObj.title.isTalkPage and &#039;talk&#039; or &#039;subject&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find the message in the explanation blurb table and substitute any&lt;br /&gt;
	-- parameters.&lt;br /&gt;
	local explanations = self._cfg.explanationBlurbs&lt;br /&gt;
	local msg&lt;br /&gt;
	if explanations[action][level] and explanations[action][level][talkKey] then&lt;br /&gt;
		msg = explanations[action][level][talkKey]&lt;br /&gt;
	elseif explanations[action][level] and explanations[action][level].default then&lt;br /&gt;
		msg = explanations[action][level].default&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default[talkKey] then&lt;br /&gt;
		msg = explanations[action].default[talkKey]&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default.default then&lt;br /&gt;
		msg = explanations[action].default.default&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;could not find explanation blurb for action &amp;quot;%s&amp;quot;, level &amp;quot;%s&amp;quot; and talk key &amp;quot;%s&amp;quot;&#039;,&lt;br /&gt;
			action,&lt;br /&gt;
			level,&lt;br /&gt;
			talkKey&lt;br /&gt;
		), 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeImageLinkParameter()&lt;br /&gt;
	local imageLinks = self._cfg.imageLinks&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if imageLinks[action][level] then&lt;br /&gt;
		msg = imageLinks[action][level]&lt;br /&gt;
	elseif imageLinks[action].default then&lt;br /&gt;
		msg = imageLinks[action].default&lt;br /&gt;
	else&lt;br /&gt;
		msg = imageLinks.edit.default&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-blurb-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-blurb-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-fragment-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-fragment-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makePagetypeParameter()&lt;br /&gt;
	local pagetypes = self._cfg.pagetypes&lt;br /&gt;
	return pagetypes[self._protectionObj.title.namespace]&lt;br /&gt;
		or pagetypes.default&lt;br /&gt;
		or error(&#039;no default pagetype defined&#039;, 8)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionBlurbParameter()&lt;br /&gt;
	local protectionBlurbs = self._cfg.protectionBlurbs&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionBlurbs[action][level] then&lt;br /&gt;
		msg = protectionBlurbs[action][level]&lt;br /&gt;
	elseif protectionBlurbs[action].default then&lt;br /&gt;
		msg = protectionBlurbs[action].default&lt;br /&gt;
	elseif protectionBlurbs.edit.default then&lt;br /&gt;
		msg = protectionBlurbs.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error(&#039;no protection blurb defined for protectionBlurbs.edit.default&#039;, 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionDateParameter()&lt;br /&gt;
	local protectionDate = self._protectionObj.protectionDate&lt;br /&gt;
	if type(protectionDate) == &#039;number&#039; then&lt;br /&gt;
		return self:_formatDate(protectionDate)&lt;br /&gt;
	else&lt;br /&gt;
		return protectionDate&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLevelParameter()&lt;br /&gt;
	local protectionLevels = self._cfg.protectionLevels&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionLevels[action][level] then&lt;br /&gt;
		msg = protectionLevels[action][level]&lt;br /&gt;
	elseif protectionLevels[action].default then&lt;br /&gt;
		msg = protectionLevels[action].default&lt;br /&gt;
	elseif protectionLevels.edit.default then&lt;br /&gt;
		msg = protectionLevels.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error(&#039;no protection level defined for protectionLevels.edit.default&#039;, 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLogParameter()&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == &#039;autoreview&#039; then&lt;br /&gt;
		-- We need the pending changes log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&#039;Special:Log&#039;,&lt;br /&gt;
			{type = &#039;stable&#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&#039;pc-log-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the protection log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&#039;Special:Log&#039;,&lt;br /&gt;
			{type = &#039;protect&#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&#039;protection-log-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTalkPageParameter()&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[[%s:%s#%s|%s]]&#039;,&lt;br /&gt;
		mw.site.namespaces[self._protectionObj.title.namespace].talk.name,&lt;br /&gt;
		self._protectionObj.title.text,&lt;br /&gt;
		self._args.section or &#039;top&#039;,&lt;br /&gt;
		self:_getExpandedMessage(&#039;talk-page-link-display&#039;)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-blurb-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-blurb-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-fragment-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-fragment-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeVandalTemplateParameter()&lt;br /&gt;
	return mw.getCurrentFrame():expandTemplate{&lt;br /&gt;
		title=&amp;quot;vandal-m&amp;quot;,&lt;br /&gt;
		args={self._args.user or self._protectionObj.title.baseText}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Public methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:makeBannerText(key)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	if not key or not Blurb.bannerTextFields[key] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;&amp;quot;%s&amp;quot; is not a valid banner config field&#039;,&lt;br /&gt;
			tostring(key)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generate the text.&lt;br /&gt;
	local msg = self._protectionObj.bannerConfig[key]&lt;br /&gt;
	if type(msg) == &#039;string&#039; then&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	elseif type(msg) == &#039;function&#039; then&lt;br /&gt;
		msg = msg(self._protectionObj, self._args)&lt;br /&gt;
		if type(msg) ~= &#039;string&#039; then&lt;br /&gt;
			error(string.format(&lt;br /&gt;
				&#039;bad output from banner config function with key &amp;quot;%s&amp;quot;&#039;&lt;br /&gt;
					.. &#039; (expected string, got %s)&#039;,&lt;br /&gt;
				tostring(key),&lt;br /&gt;
				type(msg)&lt;br /&gt;
			), 4)&lt;br /&gt;
		end&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- BannerTemplate class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local BannerTemplate = {}&lt;br /&gt;
BannerTemplate.__index = BannerTemplate&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate.new(protectionObj, cfg)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
&lt;br /&gt;
	-- Set the image filename.&lt;br /&gt;
	local imageFilename = protectionObj.bannerConfig.image&lt;br /&gt;
	if imageFilename then&lt;br /&gt;
		obj._imageFilename = imageFilename&lt;br /&gt;
	else&lt;br /&gt;
		-- If an image filename isn&#039;t specified explicitly in the banner config,&lt;br /&gt;
		-- generate it from the protection status and the namespace.&lt;br /&gt;
		local action = protectionObj.action&lt;br /&gt;
		local level = protectionObj.level&lt;br /&gt;
		local namespace = protectionObj.title.namespace&lt;br /&gt;
		local reason = protectionObj.reason&lt;br /&gt;
		&lt;br /&gt;
		-- Deal with special cases first.&lt;br /&gt;
		if (&lt;br /&gt;
			namespace == 10&lt;br /&gt;
			or namespace == 828&lt;br /&gt;
			or reason and obj._cfg.indefImageReasons[reason]&lt;br /&gt;
			)&lt;br /&gt;
			and action == &#039;edit&#039;&lt;br /&gt;
			and level == &#039;sysop&#039;&lt;br /&gt;
			and not protectionObj:isTemporary()&lt;br /&gt;
		then&lt;br /&gt;
			-- Fully protected modules and templates get the special red &amp;quot;indef&amp;quot;&lt;br /&gt;
			-- padlock.&lt;br /&gt;
			obj._imageFilename = obj._cfg.msg[&#039;image-filename-indef&#039;]&lt;br /&gt;
		else&lt;br /&gt;
			-- Deal with regular protection types.&lt;br /&gt;
			local images = obj._cfg.images&lt;br /&gt;
			if images[action] then&lt;br /&gt;
				if images[action][level] then&lt;br /&gt;
					obj._imageFilename = images[action][level]&lt;br /&gt;
				elseif images[action].default then&lt;br /&gt;
					obj._imageFilename = images[action].default&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, BannerTemplate)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate:renderImage()&lt;br /&gt;
	local filename = self._imageFilename&lt;br /&gt;
		or self._cfg.msg[&#039;image-filename-default&#039;]&lt;br /&gt;
		or &#039;Transparent.gif&#039;&lt;br /&gt;
	return makeFileLink{&lt;br /&gt;
		file = filename,&lt;br /&gt;
		size = (self.imageWidth or 20) .. &#039;px&#039;,&lt;br /&gt;
		alt = self._imageAlt,&lt;br /&gt;
		link = self._imageLink,&lt;br /&gt;
		caption = self.imageCaption&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Banner class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Banner = setmetatable({}, BannerTemplate)&lt;br /&gt;
Banner.__index = Banner&lt;br /&gt;
&lt;br /&gt;
function Banner.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn&#039;t need the blurb.&lt;br /&gt;
	obj.imageWidth = 40&lt;br /&gt;
	obj.imageCaption = blurbObj:makeBannerText(&#039;alt&#039;) -- Large banners use the alt text for the tooltip.&lt;br /&gt;
	obj._reasonText = blurbObj:makeBannerText(&#039;text&#039;)&lt;br /&gt;
	obj._explanationText = blurbObj:makeBannerText(&#039;explanation&#039;)&lt;br /&gt;
	obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.&lt;br /&gt;
	return setmetatable(obj, Banner)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Banner:__tostring()&lt;br /&gt;
	-- Renders the banner.&lt;br /&gt;
	makeMessageBox = makeMessageBox or require(&#039;Module:Message box&#039;).main&lt;br /&gt;
	local reasonText = self._reasonText or error(&#039;no reason text set&#039;, 2)&lt;br /&gt;
	local explanationText = self._explanationText&lt;br /&gt;
	local mbargs = {&lt;br /&gt;
		page = self._page,&lt;br /&gt;
		type = &#039;protection&#039;,&lt;br /&gt;
		image = self:renderImage(),&lt;br /&gt;
		text = string.format(&lt;br /&gt;
			&amp;quot;&#039;&#039;&#039;%s&#039;&#039;&#039;%s&amp;quot;,&lt;br /&gt;
			reasonText,&lt;br /&gt;
			explanationText and &#039;&amp;lt;br /&amp;gt;&#039; .. explanationText or &#039;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	return makeMessageBox(&#039;mbox&#039;, mbargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Padlock = setmetatable({}, BannerTemplate)&lt;br /&gt;
Padlock.__index = Padlock&lt;br /&gt;
&lt;br /&gt;
function Padlock.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn&#039;t need the blurb.&lt;br /&gt;
	obj.imageWidth = 20&lt;br /&gt;
	obj.imageCaption = blurbObj:makeBannerText(&#039;tooltip&#039;)&lt;br /&gt;
	obj._imageAlt = blurbObj:makeBannerText(&#039;alt&#039;)&lt;br /&gt;
	obj._imageLink = blurbObj:makeBannerText(&#039;link&#039;)&lt;br /&gt;
	obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]&lt;br /&gt;
		or cfg.padlockIndicatorNames.default&lt;br /&gt;
		or &#039;pp-default&#039;&lt;br /&gt;
	return setmetatable(obj, Padlock)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Padlock:__tostring()&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- The nowiki tag helps prevent whitespace at the top of articles.&lt;br /&gt;
	return frame:extensionTag{name = &#039;nowiki&#039;} .. frame:extensionTag{&lt;br /&gt;
		name = &#039;indicator&#039;,&lt;br /&gt;
		args = {name = self._indicatorName},&lt;br /&gt;
		content = self:renderImage()&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- This is used for testing purposes.&lt;br /&gt;
	return {&lt;br /&gt;
		Protection = Protection,&lt;br /&gt;
		Blurb = Blurb,&lt;br /&gt;
		BannerTemplate = BannerTemplate,&lt;br /&gt;
		Banner = Banner,&lt;br /&gt;
		Padlock = Padlock,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, cfg, title)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	local protectionObj = Protection.new(args, cfg, title)&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
&lt;br /&gt;
	-- If a page&#039;s edit protection is equally or more restrictive than its&lt;br /&gt;
	-- protection from some other action, then don&#039;t bother displaying anything&lt;br /&gt;
	-- for the other action (except categories).&lt;br /&gt;
	if not yesno(args.catonly) and (protectionObj.action == &#039;edit&#039; or&lt;br /&gt;
		args.demolevel or&lt;br /&gt;
		not getReachableNodes(&lt;br /&gt;
			cfg.hierarchy,&lt;br /&gt;
			protectionObj.level&lt;br /&gt;
		)[effectiveProtectionLevel(&#039;edit&#039;, protectionObj.title)])&lt;br /&gt;
	then&lt;br /&gt;
		-- Initialise the blurb object&lt;br /&gt;
		local blurbObj = Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	&lt;br /&gt;
		-- Render the banner&lt;br /&gt;
		if protectionObj:shouldShowLock() then&lt;br /&gt;
			ret[#ret + 1] = tostring(&lt;br /&gt;
				(yesno(args.small) and Padlock or Banner)&lt;br /&gt;
				.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the categories&lt;br /&gt;
	if yesno(args.category) ~= false then&lt;br /&gt;
		ret[#ret + 1] = protectionObj:makeCategoryLinks()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- For arbitration enforcement, flagging [[WP:PIA]] pages to enable [[Special:AbuseFilter/1339]] to flag edits to them&lt;br /&gt;
	if protectionObj.level == &amp;quot;extendedconfirmed&amp;quot; then&lt;br /&gt;
		if require(&amp;quot;Module:TableTools&amp;quot;).inArray(protectionObj.title.talkPageTitle.categories, &amp;quot;Wikipedia pages subject to the extended confirmed restriction related to the Arab-Israeli conflict&amp;quot;) then&lt;br /&gt;
			ret[#ret + 1] = &amp;quot;&amp;lt;p class=&#039;PIA-flag&#039; style=&#039;display:none; visibility:hidden;&#039; title=&#039;This page is subject to the extended confirmed restriction related to the Arab-Israeli conflict.&#039;&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, cfg)&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	-- Find default args, if any.&lt;br /&gt;
	local parent = frame.getParent and frame:getParent()&lt;br /&gt;
	local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)]&lt;br /&gt;
&lt;br /&gt;
	-- Find user args, and use the parent frame if we are being called from a&lt;br /&gt;
	-- wrapper template.&lt;br /&gt;
	getArgs = getArgs or require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
	local userArgs = getArgs(frame, {&lt;br /&gt;
		parentOnly = defaultArgs,&lt;br /&gt;
		frameOnly = not defaultArgs&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	-- Build the args table. User-specified args overwrite default args.&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(defaultArgs or {}) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(userArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args, cfg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Navbox/configuration&amp;diff=1722</id>
		<title>Module:Navbox/configuration</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Navbox/configuration&amp;diff=1722"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	aria_label = &#039;Navbox&#039;,&lt;br /&gt;
	nowrap_item = &#039;%s&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
	templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = &#039;Module:Navbox/styles.css&#039; }&lt;br /&gt;
	},&lt;br /&gt;
	hlist_templatestyles = &#039;Hlist/styles.css&#039;,&lt;br /&gt;
	plainlist_templatestyles = &#039;Plainlist/styles.css&#039;,&lt;br /&gt;
	-- do not localize marker table&lt;br /&gt;
	marker = {&lt;br /&gt;
		oddeven = &#039;\127_ODDEVEN_\127&#039;,&lt;br /&gt;
		restart = &#039;\127_ODDEVEN0_\127&#039;,&lt;br /&gt;
		regex = &#039;\127_ODDEVEN(%d?)_\127&#039;&lt;br /&gt;
	},&lt;br /&gt;
	category = {&lt;br /&gt;
		orphan = &#039;[[Category:Navbox orphans]]&#039;,&lt;br /&gt;
		horizontal_lists = &#039;Navigational boxes without horizontal lists&#039;,&lt;br /&gt;
		background_colors = &#039;Navboxes using background colours&#039;,&lt;br /&gt;
		illegible = &#039;Potentially illegible navboxes&#039;,&lt;br /&gt;
		borders = &#039;Navboxes using borders&#039;,&lt;br /&gt;
		without_first_col = &#039;[[Category:Pages using navbox columns without the first column]]&#039;&lt;br /&gt;
	},&lt;br /&gt;
	keyword = {&lt;br /&gt;
		border_subgroup = &#039;subgroup&#039;,&lt;br /&gt;
		border_child = &#039;child&#039;,&lt;br /&gt;
		border_none = &#039;none&#039;,&lt;br /&gt;
		evenodd_swap = &#039;swap&#039;,&lt;br /&gt;
		navbar_off = &#039;off&#039;,&lt;br /&gt;
		navbar_plain = &#039;plain&#039;,&lt;br /&gt;
		nocat_false = &#039;false&#039;,&lt;br /&gt;
		nowrapitems_yes = &#039;yes&#039;,&lt;br /&gt;
		orphan_yes = &#039;yes&#039;,&lt;br /&gt;
		state_collapsed = &#039;collapsed&#039;,&lt;br /&gt;
		state_off = &#039;off&#039;,&lt;br /&gt;
		state_plain = &#039;plain&#039;,&lt;br /&gt;
		state_uncollapsed = &#039;uncollapsed&#039;,&lt;br /&gt;
		subgroups = {&#039;subgroup&#039;, &#039;child&#039;, &#039;&#039;},&lt;br /&gt;
		subpage_doc = &#039;doc&#039;,&lt;br /&gt;
		subpage_sandbox = &#039;sandbox&#039;,&lt;br /&gt;
		subpage_testcases = &#039;testcases&#039;,&lt;br /&gt;
		tracking_no = &#039;no&#039;,&lt;br /&gt;
		with_collapsible_groups = &#039;with collapsible groups&#039;,&lt;br /&gt;
		with_columns = &#039;with columns&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	class = {&lt;br /&gt;
		autocollapse = &#039;autocollapse&#039;,&lt;br /&gt;
		collapsible = &#039;mw-collapsible&#039;,&lt;br /&gt;
		collapsed = &#039;mw-collapsed&#039;,&lt;br /&gt;
		-- Warning&lt;br /&gt;
		navbox = &#039;navbox&#039;, -- WMF currently hides &#039;navbox&#039; from mobile,&lt;br /&gt;
		-- so you probably shouldn&#039;t change the navbox class.&lt;br /&gt;
		navbox_abovebelow = &#039;navbox-abovebelow&#039;,&lt;br /&gt;
		navbox_group = &#039;navbox-group&#039;,&lt;br /&gt;
		navbox_image = &#039;navbox-image&#039;,&lt;br /&gt;
		navbox_inner = &#039;navbox-inner&#039;,&lt;br /&gt;
		navbox_list = &#039;navbox-list&#039;,&lt;br /&gt;
		navbox_list_with_group = &#039;navbox-list-with-group&#039;,&lt;br /&gt;
		navbox_part = &#039;navbox-&#039;, -- do not l10n&lt;br /&gt;
		navbox_styles = &#039;navbox-styles&#039;,&lt;br /&gt;
		navbox_subgroup = &#039;navbox-subgroup&#039;,&lt;br /&gt;
		navbox_title = &#039;navbox-title&#039;, -- l10n only if you change pattern.navbox_title below&lt;br /&gt;
		navbox_odd_part = &#039;odd&#039;, -- do not l10n&lt;br /&gt;
		navbox_even_part = &#039;even&#039;, -- do not l10n&lt;br /&gt;
		nomobile = &#039;nomobile&#039;,&lt;br /&gt;
		nowraplinks = &#039;nowraplinks&#039;,&lt;br /&gt;
		noviewer = &#039;noviewer&#039;, -- used to remove images from MediaViewer&lt;br /&gt;
		notheme = &#039;notheme&#039;&lt;br /&gt;
	},&lt;br /&gt;
	pattern = {&lt;br /&gt;
		class = &#039;class&#039;,&lt;br /&gt;
		colnum = &#039;^col(%d+)$&#039;,&lt;br /&gt;
		colheadernum = &#039;^col(%d+)header$&#039;,&lt;br /&gt;
		colfooternum = &#039;^col(%d+)footer$&#039;,&lt;br /&gt;
		contentnum = &#039;^content(%d+)$&#039;,&lt;br /&gt;
		groupnum = &#039;^group(%d+)$&#039;,&lt;br /&gt;
		hlist = &#039;hlist&#039;,&lt;br /&gt;
		listnum = &#039;^list(%d+)$&#039;,&lt;br /&gt;
		navbox = &#039;Template:Navbox&#039;,&lt;br /&gt;
		navbox_title = &#039;&amp;lt;th[^&amp;gt;]*&amp;quot;navbox%-title&amp;quot;&#039;,&lt;br /&gt;
		nowrap = &#039;^&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
		num = &#039;^%a+(%d+)$&#039;,&lt;br /&gt;
		plainlist = &#039;plainlist&#039;,&lt;br /&gt;
		sandbox = &#039;/sandbox$&#039;,&lt;br /&gt;
		sectionnum = &#039;^section(%d+)$&#039;,&lt;br /&gt;
		sectnum = &#039;^sect(%d+)$&#039;,&lt;br /&gt;
		style = &#039;style$&#039;,&lt;br /&gt;
		with_collapsible_groups = &#039;Template:Navbox with collapsible groups&#039;,&lt;br /&gt;
		with_columns = &#039;Template:Navbox with columns&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	arg = {&lt;br /&gt;
		abbr_and_num = &#039;abbr%d&#039;,&lt;br /&gt;
		above = &#039;above&#039;,&lt;br /&gt;
		aboveclass = &#039;aboveclass&#039;,&lt;br /&gt;
		abovestyle = &#039;abovestyle&#039;,&lt;br /&gt;
		basestyle = &#039;basestyle&#039;,&lt;br /&gt;
		below = &#039;below&#039;,&lt;br /&gt;
		belowclass = &#039;belowclass&#039;,&lt;br /&gt;
		belowstyle = &#039;belowstyle&#039;,&lt;br /&gt;
		bodyclass = &#039;bodyclass&#039;,&lt;br /&gt;
		bodystyle = &#039;bodystyle&#039;,&lt;br /&gt;
		border = &#039;border&#039;,&lt;br /&gt;
		content_and_num = &#039;content%d&#039;,&lt;br /&gt;
		contentstyle = &#039;contentstyle&#039;,&lt;br /&gt;
		contentstyle_and_num = &#039;content%dstyle&#039;,&lt;br /&gt;
		colheaderstyle = &#039;colheaderstyle&#039;,&lt;br /&gt;
		colheader_and_num = &#039;col%dheader&#039;,&lt;br /&gt;
		colheaderstyle_and_num = &#039;col%dheaderstyle&#039;,&lt;br /&gt;
		colheadercolspan_and_num = &#039;col%dheadercolspan&#039;,&lt;br /&gt;
		colstyle = &#039;colstyle&#039;,&lt;br /&gt;
		col_and_num = &#039;col%d&#039;,&lt;br /&gt;
		colstyle_and_num = &#039;col%dstyle&#039;,&lt;br /&gt;
		colwidth = &#039;colwidth&#039;,&lt;br /&gt;
		colwidth_and_num = &#039;col%dwidth&#039;,&lt;br /&gt;
		colfooterstyle = &#039;colfooterstyle&#039;,&lt;br /&gt;
		colfooter_and_num = &#039;col%dfooter&#039;,&lt;br /&gt;
		colfooterstyle_and_num = &#039;col%dfooterstyle&#039;,&lt;br /&gt;
		colfootercolspan_and_num = &#039;col%dfootercolspan&#039;,&lt;br /&gt;
		coltablestyle = &#039;coltablestyle&#039;,&lt;br /&gt;
		evencolstyle = &#039;evencolstyle&#039;,&lt;br /&gt;
		evenodd = &#039;evenodd&#039;,&lt;br /&gt;
		evenstyle = &#039;evenstyle&#039;,&lt;br /&gt;
		fullwidth = &#039;fullwidth&#039;,&lt;br /&gt;
		group1 = &#039;group1&#039;,&lt;br /&gt;
		group2 = &#039;group2&#039;,&lt;br /&gt;
		group_and_num = &#039;group%d&#039;,&lt;br /&gt;
		groupclass = &#039;groupclass&#039;,&lt;br /&gt;
		groupstyle = &#039;groupstyle&#039;,&lt;br /&gt;
		groupstyle_and_num = &#039;group%dstyle&#039;,&lt;br /&gt;
		groupwidth = &#039;groupwidth&#039;,&lt;br /&gt;
		image = &#039;image&#039;,&lt;br /&gt;
		image_and_num = &#039;image%d&#039;,&lt;br /&gt;
		imageclass = &#039;imageclass&#039;,&lt;br /&gt;
		imageleft = &#039;imageleft&#039;,&lt;br /&gt;
		imageleft_and_num = &#039;imageleft%d&#039;,&lt;br /&gt;
		imageleftstyle = &#039;imageleftstyle&#039;,&lt;br /&gt;
		imagestyle = &#039;imagestyle&#039;,&lt;br /&gt;
		innerstyle = &#039;innerstyle&#039;,&lt;br /&gt;
		list1padding = &#039;list1padding&#039;,&lt;br /&gt;
		list_and_num = &#039;list%d&#039;,&lt;br /&gt;
		listclass = &#039;listclass&#039;,&lt;br /&gt;
		listclass_and_num = &#039;list%dclass&#039;,&lt;br /&gt;
		listpadding = &#039;listpadding&#039;,&lt;br /&gt;
		liststyle = &#039;liststyle&#039;,&lt;br /&gt;
		liststyle_and_num = &#039;list%dstyle&#039;,&lt;br /&gt;
		name = &#039;name&#039;,&lt;br /&gt;
		navbar = &#039;navbar&#039;,&lt;br /&gt;
		navboxclass = &#039;navboxclass&#039;,&lt;br /&gt;
		nocat = &#039;nocat&#039;,&lt;br /&gt;
		nowrapitems = &#039;nowrapitems&#039;,&lt;br /&gt;
		oddcolstyle = &#039;oddcolstyle&#039;,&lt;br /&gt;
		oddstyle = &#039;oddstyle&#039;,&lt;br /&gt;
		orphan = &#039;orphan&#039;,&lt;br /&gt;
		padding = &#039;padding&#039;,&lt;br /&gt;
		sect_and_num = &#039;sect%d&#039;,&lt;br /&gt;
		section_and_num = &#039;section%d&#039;,&lt;br /&gt;
		sectiontitlestyle_and_num = &#039;section%dtitlestyle&#039;,&lt;br /&gt;
		secttitlestyle = &#039;secttitlestyle&#039;,&lt;br /&gt;
		selected = &#039;selected&#039;,&lt;br /&gt;
		state = &#039;state&#039;,&lt;br /&gt;
		state_and_num = &#039;state%d&#039;,&lt;br /&gt;
		style = &#039;style&#039;,&lt;br /&gt;
		subgroups_and_num = {&#039;subgroup%d&#039;, &#039;child%d&#039;, &#039;%d&#039;},&lt;br /&gt;
		templatestyles = &#039;templatestyles&#039;,&lt;br /&gt;
		child_templatestyles = &#039;child templatestyles&#039;,&lt;br /&gt;
		title = &#039;title&#039;,&lt;br /&gt;
		titleclass = &#039;titleclass&#039;,&lt;br /&gt;
		titlestyle = &#039;titlestyle&#039;,&lt;br /&gt;
		tracking = &#039;tracking&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	-- names of navbar arguments&lt;br /&gt;
	navbar = {&lt;br /&gt;
		name = 1,&lt;br /&gt;
		fontstyle = &#039;fontstyle&#039;,&lt;br /&gt;
		mini = &#039;mini&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Navbox&amp;diff=1720</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Navbox&amp;diff=1720"/>
		<updated>2025-07-07T13:17:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Navbox/configuration&#039;)&lt;br /&gt;
local inArray = require(&amp;quot;Module:TableTools&amp;quot;).inArray&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
local hiding_templatestyles = {} &lt;br /&gt;
&lt;br /&gt;
-- global passthrough variables&lt;br /&gt;
local passthrough = {&lt;br /&gt;
	[cfg.arg.above]=true,[cfg.arg.aboveclass]=true,[cfg.arg.abovestyle]=true,&lt;br /&gt;
	[cfg.arg.basestyle]=true,&lt;br /&gt;
	[cfg.arg.below]=true,[cfg.arg.belowclass]=true,[cfg.arg.belowstyle]=true,&lt;br /&gt;
	[cfg.arg.bodyclass]=true,&lt;br /&gt;
	[cfg.arg.groupclass]=true,&lt;br /&gt;
	[cfg.arg.image]=true,[cfg.arg.imageclass]=true,[cfg.arg.imagestyle]=true,&lt;br /&gt;
	[cfg.arg.imageleft]=true,[cfg.arg.imageleftstyle]=true,&lt;br /&gt;
	[cfg.arg.listclass]=true,&lt;br /&gt;
	[cfg.arg.name]=true,&lt;br /&gt;
	[cfg.arg.navbar]=true,&lt;br /&gt;
	[cfg.arg.state]=true,&lt;br /&gt;
	[cfg.arg.title]=true,[cfg.arg.titleclass]=true,[cfg.arg.titlestyle]=true,&lt;br /&gt;
	argHash=true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- helper functions&lt;br /&gt;
local andnum = function(s, n) return string.format(cfg.arg[s .. &#039;_and_num&#039;], n) end&lt;br /&gt;
local isblank = function(v) return (v or &#039;&#039;) == &#039;&#039; end&lt;br /&gt;
&lt;br /&gt;
local function concatstrings(s)&lt;br /&gt;
	local r = table.concat(s, &#039;&#039;)&lt;br /&gt;
	if r:match(&#039;^%s*$&#039;) then return nil end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function concatstyles(s)&lt;br /&gt;
	local r = &#039;&#039;&lt;br /&gt;
	for _, v in ipairs(s) do&lt;br /&gt;
		v = mw.text.trim(v, &amp;quot;%s;&amp;quot;)&lt;br /&gt;
		if not isblank(v) then r = r .. v .. &#039;;&#039; end&lt;br /&gt;
	end&lt;br /&gt;
	if isblank(r) then return nil end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getSubgroup(args, listnum, listText, prefix)&lt;br /&gt;
	local subArgs = {&lt;br /&gt;
		[cfg.arg.border] = cfg.keyword.border_subgroup,&lt;br /&gt;
		[cfg.arg.navbar] = cfg.keyword.navbar_plain,&lt;br /&gt;
		argHash = 0&lt;br /&gt;
	}&lt;br /&gt;
	local hasSubArgs = false&lt;br /&gt;
	local subgroups_and_num = prefix and {prefix} or cfg.arg.subgroups_and_num&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		for _, w in ipairs(subgroups_and_num) do&lt;br /&gt;
			w = string.format(w, listnum) .. &amp;quot;_&amp;quot;&lt;br /&gt;
			if (#k &amp;gt; #w) and (k:sub(1, #w) == w) then&lt;br /&gt;
				subArgs[k:sub(#w + 1)] = v&lt;br /&gt;
				hasSubArgs = true&lt;br /&gt;
				subArgs.argHash = subArgs.argHash + (v and #v or 0)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return hasSubArgs and p._navbox(subArgs) or listText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main functions&lt;br /&gt;
function p._navbox(args)&lt;br /&gt;
	if args.type == cfg.keyword.with_collapsible_groups then&lt;br /&gt;
		return p._withCollapsibleGroups(args)&lt;br /&gt;
	elseif args.type == cfg.keyword.with_columns then&lt;br /&gt;
		return p._withColumns(args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function striped(wikitext, border)&lt;br /&gt;
		-- Return wikitext with markers replaced for odd/even striping.&lt;br /&gt;
		-- Child (subgroup) navboxes are flagged with a category that is removed&lt;br /&gt;
		-- by parent navboxes. The result is that the category shows all pages&lt;br /&gt;
		-- where a child navbox is not contained in a parent navbox.&lt;br /&gt;
		local orphanCat = cfg.category.orphan&lt;br /&gt;
		if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then&lt;br /&gt;
			-- No change; striping occurs in outermost navbox.&lt;br /&gt;
			return wikitext .. orphanCat&lt;br /&gt;
		end&lt;br /&gt;
		local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part&lt;br /&gt;
		if args[cfg.arg.evenodd] then&lt;br /&gt;
			if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then&lt;br /&gt;
				first, second = second, first&lt;br /&gt;
			else&lt;br /&gt;
				first = args[cfg.arg.evenodd]&lt;br /&gt;
				second = first&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local changer&lt;br /&gt;
		if first == second then&lt;br /&gt;
			changer = first&lt;br /&gt;
		else&lt;br /&gt;
			local index = 0&lt;br /&gt;
			changer = function (code)&lt;br /&gt;
				if code == &#039;0&#039; then&lt;br /&gt;
					-- Current occurrence is for a group before a nested table.&lt;br /&gt;
					-- Set it to first as a valid although pointless class.&lt;br /&gt;
					-- The next occurrence will be the first row after a title&lt;br /&gt;
					-- in a subgroup and will also be first.&lt;br /&gt;
					index = 0&lt;br /&gt;
					return first&lt;br /&gt;
				end&lt;br /&gt;
				index = index + 1&lt;br /&gt;
				return index % 2 == 1 and first or second&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local regex = orphanCat:gsub(&#039;([%[%]])&#039;, &#039;%%%1&#039;)&lt;br /&gt;
		return (wikitext:gsub(regex, &#039;&#039;):gsub(cfg.marker.regex, changer)) -- () omits gsub count&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function processItem(item, nowrapitems)&lt;br /&gt;
		if item:sub(1, 2) == &#039;{|&#039; then&lt;br /&gt;
			-- Applying nowrap to lines in a table does not make sense.&lt;br /&gt;
			-- Add newlines to compensate for trim of x in |parm=x in a template.&lt;br /&gt;
			return &#039;\n&#039; .. item .. &#039;\n&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if nowrapitems == cfg.keyword.nowrapitems_yes then&lt;br /&gt;
			local lines = {}&lt;br /&gt;
			for line in (item .. &#039;\n&#039;):gmatch(&#039;([^\n]*)\n&#039;) do&lt;br /&gt;
				local prefix, content = line:match(&#039;^([*:;#]+)%s*(.*)&#039;)&lt;br /&gt;
				if prefix and not content:match(cfg.pattern.nowrap) then&lt;br /&gt;
					line = string.format(cfg.nowrap_item, prefix, content)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(lines, line)&lt;br /&gt;
			end&lt;br /&gt;
			item = table.concat(lines, &#039;\n&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if item:match(&#039;^[*:;#]&#039;) then&lt;br /&gt;
			return &#039;\n&#039; .. item .. &#039;\n&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return item&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function has_navbar()&lt;br /&gt;
		return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off&lt;br /&gt;
			and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain&lt;br /&gt;
			and (&lt;br /&gt;
				args[cfg.arg.name]&lt;br /&gt;
				or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, &#039;&#039;)&lt;br /&gt;
					~= cfg.pattern.navbox&lt;br /&gt;
			)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- extract text color from css, which is the only permitted inline CSS for the navbar&lt;br /&gt;
	local function extract_color(css_str)&lt;br /&gt;
		-- return nil because navbar takes its argument into mw.html which handles&lt;br /&gt;
		-- nil gracefully, removing the associated style attribute&lt;br /&gt;
		return mw.ustring.match(&#039;;&#039; .. css_str .. &#039;;&#039;, &#039;.*;%s*([Cc][Oo][Ll][Oo][Rr]%s*:%s*.-)%s*;&#039;) or nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderNavBar(titleCell)&lt;br /&gt;
		if has_navbar() then&lt;br /&gt;
			local navbar = require(&#039;Module:Navbar&#039;)._navbar&lt;br /&gt;
			titleCell:wikitext(navbar{&lt;br /&gt;
				[cfg.navbar.name] = args[cfg.arg.name],&lt;br /&gt;
				[cfg.navbar.mini] = 1,&lt;br /&gt;
				[cfg.navbar.fontstyle] = extract_color(&lt;br /&gt;
					(args[cfg.arg.basestyle] or &#039;&#039;) .. &#039;;&#039; .. (args[cfg.arg.titlestyle] or &#039;&#039;)&lt;br /&gt;
				)&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderTitleRow(tbl)&lt;br /&gt;
		if not args[cfg.arg.title] then return end&lt;br /&gt;
&lt;br /&gt;
		local titleRow = tbl:tag(&#039;tr&#039;)&lt;br /&gt;
&lt;br /&gt;
		local titleCell = titleRow:tag(&#039;th&#039;):attr(&#039;scope&#039;, &#039;col&#039;)&lt;br /&gt;
&lt;br /&gt;
		local titleColspan = 2&lt;br /&gt;
		if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end&lt;br /&gt;
		if args[cfg.arg.image] then titleColspan = titleColspan + 1 end&lt;br /&gt;
&lt;br /&gt;
		titleCell&lt;br /&gt;
			:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
			:cssText(args[cfg.arg.titlestyle])&lt;br /&gt;
			:addClass(cfg.class.navbox_title)&lt;br /&gt;
			:attr(&#039;colspan&#039;, titleColspan)&lt;br /&gt;
&lt;br /&gt;
		renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
		titleCell&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				-- id for aria-labelledby attribute&lt;br /&gt;
				:attr(&#039;id&#039;, mw.uri.anchorEncode(args[cfg.arg.title]) .. args.argHash)&lt;br /&gt;
				:addClass(args[cfg.arg.titleclass])&lt;br /&gt;
				:css(&#039;font-size&#039;, &#039;114%&#039;)&lt;br /&gt;
				:css(&#039;margin&#039;, &#039;0 4em&#039;)&lt;br /&gt;
				:wikitext(processItem(args[cfg.arg.title]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getAboveBelowColspan()&lt;br /&gt;
		local ret = 2&lt;br /&gt;
		if args[cfg.arg.imageleft] then ret = ret + 1 end&lt;br /&gt;
		if args[cfg.arg.image] then ret = ret + 1 end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderAboveRow(tbl)&lt;br /&gt;
		if not args[cfg.arg.above] then return end&lt;br /&gt;
&lt;br /&gt;
		tbl:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:addClass(cfg.class.navbox_abovebelow)&lt;br /&gt;
				:addClass(args[cfg.arg.aboveclass])&lt;br /&gt;
				:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
				:cssText(args[cfg.arg.abovestyle])&lt;br /&gt;
				:attr(&#039;colspan&#039;, getAboveBelowColspan())&lt;br /&gt;
				:tag(&#039;div&#039;)&lt;br /&gt;
					-- id for aria-labelledby attribute, if no title&lt;br /&gt;
					:attr(&#039;id&#039;, (not args[cfg.arg.title]) and &lt;br /&gt;
						(mw.uri.anchorEncode(args[cfg.arg.above]) .. args.argHash)&lt;br /&gt;
						or nil)&lt;br /&gt;
					:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderBelowRow(tbl)&lt;br /&gt;
		if not args[cfg.arg.below] then return end&lt;br /&gt;
&lt;br /&gt;
		tbl:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:addClass(cfg.class.navbox_abovebelow)&lt;br /&gt;
				:addClass(args[cfg.arg.belowclass])&lt;br /&gt;
				:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
				:cssText(args[cfg.arg.belowstyle])&lt;br /&gt;
				:attr(&#039;colspan&#039;, getAboveBelowColspan())&lt;br /&gt;
				:tag(&#039;div&#039;)&lt;br /&gt;
					:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderListRow(tbl, index, listnum, listnums_size)&lt;br /&gt;
		local row = tbl:tag(&#039;tr&#039;)&lt;br /&gt;
&lt;br /&gt;
		if index == 1 and args[cfg.arg.imageleft] then&lt;br /&gt;
			row&lt;br /&gt;
				:tag(&#039;td&#039;)&lt;br /&gt;
					:addClass(cfg.class.noviewer)&lt;br /&gt;
					:addClass(cfg.class.navbox_image)&lt;br /&gt;
					:addClass(args[cfg.arg.imageclass])&lt;br /&gt;
					:css(&#039;width&#039;, &#039;1px&#039;)               -- Minimize width&lt;br /&gt;
					:css(&#039;padding&#039;, &#039;0 2px 0 0&#039;)&lt;br /&gt;
					:cssText(args[cfg.arg.imageleftstyle])&lt;br /&gt;
					:attr(&#039;rowspan&#039;, listnums_size)&lt;br /&gt;
					:tag(&#039;div&#039;)&lt;br /&gt;
						:wikitext(processItem(args[cfg.arg.imageleft]))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local group_and_num = andnum(&#039;group&#039;, listnum)&lt;br /&gt;
		local groupstyle_and_num = andnum(&#039;groupstyle&#039;, listnum)&lt;br /&gt;
		if args[group_and_num] then&lt;br /&gt;
			local groupCell = row:tag(&#039;th&#039;)&lt;br /&gt;
&lt;br /&gt;
			-- id for aria-labelledby attribute, if lone group with no title or above&lt;br /&gt;
			if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then&lt;br /&gt;
				groupCell&lt;br /&gt;
					:attr(&#039;id&#039;, mw.uri.anchorEncode(args[cfg.arg.group1]) .. args.argHash)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			groupCell&lt;br /&gt;
				:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
				:addClass(cfg.class.navbox_group)&lt;br /&gt;
				:addClass(args[cfg.arg.groupclass])&lt;br /&gt;
				:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
				-- If groupwidth not specified, minimize width&lt;br /&gt;
				:css(&#039;width&#039;, args[cfg.arg.groupwidth] or &#039;1%&#039;)&lt;br /&gt;
&lt;br /&gt;
			groupCell&lt;br /&gt;
				:cssText(args[cfg.arg.groupstyle])&lt;br /&gt;
				:cssText(args[groupstyle_and_num])&lt;br /&gt;
				:wikitext(args[group_and_num])&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local listCell = row:tag(&#039;td&#039;)&lt;br /&gt;
&lt;br /&gt;
		if args[group_and_num] then&lt;br /&gt;
			listCell&lt;br /&gt;
				:addClass(cfg.class.navbox_list_with_group)&lt;br /&gt;
		else&lt;br /&gt;
			listCell:attr(&#039;colspan&#039;, 2)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not args[cfg.arg.groupwidth] then&lt;br /&gt;
			listCell:css(&#039;width&#039;, &#039;100%&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local rowstyle  -- usually nil so cssText(rowstyle) usually adds nothing&lt;br /&gt;
		if index % 2 == 1 then&lt;br /&gt;
			rowstyle = args[cfg.arg.oddstyle]&lt;br /&gt;
		else&lt;br /&gt;
			rowstyle = args[cfg.arg.evenstyle]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local list_and_num = andnum(&#039;list&#039;, listnum)&lt;br /&gt;
		local listText = inArray(cfg.keyword.subgroups, args[list_and_num])&lt;br /&gt;
			and getSubgroup(args, listnum, args[list_and_num]) or args[list_and_num]&lt;br /&gt;
&lt;br /&gt;
		local oddEven = cfg.marker.oddeven&lt;br /&gt;
		if listText:sub(1, 12) == &#039;&amp;lt;/div&amp;gt;&amp;lt;table&#039; then&lt;br /&gt;
			-- Assume list text is for a subgroup navbox so no automatic striping for this row.&lt;br /&gt;
			oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local liststyle_and_num = andnum(&#039;liststyle&#039;, listnum)&lt;br /&gt;
		local listclass_and_num = andnum(&#039;listclass&#039;, listnum)&lt;br /&gt;
		listCell&lt;br /&gt;
			:css(&#039;padding&#039;, &#039;0&#039;)&lt;br /&gt;
			:cssText(args[cfg.arg.liststyle])&lt;br /&gt;
			:cssText(rowstyle)&lt;br /&gt;
			:cssText(args[liststyle_and_num])&lt;br /&gt;
			:addClass(cfg.class.navbox_list)&lt;br /&gt;
			:addClass(cfg.class.navbox_part .. oddEven)&lt;br /&gt;
			:addClass(args[cfg.arg.listclass])&lt;br /&gt;
			:addClass(args[listclass_and_num])&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				:css(&#039;padding&#039;,&lt;br /&gt;
					(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or &#039;0 0.25em&#039;&lt;br /&gt;
				)&lt;br /&gt;
				:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))&lt;br /&gt;
&lt;br /&gt;
		if index == 1 and args[cfg.arg.image] then&lt;br /&gt;
			row&lt;br /&gt;
				:tag(&#039;td&#039;)&lt;br /&gt;
					:addClass(cfg.class.noviewer)&lt;br /&gt;
					:addClass(cfg.class.navbox_image)&lt;br /&gt;
					:addClass(args[cfg.arg.imageclass])&lt;br /&gt;
					:css(&#039;width&#039;, &#039;1px&#039;)               -- Minimize width&lt;br /&gt;
					:css(&#039;padding&#039;, &#039;0 0 0 2px&#039;)&lt;br /&gt;
					:cssText(args[cfg.arg.imagestyle])&lt;br /&gt;
					:attr(&#039;rowspan&#039;, listnums_size)&lt;br /&gt;
					:tag(&#039;div&#039;)&lt;br /&gt;
						:wikitext(processItem(args[cfg.arg.image]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function has_list_class(htmlclass)&lt;br /&gt;
		local patterns = {&lt;br /&gt;
			&#039;^&#039; .. htmlclass .. &#039;$&#039;,&lt;br /&gt;
			&#039;%s&#039; .. htmlclass .. &#039;$&#039;,&lt;br /&gt;
			&#039;^&#039; .. htmlclass .. &#039;%s&#039;,&lt;br /&gt;
			&#039;%s&#039; .. htmlclass .. &#039;%s&#039;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		for arg, _ in pairs(args) do&lt;br /&gt;
			if type(arg) == &#039;string&#039; and mw.ustring.find(arg, cfg.pattern.class) then&lt;br /&gt;
				for _, pattern in ipairs(patterns) do&lt;br /&gt;
					if mw.ustring.find(args[arg] or &#039;&#039;, pattern) then&lt;br /&gt;
						return true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- there are a lot of list classes in the wild, so we add their TemplateStyles&lt;br /&gt;
	local function add_list_styles()&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local function add_list_templatestyles(htmlclass, templatestyles)&lt;br /&gt;
			if has_list_class(htmlclass) then&lt;br /&gt;
				return frame:extensionTag{&lt;br /&gt;
					name = &#039;templatestyles&#039;, args = { src = templatestyles }&lt;br /&gt;
				}&lt;br /&gt;
			else&lt;br /&gt;
				return &#039;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local hlist_styles = add_list_templatestyles(&#039;hlist&#039;, cfg.hlist_templatestyles)&lt;br /&gt;
		local plainlist_styles = add_list_templatestyles(&#039;plainlist&#039;, cfg.plainlist_templatestyles)&lt;br /&gt;
&lt;br /&gt;
		-- a second workaround for [[phab:T303378]]&lt;br /&gt;
		-- when that issue is fixed, we can actually use has_navbar not to emit the&lt;br /&gt;
		-- tag here if we want&lt;br /&gt;
		if has_navbar() and hlist_styles == &#039;&#039; then&lt;br /&gt;
			hlist_styles = frame:extensionTag{&lt;br /&gt;
				name = &#039;templatestyles&#039;, args = { src = cfg.hlist_templatestyles }&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- hlist -&amp;gt; plainlist is best-effort to preserve old Common.css ordering.&lt;br /&gt;
		-- this ordering is not a guarantee because most navboxes will emit only&lt;br /&gt;
		-- one of these classes [hlist_note]&lt;br /&gt;
		return hlist_styles .. plainlist_styles&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function needsHorizontalLists(border)&lt;br /&gt;
		if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
		return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function hasBackgroundColors()&lt;br /&gt;
		for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,&lt;br /&gt;
			cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do&lt;br /&gt;
			if tostring(args[key]):find(&#039;background&#039;, 1, true) 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 function hasBorders()&lt;br /&gt;
		for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,&lt;br /&gt;
			cfg.arg.abovestyle, cfg.arg.belowstyle}) do&lt;br /&gt;
			if tostring(args[key]):find(&#039;border&#039;, 1, true) 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 function isIllegible()&lt;br /&gt;
		local styleratio = require(&#039;Module:Color contrast&#039;)._styleratio&lt;br /&gt;
		for key, style in pairs(args) do&lt;br /&gt;
			if tostring(key):match(cfg.pattern.style) then&lt;br /&gt;
				if styleratio{mw.text.unstripNoWiki(style)} &amp;lt; 4.5 then&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getTrackingCategories(border)&lt;br /&gt;
		local cats = {}&lt;br /&gt;
		if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end&lt;br /&gt;
		if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end&lt;br /&gt;
		if isIllegible() then table.insert(cats, cfg.category.illegible) end&lt;br /&gt;
		if hasBorders() then table.insert(cats, cfg.category.borders) end&lt;br /&gt;
		return cats&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderTrackingCategories(builder, border)&lt;br /&gt;
		local title = mw.title.getCurrentTitle()&lt;br /&gt;
		if title.namespace ~= 10 then return end -- not in template space&lt;br /&gt;
		local subpage = title.subpageText&lt;br /&gt;
		if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox&lt;br /&gt;
			or subpage == cfg.keyword.subpage_testcases then return end&lt;br /&gt;
&lt;br /&gt;
		for _, cat in ipairs(getTrackingCategories(border)) do&lt;br /&gt;
			builder:wikitext(&#039;[[Category:&#039; .. cat .. &#039;]]&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function renderMainTable(border, listnums)&lt;br /&gt;
		local tbl = mw.html.create(&#039;table&#039;)&lt;br /&gt;
			:addClass(cfg.class.nowraplinks)&lt;br /&gt;
			:addClass(args[cfg.arg.bodyclass])&lt;br /&gt;
&lt;br /&gt;
		local state = args[cfg.arg.state]&lt;br /&gt;
		if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then&lt;br /&gt;
			if state == cfg.keyword.state_collapsed then&lt;br /&gt;
				state = cfg.class.collapsed&lt;br /&gt;
			end&lt;br /&gt;
			tbl&lt;br /&gt;
				:addClass(cfg.class.collapsible)&lt;br /&gt;
				:addClass(state or cfg.class.autocollapse)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		tbl:css(&#039;border-spacing&#039;, 0)&lt;br /&gt;
		if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then&lt;br /&gt;
			tbl&lt;br /&gt;
				:addClass(cfg.class.navbox_subgroup)&lt;br /&gt;
				:cssText(args[cfg.arg.bodystyle])&lt;br /&gt;
				:cssText(args[cfg.arg.style])&lt;br /&gt;
		else  -- regular navbox - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
			tbl&lt;br /&gt;
				:addClass(cfg.class.navbox_inner)&lt;br /&gt;
				:css(&#039;background&#039;, &#039;transparent&#039;)&lt;br /&gt;
				:css(&#039;color&#039;, &#039;inherit&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		tbl:cssText(args[cfg.arg.innerstyle])&lt;br /&gt;
&lt;br /&gt;
		renderTitleRow(tbl)&lt;br /&gt;
		renderAboveRow(tbl)&lt;br /&gt;
		local listnums_size = #listnums&lt;br /&gt;
		for i, listnum in ipairs(listnums) do&lt;br /&gt;
			renderListRow(tbl, i, listnum, listnums_size)&lt;br /&gt;
		end&lt;br /&gt;
		renderBelowRow(tbl)&lt;br /&gt;
&lt;br /&gt;
		return tbl&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function add_navbox_styles(hiding_templatestyles)&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		-- This is a lambda so that it doesn&#039;t need the frame as a parameter&lt;br /&gt;
		local function add_user_styles(templatestyles)&lt;br /&gt;
			if not isblank(templatestyles) then&lt;br /&gt;
				return frame:extensionTag{&lt;br /&gt;
					name = &#039;templatestyles&#039;, args = { src = templatestyles }&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- get templatestyles. load base from config so that Lua only needs to do&lt;br /&gt;
		-- the work once of parser tag expansion&lt;br /&gt;
		local base_templatestyles = cfg.templatestyles&lt;br /&gt;
		local templatestyles = add_user_styles(args[cfg.arg.templatestyles])&lt;br /&gt;
		local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])&lt;br /&gt;
&lt;br /&gt;
		-- The &#039;navbox-styles&#039; div exists to wrap the styles to work around T200206&lt;br /&gt;
		-- more elegantly. Instead of combinatorial rules, this ends up being linear&lt;br /&gt;
		-- number of CSS rules.&lt;br /&gt;
		return mw.html.create(&#039;div&#039;)&lt;br /&gt;
			:addClass(cfg.class.navbox_styles)&lt;br /&gt;
			:wikitext(&lt;br /&gt;
				add_list_styles() .. -- see [hlist_note] applied to &#039;before base_templatestyles&#039;&lt;br /&gt;
				base_templatestyles ..&lt;br /&gt;
				templatestyles ..&lt;br /&gt;
				child_templatestyles ..&lt;br /&gt;
				table.concat(hiding_templatestyles)&lt;br /&gt;
			)&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- work around [[phab:T303378]]&lt;br /&gt;
	-- for each arg: find all the templatestyles strip markers, insert them into a&lt;br /&gt;
	-- table. then remove all templatestyles markers from the arg&lt;br /&gt;
	local strip_marker_pattern = &#039;(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)&#039;&lt;br /&gt;
	local argHash = 0&lt;br /&gt;
	for k, arg in pairs(args) do&lt;br /&gt;
		if type(arg) == &#039;string&#039; then&lt;br /&gt;
			for marker in string.gfind(arg, strip_marker_pattern) do&lt;br /&gt;
				table.insert(hiding_templatestyles, marker)&lt;br /&gt;
			end&lt;br /&gt;
			argHash = argHash + #arg&lt;br /&gt;
			args[k] = string.gsub(arg, strip_marker_pattern, &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not args.argHash then args.argHash = argHash end&lt;br /&gt;
&lt;br /&gt;
	local listnums = {}&lt;br /&gt;
&lt;br /&gt;
	for k, _ in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;string&#039; then&lt;br /&gt;
			local listnum = k:match(cfg.pattern.listnum)&lt;br /&gt;
			if listnum and args[andnum(&#039;list&#039;, tonumber(listnum))] then&lt;br /&gt;
				table.insert(listnums, tonumber(listnum))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(listnums)&lt;br /&gt;
&lt;br /&gt;
	local border = mw.text.trim(args[cfg.arg.border] or args[1] or &#039;&#039;)&lt;br /&gt;
	if border == cfg.keyword.border_child then&lt;br /&gt;
		border = cfg.keyword.border_subgroup&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- render the main body of the navbox&lt;br /&gt;
	local tbl = renderMainTable(border, listnums)&lt;br /&gt;
&lt;br /&gt;
	local res = mw.html.create()&lt;br /&gt;
	-- render the appropriate wrapper for the navbox, based on the border param&lt;br /&gt;
&lt;br /&gt;
	if border == cfg.keyword.border_none then&lt;br /&gt;
		res:node(add_navbox_styles(hiding_templatestyles))&lt;br /&gt;
		local nav = res:tag(&#039;div&#039;)&lt;br /&gt;
			:attr(&#039;role&#039;, &#039;navigation&#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]&lt;br /&gt;
			and not args[cfg.arg.group2]) then&lt;br /&gt;
			nav:attr(&lt;br /&gt;
				&#039;aria-labelledby&#039;,&lt;br /&gt;
				mw.uri.anchorEncode(&lt;br /&gt;
					args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]&lt;br /&gt;
				) .. args.argHash&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&#039;aria-label&#039;, cfg.aria_label)&lt;br /&gt;
		end&lt;br /&gt;
	elseif border == cfg.keyword.border_subgroup then&lt;br /&gt;
		-- We assume that this navbox is being rendered in a list cell of a&lt;br /&gt;
		-- parent navbox, and is therefore inside a div with padding:0em 0.25em.&lt;br /&gt;
		-- We start with a &amp;lt;/div&amp;gt; to avoid the padding being applied, and at the&lt;br /&gt;
		-- end add a &amp;lt;div&amp;gt; to balance out the parent&#039;s &amp;lt;/div&amp;gt;&lt;br /&gt;
		res&lt;br /&gt;
			:wikitext(&#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
			:wikitext(&#039;&amp;lt;div&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		res:node(add_navbox_styles(hiding_templatestyles))&lt;br /&gt;
		local nav = res:tag(&#039;div&#039;)&lt;br /&gt;
			:attr(&#039;role&#039;, &#039;navigation&#039;)&lt;br /&gt;
			:addClass(cfg.class.navbox)&lt;br /&gt;
			:addClass(args[cfg.arg.navboxclass])&lt;br /&gt;
			:cssText(args[cfg.arg.bodystyle])&lt;br /&gt;
			:cssText(args[cfg.arg.style])&lt;br /&gt;
			:css(&#039;padding&#039;, &#039;3px&#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args[cfg.arg.title] or args[cfg.arg.above]&lt;br /&gt;
			or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then&lt;br /&gt;
			nav:attr(&lt;br /&gt;
				&#039;aria-labelledby&#039;,&lt;br /&gt;
				mw.uri.anchorEncode(&lt;br /&gt;
					args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]&lt;br /&gt;
				) .. args.argHash&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&#039;aria-label&#039;, cfg.aria_label .. args.argHash)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then&lt;br /&gt;
		renderTrackingCategories(res, border)&lt;br /&gt;
	end&lt;br /&gt;
	return striped(tostring(res), border)&lt;br /&gt;
end --p._navbox&lt;br /&gt;
&lt;br /&gt;
function p._withCollapsibleGroups(pargs)&lt;br /&gt;
	-- table for args passed to navbox&lt;br /&gt;
	local targs = {}&lt;br /&gt;
&lt;br /&gt;
	-- process args&lt;br /&gt;
	local passthroughLocal = {&lt;br /&gt;
		[cfg.arg.bodystyle] = true,&lt;br /&gt;
		[cfg.arg.border] = true,&lt;br /&gt;
		[cfg.arg.style] = true,&lt;br /&gt;
	}&lt;br /&gt;
	for k,v in pairs(pargs) do&lt;br /&gt;
		if k and type(k) == &#039;string&#039; then&lt;br /&gt;
			if passthrough[k] or passthroughLocal[k] then&lt;br /&gt;
				targs[k] = v&lt;br /&gt;
			elseif (k:match(cfg.pattern.num)) then&lt;br /&gt;
				local n = k:match(cfg.pattern.num)&lt;br /&gt;
				local list_and_num = andnum(&#039;list&#039;, n)&lt;br /&gt;
				if ((k:match(cfg.pattern.listnum) or k:match(cfg.pattern.contentnum))&lt;br /&gt;
						and targs[list_and_num] == nil&lt;br /&gt;
						and pargs[andnum(&#039;group&#039;, n)] == nil&lt;br /&gt;
						and pargs[andnum(&#039;sect&#039;, n)] == nil&lt;br /&gt;
						and pargs[andnum(&#039;section&#039;, n)] == nil) then&lt;br /&gt;
					targs[list_and_num] = concatstrings({&lt;br /&gt;
						pargs[list_and_num] or &#039;&#039;,&lt;br /&gt;
						pargs[andnum(&#039;content&#039;, n)] or &#039;&#039;&lt;br /&gt;
					})&lt;br /&gt;
					if (targs[list_and_num] and inArray(cfg.keyword.subgroups, targs[list_and_num])) then&lt;br /&gt;
						targs[list_and_num] = getSubgroup(pargs, n, targs[list_and_num])&lt;br /&gt;
					end&lt;br /&gt;
				elseif ((k:match(cfg.pattern.groupnum) or k:match(cfg.pattern.sectnum) or k:match(cfg.pattern.sectionnum))&lt;br /&gt;
						and targs[list_and_num] == nil) then&lt;br /&gt;
					local titlestyle = concatstyles({&lt;br /&gt;
						pargs[cfg.arg.groupstyle] or &#039;&#039;,&lt;br /&gt;
						pargs[cfg.arg.secttitlestyle] or &#039;&#039;, &lt;br /&gt;
						pargs[andnum(&#039;groupstyle&#039;, n)] or &#039;&#039;, &lt;br /&gt;
						pargs[andnum(&#039;sectiontitlestyle&#039;, n)] or &#039;&#039;&lt;br /&gt;
					})&lt;br /&gt;
					local liststyle = concatstyles({&lt;br /&gt;
						pargs[cfg.arg.liststyle] or &#039;&#039;,&lt;br /&gt;
						pargs[cfg.arg.contentstyle] or &#039;&#039;, &lt;br /&gt;
						pargs[andnum(&#039;liststyle&#039;, n)] or &#039;&#039;, &lt;br /&gt;
						pargs[andnum(&#039;contentstyle&#039;, n)] or &#039;&#039;&lt;br /&gt;
					})&lt;br /&gt;
					local title = concatstrings({&lt;br /&gt;
						pargs[andnum(&#039;group&#039;, n)] or &#039;&#039;,&lt;br /&gt;
						pargs[andnum(&#039;sect&#039;, n)] or &#039;&#039;,&lt;br /&gt;
						pargs[andnum(&#039;section&#039;, n)] or &#039;&#039;&lt;br /&gt;
					})&lt;br /&gt;
					local list = concatstrings({&lt;br /&gt;
						pargs[list_and_num] or &#039;&#039;, &lt;br /&gt;
						pargs[andnum(&#039;content&#039;, n)] or &#039;&#039;&lt;br /&gt;
					})&lt;br /&gt;
					if list and inArray(cfg.keyword.subgroups, list) then&lt;br /&gt;
						list = getSubgroup(pargs, n, list)&lt;br /&gt;
					end&lt;br /&gt;
					local abbr_and_num = andnum(&#039;abbr&#039;, n)&lt;br /&gt;
					local state = (pargs[abbr_and_num] and pargs[abbr_and_num] == pargs[cfg.arg.selected]) &lt;br /&gt;
						and cfg.keyword.state_uncollapsed&lt;br /&gt;
						or (pargs[andnum(&#039;state&#039;, n)] or cfg.keyword.state_collapsed)&lt;br /&gt;
					&lt;br /&gt;
					targs[list_and_num] =p._navbox({&lt;br /&gt;
						cfg.keyword.border_child,&lt;br /&gt;
						[cfg.arg.navbar] = cfg.keyword.navbar_plain,&lt;br /&gt;
						[cfg.arg.state] = state,&lt;br /&gt;
						[cfg.arg.basestyle] = pargs[cfg.arg.basestyle],&lt;br /&gt;
						[cfg.arg.title] = title,&lt;br /&gt;
						[cfg.arg.titlestyle] = titlestyle,&lt;br /&gt;
						[andnum(&#039;list&#039;, 1)] = list,&lt;br /&gt;
						[cfg.arg.liststyle] = liststyle,&lt;br /&gt;
						[cfg.arg.listclass] = pargs[andnum(&#039;listclass&#039;, n)],&lt;br /&gt;
						[cfg.arg.image] = pargs[andnum(&#039;image&#039;, n)],&lt;br /&gt;
						[cfg.arg.imageleft] = pargs[andnum(&#039;imageleft&#039;, n)],&lt;br /&gt;
						[cfg.arg.listpadding] = pargs[cfg.arg.listpadding],&lt;br /&gt;
						argHash = pargs.argHash&lt;br /&gt;
					})&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- ordering of style and bodystyle&lt;br /&gt;
	targs[cfg.arg.style] = concatstyles({targs[cfg.arg.style] or &#039;&#039;, targs[cfg.arg.bodystyle] or &#039;&#039;})&lt;br /&gt;
	targs[cfg.arg.bodystyle] = nil&lt;br /&gt;
&lt;br /&gt;
	-- child or subgroup&lt;br /&gt;
	if targs[cfg.arg.border] == nil then targs[cfg.arg.border] = pargs[1] end&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(targs)&lt;br /&gt;
end --p._withCollapsibleGroups&lt;br /&gt;
&lt;br /&gt;
function p._withColumns(pargs)&lt;br /&gt;
	-- table for args passed to navbox&lt;br /&gt;
	local targs = {}&lt;br /&gt;
&lt;br /&gt;
	-- tables of column numbers&lt;br /&gt;
	local colheadernums = {}&lt;br /&gt;
	local colnums = {}&lt;br /&gt;
	local colfooternums = {}&lt;br /&gt;
&lt;br /&gt;
	-- process args&lt;br /&gt;
	local passthroughLocal = {&lt;br /&gt;
		[cfg.arg.evenstyle]=true,&lt;br /&gt;
		[cfg.arg.groupstyle]=true,&lt;br /&gt;
		[cfg.arg.liststyle]=true,&lt;br /&gt;
		[cfg.arg.oddstyle]=true,&lt;br /&gt;
		[cfg.arg.state]=true,&lt;br /&gt;
	}&lt;br /&gt;
	for k,v in pairs(pargs) do&lt;br /&gt;
		if passthrough[k] or passthroughLocal[k] then&lt;br /&gt;
			targs[k] = v&lt;br /&gt;
		elseif type(k) == &#039;string&#039; then&lt;br /&gt;
			if k:match(cfg.pattern.listnum) then&lt;br /&gt;
				local n = k:match(cfg.pattern.listnum)&lt;br /&gt;
				targs[andnum(&#039;liststyle&#039;, n + 2)] = pargs[andnum(&#039;liststyle&#039;, n)]&lt;br /&gt;
				targs[andnum(&#039;group&#039;, n + 2)] = pargs[andnum(&#039;group&#039;, n)]&lt;br /&gt;
				targs[andnum(&#039;groupstyle&#039;, n + 2)] = pargs[andnum(&#039;groupstyle&#039;, n)]&lt;br /&gt;
				if v and inArray(cfg.keyword.subgroups, v) then&lt;br /&gt;
					targs[andnum(&#039;list&#039;, n + 2)] = getSubgroup(pargs, n, v)&lt;br /&gt;
				else&lt;br /&gt;
					targs[andnum(&#039;list&#039;, n + 2)] = v&lt;br /&gt;
				end&lt;br /&gt;
			elseif (k:match(cfg.pattern.colheadernum) and v ~= &#039;&#039;) then&lt;br /&gt;
				table.insert(colheadernums, tonumber(k:match(cfg.pattern.colheadernum)))&lt;br /&gt;
			elseif (k:match(cfg.pattern.colnum) and v ~= &#039;&#039;) then&lt;br /&gt;
				table.insert(colnums, tonumber(k:match(cfg.pattern.colnum)))&lt;br /&gt;
			elseif (k:match(cfg.pattern.colfooternum) and v ~= &#039;&#039;) then&lt;br /&gt;
				table.insert(colfooternums, tonumber(k:match(cfg.pattern.colfooternum)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(colheadernums)&lt;br /&gt;
	table.sort(colnums)&lt;br /&gt;
	table.sort(colfooternums)&lt;br /&gt;
&lt;br /&gt;
	-- HTML table for list1&lt;br /&gt;
	local coltable = mw.html.create( &#039;table&#039; ):addClass(&#039;navbox-columns-table&#039;)&lt;br /&gt;
	local row, col&lt;br /&gt;
&lt;br /&gt;
	local tablestyle = ( (#colheadernums &amp;gt; 0) or (not isblank(pargs[cfg.arg.fullwidth])) )&lt;br /&gt;
		and &#039;width:100%&#039;&lt;br /&gt;
		or &#039;width:auto; margin-left:auto; margin-right:auto&#039;&lt;br /&gt;
&lt;br /&gt;
	coltable:cssText(concatstyles({&lt;br /&gt;
		&#039;border-spacing: 0px; text-align:left&#039;,&lt;br /&gt;
		tablestyle,&lt;br /&gt;
		pargs[cfg.arg.coltablestyle] or &#039;&#039;&lt;br /&gt;
	}))&lt;br /&gt;
&lt;br /&gt;
	--- Header row ---&lt;br /&gt;
	if (#colheadernums &amp;gt; 0) then&lt;br /&gt;
		row = coltable:tag(&#039;tr&#039;)&lt;br /&gt;
		for k, n in ipairs(colheadernums) do&lt;br /&gt;
			col = row:tag(&#039;td&#039;):addClass(&#039;navbox-abovebelow&#039;)&lt;br /&gt;
			col:cssText(concatstyles({&lt;br /&gt;
				(k &amp;gt; 1) and &#039;border-left:2px solid #fdfdfd&#039; or &#039;&#039;,&lt;br /&gt;
				&#039;font-weight:bold&#039;,&lt;br /&gt;
				pargs[cfg.arg.colheaderstyle] or &#039;&#039;,&lt;br /&gt;
				pargs[andnum(&#039;colheaderstyle&#039;, n)] or &#039;&#039;&lt;br /&gt;
			}))&lt;br /&gt;
			col:attr(&#039;colspan&#039;, tonumber(pargs[andnum(&#039;colheadercolspan&#039;, n)]))&lt;br /&gt;
			col:wikitext(pargs[andnum(&#039;colheader&#039;, n)])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--- Main columns ---&lt;br /&gt;
	row = coltable:tag(&#039;tr&#039;):css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
	for k, n in ipairs(colnums) do&lt;br /&gt;
		if k == 1 and isblank(pargs[andnum(&#039;colheader&#039;, 1)])&lt;br /&gt;
				and isblank(pargs[andnum(&#039;colfooter&#039;, 1)])&lt;br /&gt;
				and isblank(pargs[cfg.arg.fullwidth]) then&lt;br /&gt;
			local nopad = inArray(&lt;br /&gt;
				{&#039;off&#039;, &#039;0&#039;, &#039;0em&#039;, &#039;0px&#039;},&lt;br /&gt;
				mw.ustring.gsub(pargs[cfg.arg.padding] or &#039;&#039;, &#039;[;%%]&#039;, &#039;&#039;))&lt;br /&gt;
			if not nopad then&lt;br /&gt;
				row:tag(&#039;td&#039;):wikitext(&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;)&lt;br /&gt;
					:css(&#039;width&#039;, (pargs[cfg.arg.padding] or &#039;5em&#039;))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		col = row:tag(&#039;td&#039;):addClass(&#039;navbox-list&#039;)&lt;br /&gt;
		col:cssText(concatstyles({&lt;br /&gt;
			(k &amp;gt; 1) and &#039;border-left:2px solid #fdfdfd&#039; or &#039;&#039;,&lt;br /&gt;
			&#039;padding:0px&#039;,&lt;br /&gt;
			pargs[cfg.arg.colstyle] or &#039;&#039;,&lt;br /&gt;
			((n%2 == 0) and pargs[cfg.arg.evencolstyle] or pargs[cfg.arg.oddcolstyle]) or &#039;&#039;,&lt;br /&gt;
			pargs[andnum(&#039;colstyle&#039;, n)] or &#039;&#039;,&lt;br /&gt;
			&#039;width:&#039; .. (pargs[andnum(&#039;colwidth&#039;, n)] or pargs[cfg.arg.colwidth] or &#039;10em&#039;)&lt;br /&gt;
		}))&lt;br /&gt;
		local wt = pargs[andnum(&#039;col&#039;, n)]&lt;br /&gt;
		if wt and inArray(cfg.keyword.subgroups, wt) then&lt;br /&gt;
			wt = getSubgroup(pargs, n, wt, cfg.arg.col_and_num)&lt;br /&gt;
		end&lt;br /&gt;
		col:tag(&#039;div&#039;):newline():wikitext(wt):newline()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--- Footer row ---&lt;br /&gt;
	if (#colfooternums &amp;gt; 0) then&lt;br /&gt;
		row = coltable:tag(&#039;tr&#039;)&lt;br /&gt;
		for k, n in ipairs(colfooternums) do&lt;br /&gt;
			col = row:tag(&#039;td&#039;):addClass(&#039;navbox-abovebelow&#039;)&lt;br /&gt;
			col:cssText(concatstyles({&lt;br /&gt;
				(k &amp;gt; 1) and &#039;border-left:2px solid #fdfdfd&#039; or &#039;&#039;,&lt;br /&gt;
				&#039;font-weight:bold&#039;,&lt;br /&gt;
				pargs[cfg.arg.colfooterstyle] or &#039;&#039;,&lt;br /&gt;
				pargs[andnum(&#039;colfooterstyle&#039;, n)] or &#039;&#039;&lt;br /&gt;
			}))&lt;br /&gt;
			col:attr(&#039;colspan&#039;, tonumber(pargs[andnum(&#039;colfootercolspan&#039;, n)]))&lt;br /&gt;
			col:wikitext(pargs[andnum(&#039;colfooter&#039;, n)])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- assign table to list1&lt;br /&gt;
	targs[andnum(&#039;list&#039;, 1)] = tostring(coltable)&lt;br /&gt;
	if isblank(pargs[andnum(&#039;colheader&#039;, 1)]) &lt;br /&gt;
			and isblank(pargs[andnum(&#039;col&#039;, 1)])&lt;br /&gt;
			and isblank(pargs[andnum(&#039;colfooter&#039;, 1)]) then&lt;br /&gt;
		targs[andnum(&#039;list&#039;, 1)] = targs[andnum(&#039;list&#039;, 1)] ..&lt;br /&gt;
			cfg.category.without_first_col&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Other parameters&lt;br /&gt;
	targs[cfg.arg.border] = pargs[cfg.arg.border] or pargs[1]&lt;br /&gt;
	targs[cfg.arg.evenodd] = (not isblank(pargs[cfg.arg.evenodd])) and pargs[cfg.arg.evenodd] or nil&lt;br /&gt;
	targs[cfg.arg.list1padding] = &#039;0px&#039;&lt;br /&gt;
	targs[andnum(&#039;liststyle&#039;, 1)] = &#039;background:transparent;color:inherit;&#039;&lt;br /&gt;
	targs[cfg.arg.style] = concatstyles({pargs[cfg.arg.style], pargs[cfg.arg.bodystyle]})&lt;br /&gt;
	targs[cfg.arg.tracking] = &#039;no&#039;&lt;br /&gt;
	&lt;br /&gt;
	return p._navbox(targs)&lt;br /&gt;
end --p._withColumns&lt;br /&gt;
&lt;br /&gt;
-- Template entry points&lt;br /&gt;
function p.navbox (frame, boxtype)&lt;br /&gt;
	local function readArgs(args, prefix)&lt;br /&gt;
		-- Read the arguments in the order they&#039;ll be output in, to make references&lt;br /&gt;
		-- number in the right order.&lt;br /&gt;
		local _ = 0&lt;br /&gt;
		_ = _ + (args[prefix .. cfg.arg.title] and #args[prefix .. cfg.arg.title] or 0)&lt;br /&gt;
		_ = _ + (args[prefix .. cfg.arg.above] and #args[prefix .. cfg.arg.above] or 0)&lt;br /&gt;
		-- Limit this to 20 as covering &#039;most&#039; cases (that&#039;s a SWAG) and because&lt;br /&gt;
		-- iterator approach won&#039;t work here&lt;br /&gt;
		for i = 1, 20 do&lt;br /&gt;
			_ = _ + (args[prefix .. andnum(&#039;group&#039;, i)] and #args[prefix .. andnum(&#039;group&#039;, i)] or 0)&lt;br /&gt;
			if inArray(cfg.keyword.subgroups, args[prefix .. andnum(&#039;list&#039;, i)]) then&lt;br /&gt;
				for _, v in ipairs(cfg.arg.subgroups_and_num) do&lt;br /&gt;
					readArgs(args, prefix .. string.format(v, i) .. &amp;quot;_&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				readArgs(args, prefix .. andnum(&#039;col&#039;, i) .. &amp;quot;_&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		_ = _ + (args[prefix .. cfg.arg.below] and #args[prefix .. cfg.arg.below] or 0)&lt;br /&gt;
		return _&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	local args = getArgs(frame, {wrappers = {cfg.pattern[boxtype or &#039;navbox&#039;]}})&lt;br /&gt;
	args.argHash = readArgs(args, &amp;quot;&amp;quot;)&lt;br /&gt;
	args.type = args.type or cfg.keyword[boxtype]&lt;br /&gt;
	return p[&#039;_navbox&#039;](args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[cfg.keyword.with_collapsible_groups] = function (frame)&lt;br /&gt;
	return p.navbox(frame, &#039;with_collapsible_groups&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[cfg.keyword.with_columns] = function (frame)&lt;br /&gt;
	return p.navbox(frame, &#039;with_columns&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Labelled_list_hatnote&amp;diff=1718</id>
		<title>Module:Labelled list hatnote</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Labelled_list_hatnote&amp;diff=1718"/>
		<updated>2025-07-07T13:17:12Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                               Labelled list                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module does the core work of creating a hatnote composed of a list    --&lt;br /&gt;
-- prefixed by a colon-terminated label, i.e. &amp;quot;LABEL: [andList of pages]&amp;quot;,    --&lt;br /&gt;
-- for {{see also}} and similar templates.                                    --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mHatlist = require(&#039;Module:Hatnote list&#039;)&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local yesno --initialize lazily&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Defaults global to this module&lt;br /&gt;
local defaults = {&lt;br /&gt;
	label = &#039;See also&#039;, --Final fallback for label argument&lt;br /&gt;
	labelForm = &#039;%s: %s&#039;,&lt;br /&gt;
	prefixes = {&#039;label&#039;, &#039;label &#039;, &#039;l&#039;},&lt;br /&gt;
	template = &#039;Module:Labelled list hatnote&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Localizable message strings&lt;br /&gt;
local msg = {&lt;br /&gt;
	errorSuffix = &#039;#Errors&#039;,&lt;br /&gt;
	noInputWarning = &#039;no page names specified&#039;,&lt;br /&gt;
	noOutputWarning =&lt;br /&gt;
		&amp;quot;&#039;&#039;&#039;[[%s]] — no output: none of the target pages exist.&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Helper function that pre-combines display parameters into page arguments.&lt;br /&gt;
-- Also compresses sparse arrays, as a desirable side-effect.&lt;br /&gt;
function p.preprocessDisplays (args, prefixes)&lt;br /&gt;
	-- Prefixes specify which parameters, in order, to check for display options&lt;br /&gt;
	-- They each have numbers auto-appended, e.g. &#039;label1&#039;, &#039;label 1&#039;, &amp;amp; &#039;l1&#039;&lt;br /&gt;
	prefixes = prefixes or defaults.prefixes&lt;br /&gt;
	local indices = {}&lt;br /&gt;
	local sparsePages = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then&lt;br /&gt;
			indices[#indices + 1] = k&lt;br /&gt;
			local display&lt;br /&gt;
			for i = 1, #prefixes do&lt;br /&gt;
				display = args[prefixes[i] .. k]&lt;br /&gt;
				if display then break end&lt;br /&gt;
			end&lt;br /&gt;
			sparsePages[k] = display and&lt;br /&gt;
				string.format(&#039;%s|%s&#039;, string.gsub(v, &#039;|.*$&#039;, &#039;&#039;), display) or v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(indices)&lt;br /&gt;
	local pages = {}&lt;br /&gt;
	for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Helper function to get a page target from a processed page string&lt;br /&gt;
--e.g. &amp;quot;Page|Label&amp;quot; → &amp;quot;Page&amp;quot; or &amp;quot;Target&amp;quot; → &amp;quot;Target&amp;quot;&lt;br /&gt;
local function getTarget(pagename)&lt;br /&gt;
 	local pipe = string.find(pagename, &#039;|&#039;)&lt;br /&gt;
	return string.sub(pagename, 0, pipe and pipe - 1 or nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produces a labelled pages-list hatnote.&lt;br /&gt;
-- The main frame (template definition) takes 1 or 2 arguments, for a singular&lt;br /&gt;
-- and (optionally) plural label respectively:&lt;br /&gt;
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}&lt;br /&gt;
-- The resulting template takes pagename &amp;amp; label parameters normally.&lt;br /&gt;
function p.labelledList (frame)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
	local labels = {frame.args[1] or defaults.label}&lt;br /&gt;
	labels[2] = frame.args[2] or labels[1]&lt;br /&gt;
	labels[3] = frame.args[3] --no defaulting&lt;br /&gt;
	labels[4] = frame.args[4] --no defaulting&lt;br /&gt;
	local template = frame:getParent():getTitle()&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = p.preprocessDisplays(args)&lt;br /&gt;
	local options = {&lt;br /&gt;
		category = yesno(args.category),&lt;br /&gt;
		extraclasses = frame.args.extraclasses,&lt;br /&gt;
		ifexists = yesno(frame.args.ifexists),&lt;br /&gt;
		namespace = frame.args.namespace or args.namespace,&lt;br /&gt;
		selfref = yesno(frame.args.selfref or args.selfref),&lt;br /&gt;
		template = template&lt;br /&gt;
	}&lt;br /&gt;
	return p._labelledList(pages, labels, options)&lt;br /&gt;
end&lt;br /&gt;
local function exists(title)&lt;br /&gt;
	local success, result = pcall(function() return title.exists end)&lt;br /&gt;
	if success then&lt;br /&gt;
		return result&lt;br /&gt;
	else&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._labelledList (pages, labels, options)&lt;br /&gt;
	local removednonexist = false&lt;br /&gt;
	if options.ifexists then&lt;br /&gt;
		for k = #pages, 1, -1 do --iterate backwards to allow smooth removals&lt;br /&gt;
			local v = pages[k]&lt;br /&gt;
			if mw.ustring.sub(mw.text.trim(v), 1, 1) ~= &amp;quot;#&amp;quot; then&lt;br /&gt;
				local title = mw.title.new(getTarget(v), namespace)&lt;br /&gt;
				if (v == &#039;&#039;) or (title == nil) or not exists(title) then&lt;br /&gt;
					table.remove(pages, k)&lt;br /&gt;
					removednonexist = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	labels = labels or {}&lt;br /&gt;
	label = (#pages == 1 and labels[1] or labels[2]) or defaults.label&lt;br /&gt;
	for k, v in pairs(pages) do &lt;br /&gt;
		if mHatnote.findNamespaceId(v) ~= 0 then&lt;br /&gt;
			label =&lt;br /&gt;
				(&lt;br /&gt;
					#pages == 1 and&lt;br /&gt;
					(labels[3] or labels[1] or defaults.label) or&lt;br /&gt;
					(labels[4] or labels[2] or defaults.label)&lt;br /&gt;
				) or defaults.label&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #pages == 0 then&lt;br /&gt;
		if removednonexist then&lt;br /&gt;
			mw.addWarning(&lt;br /&gt;
				string.format(&lt;br /&gt;
					msg.noOutputWarning, options.template or defaults.template&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return mHatnote.makeWikitextError(&lt;br /&gt;
				msg.noInputWarning,&lt;br /&gt;
				(options.template or defaults.template) .. msg.errorSuffix,&lt;br /&gt;
				options.category&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local text = string.format(&lt;br /&gt;
		options.labelForm or defaults.labelForm,&lt;br /&gt;
		label,&lt;br /&gt;
		mHatlist.andList(pages, true)&lt;br /&gt;
	)&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		extraclasses = options.extraclasses,&lt;br /&gt;
		selfref = options.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return mHatnote._hatnote(text, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Icon/data&amp;diff=1716</id>
		<title>Module:Icon/data</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Icon/data&amp;diff=1716"/>
		<updated>2025-07-07T13:17:12Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module stores icon data for [[Module:Icon]].&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Icon data&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	fa = {&lt;br /&gt;
		image = &amp;quot;Featured article star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	far = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	farc = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article removal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffa = {&lt;br /&gt;
		aliases = {&amp;quot;dfa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fac = {&lt;br /&gt;
		aliases = {&amp;quot;fan&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffac = {&lt;br /&gt;
		aliases = {&amp;quot;nofa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fl = {&lt;br /&gt;
		image = &amp;quot;Featured article star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	flrc = {&lt;br /&gt;
		aliases = {&amp;quot;flr&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list removal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffl = {&lt;br /&gt;
		aliases = {&amp;quot;dfl&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-featured-strike.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured list&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	flc = {&lt;br /&gt;
		aliases = {&amp;quot;fln&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fflc = {&lt;br /&gt;
		aliases = {&amp;quot;nofl&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured list candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	a = {&lt;br /&gt;
		image = &amp;quot;Symbol a class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;A-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	admin = {&lt;br /&gt;
		aliases = {&amp;quot;mop&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Wikipedia Administrator.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Administrator&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	dac = {&lt;br /&gt;
		aliases = {&amp;quot;daa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol unsupport A vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Demoted A-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	acc = {&lt;br /&gt;
		aliases = {&amp;quot;acn&amp;quot;, &amp;quot;aac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;A candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;A-Class article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	noac = {&lt;br /&gt;
		aliases = {&amp;quot;faac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol unsupport A vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed A-Class article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ga = {&lt;br /&gt;
		image = &amp;quot;Symbol support vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gar = {&lt;br /&gt;
		image = &amp;quot;GA Candidate Neutral vote(ChaosNil).svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article reassessment&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	dga = {&lt;br /&gt;
		image = &amp;quot;Symbol unsupport vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Delisted good article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gan = {&lt;br /&gt;
		aliases = {&amp;quot;gac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;GA candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article nominee&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	ga2 = {&lt;br /&gt;
		image = &amp;quot;Symbol neutral vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article, 2nd opinion&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gah = {&lt;br /&gt;
		image = &amp;quot;Symbol wait.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article on hold&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	fgan = {&lt;br /&gt;
		aliases = {&amp;quot;noga&amp;quot;, &amp;quot;gaf&amp;quot;, &amp;quot;gf&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol oppose vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former good article nominee&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	fp = {&lt;br /&gt;
		image = &amp;quot;Cscr-featured.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured picture&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpc = {&lt;br /&gt;
		aliases = {&amp;quot;fpn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured picture candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffp = {&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured picture&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	vp = {&lt;br /&gt;
		image = &amp;quot;ENWP VP Logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued picture&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	vpc = {&lt;br /&gt;
		image = &amp;quot;Valued pics 1.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued picture candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fs = {&lt;br /&gt;
		image = &amp;quot;Cscr-featured.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured sound&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffs = {&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured sound&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fsc = {&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured sound candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpo = {&lt;br /&gt;
		image = &amp;quot;Linecons big-star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Before the featured portal process ceased in 2017, this had been designated as a featured portal.&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpor = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured portal review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffpo = {&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured portal&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpoc = {&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured portal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ft = {&lt;br /&gt;
		image = &amp;quot;Cscr-featuredtopic.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ftrc = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic removal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fft = {&lt;br /&gt;
		aliases = {&amp;quot;dft&amp;quot;},&lt;br /&gt;
		image = &amp;quot;DFT candidate_cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured topic&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ftc = {&lt;br /&gt;
		aliases = {&amp;quot;ftn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;FT candidate cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic candidate&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gt = {&lt;br /&gt;
		image = &amp;quot;Support cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gtrc = {&lt;br /&gt;
		image = &amp;quot;Symbol unsupport vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic removal candidate&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gtc = {&lt;br /&gt;
		aliases = {&amp;quot;gtn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;GA candidate cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic candidate&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	bplus = {&lt;br /&gt;
		aliases = {&amp;quot;b+&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol bplus class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Bplus-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	b = {&lt;br /&gt;
		image = &amp;quot;Symbol b class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;B-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	br = {&lt;br /&gt;
		aliases = {&amp;quot;bcr&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Bclass-checklist.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;B-Class review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	c = {&lt;br /&gt;
		image = &amp;quot;Symbol c class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;C-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	start = {&lt;br /&gt;
		image = &amp;quot;Symbol start class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Start-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	stub = {&lt;br /&gt;
		image = &amp;quot;Symbol stub class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Stub-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	list = {&lt;br /&gt;
		aliases = {&amp;quot;comparison&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol list class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;List-Class article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	no = {&lt;br /&gt;
		image = &amp;quot;Crystal button cancel.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Unknown-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	book = {&lt;br /&gt;
		image = &amp;quot;Symbol book class2.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikipedia book&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	category = {&lt;br /&gt;
		aliases = {&amp;quot;cat&amp;quot;, &amp;quot;categ&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol category class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Category&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	disambiguation = {&lt;br /&gt;
		aliases = {&amp;quot;dab&amp;quot;, &amp;quot;disamb&amp;quot;, &amp;quot;disambig&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol dab class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Disambiguation page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	image = {&lt;br /&gt;
		aliases = {&amp;quot;file&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol file class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;File&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	needed = {&lt;br /&gt;
		image = &amp;quot;Symbol needed class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Needed article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	outline = {&lt;br /&gt;
		image = &amp;quot;Global thinking.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Outline&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	portal = {&lt;br /&gt;
		image = &amp;quot;Symbol portal class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Portal&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	project = {&lt;br /&gt;
		image = &amp;quot;Symbol project class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Project page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	redirect = {&lt;br /&gt;
		aliases = {&amp;quot;red&amp;quot;, &amp;quot;redir&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol redirect vote2.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Redirect&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	template = {&lt;br /&gt;
		aliases = {&amp;quot;temp&amp;quot;, &amp;quot;templ&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol template class pink.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Template&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	essay = {&lt;br /&gt;
		image = &amp;quot;Essay.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Essay&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	na = {&lt;br /&gt;
		image = &amp;quot;Symbol na class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Non-article page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	aa = {&lt;br /&gt;
		image = &amp;quot;Yes check.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Audited article of limited subject matter&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	da = {&lt;br /&gt;
		image = &amp;quot;Symbol oppose vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Demoted article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	dyk = {&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Did You Know?&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	dyk2 = {&lt;br /&gt;
		image = &amp;quot;DYK questionmark icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Did You Know?&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	pr = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps kedit.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Peer review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ppr = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps kedit.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Portal peer review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	q = {&lt;br /&gt;
		aliases = {&amp;quot;question&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Question&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	cleanup = {&lt;br /&gt;
		image = &amp;quot;Edit-clear.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Cleanup work&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	qi = {&lt;br /&gt;
		image = &amp;quot;Quality images logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Quality image on Wikimedia Commons&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	vi = {&lt;br /&gt;
		image = &amp;quot;Valued image seal.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued image on Wikimedia Commons&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	tfa = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Today&#039;s Featured Article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	tfl = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Today&#039;s Featured List&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	itn = {&lt;br /&gt;
		image = &amp;quot;Globe current.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;In The News&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	otd = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps date.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;On This Day&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikiproject = {&lt;br /&gt;
		image = &amp;quot;People icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;WikiProject&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	goce = {&lt;br /&gt;
		image = &amp;quot;Writing Magnifying.PNG&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Guild of Copy Editors&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikipedia = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikipedia page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	commons = {&lt;br /&gt;
		image = &amp;quot;Commons-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Commons page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	wikiquote = {&lt;br /&gt;
		image = &amp;quot;Wikiquote-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikiquote page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	wikiversity = {&lt;br /&gt;
		image = &amp;quot;Wikiversity logo 2017.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikiversity page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikibooks = {&lt;br /&gt;
		image = &amp;quot;Wikibooks-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikibooks page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikisource = {&lt;br /&gt;
		image = &amp;quot;Wikisource-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikisource page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wiktionary = {&lt;br /&gt;
		image = &amp;quot;Wiktionary-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wiktionary page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikinews = {&lt;br /&gt;
		image = &amp;quot;Wikinews-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikinews page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikispecies = {&lt;br /&gt;
		image = &amp;quot;Wikispecies-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikispecies page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikidata = {&lt;br /&gt;
		image = &amp;quot;Wikidata-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikidata page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	wikivoyage = {&lt;br /&gt;
		image = &amp;quot;Wikivoyage-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikivoyage page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	 mediawiki = {&lt;br /&gt;
		 image = &amp;quot;MediaWiki-2020-icon.svg&amp;quot;,&lt;br /&gt;
		 tooltip = &amp;quot;MediaWiki&amp;quot;,&lt;br /&gt;
		 link = true,&lt;br /&gt;
	 },&lt;br /&gt;
	 phabricator = {&lt;br /&gt;
		 aliases = {&amp;quot;phab&amp;quot;},&lt;br /&gt;
		 image = &amp;quot;Favicon-Phabricator-WM.svg&amp;quot;,&lt;br /&gt;
		 tooltip = &amp;quot;Phabricator&amp;quot;,&lt;br /&gt;
		 link = false,&lt;br /&gt;
	 },&lt;br /&gt;
	 wikitech = {&lt;br /&gt;
		 image = &amp;quot;Wikitech-2021-blue-icon.svg&amp;quot;,&lt;br /&gt;
		 tooltip = &amp;quot;Wikitech&amp;quot;,&lt;br /&gt;
		 link = true,&lt;br /&gt;
	 },&lt;br /&gt;
	meta = {&lt;br /&gt;
		image = &amp;quot;Wikimedia Community Logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Meta-wiki page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	four = {&lt;br /&gt;
		aliases = {&amp;quot;4a&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Four Award with draft icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Four Award&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	million = {&lt;br /&gt;
		image = &amp;quot;Million award logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Million Award&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	module = {&lt;br /&gt;
		image = &amp;quot;Lua-logo-nolabel.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Module&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	vital = {&lt;br /&gt;
		image = &amp;quot;Círculos_Concéntricos.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Vital article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	potd  = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Picture of the Day&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	draft = {&lt;br /&gt;
		image = &amp;quot;Symbol draft class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Draft-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	user = {&lt;br /&gt;
		image = &amp;quot;Symbol user class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;User-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	info = {&lt;br /&gt;
		image = &amp;quot;Information icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Information&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	discussionnotificaion = {&lt;br /&gt;
		image = &amp;quot;Echo edit-user-talk icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Discussion&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	alert = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Black alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;alert-imagewarning&#039;] = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert image warning.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;alert-constructive&#039;] = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert-constructive.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Green alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;alert-blackred&#039;] = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert destructive black-darkred.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Black, white, and red alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	barnstar2 = {&lt;br /&gt;
		image = &amp;quot;Original Barnstar Hires.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Original barnstar hires&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	barnstar = {&lt;br /&gt;
		image = &amp;quot;Original Barnstar.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Original barnstar&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	_DEFAULT = {&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End icon data&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Make aliases work the same as normal keys, and remove the &amp;quot;aliases&amp;quot; subtables.&lt;br /&gt;
local ret= {}&lt;br /&gt;
for code, iconData in pairs(data) do&lt;br /&gt;
	iconData.canonicalCode = code&lt;br /&gt;
	if iconData.aliases then&lt;br /&gt;
		for _, alias in ipairs(iconData.aliases) do&lt;br /&gt;
			ret[alias] = iconData&lt;br /&gt;
		end&lt;br /&gt;
		iconData.aliases = nil&lt;br /&gt;
	end&lt;br /&gt;
	ret[code] = iconData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return ret&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Hatnote&amp;diff=1714</id>
		<title>Module:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Hatnote&amp;diff=1714"/>
		<updated>2025-07-07T13:17:12Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                              Module:Hatnote                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module produces hatnote links and links to related articles. It       --&lt;br /&gt;
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --&lt;br /&gt;
-- helper functions for other Lua hatnote modules.                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg&lt;br /&gt;
local mArguments -- lazily initialise [[Module:Arguments]]&lt;br /&gt;
local yesno -- lazily initialise [[Module:Yesno]]&lt;br /&gt;
local formatLink -- lazily initialise [[Module:Format link]] ._formatLink&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame)&lt;br /&gt;
	-- Fetches the arguments from the parent frame. Whitespace is trimmed and&lt;br /&gt;
	-- blanks are removed.&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	return mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function removeInitialColon(s)&lt;br /&gt;
	-- Removes the initial colon from a string, if present.&lt;br /&gt;
	return s:match(&#039;^:?(.*)&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.defaultClasses(inline)&lt;br /&gt;
	-- Provides the default hatnote classes as a space-separated string; useful&lt;br /&gt;
	-- for hatnote-manipulation modules like [[Module:Hatnote group]].&lt;br /&gt;
	return&lt;br /&gt;
		(inline == 1 and &#039;hatnote-inline&#039; or &#039;hatnote&#039;) .. &#039; &#039; ..&lt;br /&gt;
		&#039;navigation-not-searchable&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.disambiguate(page, disambiguator)&lt;br /&gt;
	-- Formats a page title with a disambiguation parenthetical,&lt;br /&gt;
	-- i.e. &amp;quot;Example&amp;quot; → &amp;quot;Example (disambiguation)&amp;quot;.&lt;br /&gt;
	checkType(&#039;disambiguate&#039;, 1, page, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;disambiguate&#039;, 2, disambiguator, &#039;string&#039;, true)&lt;br /&gt;
	disambiguator = disambiguator or &#039;disambiguation&#039;&lt;br /&gt;
	return mw.ustring.format(&#039;%s (%s)&#039;, page, disambiguator)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findNamespaceId(link, removeColon)&lt;br /&gt;
	-- Finds the namespace id (namespace number) of a link or a pagename. This&lt;br /&gt;
	-- function will not work if the link is enclosed in double brackets. Colons&lt;br /&gt;
	-- are trimmed from the start of the link by default. To skip colon&lt;br /&gt;
	-- trimming, set the removeColon parameter to false.&lt;br /&gt;
	checkType(&#039;findNamespaceId&#039;, 1, link, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;findNamespaceId&#039;, 2, removeColon, &#039;boolean&#039;, true)&lt;br /&gt;
	if removeColon ~= false then&lt;br /&gt;
		link = removeInitialColon(link)&lt;br /&gt;
	end&lt;br /&gt;
	local namespace = link:match(&#039;^(.-):&#039;)&lt;br /&gt;
	if namespace then&lt;br /&gt;
		local nsTable = mw.site.namespaces[namespace]&lt;br /&gt;
		if nsTable then&lt;br /&gt;
			return nsTable.id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)&lt;br /&gt;
	-- Formats an error message to be returned to wikitext. If&lt;br /&gt;
	-- addTrackingCategory is not false after being returned from&lt;br /&gt;
	-- [[Module:Yesno]], and if we are not on a talk page, a tracking category&lt;br /&gt;
	-- is added.&lt;br /&gt;
	checkType(&#039;makeWikitextError&#039;, 1, msg, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;makeWikitextError&#039;, 2, helpLink, &#039;string&#039;, true)&lt;br /&gt;
	yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
	-- Make the help link text.&lt;br /&gt;
	local helpText&lt;br /&gt;
	if helpLink then&lt;br /&gt;
		helpText = &#039; ([[&#039; .. helpLink .. &#039;|help]])&#039;&lt;br /&gt;
	else&lt;br /&gt;
		helpText = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- Make the category text.&lt;br /&gt;
	local category&lt;br /&gt;
	if not title.isTalkPage -- Don&#039;t categorise talk pages&lt;br /&gt;
		and title.namespace ~= 2 -- Don&#039;t categorise userspace&lt;br /&gt;
		and yesno(addTrackingCategory) ~= false -- Allow opting out&lt;br /&gt;
	then&lt;br /&gt;
		category = &#039;Hatnote templates with errors&#039;&lt;br /&gt;
		category = mw.ustring.format(&lt;br /&gt;
			&#039;[[%s:%s]]&#039;,&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			category&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		category = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.format(&lt;br /&gt;
		&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s%s.&amp;lt;/strong&amp;gt;%s&#039;,&lt;br /&gt;
		msg,&lt;br /&gt;
		helpText,&lt;br /&gt;
		category&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local curNs = mw.title.getCurrentTitle().namespace&lt;br /&gt;
p.missingTargetCat =&lt;br /&gt;
	--Default missing target category, exported for use in related modules&lt;br /&gt;
	((curNs ==  0) or (curNs == 14)) and&lt;br /&gt;
	&#039;Articles with hatnote templates targeting a nonexistent page&#039; or nil&lt;br /&gt;
&lt;br /&gt;
function p.quote(title)&lt;br /&gt;
	--Wraps titles in quotation marks. If the title starts/ends with a quotation&lt;br /&gt;
	--mark, kerns that side as with {{-&#039;}}&lt;br /&gt;
	local quotationMarks = {&lt;br /&gt;
		[&amp;quot;&#039;&amp;quot;]=true, [&#039;&amp;quot;&#039;]=true, [&#039;“&#039;]=true, [&amp;quot;‘&amp;quot;]=true, [&#039;”&#039;]=true, [&amp;quot;’&amp;quot;]=true&lt;br /&gt;
	}&lt;br /&gt;
	local quoteLeft, quoteRight = -- Test if start/end are quotation marks&lt;br /&gt;
		quotationMarks[string.sub(title,  1,  1)],&lt;br /&gt;
		quotationMarks[string.sub(title, -1, -1)]&lt;br /&gt;
	if quoteLeft or quoteRight then&lt;br /&gt;
		title = mw.html.create(&amp;quot;span&amp;quot;):wikitext(title)&lt;br /&gt;
	end&lt;br /&gt;
	if quoteLeft  then title:css(&amp;quot;padding-left&amp;quot;,  &amp;quot;0.15em&amp;quot;) end&lt;br /&gt;
	if quoteRight then title:css(&amp;quot;padding-right&amp;quot;, &amp;quot;0.15em&amp;quot;) end&lt;br /&gt;
	return &#039;&amp;quot;&#039; .. tostring(title) .. &#039;&amp;quot;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Hatnote&lt;br /&gt;
--&lt;br /&gt;
-- Produces standard hatnote text. Implements the {{hatnote}} template.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
p[&#039;&#039;] = function (frame) return p.hatnote(frame:newChild{ title = &amp;quot;Template:Hatnote&amp;quot; }) end&lt;br /&gt;
&lt;br /&gt;
function p.hatnote(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local s = args[1]&lt;br /&gt;
	if not s then&lt;br /&gt;
		return p.makeWikitextError(&lt;br /&gt;
			&#039;no text specified&#039;,&lt;br /&gt;
			&#039;Template:Hatnote#Errors&#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return p._hatnote(s, {&lt;br /&gt;
		extraclasses = args.extraclasses,&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._hatnote(s, options)&lt;br /&gt;
	checkType(&#039;_hatnote&#039;, 1, s, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;_hatnote&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local inline = options.inline&lt;br /&gt;
	local hatnote = mw.html.create(inline == 1 and &#039;span&#039; or &#039;div&#039;)&lt;br /&gt;
	local extraclasses&lt;br /&gt;
	if type(options.extraclasses) == &#039;string&#039; then&lt;br /&gt;
		extraclasses = options.extraclasses&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	hatnote&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;note&#039;)&lt;br /&gt;
		:addClass(p.defaultClasses(inline))&lt;br /&gt;
		:addClass(extraclasses)&lt;br /&gt;
		:addClass(options.selfref and &#039;selfref&#039; or nil)&lt;br /&gt;
		:wikitext(s)&lt;br /&gt;
&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = &#039;Module:Hatnote/styles.css&#039; }&lt;br /&gt;
	} .. tostring(hatnote)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Module:Message_box&amp;diff=1712</id>
		<title>Module:Message box</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Module:Message_box&amp;diff=1712"/>
		<updated>2025-07-07T13:17:12Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
local getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Message box/configuration&#039;&lt;br /&gt;
local DEMOSPACES = {talk = &#039;tmbox&#039;, image = &#039;imbox&#039;, file = &#039;imbox&#039;, category = &#039;cmbox&#039;, article = &#039;ambox&#039;, main = &#039;ambox&#039;}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(...)&lt;br /&gt;
	-- Get the title object, passing the function through pcall&lt;br /&gt;
	-- in case we are over the expensive function count limit.&lt;br /&gt;
	local success, title = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of two arrays.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, v in ipairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(ret)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(args, prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = mw.ustring.match(tostring(k), &#039;^&#039; .. prefix .. &#039;([1-9]%d*)$&#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			table.insert(nums, tonumber(num))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Box class definition&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local MessageBox = {}&lt;br /&gt;
MessageBox.__index = MessageBox&lt;br /&gt;
&lt;br /&gt;
function MessageBox.new(boxType, args, cfg)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Set the title object and the namespace.&lt;br /&gt;
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set the config for our box type.&lt;br /&gt;
	obj.cfg = cfg[boxType]&lt;br /&gt;
	if not obj.cfg then&lt;br /&gt;
		local ns = obj.title.namespace&lt;br /&gt;
		-- boxType is &amp;quot;mbox&amp;quot; or invalid input&lt;br /&gt;
		if args.demospace and args.demospace ~= &#039;&#039; then&lt;br /&gt;
			-- implement demospace parameter of mbox&lt;br /&gt;
			local demospace = string.lower(args.demospace)&lt;br /&gt;
			if DEMOSPACES[demospace] then&lt;br /&gt;
				-- use template from DEMOSPACES&lt;br /&gt;
				obj.cfg = cfg[DEMOSPACES[demospace]]&lt;br /&gt;
			elseif string.find( demospace, &#039;talk&#039; ) then&lt;br /&gt;
				-- demo as a talk page&lt;br /&gt;
				obj.cfg = cfg.tmbox&lt;br /&gt;
			else&lt;br /&gt;
				-- default to ombox&lt;br /&gt;
				obj.cfg = cfg.ombox&lt;br /&gt;
			end&lt;br /&gt;
		elseif ns == 0 then&lt;br /&gt;
			obj.cfg = cfg.ambox -- main namespace&lt;br /&gt;
		elseif ns == 6 then&lt;br /&gt;
			obj.cfg = cfg.imbox -- file namespace&lt;br /&gt;
		elseif ns == 14 then&lt;br /&gt;
			obj.cfg = cfg.cmbox -- category namespace&lt;br /&gt;
		else&lt;br /&gt;
			local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
			if nsTable and nsTable.isTalk then&lt;br /&gt;
				obj.cfg = cfg.tmbox -- any talk namespace&lt;br /&gt;
			else&lt;br /&gt;
				obj.cfg = cfg.ombox -- other namespaces or invalid input&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the arguments, and remove all blank arguments except for the ones&lt;br /&gt;
	-- listed in cfg.allowBlankParams.&lt;br /&gt;
	do&lt;br /&gt;
		local newArgs = {}&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				newArgs[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do&lt;br /&gt;
			newArgs[param] = args[param]&lt;br /&gt;
		end&lt;br /&gt;
		obj.args = newArgs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define internal data structure.&lt;br /&gt;
	obj.categories = {}&lt;br /&gt;
	obj.classes = {}&lt;br /&gt;
	-- For lazy loading of [[Module:Category handler]].&lt;br /&gt;
	obj.hasCategories = false&lt;br /&gt;
&lt;br /&gt;
	return setmetatable(obj, MessageBox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addCat(ns, cat, sort)&lt;br /&gt;
	if not cat then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if sort then&lt;br /&gt;
		cat = string.format(&#039;[[Category:%s|%s]]&#039;, cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		cat = string.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	self.hasCategories = true&lt;br /&gt;
	self.categories[ns] = self.categories[ns] or {}&lt;br /&gt;
	table.insert(self.categories[ns], cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addClass(class)&lt;br /&gt;
	if not class then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setParameters()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Get type data.&lt;br /&gt;
	self.type = args.type&lt;br /&gt;
	local typeData = cfg.types[self.type]&lt;br /&gt;
	self.invalidTypeError = cfg.showInvalidTypeError&lt;br /&gt;
		and self.type&lt;br /&gt;
		and not typeData&lt;br /&gt;
	typeData = typeData or cfg.types[cfg.default]&lt;br /&gt;
	self.typeClass = typeData.class&lt;br /&gt;
	self.typeImage = typeData.image&lt;br /&gt;
	self.typeImageNeedsLink = typeData.imageNeedsLink&lt;br /&gt;
&lt;br /&gt;
	-- Find if the box has been wrongly substituted.&lt;br /&gt;
	self.isSubstituted = cfg.substCheck and args.subst == &#039;SUBST&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	self.isSmall = cfg.allowSmall and (&lt;br /&gt;
		cfg.smallParam and args.small == cfg.smallParam&lt;br /&gt;
		or not cfg.smallParam and yesno(args.small)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	self.id = args.id&lt;br /&gt;
	self.name = args.name&lt;br /&gt;
	if self.name then&lt;br /&gt;
		self:addClass(&#039;box-&#039; .. string.gsub(self.name,&#039; &#039;,&#039;_&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.plainlinks) ~= false then&lt;br /&gt;
		self:addClass(&#039;plainlinks&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs(cfg.classes or {}) do&lt;br /&gt;
		self:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self:addClass(cfg.smallClass or &#039;mbox-small&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(self.typeClass)&lt;br /&gt;
	self:addClass(args.class)&lt;br /&gt;
	self.style = args.style&lt;br /&gt;
	self.attrs = args.attrs&lt;br /&gt;
&lt;br /&gt;
	-- Set text style.&lt;br /&gt;
	self.textstyle = args.textstyle&lt;br /&gt;
	&lt;br /&gt;
	-- Set image classes.&lt;br /&gt;
	self.imageRightClass = args.imagerightclass or args.imageclass&lt;br /&gt;
	self.imageLeftClass = args.imageleftclass or args.imageclass&lt;br /&gt;
&lt;br /&gt;
	-- Find if we are on the template page or not. This functionality is only&lt;br /&gt;
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory&lt;br /&gt;
	-- and cfg.templateCategoryRequireName are set.&lt;br /&gt;
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields&lt;br /&gt;
	if self.useCollapsibleTextFields&lt;br /&gt;
		or cfg.templateCategory&lt;br /&gt;
		and cfg.templateCategoryRequireName&lt;br /&gt;
	then&lt;br /&gt;
		if self.name then&lt;br /&gt;
			local templateName = mw.ustring.match(&lt;br /&gt;
				self.name,&lt;br /&gt;
				&#039;^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$&#039;&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = &#039;Template:&#039; .. templateName&lt;br /&gt;
			self.templateTitle = getTitleObject(templateName)&lt;br /&gt;
		end&lt;br /&gt;
		self.isTemplatePage = self.templateTitle&lt;br /&gt;
			and mw.title.equals(self.title, self.templateTitle)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Process data for collapsible text fields. At the moment these are only&lt;br /&gt;
	-- used in {{ambox}}.&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- Get the self.issue value.&lt;br /&gt;
		if self.isSmall and args.smalltext then&lt;br /&gt;
			self.issue = args.smalltext&lt;br /&gt;
		else&lt;br /&gt;
			local sect&lt;br /&gt;
			if args.sect == &#039;&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. (cfg.sectionDefault or &#039;page&#039;)&lt;br /&gt;
			elseif type(args.sect) == &#039;string&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == &#039;string&#039; and issue ~= &#039;&#039; and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == &#039;string&#039; and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			table.insert(issues, sect)&lt;br /&gt;
			table.insert(issues, issue)&lt;br /&gt;
			table.insert(issues, text)&lt;br /&gt;
			self.issue = table.concat(issues, &#039; &#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get the self.talk value.&lt;br /&gt;
		local talk = args.talk&lt;br /&gt;
		-- Show talk links on the template page or template subpages if the talk&lt;br /&gt;
		-- parameter is blank.&lt;br /&gt;
		if talk == &#039;&#039;&lt;br /&gt;
			and self.templateTitle&lt;br /&gt;
			and (&lt;br /&gt;
				mw.title.equals(self.templateTitle, self.title)&lt;br /&gt;
				or self.title:isSubpageOf(self.templateTitle)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			talk = &#039;#&#039;&lt;br /&gt;
		elseif talk == &#039;&#039; then&lt;br /&gt;
			talk = nil&lt;br /&gt;
		end&lt;br /&gt;
		if talk then&lt;br /&gt;
			-- If the talk value is a talk page, make a link to that page. Else&lt;br /&gt;
			-- assume that it&#039;s a section heading, and make a link to the talk&lt;br /&gt;
			-- page of the current page with that section heading.&lt;br /&gt;
			local talkTitle = getTitleObject(talk)&lt;br /&gt;
			local talkArgIsTalkPage = true&lt;br /&gt;
			if not talkTitle or not talkTitle.isTalkPage then&lt;br /&gt;
				talkArgIsTalkPage = false&lt;br /&gt;
				talkTitle = getTitleObject(&lt;br /&gt;
					self.title.text,&lt;br /&gt;
					mw.site.namespaces[self.title.namespace].talk.id&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if talkTitle and talkTitle.exists then&lt;br /&gt;
                local talkText&lt;br /&gt;
                if self.isSmall then&lt;br /&gt;
                    local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. (talk == &#039;#&#039; and &#039;&#039; or &#039;#&#039;) .. talk)&lt;br /&gt;
                    talkText = string.format(&#039;([[%s|talk]])&#039;, talkLink)&lt;br /&gt;
                else&lt;br /&gt;
                    talkText = &#039;Relevant discussion may be found on&#039;&lt;br /&gt;
                    if talkArgIsTalkPage then&lt;br /&gt;
                        talkText = string.format(&lt;br /&gt;
                            &#039;%s [[%s|%s]].&#039;,&lt;br /&gt;
                            talkText,&lt;br /&gt;
                            talk,&lt;br /&gt;
                            talkTitle.prefixedText&lt;br /&gt;
                        )&lt;br /&gt;
                    else&lt;br /&gt;
                        talkText = string.format(&lt;br /&gt;
                            &#039;%s the [[%s&#039; .. (talk == &#039;#&#039; and &#039;&#039; or &#039;#&#039;) .. &#039;%s|talk page]].&#039;,&lt;br /&gt;
                            talkText,&lt;br /&gt;
                            talkTitle.prefixedText,&lt;br /&gt;
                            talk&lt;br /&gt;
                        )&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
				self.talk = talkText&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get other values.&lt;br /&gt;
		self.fix = args.fix ~= &#039;&#039; and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= &#039;&#039; then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == &#039;&#039; and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate(&#039;F Y&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = string.format(&amp;quot; &amp;lt;span class=&#039;date-container&#039;&amp;gt;&amp;lt;i&amp;gt;(&amp;lt;span class=&#039;date&#039;&amp;gt;%s&amp;lt;/span&amp;gt;)&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&lt;br /&gt;
		if yesno(args.removalnotice) then&lt;br /&gt;
			self.removalNotice = cfg.removalNotice&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the non-collapsible text field. At the moment this is used by all box&lt;br /&gt;
	-- types other than ambox, and also by ambox when small=yes.&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self.text = args.smalltext or args.text&lt;br /&gt;
	else&lt;br /&gt;
		self.text = args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the below row.&lt;br /&gt;
	self.below = cfg.below and args.below&lt;br /&gt;
&lt;br /&gt;
	-- General image settings.&lt;br /&gt;
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
&lt;br /&gt;
	-- Left image settings.&lt;br /&gt;
	local imageLeft = self.isSmall and args.smallimage or args.image&lt;br /&gt;
	if cfg.imageCheckBlank and imageLeft ~= &#039;blank&#039; and imageLeft ~= &#039;none&#039;&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= &#039;none&#039;&lt;br /&gt;
	then&lt;br /&gt;
		self.imageLeft = imageLeft&lt;br /&gt;
		if not imageLeft then&lt;br /&gt;
			local imageSize = self.isSmall&lt;br /&gt;
				and (cfg.imageSmallSize or &#039;30x30px&#039;)&lt;br /&gt;
				or &#039;40x40px&#039;&lt;br /&gt;
			self.imageLeft = string.format(&#039;[[File:%s|%s%s|alt=]]&#039;, self.typeImage&lt;br /&gt;
				or &#039;Information icon4.svg&#039;, imageSize, self.typeImageNeedsLink and &amp;quot;&amp;quot; or &amp;quot;|link=&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Right image settings.&lt;br /&gt;
	local imageRight = self.isSmall and args.smallimageright or args.imageright&lt;br /&gt;
	if not (cfg.imageRightNone and imageRight == &#039;none&#039;) then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- set templatestyles&lt;br /&gt;
	self.base_templatestyles = cfg.templatestyles&lt;br /&gt;
	self.templatestyles = args.templatestyles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setMainspaceCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	if not cfg.allowMainspaceCategories then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for _, prefix in ipairs{&#039;cat&#039;, &#039;category&#039;, &#039;all&#039;} do&lt;br /&gt;
		args[prefix .. &#039;1&#039;] = args[prefix]&lt;br /&gt;
		nums = union(nums, getArgNums(args, prefix))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The following is roughly equivalent to the old {{Ambox/category}}.&lt;br /&gt;
	local date = args.date&lt;br /&gt;
	date = type(date) == &#039;string&#039; and date&lt;br /&gt;
	local preposition = &#039;from&#039;&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		local mainCat = args[&#039;cat&#039; .. tostring(num)]&lt;br /&gt;
			or args[&#039;category&#039; .. tostring(num)]&lt;br /&gt;
		local allCat = args[&#039;all&#039; .. tostring(num)]&lt;br /&gt;
		mainCat = type(mainCat) == &#039;string&#039; and mainCat&lt;br /&gt;
		allCat = type(allCat) == &#039;string&#039; and allCat&lt;br /&gt;
		if mainCat and date and date ~= &#039;&#039; then&lt;br /&gt;
			local catTitle = string.format(&#039;%s %s %s&#039;, mainCat, preposition, date)&lt;br /&gt;
			self:addCat(0, catTitle)&lt;br /&gt;
			catTitle = getTitleObject(&#039;Category:&#039; .. catTitle)&lt;br /&gt;
			if not catTitle or not catTitle.exists then&lt;br /&gt;
				self:addCat(0, &#039;Articles with invalid date parameter in template&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mainCat and (not date or date == &#039;&#039;) then&lt;br /&gt;
			self:addCat(0, mainCat)&lt;br /&gt;
		end&lt;br /&gt;
		if allCat then&lt;br /&gt;
			self:addCat(0, allCat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setTemplateCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Add template categories.&lt;br /&gt;
	if cfg.templateCategory then&lt;br /&gt;
		if cfg.templateCategoryRequireName then&lt;br /&gt;
			if self.isTemplatePage then&lt;br /&gt;
				self:addCat(10, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(10, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error categories.&lt;br /&gt;
	if cfg.templateErrorCategory then&lt;br /&gt;
		local templateErrorCategory = cfg.templateErrorCategory&lt;br /&gt;
		local templateCat, templateSort&lt;br /&gt;
		if not self.name and not self.title.isSubpage then&lt;br /&gt;
			templateCat = templateErrorCategory&lt;br /&gt;
		elseif self.isTemplatePage then&lt;br /&gt;
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}&lt;br /&gt;
			local count = 0&lt;br /&gt;
			for i, param in ipairs(paramsToCheck) do&lt;br /&gt;
				if not args[param] then&lt;br /&gt;
					count = count + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if count &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = tostring(count)&lt;br /&gt;
			end&lt;br /&gt;
			if self.categoryNums and #self.categoryNums &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = &#039;C&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(10, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setAllNamespaceCategories()&lt;br /&gt;
	-- Set categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.title.namespace == 0 and &#039;Main:&#039; or &#039;&#039;) .. self.title.prefixedText&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Wikipedia message box parameter needs fixing&#039;, allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Pages with incorrectly substituted templates&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setCategories()&lt;br /&gt;
	if self.title.namespace == 0 then&lt;br /&gt;
		self:setMainspaceCategories()&lt;br /&gt;
	elseif self.title.namespace == 10 then&lt;br /&gt;
		self:setTemplateCategories()&lt;br /&gt;
	end&lt;br /&gt;
	self:setAllNamespaceCategories()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:renderCategories()&lt;br /&gt;
	if not self.hasCategories then&lt;br /&gt;
		-- No categories added, no need to pass them to Category handler so,&lt;br /&gt;
		-- if it was invoked, it would return the empty string.&lt;br /&gt;
		-- So we shortcut and return the empty string.&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	return require(&#039;Module:Category handler&#039;)._main{&lt;br /&gt;
		main = table.concat(self.categories[0] or {}),&lt;br /&gt;
		template = table.concat(self.categories[10] or {}),&lt;br /&gt;
		all = table.concat(self.categories.all or {}),&lt;br /&gt;
		nocat = self.args.nocat,&lt;br /&gt;
		page = self.args.page&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:export()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root:tag(&#039;b&#039;)&lt;br /&gt;
			:addClass(&#039;error&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&#039;,&lt;br /&gt;
				mw.text.nowiki(&#039;{{&#039;), self.name, self.name, mw.text.nowiki(&#039;}}&#039;)&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	root:wikitext(frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;,&lt;br /&gt;
		args = { src = self.base_templatestyles },&lt;br /&gt;
	})&lt;br /&gt;
	-- Add support for a single custom templatestyles sheet. Undocumented as&lt;br /&gt;
	-- need should be limited and many templates using mbox are substed; we&lt;br /&gt;
	-- don&#039;t want to spread templatestyles sheets around to arbitrary places&lt;br /&gt;
	if self.templatestyles then&lt;br /&gt;
		root:wikitext(frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = self.templatestyles },&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box table.&lt;br /&gt;
	local boxTable = root:tag(&#039;table&#039;)&lt;br /&gt;
	boxTable:attr(&#039;id&#039;, self.id or nil)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable:addClass(class or nil)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		:cssText(self.style or nil)&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;presentation&#039;)&lt;br /&gt;
&lt;br /&gt;
	if self.attrs then&lt;br /&gt;
		boxTable:attr(self.attrs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable:tag(&#039;tr&#039;)&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-image&#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageLeftCell so that the image&lt;br /&gt;
			-- is inside it. Divs use style=&amp;quot;width: 52px;&amp;quot;, which limits the&lt;br /&gt;
			-- image width to 52px. If any images in a div are wider than that,&lt;br /&gt;
			-- they may overlap with the text or cause other display problems.&lt;br /&gt;
			imageLeftCell = imageLeftCell:tag(&#039;div&#039;):addClass(&#039;mbox-image-div&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell&lt;br /&gt;
			:addClass(self.imageLeftClass)&lt;br /&gt;
			:wikitext(self.imageLeft or nil)&lt;br /&gt;
	elseif self.imageEmptyCell then&lt;br /&gt;
		-- Some message boxes define an empty cell if no image is specified, and&lt;br /&gt;
		-- some don&#039;t. The old template code in templates where empty cells are&lt;br /&gt;
		-- specified gives the following hint: &amp;quot;No image. Cell with some width&lt;br /&gt;
		-- or padding necessary for text cell to have 100% width.&amp;quot;&lt;br /&gt;
		row:tag(&#039;td&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-empty-cell&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-text&#039;)&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell:cssText(self.textstyle or nil)&lt;br /&gt;
		local textCellDiv = textCell:tag(&#039;div&#039;)&lt;br /&gt;
		textCellDiv&lt;br /&gt;
			:addClass(&#039;mbox-text-span&#039;)&lt;br /&gt;
			:wikitext(self.issue or nil)&lt;br /&gt;
		if (self.talk or self.fix) then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.talk and (&#039; &#039; .. self.talk) or nil)&lt;br /&gt;
				:wikitext(self.fix and (&#039; &#039; .. self.fix) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		textCellDiv:wikitext(self.date and (&#039; &#039; .. self.date) or nil)&lt;br /&gt;
		if self.info and not self.isSmall then&lt;br /&gt;
			textCellDiv&lt;br /&gt;
				:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.info and (&#039; &#039; .. self.info) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		if self.removalNotice then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:tag(&#039;i&#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;quot; (%s)&amp;quot;, self.removalNotice))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.text or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-imageright&#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageRightCell so that the image&lt;br /&gt;
			-- is inside it.&lt;br /&gt;
			imageRightCell = imageRightCell:tag(&#039;div&#039;):addClass(&#039;mbox-image-div&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			:addClass(self.imageRightClass)&lt;br /&gt;
			:wikitext(self.imageRight or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		boxTable:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, self.imageRight and &#039;3&#039; or &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;mbox-text&#039;)&lt;br /&gt;
				:cssText(self.textstyle or nil)&lt;br /&gt;
				:wikitext(self.below or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-invalid-type&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&#039;,&lt;br /&gt;
				self.type or &#039;&#039;&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root:wikitext(self:renderCategories() or nil)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p, mt = {}, {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- For testing.&lt;br /&gt;
	return {&lt;br /&gt;
		MessageBox = MessageBox&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(boxType, args, cfgTables)&lt;br /&gt;
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))&lt;br /&gt;
	box:setParameters()&lt;br /&gt;
	box:setCategories()&lt;br /&gt;
	return box:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mt.__index(t, k)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Template_link&amp;diff=1710</id>
		<title>Template:Template link</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Template_link&amp;diff=1710"/>
		<updated>2025-07-07T13:17:12Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;amp;#123;&amp;amp;#123;&amp;lt;/span&amp;gt;[[Template:{{{1}}}|{{{1}}}]]&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;amp;#125;&amp;amp;#125;&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:See_also&amp;diff=1708</id>
		<title>Template:See also</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:See_also&amp;diff=1708"/>
		<updated>2025-07-07T13:17:12Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Labelled list hatnote|labelledList|See also|ifexists={{{ifexists|true}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Those_Whom_God_Loves&amp;diff=1706</id>
		<title>Those Whom God Loves</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Those_Whom_God_Loves&amp;diff=1706"/>
		<updated>2025-07-07T13:15:37Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
According to the Qur&#039;an, who are the individuals that God loves?&lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
&lt;br /&gt;
The [[Qur&#039;an]] explicitly mentions individuals whom [[God]] loves. These include those who practice goodness (&#039;&#039;[[Muḥsinīn]]&#039;&#039;), the pious (&#039;&#039;[[Muttaqīn]]&#039;&#039;), the patient (&#039;&#039;[[Ṣābirīn]]&#039;&#039;), the pure (&#039;&#039;[[Muṭahharīn]]&#039;&#039;), the repentant (&#039;&#039;[[Tawwābīn]]&#039;&#039;), and the just (&#039;&#039;[[Muqsiṭīn]]&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== The Good-Doers (Muḥsinīn) ==&lt;br /&gt;
{{Main Article|Muḥsinīn in the Qur&#039;an}}&lt;br /&gt;
God declares in the Qur&#039;an His love for those who act with excellence and kindness: {{quran|وَأَحْسِنُوا إِنَّ اللَّهَ یُحِبُّ الْمُحْسِنِینَ|ترجمه=And do good; indeed, Allah loves the doers of good.|سوره=Al-Baqarah|آیه=195}}.&lt;br /&gt;
This love is emphasized in five verses, including:&lt;br /&gt;
* [[Surah al-Baqarah]] (2:195)&lt;br /&gt;
* [[Surah Āl ʿImrān]] (3:134, 3:148)&lt;br /&gt;
* [[Surah al-Mā&#039;idah]] (5:13, 5:93)&lt;br /&gt;
[[Al-ʿAllāmah Ṭabāṭabāʾī]] defines &#039;&#039;iḥsān&#039;&#039; as performing any act in the best possible manner and solely for [[God]]&#039;s sake.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 4, p. 28.&amp;lt;/ref&amp;gt; God&#039;s love for the &#039;&#039;[[Muḥsinīn]]&#039;&#039; has both worldly and otherworldly effects, such as guidance, divine assistance, mercy, exalted status, acceptance of deeds, and immunity from punishment.&amp;lt;ref&amp;gt;Abū Dharr Tashakkurī Ṣāliḥ, &amp;quot;Āthār Maḥabbat Khudāwand bih Muḥsinīn dar Qurʾān,&amp;quot; Maʿrifat, Imām Khomeinī Educational and Research Institute, no. 180.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Repentant (Tawwābīn) and the Pure (Muṭahharīn) ==&lt;br /&gt;
According to Surah al-Baqarah (2:222), God loves those who constantly repent and purify themselves.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 2, p. 317.&amp;lt;/ref&amp;gt; [[Repentance]] (tawbah) refers to returning to God, while the term Tawwābīn denotes those who engage in frequent repentance.&amp;lt;ref&amp;gt;Ṭūsī, Muḥammad b. Ḥasan, al-Tibyān fī Tafsīr al-Qurʾān, Beirut: Dār Iḥyāʾ al-Turāth al-ʿArabī, 1st edition, n.d., vol. 6, p. 468.&amp;lt;/ref&amp;gt; God accepts all sincere forms of repentance—whether expressed through prayer, action, or true belief.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 2, p. 318.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In another verse, God affirms His love for the pure (Muṭahharīn): {{quran||ترجمه=Allah loves those who purify themselves.|سوره=At-Tawbah|آیه=108}}. Purity encompasses both spiritual cleanliness—freedom from sin and idolatry—and physical hygiene.&amp;lt;ref&amp;gt;Makāram Shīrāzī, Nāṣir, Tafsīr-i Namūneh, Tehran: Dār al-Kutub al-Islāmiyyah, 10th edition, 1371 SH, vol. 8, p. 140.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Pious (Muttaqīn) ==&lt;br /&gt;
{{See Also|Attributes of the Pious in the Qur&#039;an}}&lt;br /&gt;
God&#039;s love for the pious is mentioned in [[Surah al-Tawbah]] (9:4, 9:7) and [[Surah Āl ʿImrān]] (3:76). In Qur&#039;anic terminology, [[taqwā]] (piety) refers to avoiding forbidden actions and maintaining a God-conscious life.&amp;lt;ref&amp;gt;Ṭabāṭabāʾī, Muḥammad Ḥusayn, al-Mīzān fī Tafsīr al-Qurʾān, trans. Muḥammad Bāqir Mūsavī Hamadānī, Qom: Dafter Intishārāt Islāmī, 5th edition, 1374 SH, vol. 9, p. 202.&amp;lt;/ref&amp;gt; Groups such as wrongdoers, deviators, rebels, oppressors, and criminals stand in opposition to the pious (Muttaqīn).&amp;lt;ref&amp;gt;ʿAbbāsī, Bābak, &amp;quot;Taqwā,&amp;quot; Dāneshnāmeh-yi Buzurg-i Islāmī, Islamic Encyclopaedia Foundation, 1393 SH, vol. 7, under the entry.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[Qur&#039;an]] outlines five qualities of the pious in Surah al-Baqarah:&lt;br /&gt;
* [[Belief in the unseen]],&lt;br /&gt;
* Establishment of [[Prayer|prayer]],&lt;br /&gt;
* Charity from their wealth,&lt;br /&gt;
* Faith in the revelations to the Prophet Muhammad (PBUH) and previous messengers,&lt;br /&gt;
* Certainty in the Hereafter.&amp;lt;ref&amp;gt;Sūrat al-Baqarah, verses 2–4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In [[Surah al-Ṣaff]]&amp;lt;ref&amp;gt;Al-Saff:4&amp;lt;/ref&amp;gt; and [[Surah al-Mā&#039;idah]]&amp;lt;ref&amp;gt;al-Mā&#039;idah:54&amp;lt;/ref&amp;gt;, God expresses His love for those who strive for His cause: {{quran|إِنَّ اللَّهَ یُحِبُّ الَّذِینَ یُقَاتِلُونَ فِی سَبِیلِهِ|ترجمه=Indeed, God loves those who fight in His cause.|سوره=Al-Saff|آیه=4}}.&lt;br /&gt;
&lt;br /&gt;
== Those Who Rely Upon God (Mutawakkilīn) ==&lt;br /&gt;
{{Main Article|Tawakkul (Reliance on God)}}&lt;br /&gt;
God also loves those who place their trust in Him: {{quran|إِنَّ اللَّهَ یُحِبُّ الْمُتَوَکِّلینَ|ترجمه=Indeed, God loves those who rely upon Him.|سوره=Al-&#039;Imran|آیه=159}}.&lt;br /&gt;
Tawakkul refers to placing trust and reliance upon God.&amp;lt;ref&amp;gt;Makāram Shīrāzī, Nāṣir, Tafsīr-i Namūneh, Tehran: Dār al-Kutub al-Islāmiyyah, 10th edition, 1371 SH, vol. 15, p. 541.&amp;lt;/ref&amp;gt; It is considered one of the gateways to faith.&amp;lt;ref&amp;gt;Makāram Shīrāzī, Nāṣir, Akhlāq dar Qurʾān, Qom: Madrasa ʿAlī b. Abī Ṭālib, 1st edition, 1377 SH, vol. 2, p. 266.&amp;lt;/ref&amp;gt; A person who practices tawakkul recognizes that God is the provider of sustenance and the caretaker of all affairs, relying solely on Him without hoping for assistance from others.&amp;lt;ref&amp;gt;Ḥusaynī, Mālik et al., &amp;quot;Tawakkul,&amp;quot; Dāneshnāmeh-yi Jahān-i Islām, Islamic Encyclopaedia Foundation, 1393 SH, vol. 8, under the entry.&amp;lt;/ref&amp;gt; The Qur&#039;an emphasizes that God loves those who trust in Him and do not depend on others.&amp;lt;ref&amp;gt;Ṭabrisī, Faḍl, Majmaʿ al-Bayān fī Tafsīr al-Qurʾān, trans. by a group of translators, Tehran: Farāhānī, 1st edition, n.d., vol. 4, p. 315.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exegetes define the essence of tawakkul as contentment and submission to God&#039;s [[decree and destiny]].&amp;lt;ref&amp;gt;Maybudī, Tafsīr Kashf al-Asrār wa ʿUddat al-Abrār, cited in Dāneshnāmeh-yi Jahān-i Islām, Islamic Encyclopaedia Foundation, vol. 1, p. 4062.&amp;lt;/ref&amp;gt; Al-Ghazālī, one of Islam&#039;s greatest scholars, describes tawakkul as: &lt;br /&gt;
::A station of the closest to God&amp;quot; and defines it as the heart&#039;s reliance on God.&amp;lt;ref&amp;gt;Ghazālī, Kimiyāʾ-yi Saʿādat, cited in Shahīdī, Sayyid Jaʿfar, Sharḥ-i Masnavī, vol. 6, p. 353.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ayatollah Ja&#039;far Subhani]] explains that [[tawakkul]] means entrusting one&#039;s affairs to God. However, this does not imply disregarding the natural laws of cause and effect or passively waiting for miraculous interventions. Instead, it encourages active effort alongside a firm trust in God&#039;s ultimate will and power.&amp;lt;ref&amp;gt;Ṣubḥānī, Jaʿfar, Manṣūr-i Jāvīd, vol. 3, p. 419.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Patient (Ṣābirīn) ==&lt;br /&gt;
[[God]] praises the patient, those who endure trials and maintain their faith and efforts despite challenges: {{quran|وَ اللَّهُ یُحِبُّ الصَّابِرینَ|ترجمه=And God loves the patient.|سوره=An-Nur|آیه=146}}.&lt;br /&gt;
&lt;br /&gt;
It is narrated that the [[Prophet Muhammad (PBUH)]] supplicated to God for a certainty (yaqīn) that would make the hardships of this world bearable for him.&amp;lt;ref&amp;gt;Muḥammad Ṣādiq ʿĀrif, Rāh-i Rūshan (trans. al-Maḥajja al-Bayḍāʾ), al-Fayḍ al-Kāshānī, vol. 7, p. 160.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Just (Muqsiṭīn) ==&lt;br /&gt;
[[The Qur&#039;an]] highlights God&#039;s love for the just in three instances:&lt;br /&gt;
{{quran|إِنَّ اللَّهَ یُحِبُّ الْمُقْسِطِینَ|translation=Indeed, God loves the just.|sura=Al-Ma&#039;ida|verse=8}}&amp;lt;ref&amp;gt;Sūrat al-Māʾidah, verse 42; Sūrat al-Ḥujurāt, verse 9; Sūrat al-Mumtaḥanah, verse 8.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Justice]], a fundamental principle in [[Islam]], is upheld as the goal of [[divine revelation]] and the [[mission of the Prophets]].&amp;lt;ref&amp;gt;Ṣubḥānī, Shaykh Jaʿfar, Manṣūr-i Jāvīd, vol. 13, p. 168.&amp;lt;/ref&amp;gt; The Qur&#039;an emphasizes justice as the antithesis of oppression and an essential quality for human interactions.&amp;lt;ref&amp;gt;Sūrat al-Ḥadīd, verse 25.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
{{footnotes|2}}&lt;br /&gt;
&lt;br /&gt;
[[fa: کسانی که خداوند دوست می‌دارد]]&lt;br /&gt;
[[bn: আল্লাহ যাদেরকে পছন্দ করেন]]&lt;br /&gt;
[[ur: پروردگار عالم جنہیں دوست رکھتا ہے]]&lt;br /&gt;
[[ru: Кто любимцы Бога]]&lt;br /&gt;
[[ms: Orang-orang Yang Dicintai Allah Swt]]&lt;br /&gt;
[[ar: الذين يحبهم الله]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Large_Arabic&amp;diff=1705</id>
		<title>Template:Large Arabic</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Large_Arabic&amp;diff=1705"/>
		<updated>2025-07-07T13:13:24Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Redirected page to Template:Arabic large&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[template:arabic large]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1704</id>
		<title>Template:Dua</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1704"/>
		<updated>2025-07-07T13:12:51Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;«&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{translation|}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px; text-align: right&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px;&amp;quot;&amp;gt;{{trim|{{{1|}}} }}&amp;lt;/span&amp;gt;{{#if:{{{ref|}}}|{{#tag:ref|{{{ref|}}}}} }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: 0.6em; text-align: right; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;»&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{documentation}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;translation&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ref&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;نمایش دعا به صورت مجزا از بقیه متن&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;ref&amp;quot;,&lt;br /&gt;
		&amp;quot;translation&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1703</id>
		<title>Template:Dua</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1703"/>
		<updated>2025-07-07T13:11:37Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;«&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{translation|}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px; text-align: right&amp;quot;&amp;gt;{{trim|{{{1|}}} }}&amp;lt;/span&amp;gt;{{#if:{{{ref|}}}|{{#tag:ref|{{{ref|}}}}} }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: 0.6em; text-align: right; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;»&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{documentation}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;translation&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ref&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;نمایش دعا به صورت مجزا از بقیه متن&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;ref&amp;quot;,&lt;br /&gt;
		&amp;quot;translation&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1702</id>
		<title>Template:Dua</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1702"/>
		<updated>2025-07-07T13:10:57Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;«&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{translation|}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px;&amp;quot;&amp;gt;{{trim|{{{1|}}} }}&amp;lt;/span&amp;gt;{{#if:{{{ref|}}}|{{#tag:ref|{{{ref|}}}}} }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: 0.6em; text-align: right; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;»&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{documentation}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;translation&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ref&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;نمایش دعا به صورت مجزا از بقیه متن&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;ref&amp;quot;,&lt;br /&gt;
		&amp;quot;translation&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1701</id>
		<title>Template:Dua</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1701"/>
		<updated>2025-07-07T13:08:54Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;«&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: 0.6em; text-align: right; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;»&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px;&amp;quot;&amp;gt;{{trim|{{{1|}}} }}&amp;lt;/span&amp;gt;{{#if:{{{ref|}}}|{{#tag:ref|{{{ref|}}}}} }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{translation|}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{documentation}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;translation&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ref&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;نمایش دعا به صورت مجزا از بقیه متن&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;ref&amp;quot;,&lt;br /&gt;
		&amp;quot;translation&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1700</id>
		<title>Template:Dua</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1700"/>
		<updated>2025-07-07T13:06:31Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;«&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px;&amp;quot;&amp;gt;{{trim|{{{1|}}} }}&amp;lt;/span&amp;gt;{{#if:{{{ref|}}}|{{#tag:ref|{{{ref|}}}}} }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{translation|}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: 0.6em; text-align: right; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;»&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{documentation}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;translation&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ref&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;نمایش دعا به صورت مجزا از بقیه متن&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;ref&amp;quot;,&lt;br /&gt;
		&amp;quot;translation&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1699</id>
		<title>Template:Dua</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:Dua&amp;diff=1699"/>
		<updated>2025-07-07T13:04:49Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Created page with &amp;quot;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;« &amp;lt;/td&amp;gt; &amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;cquote pullquote&amp;quot; role=&amp;quot;presentation&amp;quot; style=&amp;quot;margin:auto; border-collapse: collapse; border: none; background-color: #c3ffc340; width: auto; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: .6em; text-align: left; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;«&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td lang=&amp;quot;ar&amp;quot; style=&amp;quot;border: none; padding: 4px 10px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:amiri; font-size: 20px;&amp;quot;&amp;gt;{{trim|{{{1|}}} }}&amp;lt;/span&amp;gt;{{#if:{{{ارجاع|}}}|{{#tag:ref|{{{ارجاع|}}}}} }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{ترجمه|}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;hideinmobile&amp;quot; style=&amp;quot;width: 20px; vertical-align: middle; border: none; color: green; font-size: 50px; font-family: amiri; line-height: 0.6em; text-align: right; padding: 10px 10px 30px 10px&amp;quot;&amp;gt;»&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{documentation}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ترجمه&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ارجاع&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;نمایش دعا به صورت مجزا از بقیه متن&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;ارجاع&amp;quot;,&lt;br /&gt;
		&amp;quot;ترجمه&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C&amp;diff=1698</id>
		<title>Template:ارزیابی</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C&amp;diff=1698"/>
		<updated>2025-07-07T13:04:02Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:%D8%AA%DA%A9%D9%85%DB%8C%D9%84_%D9%85%D9%82%D8%A7%D9%84%D9%87&amp;diff=1697</id>
		<title>Template:تکمیل مقاله</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:%D8%AA%DA%A9%D9%85%DB%8C%D9%84_%D9%85%D9%82%D8%A7%D9%84%D9%87&amp;diff=1697"/>
		<updated>2025-07-07T13:03:36Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:End_of_text&amp;diff=1688</id>
		<title>Template:End of text</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:End_of_text&amp;diff=1688"/>
		<updated>2025-04-23T06:27:08Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Redirected page to Template:Text end&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[template:text end]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=1687</id>
		<title>Template:اصلی</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:%D8%A7%D8%B5%D9%84%DB%8C&amp;diff=1687"/>
		<updated>2025-04-23T06:26:44Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Redirected page to Template:Main&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[template:main]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Template:%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86_%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D8%AF&amp;diff=1686</id>
		<title>Template:همچنین ببینید</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Template:%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86_%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D8%AF&amp;diff=1686"/>
		<updated>2025-04-23T06:26:24Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: Redirected page to Template:See also&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[template:see also]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Arrogance&amp;diff=1685</id>
		<title>Arrogance</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Arrogance&amp;diff=1685"/>
		<updated>2025-04-23T06:25:20Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Remedies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}}&lt;br /&gt;
What is arrogance? &lt;br /&gt;
{{question end}}&lt;br /&gt;
{{answer}}&lt;br /&gt;
{{portal|واژه‌ها}}&lt;br /&gt;
{{رذائل اخلاقی}}&lt;br /&gt;
&#039;&#039;&#039;Arrogance&#039;&#039;&#039;, or &#039;&#039;&#039;pride&#039;&#039;&#039;, is viewing oneself as superior to others while belittling them through words or actions.&lt;br /&gt;
A sense of worthlessness and inner humiliation, along with the influence of [[Satan]], are seen as causes of arrogance. Remedies for arrogance include self-awareness, remembrance of death, and strengthening self-esteem.&lt;br /&gt;
&lt;br /&gt;
At times, arrogance is directed toward God, which is considered the most severe form. Arrogance can also target prophets and the righteous, where a person considers themselves above them and thus refuses to follow their guidance.&lt;br /&gt;
&lt;br /&gt;
== Conceptual Definition  ==&lt;br /&gt;
“&#039;&#039;Kibr&#039;&#039;” (&#039;&#039;كبر&#039;&#039;) refers to considering oneself superior to others&amp;lt;ref&amp;gt;1.	Rāghib al-Iṣfahānī, al-Mufradāt fī Gharīb al-Qurʾān, Tehran, Nashr-i Kitāb, 1404 AH, pp. 421–422; ʿIlm Akhlāq-e Islāmī, trans. Jāmiʿ al-Saʿādāt, Intishārāt Ḥikmat, 3rd ed., 1363 SH, vol. 1, p. 417.&amp;lt;/ref&amp;gt;, while “&#039;&#039;Takabbur&#039;&#039;” (&#039;&#039;تكبر&#039;&#039;) is the manifestation of this in words and actions. If this feeling of self-superiority remains hidden, it is termed “&#039;&#039;Kibr&#039;&#039;”, but when it becomes visible and one demeans others through speech or behavior, it is known as “&#039;&#039;Takabbur&#039;&#039;”.&amp;lt;ref&amp;gt;2.	Narāqī, Mullā Aḥmad, Miʿrāj al-Saʿādah, Mashhad, Intishārāt Nadā-yi Islāmī, 1st ed., 1362 SH, p. 176.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Persian, the terms &amp;quot;&#039;&#039;غرور&#039;&#039;&amp;quot; (&#039;&#039;Ghorur&#039;&#039;) and &amp;quot;&#039;&#039;تکبر&#039;&#039;&amp;quot; (&#039;&#039;Takabbur&#039;&#039;) are often used interchangeably, though in Arabic, &amp;quot;&#039;&#039;غرور&#039;&#039;&amp;quot; (&#039;&#039;Ghorur&#039;&#039;) specifically means deception, differing from Takabbur.&lt;br /&gt;
&lt;br /&gt;
=== Distinction from Conceit (ʻUjb) ===&lt;br /&gt;
{{همچنین ببینید|Conceit (ʻUjb)}}&lt;br /&gt;
[[Conceit]] (&#039;&#039;ʻUjb&#039;&#039;) is self-admiration.&amp;lt;ref&amp;gt;Imām Khomeinī, Sayyid Rūḥ Allāh, Sharḥ Chehel Ḥadīth, Muʾassasah Tanzīm wa Nashr Āthār Imām Khomeinī, 2nd ed., 1371 SH, p. 79.&amp;lt;/ref&amp;gt; A conceited person views themselves highly but does not necessarily consider themselves superior to others.&amp;lt;ref&amp;gt;Narāqī, Mullā Muḥammad Mahdī, Jāmiʿ al-Saʿādāt, annotated and edited by Sayyid Muḥammad Kalāntar, Maṭbaʿah al-Najaf, Muʾassasah Maṭbūʿāt-i Ismāʿīliyyān, vol. 1, pp. 344–351.&amp;lt;/ref&amp;gt; In contrast, an arrogant person regards themselves as superior and looks down on others.&amp;lt;ref&amp;gt;Imām Khomeinī, Sayyid Rūḥ Allāh, Sharḥ Chehel Ḥadīth, Muʾassasah Tanzīm wa Nashr Āthār Imām Khomeinī, 2nd ed., 1371 SH, p. 79.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Difference Between Divine and Human Arrogance ===&lt;br /&gt;
{{همچنین ببینید|The Meaning of Divine Arrogance}}&lt;br /&gt;
The difference between arrogance as an attribute of [[God]] and [[humans]] lies in its origin. Divine arrogance stems from [[God’s knowledge]], [[God’s power|power]], and [[God’s wisdom|wisdom]], while human arrogance arises from feelings of inferiority, ignorance, and weak will. &lt;br /&gt;
&lt;br /&gt;
[[Imam Ja&#039;far al-Sadiq (AS)]] narrates that human arrogance is rooted in the sense of insignificance and lowliness a person feels within themselves.&amp;lt;ref&amp;gt;Kulaynī, Muḥammad ibn Yaʿqūb, Uṣūl al-Kāfī, with translation and commentary by Sayyid Javād Muṣṭafavī, vol. 3, under the chapter &amp;quot;Kibr.&amp;quot;&amp;lt;/ref&amp;gt; To mask this deficiency, humans exhibit arrogance, claiming a status they do not possess.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
In the Quran, arrogance and the arrogant person are addressed. For instance, in the verse: {{quran|کَذٰلِکَ یَطْبَعُ اللَّهُ عَلَیٰ کُلِّ قَلْبِ مُتَکَبِّرٍ جَبَّار&lt;br /&gt;
| سوره = Al-Ghafer&lt;br /&gt;
| آیه = 35&lt;br /&gt;
| ترجمه = “Thus does Allah seal the heart of every arrogant tyrant”.&lt;br /&gt;
}} it refers to the arrogant individual. In verse 34 of [[Surah Al-Baqarah]], arrogance is also highlighted when [[Iblis]] refused to prostrate to [[Adam (AS)]] as God had commanded.&lt;br /&gt;
&lt;br /&gt;
Arrogance is regarded as the first [[Sin|sin]] committed in the world. According to [[Imam Ali (AS)]] in the [[Sermon of Al-Qasi’a]], Iblis&#039;s arrogance nullified his six thousand years of worship.&amp;lt;ref&amp;gt;Ibn Abī al-Ḥadīd, Sharḥ Nahj al-Balāghah, Dār Iḥyāʾ al-Kutub al-ʿArabiyyah, 2nd ed., vol. 13, p. 127.&amp;lt;/ref&amp;gt; In another narration, arrogance is considered the gravest of sins.&amp;lt;ref&amp;gt;Shafīʿī, Muḥammad, Parvarish-e Rūḥ dar Partow-e Chehel Ḥadīth, Daftar Tablīghāt-e Islāmī, 1st ed., 1370 SH, vol. 1, p. 280.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Types of Arrogance ==&lt;br /&gt;
Arrogance can be categorized as follows:&lt;br /&gt;
# &#039;&#039;&#039;Arrogance toward God&#039;&#039;&#039;: At times, arrogance is directed toward God&amp;lt;ref&amp;gt;Dastghayb, Sayyid ʿAbd al-Ḥusayn, Gunāhān-e Kabīrah, Ārmān Press, vol. 2, pp. 111–132.&amp;lt;/ref&amp;gt;, where an individual refuses to submit to [[God’s servitude]] and does not consider worship exclusive to Him. This type of arrogance, exemplified by figures like [[Nimrod]] and [[Pharaoh]], is rooted in rebellion and ignorance and is seen as the most despicable form of arrogance.&amp;lt;ref&amp;gt;Rāghib al-Iṣfahānī, Ḥusayn, al-Mufradāt fī Gharīb al-Qurʾān, Tehran, Nashr-i Kitāb, 1404 AH, pp. 421–422.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Arrogance toward the Prophets and Righteous Figures&#039;&#039;&#039;: Arrogance can also manifest against the prophets and righteous individuals, where a person deems themselves above them and refuses to obey them.This type of arrogance is alluded to in the verse: {{quran|فَقَالُوا أَنُؤْمِنُ لِبَشَرَیْنِ مِثْلِنَا وَقَوْمُهُمَا لَنَا عَابِدُون&lt;br /&gt;
| سوره = Al-Munenoun&lt;br /&gt;
| آیه = 47&lt;br /&gt;
| ترجمه = And they said, ‘Shall we believe in two humans like ourselves, while their people are in servitude to us?’&lt;br /&gt;
}}&lt;br /&gt;
# &#039;&#039;&#039;Arrogance toward God’s Servants&#039;&#039;&#039;: Sometimes, arrogance is directed at believers and servants of God, where an individual views themselves as superior and belittles others.&amp;lt;ref&amp;gt;Narāqī, Aḥmad, Miʿrāj al-Saʿādah, p. 178.&amp;lt;/ref&amp;gt;  This type of arrogance, as it leads to opposition against God, is considered a trait that leads to a person’s ruin.&amp;lt;ref&amp;gt;ʿIlm Akhlāq-e Islāmī, trans. Jāmiʿ al-Saʿādāt, Intishārāt Ḥikmat, 3rd ed., 1363 SH, vol. 1, p. 417.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Causes==&lt;br /&gt;
{{اصلی|Causes of Arrogance}}&lt;br /&gt;
The causes of arrogance include personality disorders, ignorance of one&#039;s own weaknesses, and the influence of [[Satan]] over a person. A sense of humiliation and lowliness is one of the personality disorders that can lead to arrogance.&lt;br /&gt;
&lt;br /&gt;
== Remedies ==&lt;br /&gt;
{{اصلی|Remedies for Arrogance}}&lt;br /&gt;
Several approaches are suggested to cure arrogance, including:&lt;br /&gt;
{{col-begin|2}}&lt;br /&gt;
* [[Self-awareness]]&amp;lt;ref&amp;gt;Majlisī, Muḥammad Bāqir, Biḥār al-Anwār, Beirut, vol. 78, p. 94.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Remembrance of death]]&amp;lt;ref&amp;gt;Shafīʿī, Muḥammad, Parvarish-e Rūḥ dar Partow-e Chehel Ḥadīth, Daftar Tablīghāt-e Islāmī, 1st ed., 1370 SH, vol. 1, p. 491.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Worship]]&amp;lt;ref&amp;gt;Muḥammadī Ray-Shahrī, Muḥammad, Mīzān al-Ḥikmah, Dār al-Ḥadīth, 1st ed., vol. 3, p. 2657; Shafīʿī, Muḥammad, Parvarish-e Rūḥ dar Partow-e Chehel Ḥadīth, Daftar Tablīghāt-e Islāmī, 1st ed., 1370 SH, vol. 1, p. 492.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Humility]]&amp;lt;ref&amp;gt;Shafīʿī, Muḥammad, Parvarish-e Rūḥ dar Partow-e Chehel Ḥadīth, Daftar Tablīghāt-e Islāmī, vol. 1, p. 491.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Reflecting on the consequences of arrogance&lt;br /&gt;
* [[Strengthening self-esteem]]&lt;br /&gt;
{{end}}&lt;br /&gt;
&lt;br /&gt;
Recognizing one’s own weaknesses, especially in birth and [[death]], helps to eliminate arrogance.&amp;lt;ref&amp;gt;Majlisī, Muḥammad Bāqir, Biḥār al-Anwār, Beirut, vol. 78, p. 94.&amp;lt;/ref&amp;gt; Worship, which reflects humility before God, also diminishes the sense of arrogance.&lt;br /&gt;
One of the factors of arrogance is a [[sense of inferiority]]; hence, strengthening self-esteem is considered an effective remedy.&amp;lt;ref&amp;gt;Muḥammadī Ray-Shahrī, Muḥammad, Mīzān al-Ḥikmah, Dār al-Ḥadīth, 1st ed., vol. 3, p. 2657; Shafīʿī, Muḥammad, Parvarish-e Rūḥ dar Partow-e Chehel Ḥadīth, Daftar Tablīghāt-e Islāmī, 1st ed., 1370 SH, vol. 1, p. 492.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruling on Arrogance for Women ==&lt;br /&gt;
{{اصلی|Ruling on Arrogance for Women}}&lt;br /&gt;
In a narration from [[Imam Ali (AS)]], a woman’s arrogance toward [[Non-mahram|non-mahram]] men is considered commendable. According to this narration, this is due to the preservation of a woman&#039;s dignity and protection from potential harm.&amp;lt;ref&amp;gt;Muḥammadī Ray-Shahrī, Muḥammad, Munta khab al-Ḥikmah, trans. Ḥamīd Riḍā Shaykhī, Qom, Dār al-Ḥadīth, 1382 SH, vol. 2, p. 910.&amp;lt;/ref&amp;gt; This arrogance does not mean belittling the non-mahram but rather implies presenting a sense of self-respect to prevent objectification.&lt;br /&gt;
&lt;br /&gt;
Arrogance, defined as &amp;quot;belittling others,&amp;quot; is impermissible and considered sinful for both men and women.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{footnotes|۲}}&lt;br /&gt;
[[fa: تکبر]]&lt;br /&gt;
[[bn:অহংকার]]&lt;br /&gt;
[[ur:تکبر کیا ہے؟]]&lt;br /&gt;
[[es:orgullo]]&lt;br /&gt;
[[ps:تکبر]]&lt;br /&gt;
[[ru:Такабор]]&lt;br /&gt;
[[ms:Sombong]]&lt;br /&gt;
[[ar:التکبر]]&lt;br /&gt;
&lt;br /&gt;
{{tree&lt;br /&gt;
 | main branch = اخلاق&lt;br /&gt;
| subbranch1 = رذائل اخلاقی&lt;br /&gt;
| subbranch2 = تکبر&lt;br /&gt;
| subbranch3 =&lt;br /&gt;
}}&lt;br /&gt;
{{تکمیل مقاله&lt;br /&gt;
 | شناسه = شد&lt;br /&gt;
 | تیترها = شد&lt;br /&gt;
 | ویرایش = شد&lt;br /&gt;
 | لینک‌دهی = شد&lt;br /&gt;
 | ناوبری =&lt;br /&gt;
 | نمایه =&lt;br /&gt;
 | تغییر مسیر = شد&lt;br /&gt;
 | ارجاعات =&lt;br /&gt;
 | بازبینی نویسنده =&lt;br /&gt;
 | ارزیابی کمی =&lt;br /&gt;
 | تکمیل =&lt;br /&gt;
 | اولویت = ب&lt;br /&gt;
 | کیفیت = ب&lt;br /&gt;
}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1684</id>
		<title>Satan cannot appear in the dream of a person in the form of the Prophet (hadith)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1684"/>
		<updated>2025-04-23T06:24:24Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Content of the Narration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}} &lt;br /&gt;
Is the narration that states Satan cannot appear in the dream of a person in the form of the Prophet (s) and his successors authentic and reliable?  &lt;br /&gt;
{{question end}}&lt;br /&gt;
{{Answer}}  &lt;br /&gt;
In Islamic texts, there exists an authentic narration indicating that [[Iblis and Satan in the Qur&#039;an|Satan]] cannot appear in human dreams in the form of the [[Prophet Muhammad]] (s). This narration is transmitted from [[Imam al-Ridha]] (a) and is attributed to the Prophet (s) himself. According to this narration, Satan is incapable—even in the realm of dreams—of taking the form of the Prophet (s), his successors, or, in particular, the true [[Shia]] followers.&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;Shia&amp;quot; in this context refers to those who sincerely follow the [[Ahl al-Bayt]] (a) and adhere to all their teachings with care and devotion.&lt;br /&gt;
&lt;br /&gt;
Based on this narration, if someone sees a person in a dream and is certain that it was the Prophet (s) or one of the [[Infallible Imams]] (a), then their recognition is not mistaken, and they have indeed seen the Prophet (s) or one of the Imams (a). However, it must be emphasized that such dreams are personal experiences and only hold evidentiary value for the one who saw the dream—they do not serve as a proof for others.&lt;br /&gt;
&lt;br /&gt;
== Text of the Hadith and Translation ==&lt;br /&gt;
{{Arabic large|أَنَّهُ قَالَ لَهُ [علي بن موسى(ع)] رَجُلٌ مِنْ أَهْلِ خُرَاسَانَ ... لِأَنَّ اَلشَّیْطَانَ لاَ یَتَمَثَّلُ فِی صُورَتِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ أَوْصِیَائِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ شِیعَتِهِمْ وَ إِنَّ اَلرُّؤْیَا اَلصَّادِقَةَ جُزْءٌ مِنْ سَبْعِینَ جُزْءاً مِنَ اَلنُّبُوَّةِ.&lt;br /&gt;
| source = Shaykh al-Saduq, ‘Uyūn Akhbār al-Riḍā’ (a), Tehran, Jahan Publications, n.d., vol. 2, p. 257.  &lt;br /&gt;
| translation = A man from Khurasan said to Imam al-Ridha (a): &amp;quot;O son of the Messenger of Allah! I saw the Messenger of Allah (s) in my dream, and it was as if he told me: &#039;How will you be when a piece of me is buried in your land, and you are entrusted with my trust, and my star disappears in your soil?&#039;&amp;quot; Imam al-Ridha (a) replied: &amp;quot;I am the one buried in your land; I am the piece of your Prophet; I am the trust and the star [that my grandfather mentioned to you in your dream]. ... My father narrated to me from his grandfather from his father from his forefathers (a) that the Messenger of Allah (s) said: &#039;Whoever visits me in his dream has indeed visited me, for Satan cannot take my form, nor the form of any of my successors, nor the form of any of their Shia. And a true dream is one of seventy parts of prophethood.&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Chain of Transmission ==&lt;br /&gt;
The narration stating that [[Satan]] cannot appear in a dream in the form of the [[Prophet (s)]] and his [[Imams (a)|successors]] was narrated by [[Shaykh al-Saduq]] in the book ‘Uyūn Akhbār al-Riḍā’.&amp;lt;ref&amp;gt;Shaykh al-Saduq, Muhammad ibn Ali, ‘Uyūn Akhbār al-Riḍā’, Tehran, Jahan Publications, n.d., vol. 2, p. 257.&amp;lt;/ref&amp;gt; He also reported it in Man Lā Yaḥḍuruhu al-Faqīh.&amp;lt;ref&amp;gt;Ibn Babawayh, Muhammad, Man Lā Yaḥḍuruhu al-Faqīh, Qom, Islamic Publications Office, 2nd ed., 1413 AH, vol. 2, p. 584.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The narrators of this hadith, based on the [[Ilm al-Rijāl]] (science of narrators), are as follows:&lt;br /&gt;
Muhammad ibn Ibrahim ibn Ishaq al-Talaqani: Some scholars infer his high status from the frequency with which Shaykh al-Saduq narrates from him. [[Al-‘Allāma al-Majlisī]] also considers him among the Shaykh’s teachers.&amp;lt;ref&amp;gt;Namazi Shahroudi, Ali, Mustadrakāt ‘Ilm al-Rijāl, Tehran, 1414 AH, vol. 6, p. 359.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ahmad ibn Muhammad ibn Sa‘īd al-Kūfī al-Mawlī Banī Hāshim: Though of the [[Zaydi]] school, he is described as trustworthy.&amp;lt;ref&amp;gt;Najāshī, Ahmad ibn Ali, Rijāl al-Najāshī, ed. Musa Shubayrī Zanjānī, Qom, Jamā‘at al-Mudarrisīn, 1365 SH, p. 94.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ṭūsī, Muhammad ibn al-Hasan, Al-Fihrist, ed. ‘Abd al-‘Azīz Ṭabāṭabā’ī, Qom, 1420 AH, p. 69.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ali ibn Ḥasan ibn Ali ibn Faḍḍāl: Considered trustworthy.&amp;lt;ref&amp;gt;Najāshī, ibid., p. 257.&amp;lt;/ref&amp;gt; [[Muhammad ibn Umar al-Kashshī]], a Shi‘a rijāl scholar, mentions that some believed he followed the [[Fathi]] sect.&amp;lt;ref&amp;gt;Kashshī, Muhammad ibn Umar, Ikhtiyār Ma‘rifat al-Rijāl, summarized by Shaykh al-Ṭūsī, ed. Muhammad Bāqir al-Mīrdāmād and Mahdī Rajā’ī, Qom, Al al-Bayt Foundation, 1404 AH, p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ḥasan ibn Ali ibn Faḍḍāl al-Taymī: Also considered trustworthy.&amp;lt;ref&amp;gt;Kashshī, ibid., p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All the narrators in this [[Isnad|chain of transmission]] are reliable, although some are not [[Twelver Shiites]], which is why the hadith is classified as [[Hadith Mawthūq|mawthūq]] (trustworthy, though not fully authentic).&amp;lt;ref&amp;gt;Majlisī, Muhammad Taqī, Rawḍat al-Muttaqīn fī Sharḥ Man Lā Yaḥḍuruhu al-Faqīh, Qom, Kushanpour, 2nd ed., 1406 AH, vol. 5, p. 397.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content of the Narration ==&lt;br /&gt;
According to the narration from [[Imam al-Ridha (a)]] quoted from the [[Prophet (s)]], [[Satan]] is incapable even in dreams of taking the form of the Prophet (s), his successors, or their [[Shi&#039;a|Shia]] followers. [[Al-‘Allāma al-Majlisī]] interprets the Shia mentioned here as those who are sincerely devoted to the [[Ahl al-Bayt (a)]] and who adhere to all their teachings.&amp;lt;ref&amp;gt;Majlisī, Muhammad Bāqir ibn Muhammad Taqī, Biḥār al-Anwār, Beirut, Dār Iḥyā’ al-Turāth al-‘Arabī, 2nd ed., 1403 AH, vol. 58, p. 234.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all conditions are met, seeing the Prophet (s) or the Imams (a) in a dream is a personal matter and holds evidentiary value only for the person who saw the dream; it does not serve as proof for others.&lt;br /&gt;
&lt;br /&gt;
Some contemporary scholars argue that the narration refers to those who had seen the Prophet (s) during his lifetime and thus could recognize him. Therefore, one who has never seen the Prophet in real life cannot claim to have seen him in a dream.&amp;lt;ref&amp;gt;Fayyazi, Gholamreza, An Introduction to Epistemology, Qom, Imam Khomeini Educational and Research Institute, 1st ed., 2007, p. 137.&amp;lt;/ref&amp;gt; However, this interpretation has been criticized, as the person asking Imam al-Ridha (a) about the dream had never seen the Prophet (s) in real life—he lived long after the Prophet’s era. Nonetheless, the Imam affirmed that Satan cannot appear in the form of the Prophet (s), addressing the questioner directly.&lt;br /&gt;
&lt;br /&gt;
This narration&#039;s content is also found in Sunni sources, where the Prophet (s) reportedly said: &amp;quot;Whoever sees me in a dream has truly seen me, for Satan cannot imitate me.&amp;quot;&amp;lt;ref&amp;gt;Ahmad ibn Hanbal, Musnad al-Imām Aḥmad ibn Ḥanbal, Beirut, al-Risālah Foundation, 1st ed., 1416 AH, vol. 6, pp. 24, 347; vol. 7, p. 249.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Dārimī, Abdullah ibn Abd al-Rahmān, Musnad al-Dārimī (also known as Sunan al-Dārimī), Riyadh, Dār al-Mughni, 1st ed., 1421 AH, vol. 2, p. 1359.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Bukhārī, Muhammad ibn Ismā‘īl, Ṣaḥīḥ al-Bukhārī, Cairo, Ministry of Endowments, Supreme Council for Islamic Affairs, Committee for Revival of Sunnah Books, 2nd ed., 1410 AH, vol. 1, p. 95.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{footnotes|2}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1683</id>
		<title>Satan cannot appear in the dream of a person in the form of the Prophet (hadith)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1683"/>
		<updated>2025-04-23T06:20:35Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Chain of Transmission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}} &lt;br /&gt;
Is the narration that states Satan cannot appear in the dream of a person in the form of the Prophet (s) and his successors authentic and reliable?  &lt;br /&gt;
{{question end}}&lt;br /&gt;
{{Answer}}  &lt;br /&gt;
In Islamic texts, there exists an authentic narration indicating that [[Iblis and Satan in the Qur&#039;an|Satan]] cannot appear in human dreams in the form of the [[Prophet Muhammad]] (s). This narration is transmitted from [[Imam al-Ridha]] (a) and is attributed to the Prophet (s) himself. According to this narration, Satan is incapable—even in the realm of dreams—of taking the form of the Prophet (s), his successors, or, in particular, the true [[Shia]] followers.&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;Shia&amp;quot; in this context refers to those who sincerely follow the [[Ahl al-Bayt]] (a) and adhere to all their teachings with care and devotion.&lt;br /&gt;
&lt;br /&gt;
Based on this narration, if someone sees a person in a dream and is certain that it was the Prophet (s) or one of the [[Infallible Imams]] (a), then their recognition is not mistaken, and they have indeed seen the Prophet (s) or one of the Imams (a). However, it must be emphasized that such dreams are personal experiences and only hold evidentiary value for the one who saw the dream—they do not serve as a proof for others.&lt;br /&gt;
&lt;br /&gt;
== Text of the Hadith and Translation ==&lt;br /&gt;
{{Arabic large|أَنَّهُ قَالَ لَهُ [علي بن موسى(ع)] رَجُلٌ مِنْ أَهْلِ خُرَاسَانَ ... لِأَنَّ اَلشَّیْطَانَ لاَ یَتَمَثَّلُ فِی صُورَتِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ أَوْصِیَائِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ شِیعَتِهِمْ وَ إِنَّ اَلرُّؤْیَا اَلصَّادِقَةَ جُزْءٌ مِنْ سَبْعِینَ جُزْءاً مِنَ اَلنُّبُوَّةِ.&lt;br /&gt;
| source = Shaykh al-Saduq, ‘Uyūn Akhbār al-Riḍā’ (a), Tehran, Jahan Publications, n.d., vol. 2, p. 257.  &lt;br /&gt;
| translation = A man from Khurasan said to Imam al-Ridha (a): &amp;quot;O son of the Messenger of Allah! I saw the Messenger of Allah (s) in my dream, and it was as if he told me: &#039;How will you be when a piece of me is buried in your land, and you are entrusted with my trust, and my star disappears in your soil?&#039;&amp;quot; Imam al-Ridha (a) replied: &amp;quot;I am the one buried in your land; I am the piece of your Prophet; I am the trust and the star [that my grandfather mentioned to you in your dream]. ... My father narrated to me from his grandfather from his father from his forefathers (a) that the Messenger of Allah (s) said: &#039;Whoever visits me in his dream has indeed visited me, for Satan cannot take my form, nor the form of any of my successors, nor the form of any of their Shia. And a true dream is one of seventy parts of prophethood.&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Chain of Transmission ==&lt;br /&gt;
The narration stating that [[Satan]] cannot appear in a dream in the form of the [[Prophet (s)]] and his [[Imams (a)|successors]] was narrated by [[Shaykh al-Saduq]] in the book ‘Uyūn Akhbār al-Riḍā’.&amp;lt;ref&amp;gt;Shaykh al-Saduq, Muhammad ibn Ali, ‘Uyūn Akhbār al-Riḍā’, Tehran, Jahan Publications, n.d., vol. 2, p. 257.&amp;lt;/ref&amp;gt; He also reported it in Man Lā Yaḥḍuruhu al-Faqīh.&amp;lt;ref&amp;gt;Ibn Babawayh, Muhammad, Man Lā Yaḥḍuruhu al-Faqīh, Qom, Islamic Publications Office, 2nd ed., 1413 AH, vol. 2, p. 584.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The narrators of this hadith, based on the [[Ilm al-Rijāl]] (science of narrators), are as follows:&lt;br /&gt;
Muhammad ibn Ibrahim ibn Ishaq al-Talaqani: Some scholars infer his high status from the frequency with which Shaykh al-Saduq narrates from him. [[Al-‘Allāma al-Majlisī]] also considers him among the Shaykh’s teachers.&amp;lt;ref&amp;gt;Namazi Shahroudi, Ali, Mustadrakāt ‘Ilm al-Rijāl, Tehran, 1414 AH, vol. 6, p. 359.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ahmad ibn Muhammad ibn Sa‘īd al-Kūfī al-Mawlī Banī Hāshim: Though of the [[Zaydi]] school, he is described as trustworthy.&amp;lt;ref&amp;gt;Najāshī, Ahmad ibn Ali, Rijāl al-Najāshī, ed. Musa Shubayrī Zanjānī, Qom, Jamā‘at al-Mudarrisīn, 1365 SH, p. 94.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ṭūsī, Muhammad ibn al-Hasan, Al-Fihrist, ed. ‘Abd al-‘Azīz Ṭabāṭabā’ī, Qom, 1420 AH, p. 69.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ali ibn Ḥasan ibn Ali ibn Faḍḍāl: Considered trustworthy.&amp;lt;ref&amp;gt;Najāshī, ibid., p. 257.&amp;lt;/ref&amp;gt; [[Muhammad ibn Umar al-Kashshī]], a Shi‘a rijāl scholar, mentions that some believed he followed the [[Fathi]] sect.&amp;lt;ref&amp;gt;Kashshī, Muhammad ibn Umar, Ikhtiyār Ma‘rifat al-Rijāl, summarized by Shaykh al-Ṭūsī, ed. Muhammad Bāqir al-Mīrdāmād and Mahdī Rajā’ī, Qom, Al al-Bayt Foundation, 1404 AH, p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ḥasan ibn Ali ibn Faḍḍāl al-Taymī: Also considered trustworthy.&amp;lt;ref&amp;gt;Kashshī, ibid., p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All the narrators in this [[Isnad|chain of transmission]] are reliable, although some are not [[Twelver Shiites]], which is why the hadith is classified as [[Hadith Mawthūq|mawthūq]] (trustworthy, though not fully authentic).&amp;lt;ref&amp;gt;Majlisī, Muhammad Taqī, Rawḍat al-Muttaqīn fī Sharḥ Man Lā Yaḥḍuruhu al-Faqīh, Qom, Kushanpour, 2nd ed., 1406 AH, vol. 5, p. 397.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content of the Narration ==&lt;br /&gt;
[[File:Seeing the Prophet and Imams in a dream.jpg|thumb|An imaginative depiction of the Prophet Muhammad (s)]]&lt;br /&gt;
&lt;br /&gt;
According to the narration from [[Imam al-Ridha (a)]] quoted from the [[Prophet (s)]], [[Satan]] is incapable even in dreams of taking the form of the Prophet (s), his successors, or their [[Shi&#039;a|Shia]] followers. [[Al-‘Allāma al-Majlisī]] interprets the Shia mentioned here as those who are sincerely devoted to the [[Ahl al-Bayt (a)]] and who adhere to all their teachings.&amp;lt;ref&amp;gt;Majlisī, Muhammad Bāqir ibn Muhammad Taqī, Biḥār al-Anwār, Beirut, Dār Iḥyā’ al-Turāth al-‘Arabī, 2nd ed., 1403 AH, vol. 58, p. 234.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all conditions are met, seeing the Prophet (s) or the Imams (a) in a dream is a personal matter and holds evidentiary value only for the person who saw the dream; it does not serve as proof for others.&lt;br /&gt;
&lt;br /&gt;
Some contemporary scholars argue that the narration refers to those who had seen the Prophet (s) during his lifetime and thus could recognize him. Therefore, one who has never seen the Prophet in real life cannot claim to have seen him in a dream.&amp;lt;ref&amp;gt;Fayyazi, Gholamreza, An Introduction to Epistemology, Qom, Imam Khomeini Educational and Research Institute, 1st ed., 2007, p. 137.&amp;lt;/ref&amp;gt; However, this interpretation has been criticized, as the person asking Imam al-Ridha (a) about the dream had never seen the Prophet (s) in real life—he lived long after the Prophet’s era. Nonetheless, the Imam affirmed that Satan cannot appear in the form of the Prophet (s), addressing the questioner directly.&lt;br /&gt;
&lt;br /&gt;
This narration&#039;s content is also found in Sunni sources, where the Prophet (s) reportedly said: &amp;quot;Whoever sees me in a dream has truly seen me, for Satan cannot imitate me.&amp;quot;&amp;lt;ref&amp;gt;Ahmad ibn Hanbal, Musnad al-Imām Aḥmad ibn Ḥanbal, Beirut, al-Risālah Foundation, 1st ed., 1416 AH, vol. 6, pp. 24, 347; vol. 7, p. 249.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Dārimī, Abdullah ibn Abd al-Rahmān, Musnad al-Dārimī (also known as Sunan al-Dārimī), Riyadh, Dār al-Mughni, 1st ed., 1421 AH, vol. 2, p. 1359.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Bukhārī, Muhammad ibn Ismā‘īl, Ṣaḥīḥ al-Bukhārī, Cairo, Ministry of Endowments, Supreme Council for Islamic Affairs, Committee for Revival of Sunnah Books, 2nd ed., 1410 AH, vol. 1, p. 95.&amp;lt;/ref&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
{{footnotes|2}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1682</id>
		<title>Satan cannot appear in the dream of a person in the form of the Prophet (hadith)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1682"/>
		<updated>2025-04-23T06:19:49Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Chain of Transmission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}} &lt;br /&gt;
Is the narration that states Satan cannot appear in the dream of a person in the form of the Prophet (s) and his successors authentic and reliable?  &lt;br /&gt;
{{question end}}&lt;br /&gt;
{{Answer}}  &lt;br /&gt;
In Islamic texts, there exists an authentic narration indicating that [[Iblis and Satan in the Qur&#039;an|Satan]] cannot appear in human dreams in the form of the [[Prophet Muhammad]] (s). This narration is transmitted from [[Imam al-Ridha]] (a) and is attributed to the Prophet (s) himself. According to this narration, Satan is incapable—even in the realm of dreams—of taking the form of the Prophet (s), his successors, or, in particular, the true [[Shia]] followers.&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;Shia&amp;quot; in this context refers to those who sincerely follow the [[Ahl al-Bayt]] (a) and adhere to all their teachings with care and devotion.&lt;br /&gt;
&lt;br /&gt;
Based on this narration, if someone sees a person in a dream and is certain that it was the Prophet (s) or one of the [[Infallible Imams]] (a), then their recognition is not mistaken, and they have indeed seen the Prophet (s) or one of the Imams (a). However, it must be emphasized that such dreams are personal experiences and only hold evidentiary value for the one who saw the dream—they do not serve as a proof for others.&lt;br /&gt;
&lt;br /&gt;
== Text of the Hadith and Translation ==&lt;br /&gt;
{{Arabic large|أَنَّهُ قَالَ لَهُ [علي بن موسى(ع)] رَجُلٌ مِنْ أَهْلِ خُرَاسَانَ ... لِأَنَّ اَلشَّیْطَانَ لاَ یَتَمَثَّلُ فِی صُورَتِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ أَوْصِیَائِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ شِیعَتِهِمْ وَ إِنَّ اَلرُّؤْیَا اَلصَّادِقَةَ جُزْءٌ مِنْ سَبْعِینَ جُزْءاً مِنَ اَلنُّبُوَّةِ.&lt;br /&gt;
| source = Shaykh al-Saduq, ‘Uyūn Akhbār al-Riḍā’ (a), Tehran, Jahan Publications, n.d., vol. 2, p. 257.  &lt;br /&gt;
| translation = A man from Khurasan said to Imam al-Ridha (a): &amp;quot;O son of the Messenger of Allah! I saw the Messenger of Allah (s) in my dream, and it was as if he told me: &#039;How will you be when a piece of me is buried in your land, and you are entrusted with my trust, and my star disappears in your soil?&#039;&amp;quot; Imam al-Ridha (a) replied: &amp;quot;I am the one buried in your land; I am the piece of your Prophet; I am the trust and the star [that my grandfather mentioned to you in your dream]. ... My father narrated to me from his grandfather from his father from his forefathers (a) that the Messenger of Allah (s) said: &#039;Whoever visits me in his dream has indeed visited me, for Satan cannot take my form, nor the form of any of my successors, nor the form of any of their Shia. And a true dream is one of seventy parts of prophethood.&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Chain of Transmission ==&lt;br /&gt;
The narration stating that [[Satan]] cannot appear in a dream in the form of the [[Prophet (s)]] and his [[Imams (a)|successors]] was narrated by [[Shaykh al-Saduq]] in the book ‘Uyūn Akhbār al-Riḍā’.&amp;lt;ref&amp;gt;Shaykh al-Saduq, Muhammad ibn Ali, ‘Uyūn Akhbār al-Riḍā’, Tehran, Jahan Publications, n.d., vol. 2, p. 257.&amp;lt;/ref&amp;gt; He also reported it in Man Lā Yaḥḍuruhu al-Faqīh.&amp;lt;ref&amp;gt;Ibn Babawayh, Muhammad, Man Lā Yaḥḍuruhu al-Faqīh, Qom, Islamic Publications Office, 2nd ed., 1413 AH, vol. 2, p. 584.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The narrators of this hadith, based on the [[Ilm al-Rijāl]] (science of narrators), are as follows:&lt;br /&gt;
 Muhammad ibn Ibrahim ibn Ishaq al-Talaqani: Some scholars infer his high status from the frequency with which Shaykh al-Saduq narrates from him. [[Al-‘Allāma al-Majlisī]] also considers him among the Shaykh’s teachers.&amp;lt;ref&amp;gt;Namazi Shahroudi, Ali, Mustadrakāt ‘Ilm al-Rijāl, Tehran, 1414 AH, vol. 6, p. 359.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ahmad ibn Muhammad ibn Sa‘īd al-Kūfī al-Mawlī Banī Hāshim: Though of the [[Zaydi]] school, he is described as trustworthy.&amp;lt;ref&amp;gt;Najāshī, Ahmad ibn Ali, Rijāl al-Najāshī, ed. Musa Shubayrī Zanjānī, Qom, Jamā‘at al-Mudarrisīn, 1365 SH, p. 94.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ṭūsī, Muhammad ibn al-Hasan, Al-Fihrist, ed. ‘Abd al-‘Azīz Ṭabāṭabā’ī, Qom, 1420 AH, p. 69.&amp;lt;/ref&amp;gt;&lt;br /&gt;
 Ali ibn Ḥasan ibn Ali ibn Faḍḍāl: Considered trustworthy.&amp;lt;ref&amp;gt;Najāshī, ibid., p. 257.&amp;lt;/ref&amp;gt; [[Muhammad ibn Umar al-Kashshī]], a Shi‘a rijāl scholar, mentions that some believed he followed the [[Fathi]] sect.&amp;lt;ref&amp;gt;Kashshī, Muhammad ibn Umar, Ikhtiyār Ma‘rifat al-Rijāl, summarized by Shaykh al-Ṭūsī, ed. Muhammad Bāqir al-Mīrdāmād and Mahdī Rajā’ī, Qom, Al al-Bayt Foundation, 1404 AH, p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Ḥasan ibn Ali ibn Faḍḍāl al-Taymī: Also considered trustworthy.&amp;lt;ref&amp;gt;Kashshī, ibid., p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All the narrators in this [[Isnad|chain of transmission]] are reliable, although some are not [[Twelver Shiites]], which is why the hadith is classified as [[Hadith Mawthūq|mawthūq]] (trustworthy, though not fully authentic).&amp;lt;ref&amp;gt;Majlisī, Muhammad Taqī, Rawḍat al-Muttaqīn fī Sharḥ Man Lā Yaḥḍuruhu al-Faqīh, Qom, Kushanpour, 2nd ed., 1406 AH, vol. 5, p. 397.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content of the Narration ==&lt;br /&gt;
[[File:Seeing the Prophet and Imams in a dream.jpg|thumb|An imaginative depiction of the Prophet Muhammad (s)]]&lt;br /&gt;
&lt;br /&gt;
According to the narration from [[Imam al-Ridha (a)]] quoted from the [[Prophet (s)]], [[Satan]] is incapable even in dreams of taking the form of the Prophet (s), his successors, or their [[Shi&#039;a|Shia]] followers. [[Al-‘Allāma al-Majlisī]] interprets the Shia mentioned here as those who are sincerely devoted to the [[Ahl al-Bayt (a)]] and who adhere to all their teachings.&amp;lt;ref&amp;gt;Majlisī, Muhammad Bāqir ibn Muhammad Taqī, Biḥār al-Anwār, Beirut, Dār Iḥyā’ al-Turāth al-‘Arabī, 2nd ed., 1403 AH, vol. 58, p. 234.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all conditions are met, seeing the Prophet (s) or the Imams (a) in a dream is a personal matter and holds evidentiary value only for the person who saw the dream; it does not serve as proof for others.&lt;br /&gt;
&lt;br /&gt;
Some contemporary scholars argue that the narration refers to those who had seen the Prophet (s) during his lifetime and thus could recognize him. Therefore, one who has never seen the Prophet in real life cannot claim to have seen him in a dream.&amp;lt;ref&amp;gt;Fayyazi, Gholamreza, An Introduction to Epistemology, Qom, Imam Khomeini Educational and Research Institute, 1st ed., 2007, p. 137.&amp;lt;/ref&amp;gt; However, this interpretation has been criticized, as the person asking Imam al-Ridha (a) about the dream had never seen the Prophet (s) in real life—he lived long after the Prophet’s era. Nonetheless, the Imam affirmed that Satan cannot appear in the form of the Prophet (s), addressing the questioner directly.&lt;br /&gt;
&lt;br /&gt;
This narration&#039;s content is also found in Sunni sources, where the Prophet (s) reportedly said: &amp;quot;Whoever sees me in a dream has truly seen me, for Satan cannot imitate me.&amp;quot;&amp;lt;ref&amp;gt;Ahmad ibn Hanbal, Musnad al-Imām Aḥmad ibn Ḥanbal, Beirut, al-Risālah Foundation, 1st ed., 1416 AH, vol. 6, pp. 24, 347; vol. 7, p. 249.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Dārimī, Abdullah ibn Abd al-Rahmān, Musnad al-Dārimī (also known as Sunan al-Dārimī), Riyadh, Dār al-Mughni, 1st ed., 1421 AH, vol. 2, p. 1359.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Bukhārī, Muhammad ibn Ismā‘īl, Ṣaḥīḥ al-Bukhārī, Cairo, Ministry of Endowments, Supreme Council for Islamic Affairs, Committee for Revival of Sunnah Books, 2nd ed., 1410 AH, vol. 1, p. 95.&amp;lt;/ref&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
{{footnotes|2}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1681</id>
		<title>Satan cannot appear in the dream of a person in the form of the Prophet (hadith)</title>
		<link rel="alternate" type="text/html" href="https://en.wikipasokh.com/index.php?title=Satan_cannot_appear_in_the_dream_of_a_person_in_the_form_of_the_Prophet_(hadith)&amp;diff=1681"/>
		<updated>2025-04-23T06:18:03Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: /* Text of the Hadith and Translation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{text start}}&lt;br /&gt;
{{question}} &lt;br /&gt;
Is the narration that states Satan cannot appear in the dream of a person in the form of the Prophet (s) and his successors authentic and reliable?  &lt;br /&gt;
{{question end}}&lt;br /&gt;
{{Answer}}  &lt;br /&gt;
In Islamic texts, there exists an authentic narration indicating that [[Iblis and Satan in the Qur&#039;an|Satan]] cannot appear in human dreams in the form of the [[Prophet Muhammad]] (s). This narration is transmitted from [[Imam al-Ridha]] (a) and is attributed to the Prophet (s) himself. According to this narration, Satan is incapable—even in the realm of dreams—of taking the form of the Prophet (s), his successors, or, in particular, the true [[Shia]] followers.&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;Shia&amp;quot; in this context refers to those who sincerely follow the [[Ahl al-Bayt]] (a) and adhere to all their teachings with care and devotion.&lt;br /&gt;
&lt;br /&gt;
Based on this narration, if someone sees a person in a dream and is certain that it was the Prophet (s) or one of the [[Infallible Imams]] (a), then their recognition is not mistaken, and they have indeed seen the Prophet (s) or one of the Imams (a). However, it must be emphasized that such dreams are personal experiences and only hold evidentiary value for the one who saw the dream—they do not serve as a proof for others.&lt;br /&gt;
&lt;br /&gt;
== Text of the Hadith and Translation ==&lt;br /&gt;
{{Arabic large|أَنَّهُ قَالَ لَهُ [علي بن موسى(ع)] رَجُلٌ مِنْ أَهْلِ خُرَاسَانَ ... لِأَنَّ اَلشَّیْطَانَ لاَ یَتَمَثَّلُ فِی صُورَتِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ أَوْصِیَائِی وَ لاَ فِی صُورَةِ أَحَدٍ مِنْ شِیعَتِهِمْ وَ إِنَّ اَلرُّؤْیَا اَلصَّادِقَةَ جُزْءٌ مِنْ سَبْعِینَ جُزْءاً مِنَ اَلنُّبُوَّةِ.&lt;br /&gt;
| source = Shaykh al-Saduq, ‘Uyūn Akhbār al-Riḍā’ (a), Tehran, Jahan Publications, n.d., vol. 2, p. 257.  &lt;br /&gt;
| translation = A man from Khurasan said to Imam al-Ridha (a): &amp;quot;O son of the Messenger of Allah! I saw the Messenger of Allah (s) in my dream, and it was as if he told me: &#039;How will you be when a piece of me is buried in your land, and you are entrusted with my trust, and my star disappears in your soil?&#039;&amp;quot; Imam al-Ridha (a) replied: &amp;quot;I am the one buried in your land; I am the piece of your Prophet; I am the trust and the star [that my grandfather mentioned to you in your dream]. ... My father narrated to me from his grandfather from his father from his forefathers (a) that the Messenger of Allah (s) said: &#039;Whoever visits me in his dream has indeed visited me, for Satan cannot take my form, nor the form of any of my successors, nor the form of any of their Shia. And a true dream is one of seventy parts of prophethood.&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Chain of Transmission ==&lt;br /&gt;
The narration stating that [[Satan]] cannot appear in a dream in the form of the [[Prophet (s)]] and his [[Imams (a)|successors]] was narrated by [[Shaykh al-Saduq]] in the book ‘Uyūn Akhbār al-Riḍā’.&amp;lt;ref&amp;gt;Shaykh al-Saduq, Muhammad ibn Ali, ‘Uyūn Akhbār al-Riḍā’, Tehran, Jahan Publications, n.d., vol. 2, p. 257.&amp;lt;/ref&amp;gt; He also reported it in Man Lā Yaḥḍuruhu al-Faqīh.&amp;lt;ref&amp;gt;Ibn Babawayh, Muhammad, Man Lā Yaḥḍuruhu al-Faqīh, Qom, Islamic Publications Office, 2nd ed., 1413 AH, vol. 2, p. 584.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The narrators of this hadith, based on the [[Ilm al-Rijāl]] (science of narrators), are as follows:&lt;br /&gt;
 Muhammad ibn Ibrahim ibn Ishaq al-Talaqani: Some scholars infer his high status from the frequency with which Shaykh al-Saduq narrates from him. [[Al-‘Allāma al-Majlisī]] also considers him among the Shaykh’s teachers.&amp;lt;ref&amp;gt;Namazi Shahroudi, Ali, Mustadrakāt ‘Ilm al-Rijāl, Tehran, 1414 AH, vol. 6, p. 359.&amp;lt;/ref&amp;gt;&lt;br /&gt;
 Ahmad ibn Muhammad ibn Sa‘īd al-Kūfī al-Mawlī Banī Hāshim: Though of the [[Zaydi]] school, he is described as trustworthy.&amp;lt;ref&amp;gt;Najāshī, Ahmad ibn Ali, Rijāl al-Najāshī, ed. Musa Shubayrī Zanjānī, Qom, Jamā‘at al-Mudarrisīn, 1365 SH, p. 94.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ṭūsī, Muhammad ibn al-Hasan, Al-Fihrist, ed. ‘Abd al-‘Azīz Ṭabāṭabā’ī, Qom, 1420 AH, p. 69.&amp;lt;/ref&amp;gt;&lt;br /&gt;
 Ali ibn Ḥasan ibn Ali ibn Faḍḍāl: Considered trustworthy.&amp;lt;ref&amp;gt;Najāshī, ibid., p. 257.&amp;lt;/ref&amp;gt; [[Muhammad ibn Umar al-Kashshī]], a Shi‘a rijāl scholar, mentions that some believed he followed the [[Fathi]] sect.&amp;lt;ref&amp;gt;Kashshī, Muhammad ibn Umar, Ikhtiyār Ma‘rifat al-Rijāl, summarized by Shaykh al-Ṭūsī, ed. Muhammad Bāqir al-Mīrdāmād and Mahdī Rajā’ī, Qom, Al al-Bayt Foundation, 1404 AH, p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
 Ḥasan ibn Ali ibn Faḍḍāl al-Taymī: Also considered trustworthy.&amp;lt;ref&amp;gt;Kashshī, ibid., p. 635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All the narrators in this [[Isnad|chain of transmission]] are reliable, although some are not [[Twelver Shiites]], which is why the hadith is classified as [[Hadith Mawthūq|mawthūq]] (trustworthy, though not fully authentic).&amp;lt;ref&amp;gt;Majlisī, Muhammad Taqī, Rawḍat al-Muttaqīn fī Sharḥ Man Lā Yaḥḍuruhu al-Faqīh, Qom, Kushanpour, 2nd ed., 1406 AH, vol. 5, p. 397.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content of the Narration ==&lt;br /&gt;
[[File:Seeing the Prophet and Imams in a dream.jpg|thumb|An imaginative depiction of the Prophet Muhammad (s)]]&lt;br /&gt;
&lt;br /&gt;
According to the narration from [[Imam al-Ridha (a)]] quoted from the [[Prophet (s)]], [[Satan]] is incapable even in dreams of taking the form of the Prophet (s), his successors, or their [[Shi&#039;a|Shia]] followers. [[Al-‘Allāma al-Majlisī]] interprets the Shia mentioned here as those who are sincerely devoted to the [[Ahl al-Bayt (a)]] and who adhere to all their teachings.&amp;lt;ref&amp;gt;Majlisī, Muhammad Bāqir ibn Muhammad Taqī, Biḥār al-Anwār, Beirut, Dār Iḥyā’ al-Turāth al-‘Arabī, 2nd ed., 1403 AH, vol. 58, p. 234.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all conditions are met, seeing the Prophet (s) or the Imams (a) in a dream is a personal matter and holds evidentiary value only for the person who saw the dream; it does not serve as proof for others.&lt;br /&gt;
&lt;br /&gt;
Some contemporary scholars argue that the narration refers to those who had seen the Prophet (s) during his lifetime and thus could recognize him. Therefore, one who has never seen the Prophet in real life cannot claim to have seen him in a dream.&amp;lt;ref&amp;gt;Fayyazi, Gholamreza, An Introduction to Epistemology, Qom, Imam Khomeini Educational and Research Institute, 1st ed., 2007, p. 137.&amp;lt;/ref&amp;gt; However, this interpretation has been criticized, as the person asking Imam al-Ridha (a) about the dream had never seen the Prophet (s) in real life—he lived long after the Prophet’s era. Nonetheless, the Imam affirmed that Satan cannot appear in the form of the Prophet (s), addressing the questioner directly.&lt;br /&gt;
&lt;br /&gt;
This narration&#039;s content is also found in Sunni sources, where the Prophet (s) reportedly said: &amp;quot;Whoever sees me in a dream has truly seen me, for Satan cannot imitate me.&amp;quot;&amp;lt;ref&amp;gt;Ahmad ibn Hanbal, Musnad al-Imām Aḥmad ibn Ḥanbal, Beirut, al-Risālah Foundation, 1st ed., 1416 AH, vol. 6, pp. 24, 347; vol. 7, p. 249.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Dārimī, Abdullah ibn Abd al-Rahmān, Musnad al-Dārimī (also known as Sunan al-Dārimī), Riyadh, Dār al-Mughni, 1st ed., 1421 AH, vol. 2, p. 1359.&amp;lt;/ref&amp;gt;  &lt;br /&gt;
&amp;lt;ref&amp;gt;Al-Bukhārī, Muhammad ibn Ismā‘īl, Ṣaḥīḥ al-Bukhārī, Cairo, Ministry of Endowments, Supreme Council for Islamic Affairs, Committee for Revival of Sunnah Books, 2nd ed., 1410 AH, vol. 1, p. 95.&amp;lt;/ref&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
{{footnotes|2}}&lt;br /&gt;
{{text end}}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
</feed>