<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://ar.wikighadir.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nazarzadeh</id>
	<title>ویكي‌غدير - مساهمات المستخدم [ar]</title>
	<link rel="self" type="application/atom+xml" href="https://ar.wikighadir.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nazarzadeh"/>
	<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/view/%D8%AE%D8%A7%D8%B5:%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A7%D8%AA/Nazarzadeh"/>
	<updated>2026-09-10T23:08:32Z</updated>
	<subtitle>مساهمات المستخدم</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%D9%8A%D8%A7%D8%AA_%D9%85%D9%86_10_%D8%A5%D9%84%D9%89_25_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A8%D9%82%D8%B1%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%D9%8A%D8%B1&amp;diff=1041</id>
		<title>الآيات من 10 إلى 25 من سورة البقرة والغدير</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%D9%8A%D8%A7%D8%AA_%D9%85%D9%86_10_%D8%A5%D9%84%D9%89_25_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A8%D9%82%D8%B1%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%D9%8A%D8%B1&amp;diff=1041"/>
		<updated>2026-08-30T15:10:17Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: نقل Nazarzadeh صفحة الآيات من 10 إلى 25 من سورة البقرة والغدير إلى الآیات من ١٠ إلی ٢٥ من سورة البقرة والغدیر&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#تحويل [[الآیات من ١٠ إلی ٢٥ من سورة البقرة والغدیر]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%DB%8C%D8%A7%D8%AA_%D9%85%D9%86_%D9%A1%D9%A0_%D8%A5%D9%84%DB%8C_%D9%A2%D9%A5_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A8%D9%82%D8%B1%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%DB%8C%D8%B1&amp;diff=1040</id>
		<title>الآیات من ١٠ إلی ٢٥ من سورة البقرة والغدیر</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%DB%8C%D8%A7%D8%AA_%D9%85%D9%86_%D9%A1%D9%A0_%D8%A5%D9%84%DB%8C_%D9%A2%D9%A5_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A8%D9%82%D8%B1%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%DB%8C%D8%B1&amp;diff=1040"/>
		<updated>2026-08-30T15:10:17Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: نقل Nazarzadeh صفحة الآيات من 10 إلى 25 من سورة البقرة والغدير إلى الآیات من ١٠ إلی ٢٥ من سورة البقرة والغدیر&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
تُعدّ &#039;&#039;&#039;الآيات من ١٠ إلى ٢٥ من سورة البقرة&#039;&#039;&#039; وصفاً لحال المنافقين في عدم قبولهم لبيعة [[غدير خم]].&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;
في الآيات من ١٠ إلى ١٥ من سورة البقرة، يُعدّ مرض القلوب أحد أسباب عدم قبول الغدير. وقد قيل إنّه بعد رؤية معجزات [[أمير المؤمنين (لقب)|أمير المؤمنين]] عليه السلام عقب [[غدير خم]]، ازداد مرض قلوب [[المنافق|المنافقين]]، إضافةً إلى مرض الحسد الذي كانوا يكنّونه للنبي ولعلي عليهما السلام:&amp;lt;ref&amp;gt;واقعه قرآنی غدیر، ص 176–182.&amp;lt;/ref&amp;gt; {{قرآن|فِي قُلُوبِهِمْ مَرَضٌ}}: أي في قلوب هؤلاء الشاكّين الذين نكثوا البيعة التي أُخذت لعلي بن أبي طالب، نشأ مرض. {{قرآن|فَزادَهُمُ اللَّهُ مَرَضاً}}: بحيث تحيّرت قلوبهم عند رؤية تلك العلامات والمعجزات: {{قرآن|وَ لَهُمْ عَذابٌ أَلِيمٌ بِما كانُوا يَكْذِبُونَ}}؛ لأنهم يكذّبون النبي صلى الله عليه وآله، ويكذبون في قولهم «إننا ثابتون على عهدنا وبيعتنا».&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 144؛ عوالم العلوم، ج 2/15، ص 156–157.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== مصلحون في الظاهر ومفسدون في الحقيقة ==&lt;br /&gt;
قيل إنه عندما كان يُقال لناكثي بيعة الغدير: {{قرآن|لا تُفْسِدُوا فِي الْأَرْضِ}}، كانوا يظهرون نكثهم للبيعة أمام المستضعفين من عباد الله، ويقولون لزعزعة إيمانهم: {{قرآن|قالُوا إِنَّما نَحْنُ مُصْلِحُونَ}}؛ لأننا لا نؤمن بدين محمد ولا بغيره، ونحن في حيرة من أمر الدين. فنحن نظهر الرضا بمحمد بقبول دينه ظاهرياً، لكننا نعمل في الباطن وفق أهوائنا؛ نستفيد من إمكانات الحياة، ونحرر أنفسنا من عبودية محمد، ونتخلص من طاعة ابن عمه علي، بحيث إذا انتصرنا في الدنيا نكون مقربين لديه، وإذا آل أمره إلى الزوال نكون قد سلمنا من الأسر على يد أعدائه.&lt;br /&gt;
&lt;br /&gt;
وفي الرد على هذه الرؤية، يقول الله تعالى: {{قرآن|أَلا إِنَّهُمْ هُمُ الْمُفْسِدُونَ}}؛ لأن الله كشف نفاقهم لنبيه، فلعنهم وأمر المؤمنين بلعنهم. كما أن أعداء المؤمنين لم يعودوا يثقون بهم، ظنّاً منهم أنهم سيعاملونهم بنفاق كما عاملوا أصحاب النبي صلى الله عليه وآله. ومن هنا، لم تعد لهم أي منزلة عندهم، ولم يعودوا موضع ثقة في قلوبهم.&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 146–147؛ عوالم العلوم، ج 2/15، ص 159–160.&amp;lt;/ref&amp;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;
لم يكونوا يردّون على هؤلاء المؤمنين لعدم جرأتهم على قول الحقيقة، لكنهم كانوا يقولون للمنافقين الذين يثقون بهم: {{قرآن|أَنُؤْمِنُ كَما آمَنَ السُّفَهاءُ}}. والمقصود بالسفهاء هم سلمان وأصحابه من أتباع علي عليه السلام. وكانوا يصفونهم بالسفهاء لأنهم كانوا يتخذون موقفاً حازماً تجاه أعداء النبي، وكانوا يظنون أنهم سيهلكون إذا ما اضمحلّ أمره، وأن أعداء محمد سيقضون عليهم.&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 147؛ عوالم العلوم، ج 2/15، ص 160–161.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== الرد على طعن المنافقين ==&lt;br /&gt;
يُذكر عن المحققين أن الرد على طعن المنافقين في أتباع الغدير قد ورد في الآيات من ١٠ إلى ٢٥ من سورة البقرة، كقوله تعالى: {{قرآن|أَلَا إِنَّهُمْ هُمُ السُّفَهَاءُ}}؛ وذلك لأنهم لم يولوا مسألة النبي (صلى الله عليه وآله) الاهتمام الواجب ليتعرفوا على نبوته ويدركوا صحة ضابطة تنصيب علي (عليه السلام) في أمر الدين والدنيا. لقد بقي هؤلاء في جهلهم لعدم تدبرهم في إتمام الله للحجج، وهم يخشون النبي (صلى الله عليه وآله) وأصحابه كما يخشون مخالفيهم؛ إذ لا يأمنون جانب أي من الطرفين في حال غلبة الآخر؛ لذا فهم سفهاء؛ لأن نفاقهم حال بينهم وبين تحقيق المودة للنبي (صلى الله عليه وآله) والمؤمنين، كما حال بينهم وبين كسب ودّ اليهود وسائر الكافرين.&lt;br /&gt;
&lt;br /&gt;
يُظهر هؤلاء نفاقاً أمام النبي (صلى الله عليه وآله) بولايته وولاية أخيه علي (عليه السلام)، ومعاداة اليهود والنصارى والناصبة، كما يُظهرون أمام هؤلاء الأعداء عداءهم للنبي وعلي (عليهما السلام). وبهذا الأسلوب، يظن أعداء النبي (صلى الله عليه وآله) أن نفاق هؤلاء تجاههم هو كالنفاق الذي يمارسونه مع محمد (صلى الله عليه وآله) وعلي (عليه السلام). {{قرآن|وَلَكِن لَّا يَعْلَمُونَ}}، والله يُطلع نبيه على أسرارهم، ويُخزيهم، ويلعنهم، ويجعلهم في أدنى المراتب.&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 147–148؛ عوالم العلوم، ج 15/2، ص 161.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وكلام الله تعالى الذي يقول: {{قرآن|وَإِذَا لَقُوا الَّذِينَ آمَنُوا قَالُوا آمَنَّا وَإِذَا خَلَوْا إِلَىٰ شَيَاطِينِهِمْ قَالُوا إِنَّا مَعَكُمْ إِنَّمَا نَحْنُ مُسْتَهْزِئُونَ * اللَّهُ يَسْتَهْزِئُ بِهِمْ وَيَمُدُّهُمْ فِي طُغْيَانِهِمْ يَعْمَهُونَ}}، هو أيضاً في شأن هؤلاء الناكثين للبيعة، الذين كانوا إذا لقوا المؤمنين قالوا: آمنا بمثل ما آمنتم به، وهم على مخالفة علي (عليه السلام).&amp;lt;ref&amp;gt;عوالم العلوم، ج 15/2، ص 155.&amp;lt;/ref&amp;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;
* &#039;&#039;&#039;بحار الأنوار الجامعة لدرر أخبار الأئمة الأطهار&#039;&#039;&#039;؛ محمد باقر بن محمد تقي المجلسي، بيروت: دار إحياء التراث العربي، ١٤٠٣هـ.&lt;br /&gt;
* &#039;&#039;&#039;عوالم العلوم والمعارف والأحوال من الآيات والأخبار والأقوال&#039;&#039;&#039;؛ عبد الله بن نور الله البحراني الأصفهاني، تحقيق: محمد باقر الموحد الأبطحي الأصفهاني، قم: مؤسسة الإمام المهدي (عليه السلام)، ١٣٨٢ش.&lt;br /&gt;
{{نهاية}}&lt;br /&gt;
&lt;br /&gt;
[[تصنيف:آيات سورة البقرة]]&lt;br /&gt;
[[تصنيف:الآيات المتعلقة بأعداء الغدير]]&lt;br /&gt;
&lt;br /&gt;
[[fa:آيات ١٠ تا ٢٥ بقره و غدیر]]&lt;br /&gt;
[[en:Verses 10 to 25 of Sura al-Baqara and Ghadir]]&lt;br /&gt;
[[ur:سورہ بقرہ آیات نمبر ١٠ تا ٢٥ اور غدیر]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%DB%8C%D8%A7%D8%AA_%D9%85%D9%86_%D9%A1%D9%A0_%D8%A5%D9%84%DB%8C_%D9%A2%D9%A5_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A8%D9%82%D8%B1%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%DB%8C%D8%B1&amp;diff=1039</id>
		<title>الآیات من ١٠ إلی ٢٥ من سورة البقرة والغدیر</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%DB%8C%D8%A7%D8%AA_%D9%85%D9%86_%D9%A1%D9%A0_%D8%A5%D9%84%DB%8C_%D9%A2%D9%A5_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A8%D9%82%D8%B1%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%DB%8C%D8%B1&amp;diff=1039"/>
		<updated>2026-08-30T15:09:55Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: اصلاح ارقام&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
تُعدّ &#039;&#039;&#039;الآيات من ١٠ إلى ٢٥ من سورة البقرة&#039;&#039;&#039; وصفاً لحال المنافقين في عدم قبولهم لبيعة [[غدير خم]].&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;
في الآيات من ١٠ إلى ١٥ من سورة البقرة، يُعدّ مرض القلوب أحد أسباب عدم قبول الغدير. وقد قيل إنّه بعد رؤية معجزات [[أمير المؤمنين (لقب)|أمير المؤمنين]] عليه السلام عقب [[غدير خم]]، ازداد مرض قلوب [[المنافق|المنافقين]]، إضافةً إلى مرض الحسد الذي كانوا يكنّونه للنبي ولعلي عليهما السلام:&amp;lt;ref&amp;gt;واقعه قرآنی غدیر، ص 176–182.&amp;lt;/ref&amp;gt; {{قرآن|فِي قُلُوبِهِمْ مَرَضٌ}}: أي في قلوب هؤلاء الشاكّين الذين نكثوا البيعة التي أُخذت لعلي بن أبي طالب، نشأ مرض. {{قرآن|فَزادَهُمُ اللَّهُ مَرَضاً}}: بحيث تحيّرت قلوبهم عند رؤية تلك العلامات والمعجزات: {{قرآن|وَ لَهُمْ عَذابٌ أَلِيمٌ بِما كانُوا يَكْذِبُونَ}}؛ لأنهم يكذّبون النبي صلى الله عليه وآله، ويكذبون في قولهم «إننا ثابتون على عهدنا وبيعتنا».&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 144؛ عوالم العلوم، ج 2/15، ص 156–157.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== مصلحون في الظاهر ومفسدون في الحقيقة ==&lt;br /&gt;
قيل إنه عندما كان يُقال لناكثي بيعة الغدير: {{قرآن|لا تُفْسِدُوا فِي الْأَرْضِ}}، كانوا يظهرون نكثهم للبيعة أمام المستضعفين من عباد الله، ويقولون لزعزعة إيمانهم: {{قرآن|قالُوا إِنَّما نَحْنُ مُصْلِحُونَ}}؛ لأننا لا نؤمن بدين محمد ولا بغيره، ونحن في حيرة من أمر الدين. فنحن نظهر الرضا بمحمد بقبول دينه ظاهرياً، لكننا نعمل في الباطن وفق أهوائنا؛ نستفيد من إمكانات الحياة، ونحرر أنفسنا من عبودية محمد، ونتخلص من طاعة ابن عمه علي، بحيث إذا انتصرنا في الدنيا نكون مقربين لديه، وإذا آل أمره إلى الزوال نكون قد سلمنا من الأسر على يد أعدائه.&lt;br /&gt;
&lt;br /&gt;
وفي الرد على هذه الرؤية، يقول الله تعالى: {{قرآن|أَلا إِنَّهُمْ هُمُ الْمُفْسِدُونَ}}؛ لأن الله كشف نفاقهم لنبيه، فلعنهم وأمر المؤمنين بلعنهم. كما أن أعداء المؤمنين لم يعودوا يثقون بهم، ظنّاً منهم أنهم سيعاملونهم بنفاق كما عاملوا أصحاب النبي صلى الله عليه وآله. ومن هنا، لم تعد لهم أي منزلة عندهم، ولم يعودوا موضع ثقة في قلوبهم.&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 146–147؛ عوالم العلوم، ج 2/15، ص 159–160.&amp;lt;/ref&amp;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;
لم يكونوا يردّون على هؤلاء المؤمنين لعدم جرأتهم على قول الحقيقة، لكنهم كانوا يقولون للمنافقين الذين يثقون بهم: {{قرآن|أَنُؤْمِنُ كَما آمَنَ السُّفَهاءُ}}. والمقصود بالسفهاء هم سلمان وأصحابه من أتباع علي عليه السلام. وكانوا يصفونهم بالسفهاء لأنهم كانوا يتخذون موقفاً حازماً تجاه أعداء النبي، وكانوا يظنون أنهم سيهلكون إذا ما اضمحلّ أمره، وأن أعداء محمد سيقضون عليهم.&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 147؛ عوالم العلوم، ج 2/15، ص 160–161.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== الرد على طعن المنافقين ==&lt;br /&gt;
يُذكر عن المحققين أن الرد على طعن المنافقين في أتباع الغدير قد ورد في الآيات من ١٠ إلى ٢٥ من سورة البقرة، كقوله تعالى: {{قرآن|أَلَا إِنَّهُمْ هُمُ السُّفَهَاءُ}}؛ وذلك لأنهم لم يولوا مسألة النبي (صلى الله عليه وآله) الاهتمام الواجب ليتعرفوا على نبوته ويدركوا صحة ضابطة تنصيب علي (عليه السلام) في أمر الدين والدنيا. لقد بقي هؤلاء في جهلهم لعدم تدبرهم في إتمام الله للحجج، وهم يخشون النبي (صلى الله عليه وآله) وأصحابه كما يخشون مخالفيهم؛ إذ لا يأمنون جانب أي من الطرفين في حال غلبة الآخر؛ لذا فهم سفهاء؛ لأن نفاقهم حال بينهم وبين تحقيق المودة للنبي (صلى الله عليه وآله) والمؤمنين، كما حال بينهم وبين كسب ودّ اليهود وسائر الكافرين.&lt;br /&gt;
&lt;br /&gt;
يُظهر هؤلاء نفاقاً أمام النبي (صلى الله عليه وآله) بولايته وولاية أخيه علي (عليه السلام)، ومعاداة اليهود والنصارى والناصبة، كما يُظهرون أمام هؤلاء الأعداء عداءهم للنبي وعلي (عليهما السلام). وبهذا الأسلوب، يظن أعداء النبي (صلى الله عليه وآله) أن نفاق هؤلاء تجاههم هو كالنفاق الذي يمارسونه مع محمد (صلى الله عليه وآله) وعلي (عليه السلام). {{قرآن|وَلَكِن لَّا يَعْلَمُونَ}}، والله يُطلع نبيه على أسرارهم، ويُخزيهم، ويلعنهم، ويجعلهم في أدنى المراتب.&amp;lt;ref&amp;gt;بحار الأنوار، ج 37، ص 147–148؛ عوالم العلوم، ج 15/2، ص 161.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وكلام الله تعالى الذي يقول: {{قرآن|وَإِذَا لَقُوا الَّذِينَ آمَنُوا قَالُوا آمَنَّا وَإِذَا خَلَوْا إِلَىٰ شَيَاطِينِهِمْ قَالُوا إِنَّا مَعَكُمْ إِنَّمَا نَحْنُ مُسْتَهْزِئُونَ * اللَّهُ يَسْتَهْزِئُ بِهِمْ وَيَمُدُّهُمْ فِي طُغْيَانِهِمْ يَعْمَهُونَ}}، هو أيضاً في شأن هؤلاء الناكثين للبيعة، الذين كانوا إذا لقوا المؤمنين قالوا: آمنا بمثل ما آمنتم به، وهم على مخالفة علي (عليه السلام).&amp;lt;ref&amp;gt;عوالم العلوم، ج 15/2، ص 155.&amp;lt;/ref&amp;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;
* &#039;&#039;&#039;بحار الأنوار الجامعة لدرر أخبار الأئمة الأطهار&#039;&#039;&#039;؛ محمد باقر بن محمد تقي المجلسي، بيروت: دار إحياء التراث العربي، ١٤٠٣هـ.&lt;br /&gt;
* &#039;&#039;&#039;عوالم العلوم والمعارف والأحوال من الآيات والأخبار والأقوال&#039;&#039;&#039;؛ عبد الله بن نور الله البحراني الأصفهاني، تحقيق: محمد باقر الموحد الأبطحي الأصفهاني، قم: مؤسسة الإمام المهدي (عليه السلام)، ١٣٨٢ش.&lt;br /&gt;
{{نهاية}}&lt;br /&gt;
&lt;br /&gt;
[[تصنيف:آيات سورة البقرة]]&lt;br /&gt;
[[تصنيف:الآيات المتعلقة بأعداء الغدير]]&lt;br /&gt;
&lt;br /&gt;
[[fa:آيات ١٠ تا ٢٥ بقره و غدیر]]&lt;br /&gt;
[[en:Verses 10 to 25 of Sura al-Baqara and Ghadir]]&lt;br /&gt;
[[ur:سورہ بقرہ آیات نمبر ١٠ تا ٢٥ اور غدیر]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persianwikitools.js&amp;diff=1038</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-persianwikitools.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persianwikitools.js&amp;diff=1038"/>
		<updated>2026-08-30T15:08:40Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DO NOT REMOVE THIS LINE EVER&lt;br /&gt;
/**&lt;br /&gt;
 * Wikipedia specific Persian text style improvement tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also: [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 */&lt;br /&gt;
/*global persianTools, persianToolsDictionary, autoEd*/&lt;br /&gt;
var persianWikiTools = (function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
	var persianMonths = [&amp;quot;فروردین&amp;quot;, &amp;quot;اردیبهشت&amp;quot;, &amp;quot;خرداد&amp;quot;, &amp;quot;تیر&amp;quot;, &amp;quot;مرداد&amp;quot;, &amp;quot;شهریور&amp;quot;, &amp;quot;مهر&amp;quot;, &amp;quot;آبان&amp;quot;, &amp;quot;آذر&amp;quot;, &amp;quot;دی&amp;quot;, &amp;quot;بهمن&amp;quot;, &amp;quot;اسفند&amp;quot;];&lt;br /&gt;
	//http://www.entitycode.com/&lt;br /&gt;
	var htmlEntityCodes = {&lt;br /&gt;
		&amp;quot;&amp;amp;iexcl;&amp;quot;: &amp;quot;¡&amp;quot;, &amp;quot;&amp;amp;cent;&amp;quot;: &amp;quot;¢&amp;quot;, &amp;quot;&amp;amp;pound;&amp;quot;: &amp;quot;£&amp;quot;, &amp;quot;&amp;amp;curren;&amp;quot;: &amp;quot;¤&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;yen;&amp;quot;: &amp;quot;¥&amp;quot;, &amp;quot;&amp;amp;brvbar;&amp;quot;: &amp;quot;¦&amp;quot;, &amp;quot;&amp;amp;sect;&amp;quot;: &amp;quot;§&amp;quot;, &amp;quot;&amp;amp;copy;&amp;quot;: &amp;quot;©&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;middot;&amp;quot;: &amp;quot;·&amp;quot;, &amp;quot;&amp;amp;times;&amp;quot;: &amp;quot;×&amp;quot;, &amp;quot;&amp;amp;rdquo;&amp;quot;: &amp;quot;”&amp;quot;, &amp;quot;&amp;amp;dagger;&amp;quot;: &amp;quot;†&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;Dagger;&amp;quot;: &amp;quot;‡&amp;quot;, &amp;quot;&amp;amp;euro;&amp;quot;: &amp;quot;€&amp;quot;, &amp;quot;&amp;amp;laquo;&amp;quot;: &amp;quot;«&amp;quot;, &amp;quot;&amp;amp;reg;&amp;quot;: &amp;quot;®&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;deg;&amp;quot;: &amp;quot;°&amp;quot;, &amp;quot;&amp;amp;plusmn;&amp;quot;: &amp;quot;±&amp;quot;, &amp;quot;&amp;amp;sup2;&amp;quot;: &amp;quot;²&amp;quot;, &amp;quot;&amp;amp;sup3;&amp;quot;: &amp;quot;³&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;para;&amp;quot;: &amp;quot;¶&amp;quot;, &amp;quot;&amp;amp;sup1;&amp;quot;: &amp;quot;¹&amp;quot;, &amp;quot;&amp;amp;raquo;&amp;quot;: &amp;quot;»&amp;quot;, &amp;quot;&amp;amp;frac14;&amp;quot;: &amp;quot;¼&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;frac12;&amp;quot;: &amp;quot;½&amp;quot;, &amp;quot;&amp;amp;frac34;&amp;quot;: &amp;quot;¾&amp;quot;, &amp;quot;&amp;amp;iquest;&amp;quot;: &amp;quot;¿&amp;quot;, &amp;quot;&amp;amp;divide;&amp;quot;: &amp;quot;÷&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ndash;&amp;quot;: &amp;quot;–&amp;quot;, &amp;quot;&amp;amp;mdash;&amp;quot;: &amp;quot;—&amp;quot;, &amp;quot;&amp;amp;lsquo;&amp;quot;: &amp;quot;‘&amp;quot;, &amp;quot;&amp;amp;rsquo;&amp;quot;: &amp;quot;’&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ldquo;&amp;quot;: &amp;quot;“&amp;quot;, &amp;quot;&amp;amp;trade;&amp;quot;: &amp;quot;™&amp;quot;, &amp;quot;&amp;amp;bull;&amp;quot;: &amp;quot;•&amp;quot;, &amp;quot;&amp;amp;hellip;&amp;quot;: &amp;quot;…&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;permil;&amp;quot;: &amp;quot;‰&amp;quot;, &amp;quot;&amp;amp;lsaquo;&amp;quot;: &amp;quot;‹&amp;quot;, &amp;quot;&amp;amp;rsaquo;&amp;quot;: &amp;quot;›&amp;quot;, &amp;quot;&amp;amp;larr;&amp;quot;: &amp;quot;←&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;uarr;&amp;quot;: &amp;quot;↑&amp;quot;, &amp;quot;&amp;amp;rarr;&amp;quot;: &amp;quot;→&amp;quot;, &amp;quot;&amp;amp;darr;&amp;quot;: &amp;quot;↓&amp;quot;, &amp;quot;&amp;amp;harr;&amp;quot;: &amp;quot;↔&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;crarr;&amp;quot;: &amp;quot;↵&amp;quot;, &amp;quot;&amp;amp;minus;&amp;quot;: &amp;quot;−&amp;quot;, &amp;quot;&amp;amp;radic;&amp;quot;: &amp;quot;√&amp;quot;, &amp;quot;&amp;amp;infin;&amp;quot;: &amp;quot;∞&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;loz;&amp;quot;: &amp;quot;◊&amp;quot;, &amp;quot;&amp;amp;spades;&amp;quot;: &amp;quot;♠&amp;quot;, &amp;quot;&amp;amp;rfloor;&amp;quot;: &amp;quot;⌋&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;quot;: &amp;quot; &amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ne;&amp;quot;: &amp;quot;≠&amp;quot;, &amp;quot;&amp;amp;ap;&amp;quot;: &amp;quot;≈&amp;quot;, &amp;quot;&amp;amp;approx;&amp;quot;: &amp;quot;≈&amp;quot;, &amp;quot;&amp;amp;asymp;&amp;quot;: &amp;quot;≈&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;rceil;&amp;quot;: &amp;quot;⌉&amp;quot;, &amp;quot;&amp;amp;lfloor;&amp;quot;: &amp;quot;⌊&amp;quot;, &amp;quot;&amp;amp;diams;&amp;quot;: &amp;quot;♦&amp;quot;, &amp;quot;&amp;amp;auml;&amp;quot;: &amp;quot;ä&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ouml;&amp;quot;: &amp;quot;ö&amp;quot;, &amp;quot;&amp;amp;uuml;&amp;quot;: &amp;quot;ü&amp;quot;, &amp;quot;&amp;amp;szlig;&amp;quot;: &amp;quot;ß&amp;quot;, &amp;quot;&amp;amp;aring;&amp;quot;: &amp;quot;å&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;oline; &amp;quot;: &amp;quot;‾ &amp;quot;, &amp;quot;&amp;amp;aelig;&amp;quot;: &amp;quot;æ&amp;quot;, &amp;quot;&amp;amp;ccedil;&amp;quot;: &amp;quot;ç&amp;quot;, &amp;quot;&amp;amp;ntilde;&amp;quot;: &amp;quot;ñ&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;acirc;&amp;quot;: &amp;quot;â&amp;quot;, &amp;quot;&amp;amp;aacute;&amp;quot;: &amp;quot;á&amp;quot;, &amp;quot;&amp;amp;agrave;&amp;quot;: &amp;quot;à&amp;quot;, &amp;quot;&amp;amp;#36;&amp;quot;: &amp;quot;$&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;clubs;&amp;quot;: &amp;quot;♣&amp;quot;, &amp;quot;&amp;amp;hearts;&amp;quot;: &amp;quot;♥&amp;quot;, &amp;quot;&amp;amp;Prime;&amp;quot;: &amp;quot;″&amp;quot;, &amp;quot;&amp;amp;prime;&amp;quot;: &amp;quot;′&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;lceil;&amp;quot;: &amp;quot;⌈&amp;quot;, &amp;quot;&amp;amp;mldr;&amp;quot;: &amp;quot;…&amp;quot;, &amp;quot;&amp;amp;bullet;&amp;quot;: &amp;quot;•&amp;quot;, &amp;quot;&amp;amp;grave;&amp;quot;: &amp;quot;`&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;pm;&amp;quot;: &amp;quot;±&amp;quot;, &amp;quot;&amp;amp;acute;&amp;quot;: &amp;quot;´&amp;quot;, &amp;quot;&amp;amp;centerdot;&amp;quot;: &amp;quot;·&amp;quot;, &amp;quot;&amp;amp;half;&amp;quot;: &amp;quot;½&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;Auml;&amp;quot;: &amp;quot;Ä&amp;quot;, &amp;quot;&amp;amp;Ouml;&amp;quot;: &amp;quot;Ö&amp;quot;, &amp;quot;&amp;amp;Uuml;&amp;quot;: &amp;quot;Ü&amp;quot;, &amp;quot;&amp;amp;rsquor;&amp;quot;: &amp;quot;’&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;lsquor;&amp;quot;: &amp;quot;‚&amp;quot;, &amp;quot;&amp;amp;sbquo;&amp;quot;: &amp;quot;‚&amp;quot;, &amp;quot;&amp;amp;rdquor;&amp;quot;: &amp;quot;”&amp;quot;, &amp;quot;&amp;amp;bdquo;&amp;quot;: &amp;quot;„&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ldquor;&amp;quot;: &amp;quot;„&amp;quot;, &amp;quot;&amp;amp;ddagger;&amp;quot;: &amp;quot;‡&amp;quot;, &amp;quot;&amp;amp;div;&amp;quot;: &amp;quot;÷&amp;quot;, &amp;quot;&amp;amp;leq;&amp;quot;: &amp;quot;≤&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;geq;&amp;quot;: &amp;quot;≥&amp;quot;, &amp;quot;&amp;amp;le;&amp;quot;: &amp;quot;≤&amp;quot;, &amp;quot;&amp;amp;ge;&amp;quot;: &amp;quot;≥&amp;quot;&lt;br /&gt;
	}; // &amp;amp;quot; , &amp;amp;amp; &amp;amp;lt; &amp;amp;gt; &amp;amp;#124;&lt;br /&gt;
	var patterns = {&lt;br /&gt;
		arabicDigitsEnglishContext: /[a-z]([\|a-z %&amp;quot;&#039;\._:\;,\-\\\/\(\)\#\^\+\d&amp;gt;&amp;lt;–\[\]&amp;amp;?{}](?!\|\|))*\d|(\d|[a-z])[a-z %&amp;quot;&#039;\._:\;\|,\-\\\/\(\)\#\^\+\d&amp;gt;&amp;lt;–\[\]&amp;amp;?{}]*[a-z]\d*/gi,&lt;br /&gt;
		arabicTagEnclosed: /\{\{(?:عربی|شروع عربی|آغاز عربی)\}\}([\s\S]*?)\{\{(?:پایان عربی)\}\}/g,&lt;br /&gt;
		LtRTagEnclosed: /\{\{(?:چپ چین|چپ‌چین)\}\}([\s\S]*?)\{\{(?:پایان چپ‌چین|پایان چپ چین|پایان)\}\}/g,&lt;br /&gt;
		argumentsBlacklist: /(?:accessdate|namespace|legend1start|image|تصویر|doi|style|شابک|عرض|bibcode|isbn|issn|pmid|arxiv|upright|upleft|padding|spacing|border|filename|نام پرونده|ایستاده)\s*\=\s*[^\|\}\]]*/gi,&lt;br /&gt;
		color: /#(?:[abcdef0-9]{8}|[abcdef0-9]{6}|[abcdef0-9]{3})/gi,&lt;br /&gt;
		//colorAsParameter: /\=\s*(?:[abcdef0-9]{8}|[abcdef0-9]{6}|[abcdef0-9]{3})(?:[\s\|\}]|$)/gi,&lt;br /&gt;
		// space, &amp;quot;, \t, \n, {, |, }, ... they will interfere with wiki markup&lt;br /&gt;
		decodeUriBlacklist: /(?:%20|%27|%5C|%5E|%60|%23|%25|%3C|%3E|%5B|%5D|%22|%09|%0A|%7B|%7C|%7D|%C2|%A0)/gi,&lt;br /&gt;
		diffLink: /\[\[(?:ویژه|Special):(?:تفاوت|Diff)\/[^\|\]]*/gi,&lt;br /&gt;
		englishDate: /\d{1,2},? [a-z]{3,} \d{2,4}/gi, // 3, May 2013&lt;br /&gt;
		fileNames: /(?:پرونده|File|تصویر|Image)\:.*?(?=\||\]|\n|$)|=.*\.(?:flac|gif|jpeg|jpg|mid|mp3|mpeg|mpg|ogg|pdf|png|svg|wav|webm)$/mgi, // don&#039;t capture | after&lt;br /&gt;
		fileParameter: /\|\s*(image|تصویر)\s*\=\s*.*/g,&lt;br /&gt;
		ipSign: /\[\[ویژه:مشارکت\u200cها.*?\]\]/g,&lt;br /&gt;
		isbn: /(?:ISBN|ISSN|PMID) [\d\-]*/gi,&lt;br /&gt;
		galleryTag: /&amp;lt;gallery.*?&amp;gt;[\s\S]*?&amp;lt;\/gallery&amp;gt;/g,&lt;br /&gt;
		htmlAttributes: /(?:style|perrow|colspan|color|rowspan|cellpadding|cellspacing|height|width|size|border|thumbtime|name|perrow|upright|upleft)\s*[\=\:]\s*(?:[&#039;\&amp;quot;].*?[&#039;\&amp;quot;]|[\da-z]+)/gi,&lt;br /&gt;
		htmlEntity: /&amp;amp;#\d+;/,&lt;br /&gt;
		imagePixelSize: /[\|=] *[x\d]+?(px|پیکسل)[\]\|\s]/g, // means it will capture |10px| and |10x10px|&lt;br /&gt;
		insideQuote: /[^ا]&amp;quot;.*?&amp;quot;/g,&lt;br /&gt;
		wikilinkTargets: /\[[^\[|\]]+/g,&lt;br /&gt;
		nowikiTag: /&amp;lt;nowiki&amp;gt;.+?&amp;lt;\/nowiki&amp;gt;/g,&lt;br /&gt;
		preTag: /&amp;lt;pre.*?&amp;gt;.*?&amp;lt;\/pre&amp;gt;/g,&lt;br /&gt;
		insideHtmlComment: /&amp;lt;\!\-\-[\s\S]*?\-\-&amp;gt;/g,&lt;br /&gt;
		linksOnEnglishContext: /[a-z][\:\,\. ]*\[\[[\da-z\-\, ]*/gi,&lt;br /&gt;
		mapFrameTag: /&amp;lt;mapframe.*?&amp;gt;[\s\S]*?&amp;lt;\/mapframe&amp;gt;/g,&lt;br /&gt;
		mathTag: /&amp;lt;math.*?&amp;gt;[\s\S]*?&amp;lt;\/math&amp;gt;/g,&lt;br /&gt;
		otherLanguagesInline: /\{\{(?:به .+?|پم|به انگلیسی|انگلیسی|عربی|متن عربی|عبارت عربی|حدیث|به عربی|به اردو|اردو|lang\-[au]r|پینگ|ping)[\s\S]*?\}\}/g,&lt;br /&gt;
		parameter: /\{\{\{\d+/gi,&lt;br /&gt;
		parenthesesAfterDigits: /\w\s?\([\w\s\.\-]*?\)/g,&lt;br /&gt;
		parenthesesHa: /\)ها/g,&lt;br /&gt;
		ref: /(?:&amp;lt;ref[^\/]*?&amp;gt;[\s\S]*?&amp;lt;\/ref&amp;gt;|&amp;lt;ref[^\/]*?\/&amp;gt;)/g, // inside &amp;lt;ref&amp;gt;&amp;lt;/ref&amp;gt; and &amp;lt;ref/&amp;gt;&lt;br /&gt;
		refname: /\&amp;lt;ref name\=.*?\&amp;gt;/g,&lt;br /&gt;
		citation: /\{\{\s*(?:[Cc]it|یادکرد).*?[_\s]*(?:\{\{.*?\}\}|[^\}])*\}\}/g,&lt;br /&gt;
		signatures: /\[\[(?:کاربر|User|بحث[ _]کاربر|User[_ ]talk)\:.*?\]\]/gi,&lt;br /&gt;
		sourceTag: /(&amp;lt;source.*?&amp;gt;[\s\S]*?&amp;lt;\/source&amp;gt;|&amp;lt;syntaxhighlight.*?&amp;gt;[\s\S]*?&amp;lt;\/syntaxhighlight&amp;gt;|&amp;lt;code.*?&amp;gt;[\s\S]*?&amp;lt;\/code&amp;gt;|&amp;lt;timeline.*?&amp;gt;[\s\S]*?&amp;lt;\/timeline&amp;gt;)/g,&lt;br /&gt;
		tagNames: /&amp;lt;\/?[a-zA-Z\d]*/g,&lt;br /&gt;
		graphTemplate: /(?:\&amp;lt;div[^\&amp;gt;]+&amp;gt;)?\{\{[ \_]*(?:الگو|Template)?(?:[Gg]raph\:?[^\|\}]+).*?[_\s\n]*(?:\{\{.*?\}\}|[^\}])*\}\}(?:\&amp;lt;\/div\&amp;gt;)?/g,&lt;br /&gt;
		templateEnglishName: /(الگو|Template):[a-z][a-z\d\-\+_]+/gi,&lt;br /&gt;
		templateWithEnglishName: /\{\{[ \_]*(?:الگو|Template)?[\x00-\x7a~]*\|.*?\}\}/gi,&lt;br /&gt;
		templateParameterName: /\|\s*(?=[a-z_]*\d)[a-z_\d]*\s*\=/gi,&lt;br /&gt;
		globalExceptionTag: /(&amp;lt;nowiki&amp;gt;.+?&amp;lt;\/nowiki&amp;gt;|&amp;lt;!--[\s]*ابر[\s]*--&amp;gt;.+?&amp;lt;!--[\s]*\/[\s]*ابر[\s]*--&amp;gt;|\{\{استثنای ابرابزار\|[\s\S]*?\}\})/gi,&lt;br /&gt;
		translatedUrl: /.(کام|نت|آی‌آر)/g,&lt;br /&gt;
		boxVar: /([a-zA-Z][۱۲۳۴۵۶۷۸۹۰]+) *\=/g,&lt;br /&gt;
		url: /\/\/.*?(?=[\s\n\|\}\]&amp;lt;]|$)/gi,	 // بدون https?: هم ممکن است&lt;br /&gt;
		url2: /\/\/.*?(?:[\s\n\|\}\]&amp;lt;]|$)/gi,	 //برای مواردی که نیاز باشد ادامهٔ نشانی وب را دست نزند&lt;br /&gt;
		urlArchive: /\/\/web\.archive\.org[^\|\}\n\&amp;lt;\&amp;gt;]+/gi,&lt;br /&gt;
		mediawikiFunctions: /\{\{\#(?:\{\{.*?\}\}|[^\}])*\}\}/gi,&lt;br /&gt;
		articleTitleParts: new RegExp(&#039;\\s&#039; + escapeRegExp(mw.config.get(&#039;wgTitle&#039;)).split(&#039; &#039;).join(&#039;\\s|\\s&#039;) + &#039;\\s&#039;, &#039;g&#039;),&lt;br /&gt;
		catgories: /\[\[(?:رده|[Cc]ategory)\:[^\]]+\]\]/gi,&lt;br /&gt;
		rfd: /\{\{نظرخواهی برای حذف.*\}\}/g&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	function escapeRegExp(string) {&lt;br /&gt;
		return string.replace(/[.*+?^${}()|[\]\\]/g, &#039;\\$&amp;amp;&#039;); // $&amp;amp; means the whole matched string&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function escapeRE(s) {&lt;br /&gt;
		return s.replace(/([$()*+\-.?[\\\]^{|}])/g, &#039;\\$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function descendingFromComparetor(x, y) {&lt;br /&gt;
		return x.from - y.from;&lt;br /&gt;
	}&lt;br /&gt;
	function removeCheckDict(text) {&lt;br /&gt;
		// رفع مشکل [[Special:Permalink/25174868#متن هایلایت‌شده]]&lt;br /&gt;
		var otext = &#039;&#039;&lt;br /&gt;
		while (otext != text) {&lt;br /&gt;
			otext = text&lt;br /&gt;
			text = text.replace(/\&amp;lt;span[^&amp;gt;]+CheckDictation\-marked[^&amp;gt;]+\&amp;gt;([^&amp;lt;&amp;gt;]+)\&amp;lt;\/span\&amp;gt;/g, &#039;$1&#039;)&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
	}&lt;br /&gt;
	function replaceExcept(text, callback, excepts) {&lt;br /&gt;
		var match, result = [], i, ranges, minRange, to, min, max;&lt;br /&gt;
		while (text !== &#039;&#039;) {&lt;br /&gt;
			ranges = [];&lt;br /&gt;
&lt;br /&gt;
			for (i in excepts) {&lt;br /&gt;
				if (excepts.hasOwnProperty(i)) {&lt;br /&gt;
					// a global regex should be reset before calls&lt;br /&gt;
					excepts[i].lastIndex = 0;&lt;br /&gt;
					match = excepts[i].exec(text);&lt;br /&gt;
					if (match !== null) {&lt;br /&gt;
						ranges.push({&lt;br /&gt;
							from: match.index,&lt;br /&gt;
							to: match.index + match[0].length&lt;br /&gt;
						});&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// so nothing is matched&lt;br /&gt;
			if (ranges.length === 0) {&lt;br /&gt;
				result.push(callback(text));&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			minRange = ranges.sort(descendingFromComparetor)[0];&lt;br /&gt;
			min = minRange.from;&lt;br /&gt;
&lt;br /&gt;
			to = [];&lt;br /&gt;
			for (i in ranges) {&lt;br /&gt;
				if (ranges.hasOwnProperty(i)) {&lt;br /&gt;
					if (ranges[i].from &amp;lt;= minRange.to) {&lt;br /&gt;
						to.push(ranges[i].to);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			max = Math.max.apply(null, to);&lt;br /&gt;
&lt;br /&gt;
			result.push(callback(text.substr(0, min)));&lt;br /&gt;
			result.push(text.substr(min, max - min));&lt;br /&gt;
			// console.log(&#039;Excepted: &amp;quot;&#039; + text.substr(min, max - min) + &#039;&amp;quot;&#039;);&lt;br /&gt;
			text = text.substr(max);&lt;br /&gt;
		}&lt;br /&gt;
		return result.join(&#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiConvertToPersianCharacters(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.toStandardPersianCharacters,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.otherLanguagesInline, patterns.arabicTagEnclosed, patterns.fileNames, patterns.signatures, patterns.url, patterns.fileParameter]&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!String.prototype.trim) { // if is not available currently&lt;br /&gt;
		String.prototype.trim = function () {&lt;br /&gt;
			return this.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanReferences(str) {&lt;br /&gt;
		// تمیزکاری autoFormater.js &amp;gt; cleanReferences&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;\s*references\s*(\s\b[^&amp;lt;&amp;gt;]*?)?\s*(?:\/|&amp;gt;\s*&amp;lt;\s*\/\s*references)\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;references$1/&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
			//ویکی‌پدیای فارسی منبع برای ارجاع نیست  &lt;br /&gt;
			str = str.replace(/\&amp;lt;ref[^&amp;gt;]*\&amp;gt;\[?(?:https?:)?\/\/fa.(?:m\.)?wikipedia.org\/[^\&amp;lt;\n\}\]\[]+\]?\&amp;lt;\/ref\&amp;gt;/gi, &#039;&#039;)&lt;br /&gt;
		};&lt;br /&gt;
		str = str.replace(/&amp;lt;\s*references\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;/gi, &#039;&amp;lt;references$1&amp;gt;&#039;);&lt;br /&gt;
		str = str.replace(/&amp;lt;\s*\/\s*references\s*&amp;gt;/gi, &#039;&amp;lt;\/references&amp;gt;&#039;);&lt;br /&gt;
		var re = /(&amp;lt;references[^&amp;lt;\/&amp;gt;]*)&amp;gt;/g, m;&lt;br /&gt;
		while (m = re.exec(str)) {&lt;br /&gt;
			if (str.indexOf(&#039;&amp;lt;\/references&amp;gt;&#039;, m.index) &amp;lt; 0) {&lt;br /&gt;
				str = str.slice(0, m.index) + m[1] + &#039;/&amp;gt;&#039; + str.slice(m.index + m[0].length);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;&amp;gt;]*?)\s*(?:\/+|&amp;gt;\s*&amp;lt;\s*\/+\s*ref) *&amp;gt;/gi, &#039;&amp;lt;ref$1/&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
		/* remove line breaks with assays only the top of the article */&lt;br /&gt;
		var i = str.indexOf(&#039;&amp;lt;references&#039;),&lt;br /&gt;
			slice;&lt;br /&gt;
		if (i &amp;gt; 0) {&lt;br /&gt;
			slice = str.slice(i);&lt;br /&gt;
			slice = slice.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;[\t ]*/gi, &#039;&amp;lt;ref$1&amp;gt;&#039;);&lt;br /&gt;
			slice = slice.replace(/(?:(\n[\t ]*)|[\t ]*)&amp;lt;\s*\/+\s*ref\s*&amp;gt;/gi, &#039;$1&amp;lt;\/ref&amp;gt;&#039;);&lt;br /&gt;
			str = str.slice(0, i);&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;\s*/gi, &#039;&amp;lt;ref$1&amp;gt;&#039;);&lt;br /&gt;
		str = str.replace(/\s*&amp;lt;\s*\/+\s*ref\s*&amp;gt;/gi, &#039;&amp;lt;\/ref&amp;gt;&#039;);&lt;br /&gt;
		if (slice) {&lt;br /&gt;
			str += slice;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/* Space between the end of block and remove &amp;lt;ref&amp;gt; or two &amp;lt;ref&amp;gt; */&lt;br /&gt;
		str = str.replace(/([!,.;?]|&amp;lt;ref\b[^&amp;lt;&amp;gt;]*(?:\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/ref)&amp;gt;) +(?=&amp;lt;ref[ &amp;gt;])/gi, &#039;$1&#039;);&lt;br /&gt;
		/* Two identical punctuation before and cut after a &amp;lt;ref&amp;gt; on one */&lt;br /&gt;
		str = str.replace(/([!,.:;?])(&amp;lt;ref\b[^&amp;lt;&amp;gt;]*(?:\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/ref)&amp;gt;)\1/gi, &#039;$1$2&#039;);&lt;br /&gt;
		/* ref inside small */&lt;br /&gt;
		return str.replace(/\&amp;lt;small\&amp;gt; *(\&amp;lt;ref[^\&amp;lt;]+\&amp;lt;\/ref\&amp;gt;)&amp;lt;\/small\&amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanTags(str) {&lt;br /&gt;
		str = str.replace(/(&amp;lt;\/?s)trike\b/gi, &#039;$1&#039;);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;u\&amp;gt;([^\&amp;lt;]+)\&amp;lt;\/u\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;&#039;&#039;$1&#039;&#039;&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;center\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;{{وسط‌چین}}&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;\/center\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;{{پایان}}&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;sub\s*(&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;)\s*(?:su[bp]\s*[.\/\\]+|[.\/\\]+\s*su[bp])\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;sub$1/sub&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;sup\s*(&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;)\s*(?:su[bp]\s*[.\/\\]+|[.\/\\]+\s*su[bp])\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;sup$1/sup&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/* Drop default font attributes */&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;font\b[^&amp;lt;&amp;gt;]*?)\s+fa\w+(?:[\s&amp;quot;&#039;,=]*(?:Arial|Helvetica(?:\W?N\w*)?|sans\W?serif)\b)+[\s&amp;quot;&#039;;]*(?=\s\w+\s*=|&amp;gt;)/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;font\b[^&amp;lt;&amp;gt;]*?)\s+size[\s&amp;quot;&#039;,=]*(?:-1\b|2\b|100\b[ ,.]*\d*%|1(?:\.0*)?em\b)[&amp;quot;&#039;;]*/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Remove inline elements with no attributes */&lt;br /&gt;
		while (/&amp;lt;(font|span)\s*&amp;gt;\s*(?:&amp;lt;(?!\1)|[^&amp;lt;])*?\s*&amp;lt;\/\1[^&amp;lt;&amp;gt;]*&amp;gt;/i.test(str)) {&lt;br /&gt;
			str = str.replace(/&amp;lt;(font|span)\s*&amp;gt;[ \n]*((?:&amp;lt;(?!\1)|[^&amp;lt;])*?)[ \n]*&amp;lt;\/\1[^&amp;lt;&amp;gt;]*&amp;gt;/gi, &#039;$2&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+color[\s&amp;quot;&#039;,=]*(#[\dA-F]{3,6}|[a-z]{3,20})[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;color:$1;&amp;quot;&amp;gt;$2&amp;lt;\/span&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+size[\s&amp;quot;&#039;,=]*(?:-[2-9]|[01])[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;small&amp;gt;$1&amp;lt;\/small&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+size[\s&amp;quot;&#039;,=]*(?:[+-]0|3)[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;$1&amp;lt;\/span&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Merge nested inline tags */&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;(abbr|cite|mark|q|s|small|u)\s*&amp;gt;&amp;lt;(font|span)\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/\2\s*&amp;gt;\s*(?=&amp;lt;\/\1\s*&amp;gt;)/gi,&lt;br /&gt;
			&#039;&amp;lt;$1 style=&amp;quot;$3;&amp;quot;&amp;gt;$4&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;span\b[^&amp;lt;&amp;gt;]*?)\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;&amp;lt;span\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/span\s*&amp;gt;\s*(?=&amp;lt;\/span\s*&amp;gt;)/gi,&lt;br /&gt;
			&#039;$1 style=&amp;quot;$2; $3;&amp;quot;&amp;gt;$4&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/* Verschiedenste Formen von HTML-Zeilenumbrüchen durch einheitliche ersetzen */&lt;br /&gt;
		str = str.replace(/&amp;lt;(?:[\s\/\\]*br\b)+\s*(\s\w[^&amp;lt;&amp;gt;]*?)?[\s.\/\\]*&amp;gt;/gi, &#039;&amp;lt;br$1/&amp;gt;&#039;);&lt;br /&gt;
		/* Unnötige HTML-Zeilenumbrüche entfernen, wenn sowieso ein Absatz folgt */&lt;br /&gt;
		str = str.replace(/ *(?:{{سخ}}|&amp;lt;br \/&amp;gt;)(?=[\r\n][\n#*:;\|}\]])/gi, &#039;&#039;);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;(ref|small|su[bp])\b\s*(\s\w[^&amp;lt;&amp;gt;]*?)?\s*&amp;gt;&amp;lt;small\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/small\s*&amp;gt;&amp;lt;\/\1\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;$1$2&amp;gt;$3&amp;lt;\/$1&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;small\s*&amp;gt;&amp;lt;(ref|small|su[bp])\b\s*(\s\w[^&amp;lt;&amp;gt;]*?)?\s*?( ?\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/\1)\s*&amp;gt;&amp;lt;\/small\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;$1$2$3&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Drop old navigation bar wrapper, see [[Template:NaviBlock]] */&lt;br /&gt;
		return str.replace(&lt;br /&gt;
			/&amp;lt;div\s+class[^&amp;lt;&amp;gt;\w]*BoxenVerschmelzen[^&amp;lt;&amp;gt;\w]*&amp;gt;\s*(\{\{[^#:&amp;lt;&amp;gt;{}]*\}\})\s*&amp;lt;\/div&amp;gt;/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanDuplicateLinks(str) {&lt;br /&gt;
		/* Exclude files and infoboxes from the start of the article */&lt;br /&gt;
		var m = /^(?:\s*\[\[\w+:(?:\[\[[^\n\]]*\]\]|[^\n\]])*\]\])*(?:\s*\{\{(?:\{\{[^}]*\}\}|[^}])*\}\})+/.exec(str),&lt;br /&gt;
			start = m ? m[0].length : 0,&lt;br /&gt;
			found = [],&lt;br /&gt;
			a = [];&lt;br /&gt;
		/* Unlink years that are linked more than one time */&lt;br /&gt;
		var re = /\[\[ *([۱۲][۱۲۳۴۵۶۷۸۹۰]{3}|[۱۲][۱۲۳۴۵۶۷۸۹۰]{3} \((میلادی|قمری)\)) *\]\]/g;&lt;br /&gt;
		/* In each case the first discovery of a year noted entlinken thereafter */&lt;br /&gt;
		while (m = re.exec(str)) {&lt;br /&gt;
			if (m.index &amp;gt;= start) {&lt;br /&gt;
				found[m[1]] ? a.push(m) : found[m[1]] = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		var r = &#039;&#039;,&lt;br /&gt;
			p = 0;&lt;br /&gt;
		for (var i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
			r += str.slice(p, a[i].index) + a[i][1];&lt;br /&gt;
			p = a[i].index + a[i][0].length;&lt;br /&gt;
		}&lt;br /&gt;
		return p ? r + str.slice(p) : str;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanDates(str) {&lt;br /&gt;
		var months = [&amp;quot;ژانویه&amp;quot;, &amp;quot;فوریه&amp;quot;, &amp;quot;مارس&amp;quot;, &amp;quot;آوریل&amp;quot;, &amp;quot;مه&amp;quot;, &amp;quot;ژوئن&amp;quot;, &amp;quot;ژوئیه&amp;quot;, &amp;quot;اوت&amp;quot;, &amp;quot;سپتامبر&amp;quot;, &amp;quot;اکتبر&amp;quot;, &amp;quot;نوامبر&amp;quot;, &amp;quot;دسامبر&amp;quot;, &amp;quot;January&amp;quot;, &amp;quot;February&amp;quot;, &amp;quot;March&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;June&amp;quot;, &amp;quot;July&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;October&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;December&amp;quot;].concat(persianMonths);&lt;br /&gt;
&lt;br /&gt;
		/* Add missing space between day and month */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s!\&#039;(&amp;gt;|„](?:3[01]|[12]\\d|0?[1-9])\\.?)(?=(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;)\\b)&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* No non-breaking space between month and year */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;(\\b(?:3[01]|[12]\\d|0?[1-9])\\.?(?:[\\s\\xA0]|&amp;amp;nbsp;)+(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;))(?:\xA0|&amp;amp;nbsp;)(?=[12]\\d{3}\\b)&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* Missverständliches deutsches Datumsformat durch Langform ersetzen */&lt;br /&gt;
		var separator = &#039; &#039;;&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/([\s&#039;(&amp;gt;„])(3[01]|[12]\d|0?[1-9])\. *(1[012]|0?[1-9])\. *(?=[12]\d{3}[!,.:;?]?[\s&#039;)&amp;lt;\]“])/g,&lt;br /&gt;
			function ($0, $1, $2, $3) {&lt;br /&gt;
				return $1 + ($2 | 0) + separator + months[$3 | 0] + &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		// عدد عربی&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s!\&#039;(&amp;gt;|„](?:٣[٠١]|[١٢][١٢٣٤٥٦٧٨٩]|٠?[١٢٣٤٥٦٧٨٩])\\.?)(?=(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;)[\\s\&#039;)&amp;lt;\\]»}|])&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* No non-breaking space between month and year */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s\&#039;(&amp;gt;«](?:٣[٠١]|[١٢][١٢٣٤٥٦٧٨٩]|٠?[١٢٣٤٥٦٧٨٩])\\.?(?:[\\s\\xA0]|&amp;amp;nbsp;)+(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;))(?:\xA0|&amp;amp;nbsp;)(?=[١٢][١٢٣٤٥٦٧٨٩]{3}[\\s\&#039;)&amp;lt;\\]»}|])&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* Missverständliches deutsches Datumsformat durch Langform ersetzen */&lt;br /&gt;
		var separator = &#039; &#039;;&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/([\s&#039;(&amp;gt;«])(٣[٠١]|[١٢][١٢٣٤٥٦٧٨٩]|٠?[١٢٣٤٥٦٧٨٩])\. *(١[٠١٢]|٠?[١٢٣٤٥٦٧٨٩])\. *(?=[١٢][١٢٣٤٥٦٧٨٩]{3}[!,.:;?]?[\s&#039;)&amp;lt;\]»}|])/g,&lt;br /&gt;
			function ($0, $1, $2, $3) {&lt;br /&gt;
				return $1 + ($2 | 0) + separator + months[$3 | 0] + &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		return str&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function quotationReplace(line) {&lt;br /&gt;
		[&lt;br /&gt;
			[&#039;“&#039;, &#039;”&#039;], [&#039;”&#039;, &#039;“&#039;], [&#039;‘&#039;, &#039;’&#039;], [&#039;’&#039;, &#039;‘&#039;], [&#039;‚&#039;, &#039;’&#039;], [&#039;„&#039;, &#039;”&#039;], [&#039;\\&amp;lt;\\&amp;lt;&#039;, &#039;\\&amp;gt;\\&amp;gt;&#039;], [&#039;\\(\\(&#039;, &#039;\\)\\)&#039;]&lt;br /&gt;
		].forEach(function(qs) {&lt;br /&gt;
			line = line.replace(new RegExp(&lt;br /&gt;
				&#039;(^|[&#039; + persianTools.persianCharacters + &#039;\\:&amp;gt;،»؛\\s\\n\\}\\]\\.]+)&#039;&lt;br /&gt;
				+ qs[0] + &#039;((?:\\[\\[|).*?[&#039; + persianTools.persianCharacters + &#039;\\n]+?(?:\\]\\]|\\.|\\&amp;lt;|\\:|\\{|\\[|…|))&#039; + qs[1]&lt;br /&gt;
				+ &#039;([&#039; + persianTools.persianCharacters + &#039;،«؛\\s\\n\\.\\[\\{]|$)&#039;, &#039;g&#039;&lt;br /&gt;
			), &#039;$1«$2»$3&#039;);&lt;br /&gt;
		});&lt;br /&gt;
		return line;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function quotation(text) {&lt;br /&gt;
		// این تابع زمانی گیومه را به فارسی تیدیل می‌کند که در پاراگراف مورد نظر تعداد گیومهٔ لاتین زوج باشد.&lt;br /&gt;
		var lines = text.split(/\n\n/);&lt;br /&gt;
		var result = [];&lt;br /&gt;
		for (var i = 0; i &amp;lt; lines.length; ++i) {&lt;br /&gt;
			var line = lines[i];&lt;br /&gt;
			if ((line.match(/&amp;quot;/g) || []).length % 2 === 0) { // count of quote marks&lt;br /&gt;
				// تبدیل گیومهٔ لاتین به فارسی&lt;br /&gt;
				// این دستور در ابتدا باشد تا فاصله‌های قبل و بعد گیومه هم اصلاح شود&lt;br /&gt;
				line = line.replace(&lt;br /&gt;
					new RegExp(&#039;(^|[&#039; + persianTools.persianCharacters + &#039;\\:&amp;gt;،»؛\\s\\n\\}\\]\\.\\)]+)&amp;quot;((?:\\[\\[|).*?[&#039; + persianTools.persianCharacters + &#039;؛\\n،]+?(?:\\]\\]|\\.|\\&amp;lt;|\\:|…|))&amp;quot;([&#039; + persianTools.persianCharacters + &#039;،«؛\\s\\n\\.\\[\\{\\(]|$)&#039;, &#039;g&#039;),&lt;br /&gt;
					&#039;$1«$2»$3&#039;&lt;br /&gt;
				);&lt;br /&gt;
				// if some of quote marks are remained from conversion, something might wrong, revert&lt;br /&gt;
				var testline = line.replace(/(?:&amp;lt;ref[^\/]*?&amp;gt;[\s\S]*?&amp;lt;\/ref&amp;gt;|&amp;lt;ref[^\/]*?\/&amp;gt;)/g, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
				if (testline.match(/&amp;quot;/g)) {&lt;br /&gt;
					line = lines[i];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// رفع مشکل استفاده از ـً به جای گیومه لاتین در متن فارسی&lt;br /&gt;
			line = line.replace(new RegExp(&#039;ا\\&amp;quot;([ ]*[&#039; + persianTools.persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;اً$1&#039;)&lt;br /&gt;
			line = line.replace(new RegExp(&#039;ا\\”([ ]*[&#039; + persianTools.persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;اً$1&#039;)&lt;br /&gt;
			line = quotationReplace(line);&lt;br /&gt;
			result.push(line);&lt;br /&gt;
		}&lt;br /&gt;
		return result.join(&#039;\n\n&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * افزودن ستون به الگوی پانویس&lt;br /&gt;
	 * @param {string} text محتوا&lt;br /&gt;
	*/&lt;br /&gt;
	function addColumnToRefTemplate(text) {&lt;br /&gt;
		var refTemplate = /\{\{پانویس([^\}\{]+)?\}\}/i.exec(text), needChange = false;&lt;br /&gt;
		if (refTemplate) {&lt;br /&gt;
			if ((text.match(/&amp;lt;ref/gi) || []).length &amp;gt;= 6) {&lt;br /&gt;
				if (refTemplate[1] !== undefined) {&lt;br /&gt;
					var refParams = refTemplate[1].split(&#039;|&#039;);&lt;br /&gt;
					for (var i = refParams.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						// اگر از پیش ستون یا پارامتر عرض تعریف شده‌باشد تغییری ایجاد نمی‌شود.&lt;br /&gt;
						if (refParams[i].length == 1 || refParams[i].indexOf(&#039;عرض&#039;) &amp;gt; -1) {&lt;br /&gt;
							needChange = true;&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (refTemplate[1] === undefined || !needChange) {&lt;br /&gt;
					return text.replace(refTemplate[0], refTemplate[0].replace(&#039;}}&#039;, &#039;|۲}}&#039;));&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			if ((mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgEditMessage&amp;quot;) === &#039;editing&#039;) || mw.config.get(&#039;wgPageName&#039;) === &amp;quot;ویکی‌پدیا:ویکی‌پروژه_ابزارها/آزمایش_واحد&amp;quot;) {&lt;br /&gt;
				if ((text.match(/&amp;lt;ref/gi) || []).length &amp;gt; 0 &amp;amp;&amp;amp; /\{\{پانویس([^\}\{]+)?\}\}/i.exec(text) != null) {&lt;br /&gt;
					var text2 = text.replace(&#039;== منابع ==&#039;, &#039;== منابع ==\n{{پانویس}}&#039;)&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text.replace(&#039;== پانویس ==&#039;, &#039;== پانویس ==\n{{پانویس}}&#039;)&lt;br /&gt;
					}&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text.replace(&#039;[[رده:&#039;, &#039;== منابع ==\n{{پانویس}}\n\n[[رده:&#039;)&lt;br /&gt;
					}&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text + &#039;\n== منابع ==\n{{پانویس}}&#039;&lt;br /&gt;
					}&lt;br /&gt;
					text = text2&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * اصلاح پیوندها&lt;br /&gt;
	 * @param  {string} text محتوا&lt;br /&gt;
	 * @return {string}&lt;br /&gt;
	 */&lt;br /&gt;
	function fixBadLinks(text) {&lt;br /&gt;
		// حذف متن جایگزین پیوند اگر با نشانی پیوند برابر باشد؛ مانند [[سلام|سلام]]&lt;br /&gt;
		text = text.replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;);&lt;br /&gt;
&lt;br /&gt;
		// حذف پیوند سال و روز ماه&lt;br /&gt;
		text = text.replace(/\[{2}([۰-۹]+|[۰-۹]+ [\)\(\u0621-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2]+)(?:\|([^\]\|\[]+))?\]{2}/g, function (match, p1, p2) {&lt;br /&gt;
			// اگر فقط سال پیوند شده‌باشد یا به شکل [[سال|همان سال]] باشد فقط سال را می‌گرداند.&lt;br /&gt;
			var calendar_type = / \((میلادی|قمری|خورشیدی|شمسی|پیش از میلاد|قبل از میلاد)\)/g;&lt;br /&gt;
			if (p1 !== p2 &amp;amp;&amp;amp; p1.replace(calendar_type, &#039;&#039;) === p2) {&lt;br /&gt;
				return p2;&lt;br /&gt;
			}//[[Special:Permalink/19908981#حذف پیوند تاریخ‌ها]]&lt;br /&gt;
			if (p2 === undefined || p1 === p2) {&lt;br /&gt;
				// اگر پیوند به روز و ماه بود، برای جلوگیری از اشتباه و تداخل، بررسی می‌شوند که حتما یکی از ماه‌ها داخل رشته باشد.&lt;br /&gt;
				if (p1.indexOf(&amp;quot; &amp;quot;) &amp;gt; -1) {&lt;br /&gt;
					var&lt;br /&gt;
						months = [&lt;br /&gt;
							&amp;quot;محرم&amp;quot;, &amp;quot;صفر&amp;quot;, &amp;quot;ربیع‌الاول&amp;quot;, &amp;quot;ربیع‌الثانی&amp;quot;, &amp;quot;جمادی‌الاول&amp;quot;, &amp;quot;جمادی‌الثانی&amp;quot;, &amp;quot;رجب&amp;quot;, &amp;quot;شعبان&amp;quot;, &amp;quot;رمضان&amp;quot;, &amp;quot;شوال&amp;quot;, &amp;quot;ذیقعده&amp;quot;, &amp;quot;ذیحجه&amp;quot;&lt;br /&gt;
						].concat(persianMonths),&lt;br /&gt;
						i;&lt;br /&gt;
					for (i = months.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						if (p1.indexOf(months[i]) &amp;gt; -1) {&lt;br /&gt;
							return p1.replace(calendar_type, &#039;&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					return &amp;quot;[[&amp;quot; + p1 + &amp;quot;]]&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			// اگر متن جایگزین پیوند مخالف پیوند سال بود، متن جایگزین را برمی‌گرداند.&lt;br /&gt;
			return p2;&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function sortCategories(content, pageName) {&lt;br /&gt;
		return content.replace(/((?:\n\[\[رده:.+\]\])+)/, function (categories) {&lt;br /&gt;
			var sortedCategories = persianTools.persianSort(categories.trim().split(&#039;\n&#039;));&lt;br /&gt;
			return &#039;\n&#039; + sortedCategories.map(function (line, i) {&lt;br /&gt;
				// Put a &amp;quot;| &amp;quot; on category with the same name as the page&lt;br /&gt;
				if (line.indexOf(&#039;[[رده:&#039; + pageName + &#039;]]&#039;) === 0)&lt;br /&gt;
					line = &#039;[[رده:&#039; + pageName + &#039;| ]]&#039;;&lt;br /&gt;
&lt;br /&gt;
				// If it contains &amp;quot;| &amp;quot; put it at top&lt;br /&gt;
				if (line.indexOf(&#039;| ]]&#039;) !== -1) i = -1;&lt;br /&gt;
&lt;br /&gt;
				return { index: i, content: line };&lt;br /&gt;
			}).sort(function (x, y) { // sort based on their initial line index&lt;br /&gt;
				return x.index - y.index;&lt;br /&gt;
			}).map(function (x) { return x.content; }).join(&#039;\n&#039;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiPunctuation(text) {&lt;br /&gt;
		text = autoFormatCleanReferences(text)&lt;br /&gt;
		text = autoFormatCleanTags(text)&lt;br /&gt;
		text = autoFormatCleanDuplicateLinks(text)&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return quotation(text);&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.ref]&lt;br /&gt;
		);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
			var old_text = text.replace(/\=\=/g, &#039;&#039;)&lt;br /&gt;
			if (old_text == text) {//در صورتی که در مقاله بخش‌بندی وجود نداشته باشد&lt;br /&gt;
				text = text.replace(/(\n\{\{سخ\}\}|\n\n)(\s|_|)\&#039;\&#039;\&#039;(.*?)\&#039;\&#039;\&#039;(\s|_|)(\{\{سخ\}\}|\n)([\n\#\*])/g, &#039;\n\n== $3 ==\n$6&#039;)&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&#039;([&#039; + persianTools.persianCharactersNoVowels + &#039;])ـ+([&#039; + persianTools.persianCharactersNoVowels + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
					&#039;$1$2&#039;&lt;br /&gt;
				);&lt;br /&gt;
				return text.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;])(\\]\\]|), (\\[\\[|)?(?=[&#039; + persianTools.persianCharacters + &amp;quot;])&amp;quot;, &#039;g&#039;), &#039;$1$2، $3&#039;);&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.url, patterns.galleryTag, patterns.sourceTag, patterns.translatedUrl, patterns.parenthesesHa]&lt;br /&gt;
		);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return text.replace(/(&amp;lt;\/ref&amp;gt;)\s+(&amp;lt;ref)/g, &#039;$1$2&#039;).replace(/([^=])\s+&amp;lt;ref(?!erences)/g, &#039;$1&amp;lt;ref&#039;);&lt;br /&gt;
			},&lt;br /&gt;
			[/\{\{(پانویس|پانویس‌ها|پی‌نوشت)\s*\|[\s\S]*/]&lt;br /&gt;
		);&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return persianTools.punctuation(text)&lt;br /&gt;
					.replace(/^([*#]+;?)([^*#;\:\s])/mg, &#039;$1 $2&#039;) // Adds a space after the # or * for lists&lt;br /&gt;
					.replace(/^([*#]+;?) {2,}(.)/mg, &#039;$1 $2&#039;); // Trim more that one space after the # or * for lists&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.mapFrameTag, patterns.mathTag, patterns.fileNames, patterns.url, patterns.wikilinkTargets,&lt;br /&gt;
			patterns.galleryTag, patterns.sourceTag, patterns.translatedUrl, patterns.parenthesesHa, patterns.insideHtmlComment]&lt;br /&gt;
		)&lt;br /&gt;
			.replace(/\u00A0/g, &#039; &#039;) // convert implicit nbsp to space, probably is being added by some bug on ContentTranslation&lt;br /&gt;
			.replace(/٬ /g, &#039;، &#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;\]])٬&#039;, &#039;g&#039;), &#039;$1،&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;])(\]\]|»|)[ ]*[,]&#039;, &#039;g&#039;), &#039;$1$2، &#039;)&lt;br /&gt;
			.replace(/\[\[([^\|\]]+)\|(\&#039;{2,3})\1&#039;{2,3}\]\]/g, &#039;$2[[$1]]$2&#039;) // for [[foo|&#039;&#039;&#039;foo&#039;&#039;&#039;]] &amp;gt; &#039;&#039;&#039;[[foo]]&#039;&#039;&#039;&lt;br /&gt;
			.replace(new RegExp(&#039;\\[\\[(&#039; + escapeRE(mw.config.get(&#039;wgPageName&#039;)) + &#039;)\\]\\]&#039;, &#039;g&#039;), &#039;$1&#039;) // پیوندزدایی از خود صفحه&lt;br /&gt;
			//برگرفته از https://checkwiki.toolforge.org/cgi-bin/checkwikin.cgi?project=fawiki&amp;amp;view=project&lt;br /&gt;
			.replace(/\[\[([^\|\]]+)\|\1([\u200c ]*(های?))\]\]/g, &#039;[[$1]]$2&#039;)//[[Special:Diff/17515365/17865938]]&lt;br /&gt;
			.replace(/([\S]*)[\s\u200c]*-[\s\u200c]*(تاکنون)(?![ ]+)/g, &#039;$1-اکنون&#039;)//[[Special:Diff/17515365/17865938]]&lt;br /&gt;
			//مشکل در نشانی اینترنتی&lt;br /&gt;
			.replace(/(\&amp;lt;ref.*?\&amp;gt;) *(\[|)\www(6|3|)\./gi, &#039;$1$2http://www$3.&#039;)&lt;br /&gt;
			.replace(/\[\[ *(https?\:\/\/.*?) *\]\]/g, &#039;[$1]&#039;)&lt;br /&gt;
			.replace(/\[\[ *(\/\/.*?) *\]\]/g, &#039;[$1]&#039;)&lt;br /&gt;
			.replace(/(https?:\/?\/?){2,}/g, &#039;$1&#039;)&lt;br /&gt;
			// تمیزکاری autoFormatter.js &amp;gt; cleanExternalLinks&lt;br /&gt;
			.replace(/\b(?:http(s?)(?::+\/*|\/\/+:*)\b)+/gi, &#039;http$1://&#039;)&lt;br /&gt;
			// repair links with vertical stroke&lt;br /&gt;
			.replace(/(\[https?:\/\/[^\s[\]|]*?) *\| *(?=[^\s=[\]|]+\])/gi, &#039;$1 &#039;)&lt;br /&gt;
			// supplement slashes at the end easier Domains&lt;br /&gt;
			.replace(/(\[https?:\/\/\w[\w.-]*\w\.\w+) +/gi, &#039;$1/ &#039;)&lt;br /&gt;
			// Domains lowercase, whether labeled or not&lt;br /&gt;
			.replace(/\bhttps?:\/\/\b[0-9a-z.-]*[A-Z][\w.-]*/g, function ($0) {&lt;br /&gt;
				return $0.toLowerCase();&lt;br /&gt;
			})&lt;br /&gt;
			// پیوند به بیرون‌هایی که در میان پیوند نویسهٔ رفتن به خط بعد، وجود داشته باشد&lt;br /&gt;
			.replace(/\[(?:https?\:|)\/\/[^\]\[]+\]/g, function (x) {&lt;br /&gt;
				x = x.replace(/[\n\r]/g, &#039;&#039;);&lt;br /&gt;
				return x&lt;br /&gt;
			})&lt;br /&gt;
			// فاصله اول زیربخش&lt;br /&gt;
			.replace(/پیوند\n\=/, &#039;پیوند=&#039;)// [[Special:Diff/20238012/20244702]]&lt;br /&gt;
			.replace(/^ +(\=+[^\=]+\=+)/mg, &#039;$1&#039;)&lt;br /&gt;
			.replace(/\[\[\|/g, &#039;[[&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *\/ *br *\&amp;gt;|\&amp;lt; *br *\\ *\&amp;gt;|\&amp;lt; *br *\. *\&amp;gt;)/g, &#039;&amp;lt;br/&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\})([\r\n])(\*|\#|\=\=)/g, &#039;$2$3&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\}) *\]\]/g, &#039;]]&#039;)&lt;br /&gt;
			.replace(/\[\[ *(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\})/g, &#039;[[&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *span *\/ *\&amp;gt;|\&amp;lt; *\/ *span *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *center *\/ *\&amp;gt;|\&amp;lt; *\/ *center *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/center&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *b *\/ *\&amp;gt;|\&amp;lt; *\/ *b *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/b&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *div *\/ *\&amp;gt;|\&amp;lt; *\/ *div *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *p *\/ *\&amp;gt;|\&amp;lt; *\/ *p *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/p&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *td *\/ *\&amp;gt;|\&amp;lt; *\/ *td *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/td&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *small *\/ *\&amp;gt;|\&amp;lt; *\/ *small *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/small&amp;gt;&#039;)&lt;br /&gt;
			.replace(/\[\[([^\]]+)\{\{\!\}\}([^\]]+)\]\]/g, &#039;[[$1|$2]]&#039;)//وجود {{!}} درون پیوند&lt;br /&gt;
			.replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;)//زمانی که بخش هدف و نمایه پیوند یکی باشند&lt;br /&gt;
			.replace(/\[\[(.+)\|(&#039;+)(.+\b)(&#039;+)\]\]/gi, &#039;$2[[$1|$3]]$4&#039;)// انتقال &#039;&#039;&#039; به بیرون پیوند&lt;br /&gt;
			// تمیزکاری autoFormatter.js &amp;gt; CleanGalleries&lt;br /&gt;
			.replace(/&amp;lt;gallery\b([^&amp;lt;&amp;gt;]*)&amp;gt;([^&amp;lt;&amp;gt;]+)&amp;lt;\/gallery\b[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
				function ($0, $1, $2) {&lt;br /&gt;
					return &#039;&amp;lt;gallery&#039; + $1 + &#039;&amp;gt;&#039; + $2&lt;br /&gt;
						.replace(/^(\s*)\[+([^[\]]*)\]\]?\s*$/gm, &#039;$1$2&#039;)&lt;br /&gt;
						.replace(/^(\s*)\[+/gm, &#039;$1&#039;) + &#039;&amp;lt;\/gallery&amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			)&lt;br /&gt;
			// تمیزکاری پرونده‌ها&lt;br /&gt;
			// زمانی که برچسب کوچک در توضیحات تصویر می‌آید برای دستگاه‌های با مانیتور کوچک خواندن متن مشکل می‌شود&lt;br /&gt;
			//https://checkwiki.toolforge.org/cgi-bin/checkwiki.cgi?project=fawiki&amp;amp;view=only&amp;amp;id=77&lt;br /&gt;
			.replace(/\[\[(پرونده|[Ff]ile)\:((?:\[\[.*?\]\]|[^\]])*)\]\]/g, function ($0, $1, $2) {&lt;br /&gt;
				$2 = $2.replace(/\&amp;lt;\/?(big|center|small)&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
				return &#039;[[&#039; + $1 + &#039;:&#039; + $2 + &#039;]]&#039;&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/\[\[ *تصو[يی]ر\:/gi, &#039;[[پرونده:&#039;)&lt;br /&gt;
			// تمیزکاری الگو autoFormater.js &amp;gt; cleanTemplates&lt;br /&gt;
			.replace(/\{\{\s*:?\s*(?:الگو|Template)\s*:\s*/gi, &#039;{\{&#039;)&lt;br /&gt;
			// حذف خط زیر از عنوان الگو&lt;br /&gt;
			.replace(/(?:^|[^{])\{\{[ 0-9a-z\xC0-\u024F-]*_[ \w\xC0-\u024F-]*/gi,&lt;br /&gt;
				function ($0) {&lt;br /&gt;
					return $0.replace(/_+$/, &#039;&#039;).replace(/[ _]+/g, &#039; &#039;).replace(/\{ +/, &#039;{&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			)&lt;br /&gt;
			//سایر موارد&lt;br /&gt;
			.replace(/\[\[(رده|الگو|ویکی\u200cپدیا)\: +/g, &#039;[[$1:&#039;)&lt;br /&gt;
			.replace(/\{\{\*\}\}/g, &#039;{{•}}&#039;)&lt;br /&gt;
			.replace(/[\n\s]*\{\{[•·ن](w?)\}\}\s*/g, &#039;{{•$1}} &#039;)&lt;br /&gt;
			.replace(/\=\{\{[•·ن](w?)\}\}\s*/g, &#039;=\n{{•$1}} &#039;)//رفع باگ [[Special:Diff/14799178/16387261]] در خط بالا &lt;br /&gt;
			.replace(/ *(&amp;lt;\/? ?br ?\/?&amp;gt;|\{\{بر\}\}) */g, &#039;{{سخ}}&#039;)&lt;br /&gt;
			.replace(/\{\{سخ\}\}\n\n/g, &#039;\n\n&#039;)&lt;br /&gt;
			.replace(/\n\n\{\{سخ\}\}/g, &#039;\n\n&#039;)&lt;br /&gt;
			.replace(/\{\{سخ\}\}\]/g, &#039;]&#039;)&lt;br /&gt;
			.replace(/\[\{\{سخ\}\}/g, &#039;[&#039;)&lt;br /&gt;
			.replace(/\n\n(\*|\#)/g, &#039;\n$1&#039;)&lt;br /&gt;
			.replace(/\n(\#|\*)( |)\n/g, &#039;\n$1&#039;)&lt;br /&gt;
			.replace(/\n(\*|\#)( |)(\={2,})/g, &#039;\n$3&#039;)&lt;br /&gt;
			.replace(/(\n?)\s+?&amp;lt;\/ref&amp;gt;/g, &#039;$1&amp;lt;/ref&amp;gt;&#039;)&lt;br /&gt;
			.replace(/\{ *\|/g, &#039;{|&#039;)&lt;br /&gt;
			.replace(/\| *\}/g, &#039;|}&#039;)&lt;br /&gt;
			.replace(/\{\| *\{\|/g, &#039;{|&#039;)&lt;br /&gt;
			.replace(/\|\} *\|\}/g, &#039;|}&#039;)&lt;br /&gt;
			.replace(/^=.*&amp;amp;nbsp;.*=$/gim, function ($0) {&lt;br /&gt;
				return $0.replace(/(?:&amp;amp;nbsp;|\s)+/gi, &#039; &#039;);&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/([^=])\n+(\=.*?\=\n+)/g, &#039;$1\n\n$2&#039;)&lt;br /&gt;
			.replace(/^(=+([^=].*?)=+)[\t\s]{1,}\n/g, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/^(\={2,}) +[\:,;&amp;gt;&amp;amp;\^#@•→←↔↑↓—–…~٫،؛ٔ]/mg, &#039;$1&#039;) // Cleanup headers&lt;br /&gt;
			.replace(/[\:,;&amp;lt;&amp;amp;\^#@•→←↔↑↓—–…~٫،؛ٔ] +(\={2,})$/mg, &#039;$1&#039;)&lt;br /&gt;
			.replace(/^(\={2,}\s*)(«)([^\n«»]*?)(»)(\s*\={2,})/mg, &#039;$1 $3 $5&#039;)&lt;br /&gt;
			.replace(/^(\={2,}) *&#039;+(.*?)&#039;+ *(\={2,})/mg, &#039;$1 $2 $3&#039;)&lt;br /&gt;
			.replace(/^[•●⚫⬤]/mg, &#039;*&#039;) // Wikify bullets in start of lines&lt;br /&gt;
			.replace(/^#\s*(REDIRECT|تغییر[ _]?مسیر)/gi, &#039;#تغییرمسیر&#039;)&lt;br /&gt;
			.replace(/^#تغییرمسیر(?=\S)/g, &#039;#تغییرمسیر &#039;) // Adds a space after #REDIRECT&lt;br /&gt;
			.replace(/(\={2,}) *([^\n\r]*?) *(\={2,})/g, &#039;$1 $2 $3&#039;) // Format headings level 2 and above&lt;br /&gt;
			// زیربخش نیازی به برچسب بزرگ و کوچک ندارد&lt;br /&gt;
			.replace(/(\=+) \&amp;lt;(?:small|big)\&amp;gt;([^\=\n\r]+)\&amp;lt;\/(?:small|big)\&amp;gt; (\=+)/g, &#039;$1 $2 $3&#039;)&lt;br /&gt;
			//حذف فاصلهٔ اضافی درون {{}}&lt;br /&gt;
			.replace(/\{\{(\s*)(.*?)(\s*)\}\}/g, &#039;{{$2}}&#039;)&lt;br /&gt;
			// تبدیل به نویسه / یکی کردن فاصله های مجازی پشت سرهم&lt;br /&gt;
			.replace(/(\{\{فم\}\}|\&amp;amp;zwnj\;|\u200c+)/g, &#039;\u200c&#039;)&lt;br /&gt;
			// Full stop and comma should be before citation. See en:WP:REFPUNC&lt;br /&gt;
			.replace(/ *((?:&amp;lt;ref[^\/]*?&amp;gt;.*?&amp;lt;\/ref&amp;gt;)+)([\.،,:])?/g, &#039;$2$1&#039;)&lt;br /&gt;
			.replace(/([^.])([\.،,:]){2}((?:&amp;lt;ref[^\/]*?&amp;gt;.*?&amp;lt;\/ref&amp;gt;)+)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			.replace(/ *((?:&amp;lt;ref[^\/]*?\/&amp;gt;)+)([\.،,:])/g, &#039;$2$1&#039;)&lt;br /&gt;
			.replace(/([^.])([\.،,:]){2}(((?:&amp;lt;ref[^\/]*?\/&amp;gt;)+)+)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			/* هر رده در یک خط */&lt;br /&gt;
			.replace(/([^\s&amp;gt;-]) *(\[\[رده:[^\n[\]]*\]\])/gi, &#039;$1\n$2&#039;)&lt;br /&gt;
			.replace(/(\[\[رده:[^\n[\]]*\]\]) *(?![\s&amp;lt;-]|$)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/(\[\[رده:[^\n[\]]*\]\]\n) *(?!\[\[رده:|[\s&amp;lt;-]|$)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			//ترتیب‌پیش‌فرض&lt;br /&gt;
			.replace(/\{\{(?:DEFAULTSORT|[Dd]efaultsort|ترتیب|ترتیب[‌ ]پیش[‌ ]?فرض) *[|:] *(?=.*?}})/g, &#039;{{ترتیب‌پیش‌فرض:&#039;)&lt;br /&gt;
			.replace(/\{\{(ترتیب‌پیش‌فرض|DEFAULTSORT)\:[-\w,\s\(\)]+\}\}\n?/g, &#039;&#039;)&lt;br /&gt;
			.replace(/(\{\{(?:ترتیب‌پیش‌فرض|DEFAULT\w*SORT\w*):[^\n{}]*\}\})\s*(?=\[\[رده:)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/(\{\{ترتیب‌پیش‌فرض\:)\s/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/(==\n)\n+(?=&amp;lt;references[^\n&amp;lt;&amp;gt;]*\/&amp;gt;\n\n)/gi, &#039;$1&#039;)&lt;br /&gt;
			//نچسبیدن و+فاصله به براکت که محصول اشتباه در تایپ کردن است&lt;br /&gt;
			.replace(/\]\]و /g, &#039;]] و &#039;)&lt;br /&gt;
			.replace(/(\s|^)\&#039;\&#039;\&#039;(\s|)(.*?)(\s|)\&#039;\&#039;\&#039;(\s)/g, &amp;quot;$1&#039;&#039;&#039;$3&#039;&#039;&#039;$5&amp;quot;) // حذف فاصلهٔ اضافی درون ویکی کد&lt;br /&gt;
			.replace(/&#039;&#039;&#039;\{\{به /g, &amp;quot;&#039;&#039;&#039; {{به &amp;quot;)&lt;br /&gt;
			.replace(/\*(\s+|\n)?\{\{پانویس/g, &amp;quot;{{پانویس&amp;quot;)&lt;br /&gt;
			.replace(/((?:^|\n\s)\=+\s+\=+(?:\s+|)\n)/g, &amp;quot;\n\n&amp;quot;)&lt;br /&gt;
			.replace(/\n{3,}/g, &#039;\n\n&#039;)&lt;br /&gt;
			// فاصله‌های اضافی را از داخل پیوند به بیرون منتقل کند تا اگر اضافه بودند در کدهای دیگر حذف شوند&lt;br /&gt;
			// غیرفعال‌سازی: عملکرد مشابه پایین هم وجود دارد&lt;br /&gt;
			// .replace(/\[\[(\s*)(.*?)(\s*)\]\]/g, &#039;$1[[$2]]$3&#039;)&lt;br /&gt;
			.replace(/(\[{1,2})([^\[\]\n]*[^\[\]\n\|]) +(\]{1,2})/g, &amp;quot;$1$2$3&amp;quot;)&lt;br /&gt;
			.replace(/(\[{1,2}) +([^\[\]\n]+)(\]{1,2})/g, &amp;quot;$1$2$3&amp;quot;)&lt;br /&gt;
			//تبدیل بندهای ترتیبی به قالب‌بندی ویکی [[Special:Permalink/19923598#تبدیل بندهای ترتیبی به قالب‌بندی ویکی]]&lt;br /&gt;
			.replace(/(?:(?:^(?:\* ?)?[۱۲۳۴۵۶۷۸۹۰0-9]{1,2} ?[\.\-\)]) ?[^۱۲۳۴۵۶۷۸۹۰0-9\n]+\n+){2,}/gm, function (x) {&lt;br /&gt;
				var x2 = x.replace(/((?:\* ?)?[۱۲۳۴۵۶۷۸۹۰0-9]{1,2} ?[\.\-\)]) ?([^۱۲۳۴۵۶۷۸۹۰0-9\n]+)\n+/gm, &#039;# $2\n&#039;)&lt;br /&gt;
				if (x2.replace(/[۱۲۳۴۵۶۷۸۹۰0-9]/g, &#039;&#039;) === x2) {&lt;br /&gt;
					return x2;&lt;br /&gt;
				}&lt;br /&gt;
				return x;&lt;br /&gt;
			})&lt;br /&gt;
			.trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiSubsection(text) {&lt;br /&gt;
		return text.replace(/\&amp;lt;(?:\s*)references?(?:\s*\/|\s*\/\s*)\&amp;gt;/g, &#039;{{پانویس}}&#039;)&lt;br /&gt;
			.replace(/\{\{(?:[Rr]eflist|[Rr]eferences?|پانویس[‌ ]?ها)(?=\||\})/g, &#039;{{پانویس&#039;)&lt;br /&gt;
			.replace(/\{\{راست(| |‌)چین\}\}\s*\{\{پانویس(.*?)\}\}\s*\{\{(پایان راست(| |‌)چین|پایان)\}\}/g, &#039;{{پانویس$2}}&#039;)&lt;br /&gt;
			.replace(/\{\{چپ(| |‌)چین\}\}\s*\{\{پانویس(.*?)\}\}\s*\{\{(پایان چپ(| |‌)چین|پایان)\}\}/g, &#039;{{پانویس$2|چپ‌چین=بله}}&#039;)&lt;br /&gt;
			.replace(/\&amp;lt;small\&amp;gt;\s*\{\{پانویس(.*?)\}\}\s*\&amp;lt;\/small\&amp;gt;/g, &#039;{{پانویس$1|اندازه=کوچک}}&#039;)&lt;br /&gt;
			.replace(/(({\{پانویس.*?\}\})(\n|)){1,}/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/\=\s*لیست\s*\=/g, &#039;= فهرست =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[gG]allery|نگارستان|گالری (تصویر|عکس|))\s*\=/g, &#039;= نگارخانه =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:بیوگرافی|زندگینامه)\s*\=/g, &#039;= زندگی‌نامه =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[eE]xternal links|لینک‌?های بیرونی|پیوندهای خارجی|لینک‌?های خارجی|پیوندهای بیرونی)\s*\=/g, &#039;= پیوند به بیرون =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[nN]otes|[fF]ootnotes?|پاورقی|پاورقی‌ها|پانوشت|پانویس‌ها)\s*\=/g, &#039;= پانویس =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[Ss]ee [Aa]lso|همچنین ببینی[مد]|بیشتر ببینی[مد]|همچنین نگاه کنید|بیشتر بدانی[مد]|مراجعات مرتبط|جستار وابسته|مطلب مرتبط|مطالب مرتبط|جستارهای مشابه|جستارهای دیگر)\s*\=/g, &#039;= جستارهای وابسته =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:منبع|منبع[‌ ]?ها|رفرنس|رفرنس[‌ ]?ها|ارجاع[‌ ]?ها|ارجاع|مرجع[‌ ]?ها|رفرنس|برگرفته از|مراجع|منابع و یادداشت[‌ ]?ها|منبع|مرجع|م[آا]خذ|منابع و م[آا]خذ|منابع و پانویس‌ها|فهرست مراجع|لیست مراجع|فهرست ارجاع[‌ ]?ها|فهرست ارجاع|[rR]eferences)\s*\=/g, &#039;= منابع =&#039;)&lt;br /&gt;
			//.replace(/\=\s*(?:مطالعه بیشتر|بیشتر بخوانی[مد])\s*\=/g, &#039;= برای مطالعهٔ بیشتر =&#039;)&lt;br /&gt;
			.replace(/^\={3,}\s*(جستارهای وابسته|پانویس|منابع)\s*\={3,}$/g, &#039;== $1 ==&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function wikiUrlMinifier(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(patterns.url, function (x) {&lt;br /&gt;
				return replaceExcept(&lt;br /&gt;
					x,&lt;br /&gt;
					function (x) {&lt;br /&gt;
						try {&lt;br /&gt;
							x = decodeURI(x);&lt;br /&gt;
						} catch (e) {&lt;br /&gt;
							try {&lt;br /&gt;
								x = decodeURIComponent(unescape(x));&lt;br /&gt;
							} catch (e) { mw.notify(e); }&lt;br /&gt;
						}&lt;br /&gt;
						return x;&lt;br /&gt;
					},&lt;br /&gt;
					[patterns.globalExceptionTag, patterns.decodeUriBlacklist, patterns.refname, patterns.urlArchive]&lt;br /&gt;
				);&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			// Strip the http(s) prefix&lt;br /&gt;
			.replace(/\[(https?\:)(?=\/\/(?:[\w\-]+)\.(?:m\.)?(wiki(pedia|media|data|source|news|oyage|quote)|wiktionary)\.org\/[^\s\]]*)/g, &#039;[&#039;)&lt;br /&gt;
			.replace(/[\[\=](?:https?\:|)\/\/[\w\-]{2,}\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/([^\n?]*?)[\]\|]/g, function (x) {&lt;br /&gt;
				x = x.replace(/\[(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?) (.*?)\]/g, &#039;[[:$1:$2|$3]]&#039;)&lt;br /&gt;
				x = x.replace(/\[(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?)\]/g, &#039;[[:$1:$2]]&#039;)&lt;br /&gt;
				//x = x.replace(/\=(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?)\|/g,&#039;=[[:$1:$2]]|&#039;) // در الگو یادکرد مشکل ایجاد می‌کند&lt;br /&gt;
				x = x.replace(/\[\[\:fa\:/g, &#039;[[&#039;).replace(/\%20/g, &#039; &#039;).replace(/٪۲۰/g, &#039; &#039;).replace(/\[\[[a-zA-Z\&#039;0-9 ]+\|/g, &#039;[[&#039;)&lt;br /&gt;
				x = x.replace(/\[\[.*?\]\]/g, function (y) {&lt;br /&gt;
					y = y.replace(/\_/g, &#039; &#039;)&lt;br /&gt;
					return y&lt;br /&gt;
				})&lt;br /&gt;
				return x&lt;br /&gt;
			}).replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function SubSectionLeveling(text) {&lt;br /&gt;
		// تنظیم سطح زیربخش‌ها&lt;br /&gt;
		text = text.replace(/^(\={2,}) *(.*?) *(\={2,})/mg, &#039;$1 $2 $3&#039;)&lt;br /&gt;
		if ((mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgEditMessage&amp;quot;) === &#039;editing&#039;) || mw.config.get(&#039;wgPageName&#039;) === &amp;quot;ویکی‌پدیا:ویکی‌پروژه_ابزارها/آزمایش_واحد&amp;quot;) {&lt;br /&gt;
			//مقاله‌ای که فقط زیربخش سطح ۱ دارد&lt;br /&gt;
			if (text.replace(/\=\=/g, &#039;&#039;) === text) {&lt;br /&gt;
				var text2 = text.replace(new RegExp(&#039;^\=([^\=\r\n]+)\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
				if (text !== text2) {&lt;br /&gt;
					text = text2.replace(/\n\=  /g, &#039;\n= &#039;).replace(/  \=\n/g, &#039; =\n&#039;)&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
			//مقاله‌ای که فقط زیربخش سطح ۳ یا ۴ دارد&lt;br /&gt;
			var text_test = text.replace(/^\=+ (منابع|جستارهای وابسته|پیوند به بیرون|پانویس|نگارخانه) \=+\n/gm, &#039;&#039;)&lt;br /&gt;
			if (text_test.replace(/^\=\= /gm, &#039;&#039;) === text_test) {&lt;br /&gt;
				if (text_test.replace(/^\=\=\= /gm, &#039;&#039;) !== text_test) {&lt;br /&gt;
					//سطح ۳&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=([^\=\r\n]+)\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=\=([^\=\r\n]+)\=\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;=== $1 ===&amp;quot;)&lt;br /&gt;
				} else if (text_test.replace(/^\=\=\=\= /gm, &#039;&#039;) !== text_test) {&lt;br /&gt;
					//سطح ۴&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=\=([^\=\r\n]+)\=\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
				} else {&lt;br /&gt;
					text = text.replace(/===/g, &#039;==&#039;)&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
			text = text.replace(/==  /g, &#039;== &#039;).replace(/  ==/g, &#039; ==&#039;)&lt;br /&gt;
		};&lt;br /&gt;
		return text;&lt;br /&gt;
	};&lt;br /&gt;
	function decimalPointToArabic(text) {&lt;br /&gt;
		// Convert decimal point to the Arabic decimal separator.&lt;br /&gt;
		return text.replace(new RegExp(&#039;([٠١٢٣٤٥٦٧٨٩])\\.(?=[٠١٢٣٤٥٦٧٨٩])&#039;, &#039;g&#039;), &#039;$1٫&#039;)&lt;br /&gt;
	};&lt;br /&gt;
	function toArabicIndicDigits(text) {&lt;br /&gt;
		// Persian digits ۰۱۲۳۴۵۶۷۸۹ -&amp;gt; Arabic-Indic digits ٠١٢٣٤٥٦٧٨٩.&lt;br /&gt;
		for (var i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
			text = text.replace(new RegExp(&#039;[&#039; + arabicDigits[i] + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicIndicDigits[i]);&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
	// This keeps the original public function name for compatibility,&lt;br /&gt;
	// but its output is now Arabic-Indic digits.&lt;br /&gt;
	function wikiTextDigitsToPersian(text) {&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			toEnglishDigits,&lt;br /&gt;
			[patterns.argumentsBlacklist, patterns.fileNames, patterns.fileParameter]);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			toArabicIndicDigits,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.url, patterns.argumentsBlacklist, patterns.mapFrameTag, patterns.mathTag, patterns.imagePixelSize, patterns.fileNames, patterns.ref,&lt;br /&gt;
			patterns.sourceTag, patterns.arabicDigitsEnglishContext, patterns.signatures, patterns.htmlEntity, patterns.diffLink,&lt;br /&gt;
			patterns.htmlAttributes, patterns.fileParameter, patterns.templateParameterName, patterns.ipSign,&lt;br /&gt;
			patterns.parenthesesAfterDigits, patterns.otherLanguagesInline, patterns.preTag, patterns.isbn, patterns.englishDate,&lt;br /&gt;
			patterns.parameter, patterns.color, patterns.templateEnglishName, patterns.linksOnEnglishContext, patterns.citation, patterns.refname,&lt;br /&gt;
			patterns.LtRTagEnclosed, patterns.boxVar, patterns.mediawikiFunctions, patterns.graphTemplate]&lt;br /&gt;
		);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			decimalPointToArabic,&lt;br /&gt;
			[patterns.catgories, patterns.graphTemplate]&lt;br /&gt;
		);&lt;br /&gt;
		return text&lt;br /&gt;
			// Arabic thousands separator&lt;br /&gt;
			.replace(/([٠١٢٣٤٥٦٧٨٩]),([٠١٢٣٤٥٦٧٨٩])/g, &#039;$1٬$2&#039;)&lt;br /&gt;
			.replace(/([٠١٢٣٤٥٦٧٨٩])( |)\u0652/g, &#039;$1°&#039;)&lt;br /&gt;
			.replace(/\u0652( |)([٠١٢٣٤٥٦٧٨٩])/g, &#039;°$2&#039;)&lt;br /&gt;
			.replace(/([\u0621-\u064A\u0653-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2])°/g, &#039;$1 °&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	function dictationReplace(x, y, extensions, text) {&lt;br /&gt;
		return text.replace(&lt;br /&gt;
			new RegExp(&lt;br /&gt;
				&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;])(\\s|\u200c|_|)(&#039; + x + &#039;)(\\s|_)(&#039; + y + &#039;)(\\s|\u200c|_|)(&#039; +&lt;br /&gt;
				extensions + &#039;)($|[^&#039; + persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
				&#039;g&#039;&lt;br /&gt;
			),&lt;br /&gt;
			&#039;$1$2$3\u200c$5$6$7$8&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// it has dependency to MediaWiki:Gadget-Extra-Editbuttons-Dictionary.js&lt;br /&gt;
	function dictation(text) {&lt;br /&gt;
		var i,&lt;br /&gt;
			dictionary = persianToolsDictionary,&lt;br /&gt;
			NASB = &#039;\u064b&#039;, // ًـ&lt;br /&gt;
			ZAMM = &#039;\u064c&#039;; // ُـ&lt;br /&gt;
		for (i in dictionary.complexes) {&lt;br /&gt;
			if (dictionary.complexes.hasOwnProperty(i)) {&lt;br /&gt;
				text = dictationReplace(&lt;br /&gt;
					i,&lt;br /&gt;
					dictionary.complexes[i],&lt;br /&gt;
					&#039;ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
					text&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// for last name&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.personNames,&lt;br /&gt;
			&#039;ی|یی|زاده|نیا|گان|فر|نژاد|یان|ی\u200cها|یها&#039;,&lt;br /&gt;
			&#039;ی|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for &#039;آباد&#039;s&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.personNames + &#039;|&#039; + dictionary.addToAbad,&lt;br /&gt;
			&#039;آباد&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یان|ها|های|یی|هایی|ی\u200cها|یها|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for first names&lt;br /&gt;
		for (i in dictionary.firstNameComplex) {&lt;br /&gt;
			if (dictionary.firstNameComplex.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&lt;br /&gt;
						&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;]|\\s|_)(&#039; + i + &#039;)(\\s|_)(&#039; +&lt;br /&gt;
						dictionary.firstNameComplex[i] + &#039;)(\\s|_)($|[^&#039; + persianTools.persianCharacters + &#039;]|[^&#039; +&lt;br /&gt;
						persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
						&#039;g&#039;&lt;br /&gt;
					),&lt;br /&gt;
					&#039;$1$2\u200c$4$5$6&#039;&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// for colors&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.colorsNames,&lt;br /&gt;
			&#039;فام|گون&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|ی\u200cها|یها|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for numbers&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.persianNumbers,&lt;br /&gt;
			&#039;گانه|ماهه&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// wrong dictation&lt;br /&gt;
		for (i in dictionary.forReplace) {&lt;br /&gt;
			if (dictionary.forReplace.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&lt;br /&gt;
						&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;])(\\s|\\(|\u200c|_|)(&#039; + i + &#039;)(\\s|\\)|\u200c|_|)($|[^&#039; +&lt;br /&gt;
						persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
						&#039;g&#039;&lt;br /&gt;
					),&lt;br /&gt;
					&#039;$1$2&#039; + dictionary.forReplace[i] + &#039;$4$5&#039;&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var preword = &amp;quot;(^|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot;;&lt;br /&gt;
		// کلماتی که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.wordsWithA + &amp;quot;)(ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\]|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\&#039;|\\!|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
		// بن مضارع که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(&amp;quot;(^|\u200c|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.PresentVerbsWithA + &amp;quot;)(م|ی|د|یم|ید|ند)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// بن ماضی که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(&amp;quot;(^|\u200c|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.PastVerbsWithA + &amp;quot;)(م|ی|یم|ید|ند|ه|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// همزه ضم&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.HamzehZam + &amp;quot;)(‌ها|ها|ین|ان|ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/وء/, &#039;ؤ&#039;).replace(/و/i, &#039;ؤ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
		//همزه نصب&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.HamzehNasb + &amp;quot;)(ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;أ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		//همزه وسط کلمه&lt;br /&gt;
		for (i in dictionary.HamzehAtInside) {&lt;br /&gt;
			text = text.replace(new RegExp(&lt;br /&gt;
				preword + i + &#039;)(| )(&#039; + dictionary.HamzehAtInside[i] + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;,&lt;br /&gt;
				&#039;g&#039;&lt;br /&gt;
			), &#039;$1$2ء$4&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// در مورد افزودن یا حذف همزهٔ پایانی اجماعی وجود ندارد.&lt;br /&gt;
		/* text = text.replace(new RegExp(preword + dictionary.HamzehAtEnd + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&#039;$1$2ء&#039;); */&lt;br /&gt;
&lt;br /&gt;
		//الف مقصوره&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.AlefMaghsooreh + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;ی&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// صفت+تر&lt;br /&gt;
		text = text.replace(new RegExp(&amp;quot;(^|\\s|_|«|»|\\]|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.adjective + &amp;quot;)( |_)تر(?= |«|»|\\.|\\[|\\]|،|_|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;), &#039;$1$2\u200cتر&#039;);&lt;br /&gt;
&lt;br /&gt;
		// اسامی رنگ‌ها (به‌عنوان صفت)+تر&lt;br /&gt;
		text = text.replace(new RegExp(&amp;quot;(^|\\s|_|«|»|\\]|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.colorsNames + &amp;quot;)( |_)تر(?= |«|»|\\.|\\[|\\]|،|_|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;), &#039;$1$2\u200cتر&#039;);&lt;br /&gt;
&lt;br /&gt;
		text = text.replace(/به دست\u200cآورد/g, &#039;به دست آورد&#039;); // Solving a bug!&lt;br /&gt;
		text = persianTools.normalizeZwnj(text);&lt;br /&gt;
		return text.replace(new RegExp(&amp;quot;(^|[؛\\s\\n\\.،«»\&#039;\\&amp;lt;\\&amp;gt;؟])(&amp;quot; + dictionary.needsNasb + &#039;)[&#039; + NASB + ZAMM + &#039;]?([؛؟\\s\\n\\.،«»\&#039;&amp;quot;\\&amp;lt;\\&amp;gt;]|$)&#039;, &#039;g&#039;), function (match) {&lt;br /&gt;
			return match&lt;br /&gt;
				.replace(new RegExp(&#039;ا([\\s\\n\\.،«»؟؛&amp;quot;\&#039;\\&amp;gt;\\&amp;lt;&#039; + ZAMM + &#039;])&#039;, &#039;i&#039;), &#039;ا&#039; + NASB + &#039;$1&#039;)&lt;br /&gt;
				.replace(new RegExp(NASB + &#039;[&amp;quot;&#039; + NASB + ZAMM + &#039;]&#039;), NASB);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiDictation(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			dictation,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag, patterns.insideQuote, patterns.argumentsBlacklist, patterns.articleTitleParts]&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
	function wikiApplyOrthography(text) {&lt;br /&gt;
		text = text //en:Wikipedia:HTML5&lt;br /&gt;
			//big&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){5})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){5})/g, &#039;&amp;lt;span style=&amp;quot;font-size: 56px;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){4})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){4})/g, &#039;&amp;lt;span style=&amp;quot;font-size: 38px;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){3})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){3})/g, &#039;{{خیلی بزرگ|$2}}&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){2})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){2})/g, &#039;{{بزرگ|$2}}&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){1})([^&amp;lt;]+|[\s\S]+)((?:\&amp;lt;\/big\&amp;gt;){1})/g, &#039;{{درشت|$2}}&#039;)&lt;br /&gt;
			//center&lt;br /&gt;
			.replace(/&amp;lt;center&amp;gt;&amp;lt;gallery&amp;gt;([\S\s]+?)\&amp;lt;\/gallery&amp;gt;&amp;lt;\/center&amp;gt;/g, &#039;&amp;lt;gallery class=&amp;quot;center&amp;quot;&amp;gt;$1&amp;lt;/gallery&amp;gt;&#039;)&lt;br /&gt;
			//.replace(/&amp;lt;center&amp;gt;([\S\s]+?)&amp;lt;\/center&amp;gt;/g,&#039;{{وسط|$1}}&#039;)&lt;br /&gt;
			//empty tag&lt;br /&gt;
			.replace(/&amp;lt;span style=&amp;quot;font-size: [^&amp;gt;]+&amp;quot;&amp;gt;&amp;lt;\/span&amp;gt;/g, &#039;&#039;)&lt;br /&gt;
			.replace(/{{(?:درشت|خیلی بزرگ|بزرگ|وسط)\|}}/g, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		//حذف برچسب‌های خالی نرم‌افزار مدیاویکی&lt;br /&gt;
		var tags = [&#039;math&#039;, &#039;div&#039;, &#039;grammarly\\-btn&#039;, &#039;code&#039;, &#039;nowiki&#039;, &#039;pre&#039;, &#039;syntaxhighlight&#039;, &#039;source&#039;, &#039;s&#039;, &#039;noinclude&#039;, &#039;includeonly&#039;, &#039;big&#039;, &#039;small&#039;, &#039;gallery&#039;];// has bug for sub , sup [[Special:Diff/19450140/19490903]]&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				for (var i = 0; i &amp;lt; tags.length; ++i) {&lt;br /&gt;
					for (var b = 0; b &amp;lt; 5; ++b) {//خیلی از برچسب‌های خالی تو در تو هستند مانند [[Special:PermaLink/19223877]]&lt;br /&gt;
						text = text.replace(new RegExp(&#039;\&amp;lt;&#039; + tags[i] + &#039;[^\&amp;gt;]*\&amp;gt;(\\n|\\s|\u200c)*?\&amp;lt;\\/&#039; + tags[i] + &#039;\&amp;gt;&#039;, &#039;g&#039;), &#039;&#039;);&lt;br /&gt;
					}&lt;br /&gt;
					// remove the tags if they occurred multiple times consequently&lt;br /&gt;
					if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 || mw.config.get(&#039;wgNamespaceNumber&#039;) === 4) {&lt;br /&gt;
						text = text.replace(new RegExp(&#039;(\&amp;lt;&#039; + tags[i] + &#039;\&amp;gt;){2,}&#039;, &#039;g&#039;), &#039;$1&#039;)&lt;br /&gt;
							.replace(new RegExp(&#039;(\&amp;lt;\\/&#039; + tags[i] + &#039;\&amp;gt;){2,}&#039;, &#039;g&#039;), &#039;$1&#039;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
					text = text.replace(/\&amp;lt;ref\&amp;gt;[\s\n]*\&amp;lt;\/ref\&amp;gt;/g, &#039;&#039;).replace(/\&amp;lt;ref\&amp;gt;[\s\n]*\&amp;lt;ref\&amp;gt;/g, &#039;&amp;lt;ref&amp;gt;&#039;).replace(/\&amp;lt;\/ref\&amp;gt;[\s\n]*\&amp;lt;\/ref\&amp;gt;/g, &#039;&amp;lt;/ref&amp;gt;&#039;).replace(/\&amp;lt;ref\/\&amp;gt;/g, &#039;&amp;lt;/ref&amp;gt;&#039;);&lt;br /&gt;
				};&lt;br /&gt;
				return text&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.insideHtmlComment]&lt;br /&gt;
		);&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.applyOrthography,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag, patterns.wikilinkTargets, patterns.rfd]&lt;br /&gt;
		).replace(patterns.galleryTag, function (gallery) {&lt;br /&gt;
			// apply `applyOrthography` on gallery descriptions separately&lt;br /&gt;
			return gallery.replace(/^([^\|]*?\|)(.*)$/mg, function (x, y, z) {&lt;br /&gt;
				return y + persianTools.applyOrthography(z);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// probably should be exactly same above but for applyZwnj&lt;br /&gt;
	function wikiApplyZwnj(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.applyZwnj,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag]&lt;br /&gt;
		).replace(patterns.galleryTag, function (gallery) {&lt;br /&gt;
			// apply `applyOrthography` on gallery descriptions separatly&lt;br /&gt;
			return gallery.replace(/^([^\|]*?\|)(.*)$/mg, function (x, y, z) {&lt;br /&gt;
				return y + persianTools.applyZwnj(z);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function replaceEnMonth(text) {&lt;br /&gt;
		var enMonth = {&lt;br /&gt;
			&#039;آگست&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;آگوست&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;جولای&#039;: &#039;ژوئیه&#039;,&lt;br /&gt;
			&#039;مارچ&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;آپریل&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;فوریوری&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;january&#039;: &#039;ژانویه&#039;,&lt;br /&gt;
			&#039;jan&#039;: &#039;ژانویه&#039;,&lt;br /&gt;
			&#039;february&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;feb&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;march&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;mar&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;april&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;apr&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;may&#039;: &#039;مه&#039;,&lt;br /&gt;
			&#039;june&#039;: &#039;ژوئن&#039;,&lt;br /&gt;
			&#039;jun&#039;: &#039;ژوئن&#039;,&lt;br /&gt;
			&#039;july&#039;: &#039;ژوئیه&#039;,&lt;br /&gt;
			&#039;august&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;aug&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;september&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;sept&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;sep&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;october&#039;: &#039;اکتبر&#039;,&lt;br /&gt;
			&#039;oct&#039;: &#039;اکتبر&#039;,&lt;br /&gt;
			&#039;november&#039;: &#039;نوامبر&#039;,&lt;br /&gt;
			&#039;nov&#039;: &#039;نوامبر&#039;,&lt;br /&gt;
			&#039;december&#039;: &#039;دسامبر&#039;,&lt;br /&gt;
			&#039;dec&#039;: &#039;دسامبر&#039;&lt;br /&gt;
		};&lt;br /&gt;
		for (var i in enMonth) {&lt;br /&gt;
			var text_new = text.replace(new RegExp(i, &#039;ig&#039;), enMonth[i])&lt;br /&gt;
			if (text_new != text) {&lt;br /&gt;
				return text_new&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
	};&lt;br /&gt;
	function autoFormatCleanDatesException(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			autoFormatCleanDates,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.citation, patterns.argumentsBlacklist, patterns.ref]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function wikitranslateEnMonth(text) {&lt;br /&gt;
		text = autoFormatCleanDatesException(text)&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function translateEnMonth(text) {&lt;br /&gt;
				var enMonthRegex = &#039;(آگست|آگوست|جولای|مارچ|آپریل|january|jan|february|feb|march|mar|april|apr|may|jun|june|july|august|aug|sep|sept|september|oct|october|nov|november|december|dec)&#039;;&lt;br /&gt;
				return text.replace(new RegExp(&#039;([^a-zA-Z])(\^|\\||\\s|\\=|\\n|\\(|«|\\:)&#039; + enMonthRegex + &#039; (\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2})\\, (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|\$|\\)|\\}|»)([\^a\-zA\-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
					function (x) {&lt;br /&gt;
						x = x.replace(new RegExp(&#039;([\^a\-zA\-Z])(\^|\\||\\s|\\=|\\n|\\(|«|\\:)&#039; + enMonthRegex + &#039; (\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2})\\, (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|\$|\\)|\\}||»)([^a-zA-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
							&#039;$1$2$4 $3 $5$6$7&#039;)&lt;br /&gt;
						x = persianTools.toPersianDigits(x);&lt;br /&gt;
						x = replaceEnMonth(x);&lt;br /&gt;
						return x;&lt;br /&gt;
					})&lt;br /&gt;
					.replace(new RegExp(&#039;([\^a\-zA\-Z])(\^|\\||\\s|\\=|\\n|\\(|«)((\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2}) |)&#039; + enMonthRegex + &#039; (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|$|\\)|\\}|»|\\:)([\^a\-zA\-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
						function (x) {&lt;br /&gt;
							x = persianTools.toPersianDigits(x);&lt;br /&gt;
							x = replaceEnMonth(x);&lt;br /&gt;
							return x;&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.ref, patterns.fileParameter, patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.citation, patterns.argumentsBlacklist]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var arabicDigits = &#039;0123456789&#039;, persianDigits = &#039;۰۱۲۳۴۵۶۷۸۹&#039;, arabicIndicDigits = &#039;٠١٢٣٤٥٦٧٨٩&#039;;&lt;br /&gt;
	function robustToEnglishDigits(text) {&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
			text = text.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function toEnglishDigits(text) {&lt;br /&gt;
		text = text.replace(/[a-zA-Z]([\_\s\:\.\,\;\]\[\&amp;quot;\&#039;\)\(\}\{\/\\ ]+|)([۱۲۳۴۵۶۷۸۹۰٪\.٫\-\—\–°÷×\+\,\s\_\:،»«؛]+)([\_\s\:\.\,\;\]\[\&amp;quot;\&#039;\)\(\}\{\/\\\&amp;lt;\&amp;gt; ]+|)([a-zA-Z\&amp;gt;]|$)/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x.replace(/،/g, &#039;,&#039;).replace(/»/g, &#039;&amp;quot;&#039;).replace(/«/g, &#039;&amp;quot;&#039;).replace(/؛/g, &#039;;&#039;);&lt;br /&gt;
		});&lt;br /&gt;
		// bug [[Special:Diff/17760890/17760898]]&lt;br /&gt;
		text = text.replace(/([a-zA-Z][۱۲۳۴۵۶۷۸۹۰]+) *\=/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		// ISBN, ISSN and PMID&#039;s numbers should in english&lt;br /&gt;
		text = text.replace(/\b(ISBN|ISSN|PMID|PubMed) *:? *([۱۲۳۴۵۶۷۸۹۰0-9–—−ـ_\-]+)([^۱۲۳۴۵۶۷۸۹۰0-9–—−ـ_\-]|$)/gi, function (x) {&lt;br /&gt;
			x = x.replace(/[–—−ـ_\-]+/g, &#039;-&#039;)&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			x = x.replace(/\b(ISBN|ISSN|PMID|PubMed) *:? *([۱۲۳۴۵۶۷۸۹۰\-0-9]+)([^۱۲۳۴۵۶۷۸۹۰\-0-9]|$)/gi, &#039;$1 $2$3&#039;)&lt;br /&gt;
			x = x.replace(&#039;PubMed&#039;, &#039;PMID&#039;)&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		text = text.replace(/ISBN \-note/g, &#039;ISBN-note&#039;);&lt;br /&gt;
		// تبدیل عددهای فارسی در عدد ترتیبی انگلیسی&lt;br /&gt;
		text = text.replace(/(?:^|[&amp;quot;\&#039;\s_«\(\[\{])([۱۲۳۴۵۶۷۸۹۰]+)(st|nd|rd|th)[\s_\.,»&amp;quot;\&#039;\)\]\}]/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + arabicDigits + &#039;]) ?٪&#039;, &#039;g&#039;), &#039;$1%&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + arabicDigits + &#039;])٫(?=[&#039; + arabicDigits + &#039;])&#039;, &#039;g&#039;), &#039;$1.&#039;) // English decimal separator&lt;br /&gt;
	}&lt;br /&gt;
	function cleanTemplateBracesFromArticle(text, alwaysRun) { // like [[Special:Diff/18828723]]&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 &amp;amp;&amp;amp; !alwaysRun) {&lt;br /&gt;
			return text;&lt;br /&gt;
		}&lt;br /&gt;
		var i = 0&lt;br /&gt;
		for (i = 0; i &amp;lt;= 5; i = i + 1) {&lt;br /&gt;
			text = text.replace(/\{\{\{[^\|\}]+\|([^\}]+)\}\}\}/g, &#039;$1&#039;)&lt;br /&gt;
				.replace(/\{\{\{[^\|\}]+\| *\}\}\}/g, &#039;&#039;)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return text.replace(/\{\{\#(?!invoke)/ig, &#039;{{جا:#&#039;)&lt;br /&gt;
			.replace(/\{\{ *(PAGENAME|FULLPAGENAMEE|SITENAME|NAMESPACE) *\}\}/g, &#039;{{جا:$1}}&#039;)&lt;br /&gt;
			.replace(&#039;{{ترتیب‌پیش‌فرض:}}&#039;, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function decodeHTMLSymbolEntitiesCodes(text) {&lt;br /&gt;
		//&amp;amp;copy; &amp;gt; ©&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function decodeEntitiesCodes(text) {&lt;br /&gt;
				if(!text) return &#039;&#039;;&lt;br /&gt;
				for (var i in htmlEntityCodes) {&lt;br /&gt;
					var entityInput = i;&lt;br /&gt;
					var entityoutput = htmlEntityCodes[i];&lt;br /&gt;
					text = text.replace(new RegExp(entityInput, &#039;g&#039;), entityoutput);&lt;br /&gt;
				}&lt;br /&gt;
				return text;&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.ref, patterns.fileParameter,&lt;br /&gt;
			patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName,&lt;br /&gt;
			patterns.citation, patterns.url]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function removeWikiSigne(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				text = text.replace(/\[\[([^\|\]]+)\|([^\]]+)\]\]/g, &#039;$2&#039;);&lt;br /&gt;
				text = text.replace(/\[\[([^\|\]]+)\]\]/g, &#039;$1&#039;);&lt;br /&gt;
				return text;&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.fileParameter,&lt;br /&gt;
			patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.nowikiTag, patterns.preTag,&lt;br /&gt;
			patterns.insideHtmlComment]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function autoEdHTMLtoWikitextWikiTools(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			autoEd.autoEdHTMLtoWikitext,&lt;br /&gt;
			[patterns.fileParameter, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function superTool(text) {&lt;br /&gt;
		text = decodeHTMLSymbolEntitiesCodes(text);&lt;br /&gt;
		text = cleanTemplateBracesFromArticle(text);&lt;br /&gt;
		text = persianWikiTools.wikiConvertToPersianCharacters(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyZwnj(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyOrthography(text);&lt;br /&gt;
		text = persianWikiTools.wikitranslateEnMonth(text);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 10) {&lt;br /&gt;
			text = persianWikiTools.wikiTextDigitsToPersian(text);&lt;br /&gt;
		}&lt;br /&gt;
		text = persianWikiTools.wikiUrlMinifier(text);&lt;br /&gt;
		text = persianWikiTools.wikiDictation(text);&lt;br /&gt;
		text = persianWikiTools.wikiPunctuation(text);&lt;br /&gt;
		text = persianWikiTools.wikiSubsection(text);&lt;br /&gt;
		text = persianWikiTools.SubSectionLeveling(text)&lt;br /&gt;
		//ابزارهای بیشتر برگرفته از ویکی‌پدیای انگلیسی [[Mediawiki:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
		text = autoEd.autoEdISBN(text);&lt;br /&gt;
		text = autoEd.autoEdWhitespace(text);&lt;br /&gt;
		text = autoEdHTMLtoWikitextWikiTools(text);&lt;br /&gt;
		text = autoEd.autoEdHeadlines(text);&lt;br /&gt;
		text = autoEd.autoEdTablestoWikitext(text);&lt;br /&gt;
		text = autoEd.autoEdExtraBreaks(text);&lt;br /&gt;
		text = persianWikiTools.addColumnToRefTemplate(text);&lt;br /&gt;
		text = persianWikiTools.removeCheckDict(text);&lt;br /&gt;
		text = persianWikiTools.sortCategories(text, mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;));&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function superToolMove(text) {&lt;br /&gt;
		text = &#039; &#039; + text + &#039; &#039;; // بعضی از کدها اگر فاصله در انتها یا اول نباشد عمل نمی‌کنند مانند افزودن تنوین به کلمه بعدا&lt;br /&gt;
		text = persianWikiTools.wikiConvertToPersianCharacters(text);&lt;br /&gt;
		text = persianTools.applyZwnj(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyOrthography(text);&lt;br /&gt;
		text = persianWikiTools.wikiTextDigitsToPersian(text);&lt;br /&gt;
		text = persianWikiTools.wikiUrlMinifier(text);&lt;br /&gt;
		text = persianWikiTools.wikiDictation(text);&lt;br /&gt;
		text = persianWikiTools.wikiPunctuation(text);&lt;br /&gt;
		return text.trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Puts the selceted text (trims spaces from start and end) in bdi tags&lt;br /&gt;
	// does not put the whole content in tags if no text is selected&lt;br /&gt;
	function putSelectionInBDI(text) {&lt;br /&gt;
	    // if no text is selected, don&#039;t put the whole content inside the tags&lt;br /&gt;
	    // can&#039;t return nothing because applyOnSelection() expects some text&lt;br /&gt;
	    // and throws an error while no text is provided&lt;br /&gt;
	    if (text == $(&#039;#wpTextbox1&#039;).val()) {&lt;br /&gt;
	        return text;&lt;br /&gt;
	    } else {&lt;br /&gt;
	        // regExp to trim space from begining and end of the selected text,&lt;br /&gt;
	        // and save them to be placed outside of tags&lt;br /&gt;
	        var regExp = /(^\s*)|(\s*$)/gm;&lt;br /&gt;
	        var startEndSpaces = text.match(regExp);&lt;br /&gt;
	        // place selected spaces outside of tags&lt;br /&gt;
	        // and remove them from the text inside&lt;br /&gt;
	        var outText = startEndSpaces[0] + &#039;&amp;lt;bdi&amp;gt;&#039; + text.replace(regExp, &#039;&#039;) + &#039;&amp;lt;/bdi&amp;gt;&#039; +  startEndSpaces[1]; &lt;br /&gt;
	        return outText;&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		removeWikiSigne: removeWikiSigne,&lt;br /&gt;
		superTool: superTool,&lt;br /&gt;
		superToolMove: superToolMove,&lt;br /&gt;
		dictation: dictation,&lt;br /&gt;
		wikiApplyOrthography: wikiApplyOrthography,&lt;br /&gt;
		wikiApplyZwnj: wikiApplyZwnj,&lt;br /&gt;
		wikiConvertToPersianCharacters: wikiConvertToPersianCharacters,&lt;br /&gt;
		wikiDictation: wikiDictation,&lt;br /&gt;
		wikiPunctuation: wikiPunctuation,&lt;br /&gt;
		wikiSubsection: wikiSubsection,&lt;br /&gt;
		SubSectionLeveling: SubSectionLeveling,&lt;br /&gt;
		wikiUrlMinifier: wikiUrlMinifier,&lt;br /&gt;
		wikiTextDigitsToPersian: wikiTextDigitsToPersian,&lt;br /&gt;
		wikitranslateEnMonth: wikitranslateEnMonth,&lt;br /&gt;
		addColumnToRefTemplate: addColumnToRefTemplate,&lt;br /&gt;
		fixBadLinks: fixBadLinks,&lt;br /&gt;
		robustToEnglishDigits: robustToEnglishDigits,&lt;br /&gt;
		toEnglishDigits: toEnglishDigits,&lt;br /&gt;
		cleanTemplateBracesFromArticle: cleanTemplateBracesFromArticle,&lt;br /&gt;
		removeCheckDict: removeCheckDict,&lt;br /&gt;
		sortCategories: sortCategories,&lt;br /&gt;
		putSelectionInBDI : putSelectionInBDI&lt;br /&gt;
	};&lt;br /&gt;
}());&lt;br /&gt;
if (typeof window !== &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
	window.persianWikiTools = persianWikiTools;&lt;br /&gt;
}&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persianwikitools.js&amp;diff=1037</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-persianwikitools.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persianwikitools.js&amp;diff=1037"/>
		<updated>2026-08-29T17:02:27Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DO NOT REMOVE THIS LINE EVER&lt;br /&gt;
/**&lt;br /&gt;
 * Wikipedia specific Persian text style improvement tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also: [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 */&lt;br /&gt;
/*global persianTools, persianToolsDictionary, autoEd*/&lt;br /&gt;
var persianWikiTools = (function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
	var persianMonths = [&amp;quot;فروردین&amp;quot;, &amp;quot;اردیبهشت&amp;quot;, &amp;quot;خرداد&amp;quot;, &amp;quot;تیر&amp;quot;, &amp;quot;مرداد&amp;quot;, &amp;quot;شهریور&amp;quot;, &amp;quot;مهر&amp;quot;, &amp;quot;آبان&amp;quot;, &amp;quot;آذر&amp;quot;, &amp;quot;دی&amp;quot;, &amp;quot;بهمن&amp;quot;, &amp;quot;اسفند&amp;quot;];&lt;br /&gt;
	//http://www.entitycode.com/&lt;br /&gt;
	var htmlEntityCodes = {&lt;br /&gt;
		&amp;quot;&amp;amp;iexcl;&amp;quot;: &amp;quot;¡&amp;quot;, &amp;quot;&amp;amp;cent;&amp;quot;: &amp;quot;¢&amp;quot;, &amp;quot;&amp;amp;pound;&amp;quot;: &amp;quot;£&amp;quot;, &amp;quot;&amp;amp;curren;&amp;quot;: &amp;quot;¤&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;yen;&amp;quot;: &amp;quot;¥&amp;quot;, &amp;quot;&amp;amp;brvbar;&amp;quot;: &amp;quot;¦&amp;quot;, &amp;quot;&amp;amp;sect;&amp;quot;: &amp;quot;§&amp;quot;, &amp;quot;&amp;amp;copy;&amp;quot;: &amp;quot;©&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;middot;&amp;quot;: &amp;quot;·&amp;quot;, &amp;quot;&amp;amp;times;&amp;quot;: &amp;quot;×&amp;quot;, &amp;quot;&amp;amp;rdquo;&amp;quot;: &amp;quot;”&amp;quot;, &amp;quot;&amp;amp;dagger;&amp;quot;: &amp;quot;†&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;Dagger;&amp;quot;: &amp;quot;‡&amp;quot;, &amp;quot;&amp;amp;euro;&amp;quot;: &amp;quot;€&amp;quot;, &amp;quot;&amp;amp;laquo;&amp;quot;: &amp;quot;«&amp;quot;, &amp;quot;&amp;amp;reg;&amp;quot;: &amp;quot;®&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;deg;&amp;quot;: &amp;quot;°&amp;quot;, &amp;quot;&amp;amp;plusmn;&amp;quot;: &amp;quot;±&amp;quot;, &amp;quot;&amp;amp;sup2;&amp;quot;: &amp;quot;²&amp;quot;, &amp;quot;&amp;amp;sup3;&amp;quot;: &amp;quot;³&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;para;&amp;quot;: &amp;quot;¶&amp;quot;, &amp;quot;&amp;amp;sup1;&amp;quot;: &amp;quot;¹&amp;quot;, &amp;quot;&amp;amp;raquo;&amp;quot;: &amp;quot;»&amp;quot;, &amp;quot;&amp;amp;frac14;&amp;quot;: &amp;quot;¼&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;frac12;&amp;quot;: &amp;quot;½&amp;quot;, &amp;quot;&amp;amp;frac34;&amp;quot;: &amp;quot;¾&amp;quot;, &amp;quot;&amp;amp;iquest;&amp;quot;: &amp;quot;¿&amp;quot;, &amp;quot;&amp;amp;divide;&amp;quot;: &amp;quot;÷&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ndash;&amp;quot;: &amp;quot;–&amp;quot;, &amp;quot;&amp;amp;mdash;&amp;quot;: &amp;quot;—&amp;quot;, &amp;quot;&amp;amp;lsquo;&amp;quot;: &amp;quot;‘&amp;quot;, &amp;quot;&amp;amp;rsquo;&amp;quot;: &amp;quot;’&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ldquo;&amp;quot;: &amp;quot;“&amp;quot;, &amp;quot;&amp;amp;trade;&amp;quot;: &amp;quot;™&amp;quot;, &amp;quot;&amp;amp;bull;&amp;quot;: &amp;quot;•&amp;quot;, &amp;quot;&amp;amp;hellip;&amp;quot;: &amp;quot;…&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;permil;&amp;quot;: &amp;quot;‰&amp;quot;, &amp;quot;&amp;amp;lsaquo;&amp;quot;: &amp;quot;‹&amp;quot;, &amp;quot;&amp;amp;rsaquo;&amp;quot;: &amp;quot;›&amp;quot;, &amp;quot;&amp;amp;larr;&amp;quot;: &amp;quot;←&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;uarr;&amp;quot;: &amp;quot;↑&amp;quot;, &amp;quot;&amp;amp;rarr;&amp;quot;: &amp;quot;→&amp;quot;, &amp;quot;&amp;amp;darr;&amp;quot;: &amp;quot;↓&amp;quot;, &amp;quot;&amp;amp;harr;&amp;quot;: &amp;quot;↔&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;crarr;&amp;quot;: &amp;quot;↵&amp;quot;, &amp;quot;&amp;amp;minus;&amp;quot;: &amp;quot;−&amp;quot;, &amp;quot;&amp;amp;radic;&amp;quot;: &amp;quot;√&amp;quot;, &amp;quot;&amp;amp;infin;&amp;quot;: &amp;quot;∞&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;loz;&amp;quot;: &amp;quot;◊&amp;quot;, &amp;quot;&amp;amp;spades;&amp;quot;: &amp;quot;♠&amp;quot;, &amp;quot;&amp;amp;rfloor;&amp;quot;: &amp;quot;⌋&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;quot;: &amp;quot; &amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ne;&amp;quot;: &amp;quot;≠&amp;quot;, &amp;quot;&amp;amp;ap;&amp;quot;: &amp;quot;≈&amp;quot;, &amp;quot;&amp;amp;approx;&amp;quot;: &amp;quot;≈&amp;quot;, &amp;quot;&amp;amp;asymp;&amp;quot;: &amp;quot;≈&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;rceil;&amp;quot;: &amp;quot;⌉&amp;quot;, &amp;quot;&amp;amp;lfloor;&amp;quot;: &amp;quot;⌊&amp;quot;, &amp;quot;&amp;amp;diams;&amp;quot;: &amp;quot;♦&amp;quot;, &amp;quot;&amp;amp;auml;&amp;quot;: &amp;quot;ä&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ouml;&amp;quot;: &amp;quot;ö&amp;quot;, &amp;quot;&amp;amp;uuml;&amp;quot;: &amp;quot;ü&amp;quot;, &amp;quot;&amp;amp;szlig;&amp;quot;: &amp;quot;ß&amp;quot;, &amp;quot;&amp;amp;aring;&amp;quot;: &amp;quot;å&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;oline; &amp;quot;: &amp;quot;‾ &amp;quot;, &amp;quot;&amp;amp;aelig;&amp;quot;: &amp;quot;æ&amp;quot;, &amp;quot;&amp;amp;ccedil;&amp;quot;: &amp;quot;ç&amp;quot;, &amp;quot;&amp;amp;ntilde;&amp;quot;: &amp;quot;ñ&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;acirc;&amp;quot;: &amp;quot;â&amp;quot;, &amp;quot;&amp;amp;aacute;&amp;quot;: &amp;quot;á&amp;quot;, &amp;quot;&amp;amp;agrave;&amp;quot;: &amp;quot;à&amp;quot;, &amp;quot;&amp;amp;#36;&amp;quot;: &amp;quot;$&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;clubs;&amp;quot;: &amp;quot;♣&amp;quot;, &amp;quot;&amp;amp;hearts;&amp;quot;: &amp;quot;♥&amp;quot;, &amp;quot;&amp;amp;Prime;&amp;quot;: &amp;quot;″&amp;quot;, &amp;quot;&amp;amp;prime;&amp;quot;: &amp;quot;′&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;lceil;&amp;quot;: &amp;quot;⌈&amp;quot;, &amp;quot;&amp;amp;mldr;&amp;quot;: &amp;quot;…&amp;quot;, &amp;quot;&amp;amp;bullet;&amp;quot;: &amp;quot;•&amp;quot;, &amp;quot;&amp;amp;grave;&amp;quot;: &amp;quot;`&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;pm;&amp;quot;: &amp;quot;±&amp;quot;, &amp;quot;&amp;amp;acute;&amp;quot;: &amp;quot;´&amp;quot;, &amp;quot;&amp;amp;centerdot;&amp;quot;: &amp;quot;·&amp;quot;, &amp;quot;&amp;amp;half;&amp;quot;: &amp;quot;½&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;Auml;&amp;quot;: &amp;quot;Ä&amp;quot;, &amp;quot;&amp;amp;Ouml;&amp;quot;: &amp;quot;Ö&amp;quot;, &amp;quot;&amp;amp;Uuml;&amp;quot;: &amp;quot;Ü&amp;quot;, &amp;quot;&amp;amp;rsquor;&amp;quot;: &amp;quot;’&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;lsquor;&amp;quot;: &amp;quot;‚&amp;quot;, &amp;quot;&amp;amp;sbquo;&amp;quot;: &amp;quot;‚&amp;quot;, &amp;quot;&amp;amp;rdquor;&amp;quot;: &amp;quot;”&amp;quot;, &amp;quot;&amp;amp;bdquo;&amp;quot;: &amp;quot;„&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ldquor;&amp;quot;: &amp;quot;„&amp;quot;, &amp;quot;&amp;amp;ddagger;&amp;quot;: &amp;quot;‡&amp;quot;, &amp;quot;&amp;amp;div;&amp;quot;: &amp;quot;÷&amp;quot;, &amp;quot;&amp;amp;leq;&amp;quot;: &amp;quot;≤&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;geq;&amp;quot;: &amp;quot;≥&amp;quot;, &amp;quot;&amp;amp;le;&amp;quot;: &amp;quot;≤&amp;quot;, &amp;quot;&amp;amp;ge;&amp;quot;: &amp;quot;≥&amp;quot;&lt;br /&gt;
	}; // &amp;amp;quot; , &amp;amp;amp; &amp;amp;lt; &amp;amp;gt; &amp;amp;#124;&lt;br /&gt;
	var patterns = {&lt;br /&gt;
		arabicDigitsEnglishContext: /[a-z]([\|a-z %&amp;quot;&#039;\._:\;,\-\\\/\(\)\#\^\+\d&amp;gt;&amp;lt;–\[\]&amp;amp;?{}](?!\|\|))*\d|(\d|[a-z])[a-z %&amp;quot;&#039;\._:\;\|,\-\\\/\(\)\#\^\+\d&amp;gt;&amp;lt;–\[\]&amp;amp;?{}]*[a-z]\d*/gi,&lt;br /&gt;
		arabicTagEnclosed: /\{\{(?:عربی|شروع عربی|آغاز عربی)\}\}([\s\S]*?)\{\{(?:پایان عربی)\}\}/g,&lt;br /&gt;
		LtRTagEnclosed: /\{\{(?:چپ چین|چپ‌چین)\}\}([\s\S]*?)\{\{(?:پایان چپ‌چین|پایان چپ چین|پایان)\}\}/g,&lt;br /&gt;
		argumentsBlacklist: /(?:accessdate|namespace|legend1start|image|تصویر|doi|style|شابک|عرض|bibcode|isbn|issn|pmid|arxiv|upright|upleft|padding|spacing|border|filename|نام پرونده|ایستاده)\s*\=\s*[^\|\}\]]*/gi,&lt;br /&gt;
		color: /#(?:[abcdef0-9]{8}|[abcdef0-9]{6}|[abcdef0-9]{3})/gi,&lt;br /&gt;
		//colorAsParameter: /\=\s*(?:[abcdef0-9]{8}|[abcdef0-9]{6}|[abcdef0-9]{3})(?:[\s\|\}]|$)/gi,&lt;br /&gt;
		// space, &amp;quot;, \t, \n, {, |, }, ... they will interfere with wiki markup&lt;br /&gt;
		decodeUriBlacklist: /(?:%20|%27|%5C|%5E|%60|%23|%25|%3C|%3E|%5B|%5D|%22|%09|%0A|%7B|%7C|%7D|%C2|%A0)/gi,&lt;br /&gt;
		diffLink: /\[\[(?:ویژه|Special):(?:تفاوت|Diff)\/[^\|\]]*/gi,&lt;br /&gt;
		englishDate: /\d{1,2},? [a-z]{3,} \d{2,4}/gi, // 3, May 2013&lt;br /&gt;
		fileNames: /(?:پرونده|File|تصویر|Image)\:.*?(?=\||\]|\n|$)|=.*\.(?:flac|gif|jpeg|jpg|mid|mp3|mpeg|mpg|ogg|pdf|png|svg|wav|webm)$/mgi, // don&#039;t capture | after&lt;br /&gt;
		fileParameter: /\|\s*(image|تصویر)\s*\=\s*.*/g,&lt;br /&gt;
		ipSign: /\[\[ویژه:مشارکت\u200cها.*?\]\]/g,&lt;br /&gt;
		isbn: /(?:ISBN|ISSN|PMID) [\d\-]*/gi,&lt;br /&gt;
		galleryTag: /&amp;lt;gallery.*?&amp;gt;[\s\S]*?&amp;lt;\/gallery&amp;gt;/g,&lt;br /&gt;
		htmlAttributes: /(?:style|perrow|colspan|color|rowspan|cellpadding|cellspacing|height|width|size|border|thumbtime|name|perrow|upright|upleft)\s*[\=\:]\s*(?:[&#039;\&amp;quot;].*?[&#039;\&amp;quot;]|[\da-z]+)/gi,&lt;br /&gt;
		htmlEntity: /&amp;amp;#\d+;/,&lt;br /&gt;
		imagePixelSize: /[\|=] *[x\d]+?(px|پیکسل)[\]\|\s]/g, // means it will capture |10px| and |10x10px|&lt;br /&gt;
		insideQuote: /[^ا]&amp;quot;.*?&amp;quot;/g,&lt;br /&gt;
		wikilinkTargets: /\[[^\[|\]]+/g,&lt;br /&gt;
		nowikiTag: /&amp;lt;nowiki&amp;gt;.+?&amp;lt;\/nowiki&amp;gt;/g,&lt;br /&gt;
		preTag: /&amp;lt;pre.*?&amp;gt;.*?&amp;lt;\/pre&amp;gt;/g,&lt;br /&gt;
		insideHtmlComment: /&amp;lt;\!\-\-[\s\S]*?\-\-&amp;gt;/g,&lt;br /&gt;
		linksOnEnglishContext: /[a-z][\:\,\. ]*\[\[[\da-z\-\, ]*/gi,&lt;br /&gt;
		mapFrameTag: /&amp;lt;mapframe.*?&amp;gt;[\s\S]*?&amp;lt;\/mapframe&amp;gt;/g,&lt;br /&gt;
		mathTag: /&amp;lt;math.*?&amp;gt;[\s\S]*?&amp;lt;\/math&amp;gt;/g,&lt;br /&gt;
		otherLanguagesInline: /\{\{(?:به .+?|پم|به انگلیسی|انگلیسی|عربی|متن عربی|عبارت عربی|حدیث|به عربی|به اردو|اردو|lang\-[au]r|پینگ|ping)[\s\S]*?\}\}/g,&lt;br /&gt;
		parameter: /\{\{\{\d+/gi,&lt;br /&gt;
		parenthesesAfterDigits: /\w\s?\([\w\s\.\-]*?\)/g,&lt;br /&gt;
		parenthesesHa: /\)ها/g,&lt;br /&gt;
		ref: /(?:&amp;lt;ref[^\/]*?&amp;gt;[\s\S]*?&amp;lt;\/ref&amp;gt;|&amp;lt;ref[^\/]*?\/&amp;gt;)/g, // inside &amp;lt;ref&amp;gt;&amp;lt;/ref&amp;gt; and &amp;lt;ref/&amp;gt;&lt;br /&gt;
		refname: /\&amp;lt;ref name\=.*?\&amp;gt;/g,&lt;br /&gt;
		citation: /\{\{\s*(?:[Cc]it|یادکرد).*?[_\s]*(?:\{\{.*?\}\}|[^\}])*\}\}/g,&lt;br /&gt;
		signatures: /\[\[(?:کاربر|User|بحث[ _]کاربر|User[_ ]talk)\:.*?\]\]/gi,&lt;br /&gt;
		sourceTag: /(&amp;lt;source.*?&amp;gt;[\s\S]*?&amp;lt;\/source&amp;gt;|&amp;lt;syntaxhighlight.*?&amp;gt;[\s\S]*?&amp;lt;\/syntaxhighlight&amp;gt;|&amp;lt;code.*?&amp;gt;[\s\S]*?&amp;lt;\/code&amp;gt;|&amp;lt;timeline.*?&amp;gt;[\s\S]*?&amp;lt;\/timeline&amp;gt;)/g,&lt;br /&gt;
		tagNames: /&amp;lt;\/?[a-zA-Z\d]*/g,&lt;br /&gt;
		graphTemplate: /(?:\&amp;lt;div[^\&amp;gt;]+&amp;gt;)?\{\{[ \_]*(?:الگو|Template)?(?:[Gg]raph\:?[^\|\}]+).*?[_\s\n]*(?:\{\{.*?\}\}|[^\}])*\}\}(?:\&amp;lt;\/div\&amp;gt;)?/g,&lt;br /&gt;
		templateEnglishName: /(الگو|Template):[a-z][a-z\d\-\+_]+/gi,&lt;br /&gt;
		templateWithEnglishName: /\{\{[ \_]*(?:الگو|Template)?[\x00-\x7a~]*\|.*?\}\}/gi,&lt;br /&gt;
		templateParameterName: /\|\s*(?=[a-z_]*\d)[a-z_\d]*\s*\=/gi,&lt;br /&gt;
		globalExceptionTag: /(&amp;lt;nowiki&amp;gt;.+?&amp;lt;\/nowiki&amp;gt;|&amp;lt;!--[\s]*ابر[\s]*--&amp;gt;.+?&amp;lt;!--[\s]*\/[\s]*ابر[\s]*--&amp;gt;|\{\{استثنای ابرابزار\|[\s\S]*?\}\})/gi,&lt;br /&gt;
		translatedUrl: /.(کام|نت|آی‌آر)/g,&lt;br /&gt;
		boxVar: /([a-zA-Z][۱۲۳۴۵۶۷۸۹۰]+) *\=/g,&lt;br /&gt;
		url: /\/\/.*?(?=[\s\n\|\}\]&amp;lt;]|$)/gi,	 // بدون https?: هم ممکن است&lt;br /&gt;
		url2: /\/\/.*?(?:[\s\n\|\}\]&amp;lt;]|$)/gi,	 //برای مواردی که نیاز باشد ادامهٔ نشانی وب را دست نزند&lt;br /&gt;
		urlArchive: /\/\/web\.archive\.org[^\|\}\n\&amp;lt;\&amp;gt;]+/gi,&lt;br /&gt;
		mediawikiFunctions: /\{\{\#(?:\{\{.*?\}\}|[^\}])*\}\}/gi,&lt;br /&gt;
		articleTitleParts: new RegExp(&#039;\\s&#039; + escapeRegExp(mw.config.get(&#039;wgTitle&#039;)).split(&#039; &#039;).join(&#039;\\s|\\s&#039;) + &#039;\\s&#039;, &#039;g&#039;),&lt;br /&gt;
		catgories: /\[\[(?:رده|[Cc]ategory)\:[^\]]+\]\]/gi,&lt;br /&gt;
		rfd: /\{\{نظرخواهی برای حذف.*\}\}/g&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	function escapeRegExp(string) {&lt;br /&gt;
		return string.replace(/[.*+?^${}()|[\]\\]/g, &#039;\\$&amp;amp;&#039;); // $&amp;amp; means the whole matched string&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function escapeRE(s) {&lt;br /&gt;
		return s.replace(/([$()*+\-.?[\\\]^{|}])/g, &#039;\\$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function descendingFromComparetor(x, y) {&lt;br /&gt;
		return x.from - y.from;&lt;br /&gt;
	}&lt;br /&gt;
	function removeCheckDict(text) {&lt;br /&gt;
		// رفع مشکل [[Special:Permalink/25174868#متن هایلایت‌شده]]&lt;br /&gt;
		var otext = &#039;&#039;&lt;br /&gt;
		while (otext != text) {&lt;br /&gt;
			otext = text&lt;br /&gt;
			text = text.replace(/\&amp;lt;span[^&amp;gt;]+CheckDictation\-marked[^&amp;gt;]+\&amp;gt;([^&amp;lt;&amp;gt;]+)\&amp;lt;\/span\&amp;gt;/g, &#039;$1&#039;)&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
	}&lt;br /&gt;
	function replaceExcept(text, callback, excepts) {&lt;br /&gt;
		var match, result = [], i, ranges, minRange, to, min, max;&lt;br /&gt;
		while (text !== &#039;&#039;) {&lt;br /&gt;
			ranges = [];&lt;br /&gt;
&lt;br /&gt;
			for (i in excepts) {&lt;br /&gt;
				if (excepts.hasOwnProperty(i)) {&lt;br /&gt;
					// a global regex should be reset before calls&lt;br /&gt;
					excepts[i].lastIndex = 0;&lt;br /&gt;
					match = excepts[i].exec(text);&lt;br /&gt;
					if (match !== null) {&lt;br /&gt;
						ranges.push({&lt;br /&gt;
							from: match.index,&lt;br /&gt;
							to: match.index + match[0].length&lt;br /&gt;
						});&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// so nothing is matched&lt;br /&gt;
			if (ranges.length === 0) {&lt;br /&gt;
				result.push(callback(text));&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			minRange = ranges.sort(descendingFromComparetor)[0];&lt;br /&gt;
			min = minRange.from;&lt;br /&gt;
&lt;br /&gt;
			to = [];&lt;br /&gt;
			for (i in ranges) {&lt;br /&gt;
				if (ranges.hasOwnProperty(i)) {&lt;br /&gt;
					if (ranges[i].from &amp;lt;= minRange.to) {&lt;br /&gt;
						to.push(ranges[i].to);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			max = Math.max.apply(null, to);&lt;br /&gt;
&lt;br /&gt;
			result.push(callback(text.substr(0, min)));&lt;br /&gt;
			result.push(text.substr(min, max - min));&lt;br /&gt;
			// console.log(&#039;Excepted: &amp;quot;&#039; + text.substr(min, max - min) + &#039;&amp;quot;&#039;);&lt;br /&gt;
			text = text.substr(max);&lt;br /&gt;
		}&lt;br /&gt;
		return result.join(&#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiConvertToPersianCharacters(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.toStandardPersianCharacters,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.otherLanguagesInline, patterns.arabicTagEnclosed, patterns.fileNames, patterns.signatures, patterns.url, patterns.fileParameter]&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!String.prototype.trim) { // if is not available currently&lt;br /&gt;
		String.prototype.trim = function () {&lt;br /&gt;
			return this.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanReferences(str) {&lt;br /&gt;
		// تمیزکاری autoFormater.js &amp;gt; cleanReferences&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;\s*references\s*(\s\b[^&amp;lt;&amp;gt;]*?)?\s*(?:\/|&amp;gt;\s*&amp;lt;\s*\/\s*references)\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;references$1/&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
			//ویکی‌پدیای فارسی منبع برای ارجاع نیست  &lt;br /&gt;
			str = str.replace(/\&amp;lt;ref[^&amp;gt;]*\&amp;gt;\[?(?:https?:)?\/\/fa.(?:m\.)?wikipedia.org\/[^\&amp;lt;\n\}\]\[]+\]?\&amp;lt;\/ref\&amp;gt;/gi, &#039;&#039;)&lt;br /&gt;
		};&lt;br /&gt;
		str = str.replace(/&amp;lt;\s*references\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;/gi, &#039;&amp;lt;references$1&amp;gt;&#039;);&lt;br /&gt;
		str = str.replace(/&amp;lt;\s*\/\s*references\s*&amp;gt;/gi, &#039;&amp;lt;\/references&amp;gt;&#039;);&lt;br /&gt;
		var re = /(&amp;lt;references[^&amp;lt;\/&amp;gt;]*)&amp;gt;/g, m;&lt;br /&gt;
		while (m = re.exec(str)) {&lt;br /&gt;
			if (str.indexOf(&#039;&amp;lt;\/references&amp;gt;&#039;, m.index) &amp;lt; 0) {&lt;br /&gt;
				str = str.slice(0, m.index) + m[1] + &#039;/&amp;gt;&#039; + str.slice(m.index + m[0].length);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;&amp;gt;]*?)\s*(?:\/+|&amp;gt;\s*&amp;lt;\s*\/+\s*ref) *&amp;gt;/gi, &#039;&amp;lt;ref$1/&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
		/* remove line breaks with assays only the top of the article */&lt;br /&gt;
		var i = str.indexOf(&#039;&amp;lt;references&#039;),&lt;br /&gt;
			slice;&lt;br /&gt;
		if (i &amp;gt; 0) {&lt;br /&gt;
			slice = str.slice(i);&lt;br /&gt;
			slice = slice.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;[\t ]*/gi, &#039;&amp;lt;ref$1&amp;gt;&#039;);&lt;br /&gt;
			slice = slice.replace(/(?:(\n[\t ]*)|[\t ]*)&amp;lt;\s*\/+\s*ref\s*&amp;gt;/gi, &#039;$1&amp;lt;\/ref&amp;gt;&#039;);&lt;br /&gt;
			str = str.slice(0, i);&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;\s*/gi, &#039;&amp;lt;ref$1&amp;gt;&#039;);&lt;br /&gt;
		str = str.replace(/\s*&amp;lt;\s*\/+\s*ref\s*&amp;gt;/gi, &#039;&amp;lt;\/ref&amp;gt;&#039;);&lt;br /&gt;
		if (slice) {&lt;br /&gt;
			str += slice;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/* Space between the end of block and remove &amp;lt;ref&amp;gt; or two &amp;lt;ref&amp;gt; */&lt;br /&gt;
		str = str.replace(/([!,.;?]|&amp;lt;ref\b[^&amp;lt;&amp;gt;]*(?:\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/ref)&amp;gt;) +(?=&amp;lt;ref[ &amp;gt;])/gi, &#039;$1&#039;);&lt;br /&gt;
		/* Two identical punctuation before and cut after a &amp;lt;ref&amp;gt; on one */&lt;br /&gt;
		str = str.replace(/([!,.:;?])(&amp;lt;ref\b[^&amp;lt;&amp;gt;]*(?:\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/ref)&amp;gt;)\1/gi, &#039;$1$2&#039;);&lt;br /&gt;
		/* ref inside small */&lt;br /&gt;
		return str.replace(/\&amp;lt;small\&amp;gt; *(\&amp;lt;ref[^\&amp;lt;]+\&amp;lt;\/ref\&amp;gt;)&amp;lt;\/small\&amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanTags(str) {&lt;br /&gt;
		str = str.replace(/(&amp;lt;\/?s)trike\b/gi, &#039;$1&#039;);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;u\&amp;gt;([^\&amp;lt;]+)\&amp;lt;\/u\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;&#039;&#039;$1&#039;&#039;&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;center\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;{{وسط‌چین}}&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;\/center\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;{{پایان}}&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;sub\s*(&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;)\s*(?:su[bp]\s*[.\/\\]+|[.\/\\]+\s*su[bp])\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;sub$1/sub&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;sup\s*(&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;)\s*(?:su[bp]\s*[.\/\\]+|[.\/\\]+\s*su[bp])\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;sup$1/sup&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/* Drop default font attributes */&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;font\b[^&amp;lt;&amp;gt;]*?)\s+fa\w+(?:[\s&amp;quot;&#039;,=]*(?:Arial|Helvetica(?:\W?N\w*)?|sans\W?serif)\b)+[\s&amp;quot;&#039;;]*(?=\s\w+\s*=|&amp;gt;)/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;font\b[^&amp;lt;&amp;gt;]*?)\s+size[\s&amp;quot;&#039;,=]*(?:-1\b|2\b|100\b[ ,.]*\d*%|1(?:\.0*)?em\b)[&amp;quot;&#039;;]*/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Remove inline elements with no attributes */&lt;br /&gt;
		while (/&amp;lt;(font|span)\s*&amp;gt;\s*(?:&amp;lt;(?!\1)|[^&amp;lt;])*?\s*&amp;lt;\/\1[^&amp;lt;&amp;gt;]*&amp;gt;/i.test(str)) {&lt;br /&gt;
			str = str.replace(/&amp;lt;(font|span)\s*&amp;gt;[ \n]*((?:&amp;lt;(?!\1)|[^&amp;lt;])*?)[ \n]*&amp;lt;\/\1[^&amp;lt;&amp;gt;]*&amp;gt;/gi, &#039;$2&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+color[\s&amp;quot;&#039;,=]*(#[\dA-F]{3,6}|[a-z]{3,20})[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;color:$1;&amp;quot;&amp;gt;$2&amp;lt;\/span&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+size[\s&amp;quot;&#039;,=]*(?:-[2-9]|[01])[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;small&amp;gt;$1&amp;lt;\/small&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+size[\s&amp;quot;&#039;,=]*(?:[+-]0|3)[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;$1&amp;lt;\/span&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Merge nested inline tags */&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;(abbr|cite|mark|q|s|small|u)\s*&amp;gt;&amp;lt;(font|span)\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/\2\s*&amp;gt;\s*(?=&amp;lt;\/\1\s*&amp;gt;)/gi,&lt;br /&gt;
			&#039;&amp;lt;$1 style=&amp;quot;$3;&amp;quot;&amp;gt;$4&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;span\b[^&amp;lt;&amp;gt;]*?)\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;&amp;lt;span\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/span\s*&amp;gt;\s*(?=&amp;lt;\/span\s*&amp;gt;)/gi,&lt;br /&gt;
			&#039;$1 style=&amp;quot;$2; $3;&amp;quot;&amp;gt;$4&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/* Verschiedenste Formen von HTML-Zeilenumbrüchen durch einheitliche ersetzen */&lt;br /&gt;
		str = str.replace(/&amp;lt;(?:[\s\/\\]*br\b)+\s*(\s\w[^&amp;lt;&amp;gt;]*?)?[\s.\/\\]*&amp;gt;/gi, &#039;&amp;lt;br$1/&amp;gt;&#039;);&lt;br /&gt;
		/* Unnötige HTML-Zeilenumbrüche entfernen, wenn sowieso ein Absatz folgt */&lt;br /&gt;
		str = str.replace(/ *(?:{{سخ}}|&amp;lt;br \/&amp;gt;)(?=[\r\n][\n#*:;\|}\]])/gi, &#039;&#039;);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;(ref|small|su[bp])\b\s*(\s\w[^&amp;lt;&amp;gt;]*?)?\s*&amp;gt;&amp;lt;small\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/small\s*&amp;gt;&amp;lt;\/\1\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;$1$2&amp;gt;$3&amp;lt;\/$1&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;small\s*&amp;gt;&amp;lt;(ref|small|su[bp])\b\s*(\s\w[^&amp;lt;&amp;gt;]*?)?\s*?( ?\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/\1)\s*&amp;gt;&amp;lt;\/small\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;$1$2$3&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Drop old navigation bar wrapper, see [[Template:NaviBlock]] */&lt;br /&gt;
		return str.replace(&lt;br /&gt;
			/&amp;lt;div\s+class[^&amp;lt;&amp;gt;\w]*BoxenVerschmelzen[^&amp;lt;&amp;gt;\w]*&amp;gt;\s*(\{\{[^#:&amp;lt;&amp;gt;{}]*\}\})\s*&amp;lt;\/div&amp;gt;/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanDuplicateLinks(str) {&lt;br /&gt;
		/* Exclude files and infoboxes from the start of the article */&lt;br /&gt;
		var m = /^(?:\s*\[\[\w+:(?:\[\[[^\n\]]*\]\]|[^\n\]])*\]\])*(?:\s*\{\{(?:\{\{[^}]*\}\}|[^}])*\}\})+/.exec(str),&lt;br /&gt;
			start = m ? m[0].length : 0,&lt;br /&gt;
			found = [],&lt;br /&gt;
			a = [];&lt;br /&gt;
		/* Unlink years that are linked more than one time */&lt;br /&gt;
		var re = /\[\[ *([۱۲][۱۲۳۴۵۶۷۸۹۰]{3}|[۱۲][۱۲۳۴۵۶۷۸۹۰]{3} \((میلادی|قمری)\)) *\]\]/g;&lt;br /&gt;
		/* In each case the first discovery of a year noted entlinken thereafter */&lt;br /&gt;
		while (m = re.exec(str)) {&lt;br /&gt;
			if (m.index &amp;gt;= start) {&lt;br /&gt;
				found[m[1]] ? a.push(m) : found[m[1]] = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		var r = &#039;&#039;,&lt;br /&gt;
			p = 0;&lt;br /&gt;
		for (var i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
			r += str.slice(p, a[i].index) + a[i][1];&lt;br /&gt;
			p = a[i].index + a[i][0].length;&lt;br /&gt;
		}&lt;br /&gt;
		return p ? r + str.slice(p) : str;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanDates(str) {&lt;br /&gt;
		var months = [&amp;quot;ژانویه&amp;quot;, &amp;quot;فوریه&amp;quot;, &amp;quot;مارس&amp;quot;, &amp;quot;آوریل&amp;quot;, &amp;quot;مه&amp;quot;, &amp;quot;ژوئن&amp;quot;, &amp;quot;ژوئیه&amp;quot;, &amp;quot;اوت&amp;quot;, &amp;quot;سپتامبر&amp;quot;, &amp;quot;اکتبر&amp;quot;, &amp;quot;نوامبر&amp;quot;, &amp;quot;دسامبر&amp;quot;, &amp;quot;January&amp;quot;, &amp;quot;February&amp;quot;, &amp;quot;March&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;June&amp;quot;, &amp;quot;July&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;October&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;December&amp;quot;].concat(persianMonths);&lt;br /&gt;
&lt;br /&gt;
		/* Add missing space between day and month */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s!\&#039;(&amp;gt;|„](?:3[01]|[12]\\d|0?[1-9])\\.?)(?=(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;)\\b)&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* No non-breaking space between month and year */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;(\\b(?:3[01]|[12]\\d|0?[1-9])\\.?(?:[\\s\\xA0]|&amp;amp;nbsp;)+(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;))(?:\xA0|&amp;amp;nbsp;)(?=[12]\\d{3}\\b)&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* Missverständliches deutsches Datumsformat durch Langform ersetzen */&lt;br /&gt;
		var separator = &#039; &#039;;&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/([\s&#039;(&amp;gt;„])(3[01]|[12]\d|0?[1-9])\. *(1[012]|0?[1-9])\. *(?=[12]\d{3}[!,.:;?]?[\s&#039;)&amp;lt;\]“])/g,&lt;br /&gt;
			function ($0, $1, $2, $3) {&lt;br /&gt;
				return $1 + ($2 | 0) + separator + months[$3 | 0] + &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		// عدد عربی&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s!\&#039;(&amp;gt;|„](?:٣[٠١]|[١٢][١٢٣٤٥٦٧٨٩]|٠?[١٢٣٤٥٦٧٨٩])\\.?)(?=(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;)[\\s\&#039;)&amp;lt;\\]»}|])&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* No non-breaking space between month and year */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s\&#039;(&amp;gt;«](?:٣[٠١]|[١٢][١٢٣٤٥٦٧٨٩]|٠?[١٢٣٤٥٦٧٨٩])\\.?(?:[\\s\\xA0]|&amp;amp;nbsp;)+(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;))(?:\xA0|&amp;amp;nbsp;)(?=[١٢][١٢٣٤٥٦٧٨٩]{3}[\\s\&#039;)&amp;lt;\\]»}|])&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* Missverständliches deutsches Datumsformat durch Langform ersetzen */&lt;br /&gt;
		var separator = &#039; &#039;;&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/([\s&#039;(&amp;gt;«])(٣[٠١]|[١٢][١٢٣٤٥٦٧٨٩]|٠?[١٢٣٤٥٦٧٨٩])\. *(١[٠١٢]|٠?[١٢٣٤٥٦٧٨٩])\. *(?=[١٢][١٢٣٤٥٦٧٨٩]{3}[!,.:;?]?[\s&#039;)&amp;lt;\]»}|])/g,&lt;br /&gt;
			function ($0, $1, $2, $3) {&lt;br /&gt;
				return $1 + ($2 | 0) + separator + months[$3 | 0] + &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		return str&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function quotationReplace(line) {&lt;br /&gt;
		[&lt;br /&gt;
			[&#039;“&#039;, &#039;”&#039;], [&#039;”&#039;, &#039;“&#039;], [&#039;‘&#039;, &#039;’&#039;], [&#039;’&#039;, &#039;‘&#039;], [&#039;‚&#039;, &#039;’&#039;], [&#039;„&#039;, &#039;”&#039;], [&#039;\\&amp;lt;\\&amp;lt;&#039;, &#039;\\&amp;gt;\\&amp;gt;&#039;], [&#039;\\(\\(&#039;, &#039;\\)\\)&#039;]&lt;br /&gt;
		].forEach(function(qs) {&lt;br /&gt;
			line = line.replace(new RegExp(&lt;br /&gt;
				&#039;(^|[&#039; + persianTools.persianCharacters + &#039;\\:&amp;gt;،»؛\\s\\n\\}\\]\\.]+)&#039;&lt;br /&gt;
				+ qs[0] + &#039;((?:\\[\\[|).*?[&#039; + persianTools.persianCharacters + &#039;\\n]+?(?:\\]\\]|\\.|\\&amp;lt;|\\:|\\{|\\[|…|))&#039; + qs[1]&lt;br /&gt;
				+ &#039;([&#039; + persianTools.persianCharacters + &#039;،«؛\\s\\n\\.\\[\\{]|$)&#039;, &#039;g&#039;&lt;br /&gt;
			), &#039;$1«$2»$3&#039;);&lt;br /&gt;
		});&lt;br /&gt;
		return line;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function quotation(text) {&lt;br /&gt;
		// این تابع زمانی گیومه را به فارسی تیدیل می‌کند که در پاراگراف مورد نظر تعداد گیومهٔ لاتین زوج باشد.&lt;br /&gt;
		var lines = text.split(/\n\n/);&lt;br /&gt;
		var result = [];&lt;br /&gt;
		for (var i = 0; i &amp;lt; lines.length; ++i) {&lt;br /&gt;
			var line = lines[i];&lt;br /&gt;
			if ((line.match(/&amp;quot;/g) || []).length % 2 === 0) { // count of quote marks&lt;br /&gt;
				// تبدیل گیومهٔ لاتین به فارسی&lt;br /&gt;
				// این دستور در ابتدا باشد تا فاصله‌های قبل و بعد گیومه هم اصلاح شود&lt;br /&gt;
				line = line.replace(&lt;br /&gt;
					new RegExp(&#039;(^|[&#039; + persianTools.persianCharacters + &#039;\\:&amp;gt;،»؛\\s\\n\\}\\]\\.\\)]+)&amp;quot;((?:\\[\\[|).*?[&#039; + persianTools.persianCharacters + &#039;؛\\n،]+?(?:\\]\\]|\\.|\\&amp;lt;|\\:|…|))&amp;quot;([&#039; + persianTools.persianCharacters + &#039;،«؛\\s\\n\\.\\[\\{\\(]|$)&#039;, &#039;g&#039;),&lt;br /&gt;
					&#039;$1«$2»$3&#039;&lt;br /&gt;
				);&lt;br /&gt;
				// if some of quote marks are remained from conversion, something might wrong, revert&lt;br /&gt;
				var testline = line.replace(/(?:&amp;lt;ref[^\/]*?&amp;gt;[\s\S]*?&amp;lt;\/ref&amp;gt;|&amp;lt;ref[^\/]*?\/&amp;gt;)/g, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
				if (testline.match(/&amp;quot;/g)) {&lt;br /&gt;
					line = lines[i];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// رفع مشکل استفاده از ـً به جای گیومه لاتین در متن فارسی&lt;br /&gt;
			line = line.replace(new RegExp(&#039;ا\\&amp;quot;([ ]*[&#039; + persianTools.persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;اً$1&#039;)&lt;br /&gt;
			line = line.replace(new RegExp(&#039;ا\\”([ ]*[&#039; + persianTools.persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;اً$1&#039;)&lt;br /&gt;
			line = quotationReplace(line);&lt;br /&gt;
			result.push(line);&lt;br /&gt;
		}&lt;br /&gt;
		return result.join(&#039;\n\n&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * افزودن ستون به الگوی پانویس&lt;br /&gt;
	 * @param {string} text محتوا&lt;br /&gt;
	*/&lt;br /&gt;
	function addColumnToRefTemplate(text) {&lt;br /&gt;
		var refTemplate = /\{\{پانویس([^\}\{]+)?\}\}/i.exec(text), needChange = false;&lt;br /&gt;
		if (refTemplate) {&lt;br /&gt;
			if ((text.match(/&amp;lt;ref/gi) || []).length &amp;gt;= 6) {&lt;br /&gt;
				if (refTemplate[1] !== undefined) {&lt;br /&gt;
					var refParams = refTemplate[1].split(&#039;|&#039;);&lt;br /&gt;
					for (var i = refParams.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						// اگر از پیش ستون یا پارامتر عرض تعریف شده‌باشد تغییری ایجاد نمی‌شود.&lt;br /&gt;
						if (refParams[i].length == 1 || refParams[i].indexOf(&#039;عرض&#039;) &amp;gt; -1) {&lt;br /&gt;
							needChange = true;&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (refTemplate[1] === undefined || !needChange) {&lt;br /&gt;
					return text.replace(refTemplate[0], refTemplate[0].replace(&#039;}}&#039;, &#039;|۲}}&#039;));&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			if ((mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgEditMessage&amp;quot;) === &#039;editing&#039;) || mw.config.get(&#039;wgPageName&#039;) === &amp;quot;ویکی‌پدیا:ویکی‌پروژه_ابزارها/آزمایش_واحد&amp;quot;) {&lt;br /&gt;
				if ((text.match(/&amp;lt;ref/gi) || []).length &amp;gt; 0 &amp;amp;&amp;amp; /\{\{پانویس([^\}\{]+)?\}\}/i.exec(text) != null) {&lt;br /&gt;
					var text2 = text.replace(&#039;== منابع ==&#039;, &#039;== منابع ==\n{{پانویس}}&#039;)&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text.replace(&#039;== پانویس ==&#039;, &#039;== پانویس ==\n{{پانویس}}&#039;)&lt;br /&gt;
					}&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text.replace(&#039;[[رده:&#039;, &#039;== منابع ==\n{{پانویس}}\n\n[[رده:&#039;)&lt;br /&gt;
					}&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text + &#039;\n== منابع ==\n{{پانویس}}&#039;&lt;br /&gt;
					}&lt;br /&gt;
					text = text2&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * اصلاح پیوندها&lt;br /&gt;
	 * @param  {string} text محتوا&lt;br /&gt;
	 * @return {string}&lt;br /&gt;
	 */&lt;br /&gt;
	function fixBadLinks(text) {&lt;br /&gt;
		// حذف متن جایگزین پیوند اگر با نشانی پیوند برابر باشد؛ مانند [[سلام|سلام]]&lt;br /&gt;
		text = text.replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;);&lt;br /&gt;
&lt;br /&gt;
		// حذف پیوند سال و روز ماه&lt;br /&gt;
		text = text.replace(/\[{2}([۰-۹]+|[۰-۹]+ [\)\(\u0621-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2]+)(?:\|([^\]\|\[]+))?\]{2}/g, function (match, p1, p2) {&lt;br /&gt;
			// اگر فقط سال پیوند شده‌باشد یا به شکل [[سال|همان سال]] باشد فقط سال را می‌گرداند.&lt;br /&gt;
			var calendar_type = / \((میلادی|قمری|خورشیدی|شمسی|پیش از میلاد|قبل از میلاد)\)/g;&lt;br /&gt;
			if (p1 !== p2 &amp;amp;&amp;amp; p1.replace(calendar_type, &#039;&#039;) === p2) {&lt;br /&gt;
				return p2;&lt;br /&gt;
			}//[[Special:Permalink/19908981#حذف پیوند تاریخ‌ها]]&lt;br /&gt;
			if (p2 === undefined || p1 === p2) {&lt;br /&gt;
				// اگر پیوند به روز و ماه بود، برای جلوگیری از اشتباه و تداخل، بررسی می‌شوند که حتما یکی از ماه‌ها داخل رشته باشد.&lt;br /&gt;
				if (p1.indexOf(&amp;quot; &amp;quot;) &amp;gt; -1) {&lt;br /&gt;
					var&lt;br /&gt;
						months = [&lt;br /&gt;
							&amp;quot;محرم&amp;quot;, &amp;quot;صفر&amp;quot;, &amp;quot;ربیع‌الاول&amp;quot;, &amp;quot;ربیع‌الثانی&amp;quot;, &amp;quot;جمادی‌الاول&amp;quot;, &amp;quot;جمادی‌الثانی&amp;quot;, &amp;quot;رجب&amp;quot;, &amp;quot;شعبان&amp;quot;, &amp;quot;رمضان&amp;quot;, &amp;quot;شوال&amp;quot;, &amp;quot;ذیقعده&amp;quot;, &amp;quot;ذیحجه&amp;quot;&lt;br /&gt;
						].concat(persianMonths),&lt;br /&gt;
						i;&lt;br /&gt;
					for (i = months.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						if (p1.indexOf(months[i]) &amp;gt; -1) {&lt;br /&gt;
							return p1.replace(calendar_type, &#039;&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					return &amp;quot;[[&amp;quot; + p1 + &amp;quot;]]&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			// اگر متن جایگزین پیوند مخالف پیوند سال بود، متن جایگزین را برمی‌گرداند.&lt;br /&gt;
			return p2;&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function sortCategories(content, pageName) {&lt;br /&gt;
		return content.replace(/((?:\n\[\[رده:.+\]\])+)/, function (categories) {&lt;br /&gt;
			var sortedCategories = persianTools.persianSort(categories.trim().split(&#039;\n&#039;));&lt;br /&gt;
			return &#039;\n&#039; + sortedCategories.map(function (line, i) {&lt;br /&gt;
				// Put a &amp;quot;| &amp;quot; on category with the same name as the page&lt;br /&gt;
				if (line.indexOf(&#039;[[رده:&#039; + pageName + &#039;]]&#039;) === 0)&lt;br /&gt;
					line = &#039;[[رده:&#039; + pageName + &#039;| ]]&#039;;&lt;br /&gt;
&lt;br /&gt;
				// If it contains &amp;quot;| &amp;quot; put it at top&lt;br /&gt;
				if (line.indexOf(&#039;| ]]&#039;) !== -1) i = -1;&lt;br /&gt;
&lt;br /&gt;
				return { index: i, content: line };&lt;br /&gt;
			}).sort(function (x, y) { // sort based on their initial line index&lt;br /&gt;
				return x.index - y.index;&lt;br /&gt;
			}).map(function (x) { return x.content; }).join(&#039;\n&#039;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiPunctuation(text) {&lt;br /&gt;
		text = autoFormatCleanReferences(text)&lt;br /&gt;
		text = autoFormatCleanTags(text)&lt;br /&gt;
		text = autoFormatCleanDuplicateLinks(text)&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return quotation(text);&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.ref]&lt;br /&gt;
		);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
			var old_text = text.replace(/\=\=/g, &#039;&#039;)&lt;br /&gt;
			if (old_text == text) {//در صورتی که در مقاله بخش‌بندی وجود نداشته باشد&lt;br /&gt;
				text = text.replace(/(\n\{\{سخ\}\}|\n\n)(\s|_|)\&#039;\&#039;\&#039;(.*?)\&#039;\&#039;\&#039;(\s|_|)(\{\{سخ\}\}|\n)([\n\#\*])/g, &#039;\n\n== $3 ==\n$6&#039;)&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&#039;([&#039; + persianTools.persianCharactersNoVowels + &#039;])ـ+([&#039; + persianTools.persianCharactersNoVowels + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
					&#039;$1$2&#039;&lt;br /&gt;
				);&lt;br /&gt;
				return text.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;])(\\]\\]|), (\\[\\[|)?(?=[&#039; + persianTools.persianCharacters + &amp;quot;])&amp;quot;, &#039;g&#039;), &#039;$1$2، $3&#039;);&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.url, patterns.galleryTag, patterns.sourceTag, patterns.translatedUrl, patterns.parenthesesHa]&lt;br /&gt;
		);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return text.replace(/(&amp;lt;\/ref&amp;gt;)\s+(&amp;lt;ref)/g, &#039;$1$2&#039;).replace(/([^=])\s+&amp;lt;ref(?!erences)/g, &#039;$1&amp;lt;ref&#039;);&lt;br /&gt;
			},&lt;br /&gt;
			[/\{\{(پانویس|پانویس‌ها|پی‌نوشت)\s*\|[\s\S]*/]&lt;br /&gt;
		);&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return persianTools.punctuation(text)&lt;br /&gt;
					.replace(/^([*#]+;?)([^*#;\:\s])/mg, &#039;$1 $2&#039;) // Adds a space after the # or * for lists&lt;br /&gt;
					.replace(/^([*#]+;?) {2,}(.)/mg, &#039;$1 $2&#039;); // Trim more that one space after the # or * for lists&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.mapFrameTag, patterns.mathTag, patterns.fileNames, patterns.url, patterns.wikilinkTargets,&lt;br /&gt;
			patterns.galleryTag, patterns.sourceTag, patterns.translatedUrl, patterns.parenthesesHa, patterns.insideHtmlComment]&lt;br /&gt;
		)&lt;br /&gt;
			.replace(/\u00A0/g, &#039; &#039;) // convert implicit nbsp to space, probably is being added by some bug on ContentTranslation&lt;br /&gt;
			.replace(/٬ /g, &#039;، &#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;\]])٬&#039;, &#039;g&#039;), &#039;$1،&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;])(\]\]|»|)[ ]*[,]&#039;, &#039;g&#039;), &#039;$1$2، &#039;)&lt;br /&gt;
			.replace(/\[\[([^\|\]]+)\|(\&#039;{2,3})\1&#039;{2,3}\]\]/g, &#039;$2[[$1]]$2&#039;) // for [[foo|&#039;&#039;&#039;foo&#039;&#039;&#039;]] &amp;gt; &#039;&#039;&#039;[[foo]]&#039;&#039;&#039;&lt;br /&gt;
			.replace(new RegExp(&#039;\\[\\[(&#039; + escapeRE(mw.config.get(&#039;wgPageName&#039;)) + &#039;)\\]\\]&#039;, &#039;g&#039;), &#039;$1&#039;) // پیوندزدایی از خود صفحه&lt;br /&gt;
			//برگرفته از https://checkwiki.toolforge.org/cgi-bin/checkwikin.cgi?project=fawiki&amp;amp;view=project&lt;br /&gt;
			.replace(/\[\[([^\|\]]+)\|\1([\u200c ]*(های?))\]\]/g, &#039;[[$1]]$2&#039;)//[[Special:Diff/17515365/17865938]]&lt;br /&gt;
			.replace(/([\S]*)[\s\u200c]*-[\s\u200c]*(تاکنون)(?![ ]+)/g, &#039;$1-اکنون&#039;)//[[Special:Diff/17515365/17865938]]&lt;br /&gt;
			//مشکل در نشانی اینترنتی&lt;br /&gt;
			.replace(/(\&amp;lt;ref.*?\&amp;gt;) *(\[|)\www(6|3|)\./gi, &#039;$1$2http://www$3.&#039;)&lt;br /&gt;
			.replace(/\[\[ *(https?\:\/\/.*?) *\]\]/g, &#039;[$1]&#039;)&lt;br /&gt;
			.replace(/\[\[ *(\/\/.*?) *\]\]/g, &#039;[$1]&#039;)&lt;br /&gt;
			.replace(/(https?:\/?\/?){2,}/g, &#039;$1&#039;)&lt;br /&gt;
			// تمیزکاری autoFormatter.js &amp;gt; cleanExternalLinks&lt;br /&gt;
			.replace(/\b(?:http(s?)(?::+\/*|\/\/+:*)\b)+/gi, &#039;http$1://&#039;)&lt;br /&gt;
			// repair links with vertical stroke&lt;br /&gt;
			.replace(/(\[https?:\/\/[^\s[\]|]*?) *\| *(?=[^\s=[\]|]+\])/gi, &#039;$1 &#039;)&lt;br /&gt;
			// supplement slashes at the end easier Domains&lt;br /&gt;
			.replace(/(\[https?:\/\/\w[\w.-]*\w\.\w+) +/gi, &#039;$1/ &#039;)&lt;br /&gt;
			// Domains lowercase, whether labeled or not&lt;br /&gt;
			.replace(/\bhttps?:\/\/\b[0-9a-z.-]*[A-Z][\w.-]*/g, function ($0) {&lt;br /&gt;
				return $0.toLowerCase();&lt;br /&gt;
			})&lt;br /&gt;
			// پیوند به بیرون‌هایی که در میان پیوند نویسهٔ رفتن به خط بعد، وجود داشته باشد&lt;br /&gt;
			.replace(/\[(?:https?\:|)\/\/[^\]\[]+\]/g, function (x) {&lt;br /&gt;
				x = x.replace(/[\n\r]/g, &#039;&#039;);&lt;br /&gt;
				return x&lt;br /&gt;
			})&lt;br /&gt;
			// فاصله اول زیربخش&lt;br /&gt;
			.replace(/پیوند\n\=/, &#039;پیوند=&#039;)// [[Special:Diff/20238012/20244702]]&lt;br /&gt;
			.replace(/^ +(\=+[^\=]+\=+)/mg, &#039;$1&#039;)&lt;br /&gt;
			.replace(/\[\[\|/g, &#039;[[&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *\/ *br *\&amp;gt;|\&amp;lt; *br *\\ *\&amp;gt;|\&amp;lt; *br *\. *\&amp;gt;)/g, &#039;&amp;lt;br/&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\})([\r\n])(\*|\#|\=\=)/g, &#039;$2$3&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\}) *\]\]/g, &#039;]]&#039;)&lt;br /&gt;
			.replace(/\[\[ *(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\})/g, &#039;[[&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *span *\/ *\&amp;gt;|\&amp;lt; *\/ *span *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *center *\/ *\&amp;gt;|\&amp;lt; *\/ *center *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/center&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *b *\/ *\&amp;gt;|\&amp;lt; *\/ *b *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/b&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *div *\/ *\&amp;gt;|\&amp;lt; *\/ *div *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *p *\/ *\&amp;gt;|\&amp;lt; *\/ *p *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/p&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *td *\/ *\&amp;gt;|\&amp;lt; *\/ *td *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/td&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *small *\/ *\&amp;gt;|\&amp;lt; *\/ *small *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/small&amp;gt;&#039;)&lt;br /&gt;
			.replace(/\[\[([^\]]+)\{\{\!\}\}([^\]]+)\]\]/g, &#039;[[$1|$2]]&#039;)//وجود {{!}} درون پیوند&lt;br /&gt;
			.replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;)//زمانی که بخش هدف و نمایه پیوند یکی باشند&lt;br /&gt;
			.replace(/\[\[(.+)\|(&#039;+)(.+\b)(&#039;+)\]\]/gi, &#039;$2[[$1|$3]]$4&#039;)// انتقال &#039;&#039;&#039; به بیرون پیوند&lt;br /&gt;
			// تمیزکاری autoFormatter.js &amp;gt; CleanGalleries&lt;br /&gt;
			.replace(/&amp;lt;gallery\b([^&amp;lt;&amp;gt;]*)&amp;gt;([^&amp;lt;&amp;gt;]+)&amp;lt;\/gallery\b[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
				function ($0, $1, $2) {&lt;br /&gt;
					return &#039;&amp;lt;gallery&#039; + $1 + &#039;&amp;gt;&#039; + $2&lt;br /&gt;
						.replace(/^(\s*)\[+([^[\]]*)\]\]?\s*$/gm, &#039;$1$2&#039;)&lt;br /&gt;
						.replace(/^(\s*)\[+/gm, &#039;$1&#039;) + &#039;&amp;lt;\/gallery&amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			)&lt;br /&gt;
			// تمیزکاری پرونده‌ها&lt;br /&gt;
			// زمانی که برچسب کوچک در توضیحات تصویر می‌آید برای دستگاه‌های با مانیتور کوچک خواندن متن مشکل می‌شود&lt;br /&gt;
			//https://checkwiki.toolforge.org/cgi-bin/checkwiki.cgi?project=fawiki&amp;amp;view=only&amp;amp;id=77&lt;br /&gt;
			.replace(/\[\[(پرونده|[Ff]ile)\:((?:\[\[.*?\]\]|[^\]])*)\]\]/g, function ($0, $1, $2) {&lt;br /&gt;
				$2 = $2.replace(/\&amp;lt;\/?(big|center|small)&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
				return &#039;[[&#039; + $1 + &#039;:&#039; + $2 + &#039;]]&#039;&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/\[\[ *تصو[يی]ر\:/gi, &#039;[[پرونده:&#039;)&lt;br /&gt;
			// تمیزکاری الگو autoFormater.js &amp;gt; cleanTemplates&lt;br /&gt;
			.replace(/\{\{\s*:?\s*(?:الگو|Template)\s*:\s*/gi, &#039;{\{&#039;)&lt;br /&gt;
			// حذف خط زیر از عنوان الگو&lt;br /&gt;
			.replace(/(?:^|[^{])\{\{[ 0-9a-z\xC0-\u024F-]*_[ \w\xC0-\u024F-]*/gi,&lt;br /&gt;
				function ($0) {&lt;br /&gt;
					return $0.replace(/_+$/, &#039;&#039;).replace(/[ _]+/g, &#039; &#039;).replace(/\{ +/, &#039;{&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			)&lt;br /&gt;
			//سایر موارد&lt;br /&gt;
			.replace(/\[\[(رده|الگو|ویکی\u200cپدیا)\: +/g, &#039;[[$1:&#039;)&lt;br /&gt;
			.replace(/\{\{\*\}\}/g, &#039;{{•}}&#039;)&lt;br /&gt;
			.replace(/[\n\s]*\{\{[•·ن](w?)\}\}\s*/g, &#039;{{•$1}} &#039;)&lt;br /&gt;
			.replace(/\=\{\{[•·ن](w?)\}\}\s*/g, &#039;=\n{{•$1}} &#039;)//رفع باگ [[Special:Diff/14799178/16387261]] در خط بالا &lt;br /&gt;
			.replace(/ *(&amp;lt;\/? ?br ?\/?&amp;gt;|\{\{بر\}\}) */g, &#039;{{سخ}}&#039;)&lt;br /&gt;
			.replace(/\{\{سخ\}\}\n\n/g, &#039;\n\n&#039;)&lt;br /&gt;
			.replace(/\n\n\{\{سخ\}\}/g, &#039;\n\n&#039;)&lt;br /&gt;
			.replace(/\{\{سخ\}\}\]/g, &#039;]&#039;)&lt;br /&gt;
			.replace(/\[\{\{سخ\}\}/g, &#039;[&#039;)&lt;br /&gt;
			.replace(/\n\n(\*|\#)/g, &#039;\n$1&#039;)&lt;br /&gt;
			.replace(/\n(\#|\*)( |)\n/g, &#039;\n$1&#039;)&lt;br /&gt;
			.replace(/\n(\*|\#)( |)(\={2,})/g, &#039;\n$3&#039;)&lt;br /&gt;
			.replace(/(\n?)\s+?&amp;lt;\/ref&amp;gt;/g, &#039;$1&amp;lt;/ref&amp;gt;&#039;)&lt;br /&gt;
			.replace(/\{ *\|/g, &#039;{|&#039;)&lt;br /&gt;
			.replace(/\| *\}/g, &#039;|}&#039;)&lt;br /&gt;
			.replace(/\{\| *\{\|/g, &#039;{|&#039;)&lt;br /&gt;
			.replace(/\|\} *\|\}/g, &#039;|}&#039;)&lt;br /&gt;
			.replace(/^=.*&amp;amp;nbsp;.*=$/gim, function ($0) {&lt;br /&gt;
				return $0.replace(/(?:&amp;amp;nbsp;|\s)+/gi, &#039; &#039;);&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/([^=])\n+(\=.*?\=\n+)/g, &#039;$1\n\n$2&#039;)&lt;br /&gt;
			.replace(/^(=+([^=].*?)=+)[\t\s]{1,}\n/g, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/^(\={2,}) +[\:,;&amp;gt;&amp;amp;\^#@•→←↔↑↓—–…~٫،؛ٔ]/mg, &#039;$1&#039;) // Cleanup headers&lt;br /&gt;
			.replace(/[\:,;&amp;lt;&amp;amp;\^#@•→←↔↑↓—–…~٫،؛ٔ] +(\={2,})$/mg, &#039;$1&#039;)&lt;br /&gt;
			.replace(/^(\={2,}\s*)(«)([^\n«»]*?)(»)(\s*\={2,})/mg, &#039;$1 $3 $5&#039;)&lt;br /&gt;
			.replace(/^(\={2,}) *&#039;+(.*?)&#039;+ *(\={2,})/mg, &#039;$1 $2 $3&#039;)&lt;br /&gt;
			.replace(/^[•●⚫⬤]/mg, &#039;*&#039;) // Wikify bullets in start of lines&lt;br /&gt;
			.replace(/^#\s*(REDIRECT|تغییر[ _]?مسیر)/gi, &#039;#تغییرمسیر&#039;)&lt;br /&gt;
			.replace(/^#تغییرمسیر(?=\S)/g, &#039;#تغییرمسیر &#039;) // Adds a space after #REDIRECT&lt;br /&gt;
			.replace(/(\={2,}) *([^\n\r]*?) *(\={2,})/g, &#039;$1 $2 $3&#039;) // Format headings level 2 and above&lt;br /&gt;
			// زیربخش نیازی به برچسب بزرگ و کوچک ندارد&lt;br /&gt;
			.replace(/(\=+) \&amp;lt;(?:small|big)\&amp;gt;([^\=\n\r]+)\&amp;lt;\/(?:small|big)\&amp;gt; (\=+)/g, &#039;$1 $2 $3&#039;)&lt;br /&gt;
			//حذف فاصلهٔ اضافی درون {{}}&lt;br /&gt;
			.replace(/\{\{(\s*)(.*?)(\s*)\}\}/g, &#039;{{$2}}&#039;)&lt;br /&gt;
			// تبدیل به نویسه / یکی کردن فاصله های مجازی پشت سرهم&lt;br /&gt;
			.replace(/(\{\{فم\}\}|\&amp;amp;zwnj\;|\u200c+)/g, &#039;\u200c&#039;)&lt;br /&gt;
			// Full stop and comma should be before citation. See en:WP:REFPUNC&lt;br /&gt;
			.replace(/ *((?:&amp;lt;ref[^\/]*?&amp;gt;.*?&amp;lt;\/ref&amp;gt;)+)([\.،,:])?/g, &#039;$2$1&#039;)&lt;br /&gt;
			.replace(/([^.])([\.،,:]){2}((?:&amp;lt;ref[^\/]*?&amp;gt;.*?&amp;lt;\/ref&amp;gt;)+)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			.replace(/ *((?:&amp;lt;ref[^\/]*?\/&amp;gt;)+)([\.،,:])/g, &#039;$2$1&#039;)&lt;br /&gt;
			.replace(/([^.])([\.،,:]){2}(((?:&amp;lt;ref[^\/]*?\/&amp;gt;)+)+)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			/* هر رده در یک خط */&lt;br /&gt;
			.replace(/([^\s&amp;gt;-]) *(\[\[رده:[^\n[\]]*\]\])/gi, &#039;$1\n$2&#039;)&lt;br /&gt;
			.replace(/(\[\[رده:[^\n[\]]*\]\]) *(?![\s&amp;lt;-]|$)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/(\[\[رده:[^\n[\]]*\]\]\n) *(?!\[\[رده:|[\s&amp;lt;-]|$)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			//ترتیب‌پیش‌فرض&lt;br /&gt;
			.replace(/\{\{(?:DEFAULTSORT|[Dd]efaultsort|ترتیب|ترتیب[‌ ]پیش[‌ ]?فرض) *[|:] *(?=.*?}})/g, &#039;{{ترتیب‌پیش‌فرض:&#039;)&lt;br /&gt;
			.replace(/\{\{(ترتیب‌پیش‌فرض|DEFAULTSORT)\:[-\w,\s\(\)]+\}\}\n?/g, &#039;&#039;)&lt;br /&gt;
			.replace(/(\{\{(?:ترتیب‌پیش‌فرض|DEFAULT\w*SORT\w*):[^\n{}]*\}\})\s*(?=\[\[رده:)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/(\{\{ترتیب‌پیش‌فرض\:)\s/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/(==\n)\n+(?=&amp;lt;references[^\n&amp;lt;&amp;gt;]*\/&amp;gt;\n\n)/gi, &#039;$1&#039;)&lt;br /&gt;
			//نچسبیدن و+فاصله به براکت که محصول اشتباه در تایپ کردن است&lt;br /&gt;
			.replace(/\]\]و /g, &#039;]] و &#039;)&lt;br /&gt;
			.replace(/(\s|^)\&#039;\&#039;\&#039;(\s|)(.*?)(\s|)\&#039;\&#039;\&#039;(\s)/g, &amp;quot;$1&#039;&#039;&#039;$3&#039;&#039;&#039;$5&amp;quot;) // حذف فاصلهٔ اضافی درون ویکی کد&lt;br /&gt;
			.replace(/&#039;&#039;&#039;\{\{به /g, &amp;quot;&#039;&#039;&#039; {{به &amp;quot;)&lt;br /&gt;
			.replace(/\*(\s+|\n)?\{\{پانویس/g, &amp;quot;{{پانویس&amp;quot;)&lt;br /&gt;
			.replace(/((?:^|\n\s)\=+\s+\=+(?:\s+|)\n)/g, &amp;quot;\n\n&amp;quot;)&lt;br /&gt;
			.replace(/\n{3,}/g, &#039;\n\n&#039;)&lt;br /&gt;
			// فاصله‌های اضافی را از داخل پیوند به بیرون منتقل کند تا اگر اضافه بودند در کدهای دیگر حذف شوند&lt;br /&gt;
			// غیرفعال‌سازی: عملکرد مشابه پایین هم وجود دارد&lt;br /&gt;
			// .replace(/\[\[(\s*)(.*?)(\s*)\]\]/g, &#039;$1[[$2]]$3&#039;)&lt;br /&gt;
			.replace(/(\[{1,2})([^\[\]\n]*[^\[\]\n\|]) +(\]{1,2})/g, &amp;quot;$1$2$3&amp;quot;)&lt;br /&gt;
			.replace(/(\[{1,2}) +([^\[\]\n]+)(\]{1,2})/g, &amp;quot;$1$2$3&amp;quot;)&lt;br /&gt;
			//تبدیل بندهای ترتیبی به قالب‌بندی ویکی [[Special:Permalink/19923598#تبدیل بندهای ترتیبی به قالب‌بندی ویکی]]&lt;br /&gt;
			.replace(/(?:(?:^(?:\* ?)?[۱۲۳۴۵۶۷۸۹۰0-9]{1,2} ?[\.\-\)]) ?[^۱۲۳۴۵۶۷۸۹۰0-9\n]+\n+){2,}/gm, function (x) {&lt;br /&gt;
				var x2 = x.replace(/((?:\* ?)?[۱۲۳۴۵۶۷۸۹۰0-9]{1,2} ?[\.\-\)]) ?([^۱۲۳۴۵۶۷۸۹۰0-9\n]+)\n+/gm, &#039;# $2\n&#039;)&lt;br /&gt;
				if (x2.replace(/[۱۲۳۴۵۶۷۸۹۰0-9]/g, &#039;&#039;) === x2) {&lt;br /&gt;
					return x2;&lt;br /&gt;
				}&lt;br /&gt;
				return x;&lt;br /&gt;
			})&lt;br /&gt;
			.trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiSubsection(text) {&lt;br /&gt;
		return text.replace(/\&amp;lt;(?:\s*)references?(?:\s*\/|\s*\/\s*)\&amp;gt;/g, &#039;{{پانویس}}&#039;)&lt;br /&gt;
			.replace(/\{\{(?:[Rr]eflist|[Rr]eferences?|پانویس[‌ ]?ها)(?=\||\})/g, &#039;{{پانویس&#039;)&lt;br /&gt;
			.replace(/\{\{راست(| |‌)چین\}\}\s*\{\{پانویس(.*?)\}\}\s*\{\{(پایان راست(| |‌)چین|پایان)\}\}/g, &#039;{{پانویس$2}}&#039;)&lt;br /&gt;
			.replace(/\{\{چپ(| |‌)چین\}\}\s*\{\{پانویس(.*?)\}\}\s*\{\{(پایان چپ(| |‌)چین|پایان)\}\}/g, &#039;{{پانویس$2|چپ‌چین=بله}}&#039;)&lt;br /&gt;
			.replace(/\&amp;lt;small\&amp;gt;\s*\{\{پانویس(.*?)\}\}\s*\&amp;lt;\/small\&amp;gt;/g, &#039;{{پانویس$1|اندازه=کوچک}}&#039;)&lt;br /&gt;
			.replace(/(({\{پانویس.*?\}\})(\n|)){1,}/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/\=\s*لیست\s*\=/g, &#039;= فهرست =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[gG]allery|نگارستان|گالری (تصویر|عکس|))\s*\=/g, &#039;= نگارخانه =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:بیوگرافی|زندگینامه)\s*\=/g, &#039;= زندگی‌نامه =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[eE]xternal links|لینک‌?های بیرونی|پیوندهای خارجی|لینک‌?های خارجی|پیوندهای بیرونی)\s*\=/g, &#039;= پیوند به بیرون =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[nN]otes|[fF]ootnotes?|پاورقی|پاورقی‌ها|پانوشت|پانویس‌ها)\s*\=/g, &#039;= پانویس =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[Ss]ee [Aa]lso|همچنین ببینی[مد]|بیشتر ببینی[مد]|همچنین نگاه کنید|بیشتر بدانی[مد]|مراجعات مرتبط|جستار وابسته|مطلب مرتبط|مطالب مرتبط|جستارهای مشابه|جستارهای دیگر)\s*\=/g, &#039;= جستارهای وابسته =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:منبع|منبع[‌ ]?ها|رفرنس|رفرنس[‌ ]?ها|ارجاع[‌ ]?ها|ارجاع|مرجع[‌ ]?ها|رفرنس|برگرفته از|مراجع|منابع و یادداشت[‌ ]?ها|منبع|مرجع|م[آا]خذ|منابع و م[آا]خذ|منابع و پانویس‌ها|فهرست مراجع|لیست مراجع|فهرست ارجاع[‌ ]?ها|فهرست ارجاع|[rR]eferences)\s*\=/g, &#039;= منابع =&#039;)&lt;br /&gt;
			//.replace(/\=\s*(?:مطالعه بیشتر|بیشتر بخوانی[مد])\s*\=/g, &#039;= برای مطالعهٔ بیشتر =&#039;)&lt;br /&gt;
			.replace(/^\={3,}\s*(جستارهای وابسته|پانویس|منابع)\s*\={3,}$/g, &#039;== $1 ==&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function wikiUrlMinifier(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(patterns.url, function (x) {&lt;br /&gt;
				return replaceExcept(&lt;br /&gt;
					x,&lt;br /&gt;
					function (x) {&lt;br /&gt;
						try {&lt;br /&gt;
							x = decodeURI(x);&lt;br /&gt;
						} catch (e) {&lt;br /&gt;
							try {&lt;br /&gt;
								x = decodeURIComponent(unescape(x));&lt;br /&gt;
							} catch (e) { mw.notify(e); }&lt;br /&gt;
						}&lt;br /&gt;
						return x;&lt;br /&gt;
					},&lt;br /&gt;
					[patterns.globalExceptionTag, patterns.decodeUriBlacklist, patterns.refname, patterns.urlArchive]&lt;br /&gt;
				);&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			// Strip the http(s) prefix&lt;br /&gt;
			.replace(/\[(https?\:)(?=\/\/(?:[\w\-]+)\.(?:m\.)?(wiki(pedia|media|data|source|news|oyage|quote)|wiktionary)\.org\/[^\s\]]*)/g, &#039;[&#039;)&lt;br /&gt;
			.replace(/[\[\=](?:https?\:|)\/\/[\w\-]{2,}\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/([^\n?]*?)[\]\|]/g, function (x) {&lt;br /&gt;
				x = x.replace(/\[(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?) (.*?)\]/g, &#039;[[:$1:$2|$3]]&#039;)&lt;br /&gt;
				x = x.replace(/\[(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?)\]/g, &#039;[[:$1:$2]]&#039;)&lt;br /&gt;
				//x = x.replace(/\=(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?)\|/g,&#039;=[[:$1:$2]]|&#039;) // در الگو یادکرد مشکل ایجاد می‌کند&lt;br /&gt;
				x = x.replace(/\[\[\:fa\:/g, &#039;[[&#039;).replace(/\%20/g, &#039; &#039;).replace(/٪۲۰/g, &#039; &#039;).replace(/\[\[[a-zA-Z\&#039;0-9 ]+\|/g, &#039;[[&#039;)&lt;br /&gt;
				x = x.replace(/\[\[.*?\]\]/g, function (y) {&lt;br /&gt;
					y = y.replace(/\_/g, &#039; &#039;)&lt;br /&gt;
					return y&lt;br /&gt;
				})&lt;br /&gt;
				return x&lt;br /&gt;
			}).replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function SubSectionLeveling(text) {&lt;br /&gt;
		// تنظیم سطح زیربخش‌ها&lt;br /&gt;
		text = text.replace(/^(\={2,}) *(.*?) *(\={2,})/mg, &#039;$1 $2 $3&#039;)&lt;br /&gt;
		if ((mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgEditMessage&amp;quot;) === &#039;editing&#039;) || mw.config.get(&#039;wgPageName&#039;) === &amp;quot;ویکی‌پدیا:ویکی‌پروژه_ابزارها/آزمایش_واحد&amp;quot;) {&lt;br /&gt;
			//مقاله‌ای که فقط زیربخش سطح ۱ دارد&lt;br /&gt;
			if (text.replace(/\=\=/g, &#039;&#039;) === text) {&lt;br /&gt;
				var text2 = text.replace(new RegExp(&#039;^\=([^\=\r\n]+)\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
				if (text !== text2) {&lt;br /&gt;
					text = text2.replace(/\n\=  /g, &#039;\n= &#039;).replace(/  \=\n/g, &#039; =\n&#039;)&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
			//مقاله‌ای که فقط زیربخش سطح ۳ یا ۴ دارد&lt;br /&gt;
			var text_test = text.replace(/^\=+ (منابع|جستارهای وابسته|پیوند به بیرون|پانویس|نگارخانه) \=+\n/gm, &#039;&#039;)&lt;br /&gt;
			if (text_test.replace(/^\=\= /gm, &#039;&#039;) === text_test) {&lt;br /&gt;
				if (text_test.replace(/^\=\=\= /gm, &#039;&#039;) !== text_test) {&lt;br /&gt;
					//سطح ۳&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=([^\=\r\n]+)\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=\=([^\=\r\n]+)\=\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;=== $1 ===&amp;quot;)&lt;br /&gt;
				} else if (text_test.replace(/^\=\=\=\= /gm, &#039;&#039;) !== text_test) {&lt;br /&gt;
					//سطح ۴&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=\=([^\=\r\n]+)\=\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
				} else {&lt;br /&gt;
					text = text.replace(/===/g, &#039;==&#039;)&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
			text = text.replace(/==  /g, &#039;== &#039;).replace(/  ==/g, &#039; ==&#039;)&lt;br /&gt;
		};&lt;br /&gt;
		return text;&lt;br /&gt;
	};&lt;br /&gt;
	function decimalPointToPersian(text) {&lt;br /&gt;
		//Decimal point [[Special:Permalink/25438370#جمع‌بندی_بدون_رسیدگی]]&lt;br /&gt;
		return text.replace(new RegExp(&#039;([۰۱۲۳۴۵۶۷۸۹])\\.(?=[۰۱۲۳۴۵۶۷۸۹])&#039;, &#039;g&#039;), &#039;$1٫&#039;)&lt;br /&gt;
	};&lt;br /&gt;
	function wikiTextDigitsToPersian(text) {&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			toEnglishDigits,&lt;br /&gt;
			[patterns.argumentsBlacklist, patterns.fileNames, patterns.fileParameter]);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.toPersianDigits,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.url, patterns.argumentsBlacklist, patterns.mapFrameTag, patterns.mathTag, patterns.imagePixelSize, patterns.fileNames, patterns.ref,&lt;br /&gt;
			patterns.sourceTag, patterns.arabicDigitsEnglishContext, patterns.signatures, patterns.htmlEntity, patterns.diffLink,&lt;br /&gt;
			patterns.htmlAttributes, patterns.fileParameter, patterns.templateParameterName, patterns.ipSign,&lt;br /&gt;
			patterns.parenthesesAfterDigits, patterns.otherLanguagesInline, patterns.preTag, patterns.isbn, patterns.englishDate,&lt;br /&gt;
			patterns.parameter, patterns.color, patterns.templateEnglishName, patterns.linksOnEnglishContext, patterns.citation, patterns.refname,&lt;br /&gt;
			patterns.LtRTagEnclosed, patterns.boxVar, patterns.mediawikiFunctions, patterns.graphTemplate]&lt;br /&gt;
		);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			decimalPointToPersian,&lt;br /&gt;
			[patterns.catgories, patterns.graphTemplate]&lt;br /&gt;
		);&lt;br /&gt;
		return text&lt;br /&gt;
			//  thousands&#039; separator&lt;br /&gt;
			.replace(/([۱۲۳۴۵۶۷۸۹۰]),([۱۲۳۴۵۶۷۸۹۰])/g, &#039;$1٬$2&#039;)&lt;br /&gt;
			.replace(/([۱۲۳۴۵۶۷۸۹۰])( |)\u0652/g, &#039;$1°&#039;)//تبدیل نویسه سکون+عدد فارسی به نویسه درجه و عدد فارسی&lt;br /&gt;
			.replace(/\u0652( |)([۱۲۳۴۵۶۷۸۹۰])/g, &#039;°$2&#039;)&lt;br /&gt;
			//فاصله بین نویسه درجه و حروف الفبای فارسی به جز عدد فارسی&lt;br /&gt;
			.replace(/([\u0621-\u064A\u0653-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2])°/g, &#039;$1 °&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function dictationReplace(x, y, extensions, text) {&lt;br /&gt;
		return text.replace(&lt;br /&gt;
			new RegExp(&lt;br /&gt;
				&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;])(\\s|\u200c|_|)(&#039; + x + &#039;)(\\s|_)(&#039; + y + &#039;)(\\s|\u200c|_|)(&#039; +&lt;br /&gt;
				extensions + &#039;)($|[^&#039; + persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
				&#039;g&#039;&lt;br /&gt;
			),&lt;br /&gt;
			&#039;$1$2$3\u200c$5$6$7$8&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// it has dependency to MediaWiki:Gadget-Extra-Editbuttons-Dictionary.js&lt;br /&gt;
	function dictation(text) {&lt;br /&gt;
		var i,&lt;br /&gt;
			dictionary = persianToolsDictionary,&lt;br /&gt;
			NASB = &#039;\u064b&#039;, // ًـ&lt;br /&gt;
			ZAMM = &#039;\u064c&#039;; // ُـ&lt;br /&gt;
		for (i in dictionary.complexes) {&lt;br /&gt;
			if (dictionary.complexes.hasOwnProperty(i)) {&lt;br /&gt;
				text = dictationReplace(&lt;br /&gt;
					i,&lt;br /&gt;
					dictionary.complexes[i],&lt;br /&gt;
					&#039;ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
					text&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// for last name&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.personNames,&lt;br /&gt;
			&#039;ی|یی|زاده|نیا|گان|فر|نژاد|یان|ی\u200cها|یها&#039;,&lt;br /&gt;
			&#039;ی|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for &#039;آباد&#039;s&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.personNames + &#039;|&#039; + dictionary.addToAbad,&lt;br /&gt;
			&#039;آباد&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یان|ها|های|یی|هایی|ی\u200cها|یها|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for first names&lt;br /&gt;
		for (i in dictionary.firstNameComplex) {&lt;br /&gt;
			if (dictionary.firstNameComplex.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&lt;br /&gt;
						&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;]|\\s|_)(&#039; + i + &#039;)(\\s|_)(&#039; +&lt;br /&gt;
						dictionary.firstNameComplex[i] + &#039;)(\\s|_)($|[^&#039; + persianTools.persianCharacters + &#039;]|[^&#039; +&lt;br /&gt;
						persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
						&#039;g&#039;&lt;br /&gt;
					),&lt;br /&gt;
					&#039;$1$2\u200c$4$5$6&#039;&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// for colors&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.colorsNames,&lt;br /&gt;
			&#039;فام|گون&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|ی\u200cها|یها|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for numbers&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.persianNumbers,&lt;br /&gt;
			&#039;گانه|ماهه&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// wrong dictation&lt;br /&gt;
		for (i in dictionary.forReplace) {&lt;br /&gt;
			if (dictionary.forReplace.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&lt;br /&gt;
						&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;])(\\s|\\(|\u200c|_|)(&#039; + i + &#039;)(\\s|\\)|\u200c|_|)($|[^&#039; +&lt;br /&gt;
						persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
						&#039;g&#039;&lt;br /&gt;
					),&lt;br /&gt;
					&#039;$1$2&#039; + dictionary.forReplace[i] + &#039;$4$5&#039;&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var preword = &amp;quot;(^|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot;;&lt;br /&gt;
		// کلماتی که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.wordsWithA + &amp;quot;)(ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\]|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\&#039;|\\!|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
		// بن مضارع که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(&amp;quot;(^|\u200c|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.PresentVerbsWithA + &amp;quot;)(م|ی|د|یم|ید|ند)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// بن ماضی که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(&amp;quot;(^|\u200c|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.PastVerbsWithA + &amp;quot;)(م|ی|یم|ید|ند|ه|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// همزه ضم&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.HamzehZam + &amp;quot;)(‌ها|ها|ین|ان|ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/وء/, &#039;ؤ&#039;).replace(/و/i, &#039;ؤ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
		//همزه نصب&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.HamzehNasb + &amp;quot;)(ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;أ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		//همزه وسط کلمه&lt;br /&gt;
		for (i in dictionary.HamzehAtInside) {&lt;br /&gt;
			text = text.replace(new RegExp(&lt;br /&gt;
				preword + i + &#039;)(| )(&#039; + dictionary.HamzehAtInside[i] + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;,&lt;br /&gt;
				&#039;g&#039;&lt;br /&gt;
			), &#039;$1$2ء$4&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// در مورد افزودن یا حذف همزهٔ پایانی اجماعی وجود ندارد.&lt;br /&gt;
		/* text = text.replace(new RegExp(preword + dictionary.HamzehAtEnd + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&#039;$1$2ء&#039;); */&lt;br /&gt;
&lt;br /&gt;
		//الف مقصوره&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.AlefMaghsooreh + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;ی&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// صفت+تر&lt;br /&gt;
		text = text.replace(new RegExp(&amp;quot;(^|\\s|_|«|»|\\]|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.adjective + &amp;quot;)( |_)تر(?= |«|»|\\.|\\[|\\]|،|_|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;), &#039;$1$2\u200cتر&#039;);&lt;br /&gt;
&lt;br /&gt;
		// اسامی رنگ‌ها (به‌عنوان صفت)+تر&lt;br /&gt;
		text = text.replace(new RegExp(&amp;quot;(^|\\s|_|«|»|\\]|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.colorsNames + &amp;quot;)( |_)تر(?= |«|»|\\.|\\[|\\]|،|_|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;), &#039;$1$2\u200cتر&#039;);&lt;br /&gt;
&lt;br /&gt;
		text = text.replace(/به دست\u200cآورد/g, &#039;به دست آورد&#039;); // Solving a bug!&lt;br /&gt;
		text = persianTools.normalizeZwnj(text);&lt;br /&gt;
		return text.replace(new RegExp(&amp;quot;(^|[؛\\s\\n\\.،«»\&#039;\\&amp;lt;\\&amp;gt;؟])(&amp;quot; + dictionary.needsNasb + &#039;)[&#039; + NASB + ZAMM + &#039;]?([؛؟\\s\\n\\.،«»\&#039;&amp;quot;\\&amp;lt;\\&amp;gt;]|$)&#039;, &#039;g&#039;), function (match) {&lt;br /&gt;
			return match&lt;br /&gt;
				.replace(new RegExp(&#039;ا([\\s\\n\\.،«»؟؛&amp;quot;\&#039;\\&amp;gt;\\&amp;lt;&#039; + ZAMM + &#039;])&#039;, &#039;i&#039;), &#039;ا&#039; + NASB + &#039;$1&#039;)&lt;br /&gt;
				.replace(new RegExp(NASB + &#039;[&amp;quot;&#039; + NASB + ZAMM + &#039;]&#039;), NASB);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiDictation(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			dictation,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag, patterns.insideQuote, patterns.argumentsBlacklist, patterns.articleTitleParts]&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
	function wikiApplyOrthography(text) {&lt;br /&gt;
		text = text //en:Wikipedia:HTML5&lt;br /&gt;
			//big&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){5})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){5})/g, &#039;&amp;lt;span style=&amp;quot;font-size: 56px;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){4})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){4})/g, &#039;&amp;lt;span style=&amp;quot;font-size: 38px;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){3})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){3})/g, &#039;{{خیلی بزرگ|$2}}&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){2})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){2})/g, &#039;{{بزرگ|$2}}&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){1})([^&amp;lt;]+|[\s\S]+)((?:\&amp;lt;\/big\&amp;gt;){1})/g, &#039;{{درشت|$2}}&#039;)&lt;br /&gt;
			//center&lt;br /&gt;
			.replace(/&amp;lt;center&amp;gt;&amp;lt;gallery&amp;gt;([\S\s]+?)\&amp;lt;\/gallery&amp;gt;&amp;lt;\/center&amp;gt;/g, &#039;&amp;lt;gallery class=&amp;quot;center&amp;quot;&amp;gt;$1&amp;lt;/gallery&amp;gt;&#039;)&lt;br /&gt;
			//.replace(/&amp;lt;center&amp;gt;([\S\s]+?)&amp;lt;\/center&amp;gt;/g,&#039;{{وسط|$1}}&#039;)&lt;br /&gt;
			//empty tag&lt;br /&gt;
			.replace(/&amp;lt;span style=&amp;quot;font-size: [^&amp;gt;]+&amp;quot;&amp;gt;&amp;lt;\/span&amp;gt;/g, &#039;&#039;)&lt;br /&gt;
			.replace(/{{(?:درشت|خیلی بزرگ|بزرگ|وسط)\|}}/g, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		//حذف برچسب‌های خالی نرم‌افزار مدیاویکی&lt;br /&gt;
		var tags = [&#039;math&#039;, &#039;div&#039;, &#039;grammarly\\-btn&#039;, &#039;code&#039;, &#039;nowiki&#039;, &#039;pre&#039;, &#039;syntaxhighlight&#039;, &#039;source&#039;, &#039;s&#039;, &#039;noinclude&#039;, &#039;includeonly&#039;, &#039;big&#039;, &#039;small&#039;, &#039;gallery&#039;];// has bug for sub , sup [[Special:Diff/19450140/19490903]]&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				for (var i = 0; i &amp;lt; tags.length; ++i) {&lt;br /&gt;
					for (var b = 0; b &amp;lt; 5; ++b) {//خیلی از برچسب‌های خالی تو در تو هستند مانند [[Special:PermaLink/19223877]]&lt;br /&gt;
						text = text.replace(new RegExp(&#039;\&amp;lt;&#039; + tags[i] + &#039;[^\&amp;gt;]*\&amp;gt;(\\n|\\s|\u200c)*?\&amp;lt;\\/&#039; + tags[i] + &#039;\&amp;gt;&#039;, &#039;g&#039;), &#039;&#039;);&lt;br /&gt;
					}&lt;br /&gt;
					// remove the tags if they occurred multiple times consequently&lt;br /&gt;
					if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 || mw.config.get(&#039;wgNamespaceNumber&#039;) === 4) {&lt;br /&gt;
						text = text.replace(new RegExp(&#039;(\&amp;lt;&#039; + tags[i] + &#039;\&amp;gt;){2,}&#039;, &#039;g&#039;), &#039;$1&#039;)&lt;br /&gt;
							.replace(new RegExp(&#039;(\&amp;lt;\\/&#039; + tags[i] + &#039;\&amp;gt;){2,}&#039;, &#039;g&#039;), &#039;$1&#039;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
					text = text.replace(/\&amp;lt;ref\&amp;gt;[\s\n]*\&amp;lt;\/ref\&amp;gt;/g, &#039;&#039;).replace(/\&amp;lt;ref\&amp;gt;[\s\n]*\&amp;lt;ref\&amp;gt;/g, &#039;&amp;lt;ref&amp;gt;&#039;).replace(/\&amp;lt;\/ref\&amp;gt;[\s\n]*\&amp;lt;\/ref\&amp;gt;/g, &#039;&amp;lt;/ref&amp;gt;&#039;).replace(/\&amp;lt;ref\/\&amp;gt;/g, &#039;&amp;lt;/ref&amp;gt;&#039;);&lt;br /&gt;
				};&lt;br /&gt;
				return text&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.insideHtmlComment]&lt;br /&gt;
		);&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.applyOrthography,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag, patterns.wikilinkTargets, patterns.rfd]&lt;br /&gt;
		).replace(patterns.galleryTag, function (gallery) {&lt;br /&gt;
			// apply `applyOrthography` on gallery descriptions separately&lt;br /&gt;
			return gallery.replace(/^([^\|]*?\|)(.*)$/mg, function (x, y, z) {&lt;br /&gt;
				return y + persianTools.applyOrthography(z);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// probably should be exactly same above but for applyZwnj&lt;br /&gt;
	function wikiApplyZwnj(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.applyZwnj,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag]&lt;br /&gt;
		).replace(patterns.galleryTag, function (gallery) {&lt;br /&gt;
			// apply `applyOrthography` on gallery descriptions separatly&lt;br /&gt;
			return gallery.replace(/^([^\|]*?\|)(.*)$/mg, function (x, y, z) {&lt;br /&gt;
				return y + persianTools.applyZwnj(z);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function replaceEnMonth(text) {&lt;br /&gt;
		var enMonth = {&lt;br /&gt;
			&#039;آگست&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;آگوست&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;جولای&#039;: &#039;ژوئیه&#039;,&lt;br /&gt;
			&#039;مارچ&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;آپریل&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;فوریوری&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;january&#039;: &#039;ژانویه&#039;,&lt;br /&gt;
			&#039;jan&#039;: &#039;ژانویه&#039;,&lt;br /&gt;
			&#039;february&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;feb&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;march&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;mar&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;april&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;apr&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;may&#039;: &#039;مه&#039;,&lt;br /&gt;
			&#039;june&#039;: &#039;ژوئن&#039;,&lt;br /&gt;
			&#039;jun&#039;: &#039;ژوئن&#039;,&lt;br /&gt;
			&#039;july&#039;: &#039;ژوئیه&#039;,&lt;br /&gt;
			&#039;august&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;aug&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;september&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;sept&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;sep&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;october&#039;: &#039;اکتبر&#039;,&lt;br /&gt;
			&#039;oct&#039;: &#039;اکتبر&#039;,&lt;br /&gt;
			&#039;november&#039;: &#039;نوامبر&#039;,&lt;br /&gt;
			&#039;nov&#039;: &#039;نوامبر&#039;,&lt;br /&gt;
			&#039;december&#039;: &#039;دسامبر&#039;,&lt;br /&gt;
			&#039;dec&#039;: &#039;دسامبر&#039;&lt;br /&gt;
		};&lt;br /&gt;
		for (var i in enMonth) {&lt;br /&gt;
			var text_new = text.replace(new RegExp(i, &#039;ig&#039;), enMonth[i])&lt;br /&gt;
			if (text_new != text) {&lt;br /&gt;
				return text_new&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
	};&lt;br /&gt;
	function autoFormatCleanDatesException(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			autoFormatCleanDates,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.citation, patterns.argumentsBlacklist, patterns.ref]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function wikitranslateEnMonth(text) {&lt;br /&gt;
		text = autoFormatCleanDatesException(text)&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function translateEnMonth(text) {&lt;br /&gt;
				var enMonthRegex = &#039;(آگست|آگوست|جولای|مارچ|آپریل|january|jan|february|feb|march|mar|april|apr|may|jun|june|july|august|aug|sep|sept|september|oct|october|nov|november|december|dec)&#039;;&lt;br /&gt;
				return text.replace(new RegExp(&#039;([^a-zA-Z])(\^|\\||\\s|\\=|\\n|\\(|«|\\:)&#039; + enMonthRegex + &#039; (\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2})\\, (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|\$|\\)|\\}|»)([\^a\-zA\-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
					function (x) {&lt;br /&gt;
						x = x.replace(new RegExp(&#039;([\^a\-zA\-Z])(\^|\\||\\s|\\=|\\n|\\(|«|\\:)&#039; + enMonthRegex + &#039; (\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2})\\, (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|\$|\\)|\\}||»)([^a-zA-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
							&#039;$1$2$4 $3 $5$6$7&#039;)&lt;br /&gt;
						x = persianTools.toPersianDigits(x);&lt;br /&gt;
						x = replaceEnMonth(x);&lt;br /&gt;
						return x;&lt;br /&gt;
					})&lt;br /&gt;
					.replace(new RegExp(&#039;([\^a\-zA\-Z])(\^|\\||\\s|\\=|\\n|\\(|«)((\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2}) |)&#039; + enMonthRegex + &#039; (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|$|\\)|\\}|»|\\:)([\^a\-zA\-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
						function (x) {&lt;br /&gt;
							x = persianTools.toPersianDigits(x);&lt;br /&gt;
							x = replaceEnMonth(x);&lt;br /&gt;
							return x;&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.ref, patterns.fileParameter, patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.citation, patterns.argumentsBlacklist]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var arabicDigits = &#039;0123456789&#039;, persianDigits = &#039;۰۱۲۳۴۵۶۷۸۹&#039;, arabicIndicDigits = &#039;٠١٢٣٤٥٦٧٨٩&#039;;&lt;br /&gt;
	function robustToEnglishDigits(text) {&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
			text = text.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function toEnglishDigits(text) {&lt;br /&gt;
		text = text.replace(/[a-zA-Z]([\_\s\:\.\,\;\]\[\&amp;quot;\&#039;\)\(\}\{\/\\ ]+|)([۱۲۳۴۵۶۷۸۹۰٪\.٫\-\—\–°÷×\+\,\s\_\:،»«؛]+)([\_\s\:\.\,\;\]\[\&amp;quot;\&#039;\)\(\}\{\/\\\&amp;lt;\&amp;gt; ]+|)([a-zA-Z\&amp;gt;]|$)/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x.replace(/،/g, &#039;,&#039;).replace(/»/g, &#039;&amp;quot;&#039;).replace(/«/g, &#039;&amp;quot;&#039;).replace(/؛/g, &#039;;&#039;);&lt;br /&gt;
		});&lt;br /&gt;
		// bug [[Special:Diff/17760890/17760898]]&lt;br /&gt;
		text = text.replace(/([a-zA-Z][۱۲۳۴۵۶۷۸۹۰]+) *\=/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		// ISBN, ISSN and PMID&#039;s numbers should in english&lt;br /&gt;
		text = text.replace(/\b(ISBN|ISSN|PMID|PubMed) *:? *([۱۲۳۴۵۶۷۸۹۰0-9–—−ـ_\-]+)([^۱۲۳۴۵۶۷۸۹۰0-9–—−ـ_\-]|$)/gi, function (x) {&lt;br /&gt;
			x = x.replace(/[–—−ـ_\-]+/g, &#039;-&#039;)&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			x = x.replace(/\b(ISBN|ISSN|PMID|PubMed) *:? *([۱۲۳۴۵۶۷۸۹۰\-0-9]+)([^۱۲۳۴۵۶۷۸۹۰\-0-9]|$)/gi, &#039;$1 $2$3&#039;)&lt;br /&gt;
			x = x.replace(&#039;PubMed&#039;, &#039;PMID&#039;)&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		text = text.replace(/ISBN \-note/g, &#039;ISBN-note&#039;);&lt;br /&gt;
		// تبدیل عددهای فارسی در عدد ترتیبی انگلیسی&lt;br /&gt;
		text = text.replace(/(?:^|[&amp;quot;\&#039;\s_«\(\[\{])([۱۲۳۴۵۶۷۸۹۰]+)(st|nd|rd|th)[\s_\.,»&amp;quot;\&#039;\)\]\}]/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + arabicDigits + &#039;]) ?٪&#039;, &#039;g&#039;), &#039;$1%&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + arabicDigits + &#039;])٫(?=[&#039; + arabicDigits + &#039;])&#039;, &#039;g&#039;), &#039;$1.&#039;) // English decimal separator&lt;br /&gt;
	}&lt;br /&gt;
	function cleanTemplateBracesFromArticle(text, alwaysRun) { // like [[Special:Diff/18828723]]&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 &amp;amp;&amp;amp; !alwaysRun) {&lt;br /&gt;
			return text;&lt;br /&gt;
		}&lt;br /&gt;
		var i = 0&lt;br /&gt;
		for (i = 0; i &amp;lt;= 5; i = i + 1) {&lt;br /&gt;
			text = text.replace(/\{\{\{[^\|\}]+\|([^\}]+)\}\}\}/g, &#039;$1&#039;)&lt;br /&gt;
				.replace(/\{\{\{[^\|\}]+\| *\}\}\}/g, &#039;&#039;)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return text.replace(/\{\{\#(?!invoke)/ig, &#039;{{جا:#&#039;)&lt;br /&gt;
			.replace(/\{\{ *(PAGENAME|FULLPAGENAMEE|SITENAME|NAMESPACE) *\}\}/g, &#039;{{جا:$1}}&#039;)&lt;br /&gt;
			.replace(&#039;{{ترتیب‌پیش‌فرض:}}&#039;, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function decodeHTMLSymbolEntitiesCodes(text) {&lt;br /&gt;
		//&amp;amp;copy; &amp;gt; ©&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function decodeEntitiesCodes(text) {&lt;br /&gt;
				if(!text) return &#039;&#039;;&lt;br /&gt;
				for (var i in htmlEntityCodes) {&lt;br /&gt;
					var entityInput = i;&lt;br /&gt;
					var entityoutput = htmlEntityCodes[i];&lt;br /&gt;
					text = text.replace(new RegExp(entityInput, &#039;g&#039;), entityoutput);&lt;br /&gt;
				}&lt;br /&gt;
				return text;&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.ref, patterns.fileParameter,&lt;br /&gt;
			patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName,&lt;br /&gt;
			patterns.citation, patterns.url]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function removeWikiSigne(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				text = text.replace(/\[\[([^\|\]]+)\|([^\]]+)\]\]/g, &#039;$2&#039;);&lt;br /&gt;
				text = text.replace(/\[\[([^\|\]]+)\]\]/g, &#039;$1&#039;);&lt;br /&gt;
				return text;&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.fileParameter,&lt;br /&gt;
			patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.nowikiTag, patterns.preTag,&lt;br /&gt;
			patterns.insideHtmlComment]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function autoEdHTMLtoWikitextWikiTools(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			autoEd.autoEdHTMLtoWikitext,&lt;br /&gt;
			[patterns.fileParameter, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function superTool(text) {&lt;br /&gt;
		text = decodeHTMLSymbolEntitiesCodes(text);&lt;br /&gt;
		text = cleanTemplateBracesFromArticle(text);&lt;br /&gt;
		text = persianWikiTools.wikiConvertToPersianCharacters(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyZwnj(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyOrthography(text);&lt;br /&gt;
		text = persianWikiTools.wikitranslateEnMonth(text);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 10) {&lt;br /&gt;
			text = persianWikiTools.wikiTextDigitsToPersian(text);&lt;br /&gt;
		}&lt;br /&gt;
		text = persianWikiTools.wikiUrlMinifier(text);&lt;br /&gt;
		text = persianWikiTools.wikiDictation(text);&lt;br /&gt;
		text = persianWikiTools.wikiPunctuation(text);&lt;br /&gt;
		text = persianWikiTools.wikiSubsection(text);&lt;br /&gt;
		text = persianWikiTools.SubSectionLeveling(text)&lt;br /&gt;
		//ابزارهای بیشتر برگرفته از ویکی‌پدیای انگلیسی [[Mediawiki:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
		text = autoEd.autoEdISBN(text);&lt;br /&gt;
		text = autoEd.autoEdWhitespace(text);&lt;br /&gt;
		text = autoEdHTMLtoWikitextWikiTools(text);&lt;br /&gt;
		text = autoEd.autoEdHeadlines(text);&lt;br /&gt;
		text = autoEd.autoEdTablestoWikitext(text);&lt;br /&gt;
		text = autoEd.autoEdExtraBreaks(text);&lt;br /&gt;
		text = persianWikiTools.addColumnToRefTemplate(text);&lt;br /&gt;
		text = persianWikiTools.removeCheckDict(text);&lt;br /&gt;
		text = persianWikiTools.sortCategories(text, mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;));&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function superToolMove(text) {&lt;br /&gt;
		text = &#039; &#039; + text + &#039; &#039;; // بعضی از کدها اگر فاصله در انتها یا اول نباشد عمل نمی‌کنند مانند افزودن تنوین به کلمه بعدا&lt;br /&gt;
		text = persianWikiTools.wikiConvertToPersianCharacters(text);&lt;br /&gt;
		text = persianTools.applyZwnj(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyOrthography(text);&lt;br /&gt;
		text = persianWikiTools.wikiTextDigitsToPersian(text);&lt;br /&gt;
		text = persianWikiTools.wikiUrlMinifier(text);&lt;br /&gt;
		text = persianWikiTools.wikiDictation(text);&lt;br /&gt;
		text = persianWikiTools.wikiPunctuation(text);&lt;br /&gt;
		return text.trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Puts the selceted text (trims spaces from start and end) in bdi tags&lt;br /&gt;
	// does not put the whole content in tags if no text is selected&lt;br /&gt;
	function putSelectionInBDI(text) {&lt;br /&gt;
	    // if no text is selected, don&#039;t put the whole content inside the tags&lt;br /&gt;
	    // can&#039;t return nothing because applyOnSelection() expects some text&lt;br /&gt;
	    // and throws an error while no text is provided&lt;br /&gt;
	    if (text == $(&#039;#wpTextbox1&#039;).val()) {&lt;br /&gt;
	        return text;&lt;br /&gt;
	    } else {&lt;br /&gt;
	        // regExp to trim space from begining and end of the selected text,&lt;br /&gt;
	        // and save them to be placed outside of tags&lt;br /&gt;
	        var regExp = /(^\s*)|(\s*$)/gm;&lt;br /&gt;
	        var startEndSpaces = text.match(regExp);&lt;br /&gt;
	        // place selected spaces outside of tags&lt;br /&gt;
	        // and remove them from the text inside&lt;br /&gt;
	        var outText = startEndSpaces[0] + &#039;&amp;lt;bdi&amp;gt;&#039; + text.replace(regExp, &#039;&#039;) + &#039;&amp;lt;/bdi&amp;gt;&#039; +  startEndSpaces[1]; &lt;br /&gt;
	        return outText;&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		removeWikiSigne: removeWikiSigne,&lt;br /&gt;
		superTool: superTool,&lt;br /&gt;
		superToolMove: superToolMove,&lt;br /&gt;
		dictation: dictation,&lt;br /&gt;
		wikiApplyOrthography: wikiApplyOrthography,&lt;br /&gt;
		wikiApplyZwnj: wikiApplyZwnj,&lt;br /&gt;
		wikiConvertToPersianCharacters: wikiConvertToPersianCharacters,&lt;br /&gt;
		wikiDictation: wikiDictation,&lt;br /&gt;
		wikiPunctuation: wikiPunctuation,&lt;br /&gt;
		wikiSubsection: wikiSubsection,&lt;br /&gt;
		SubSectionLeveling: SubSectionLeveling,&lt;br /&gt;
		wikiUrlMinifier: wikiUrlMinifier,&lt;br /&gt;
		wikiTextDigitsToPersian: wikiTextDigitsToPersian,&lt;br /&gt;
		wikitranslateEnMonth: wikitranslateEnMonth,&lt;br /&gt;
		addColumnToRefTemplate: addColumnToRefTemplate,&lt;br /&gt;
		fixBadLinks: fixBadLinks,&lt;br /&gt;
		robustToEnglishDigits: robustToEnglishDigits,&lt;br /&gt;
		toEnglishDigits: toEnglishDigits,&lt;br /&gt;
		cleanTemplateBracesFromArticle: cleanTemplateBracesFromArticle,&lt;br /&gt;
		removeCheckDict: removeCheckDict,&lt;br /&gt;
		sortCategories: sortCategories,&lt;br /&gt;
		putSelectionInBDI : putSelectionInBDI&lt;br /&gt;
	};&lt;br /&gt;
}());&lt;br /&gt;
if (typeof window !== &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
	window.persianWikiTools = persianWikiTools;&lt;br /&gt;
}&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Common.js&amp;diff=1031</id>
		<title>ميدياويكي:Common.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Common.js&amp;diff=1031"/>
		<updated>2026-08-26T15:35:59Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* اضافه کردن تیتر برای یادداشت ها */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if($(&#039;#reflist-notes .references&#039;).text().length&amp;gt;10) {&lt;br /&gt;
        $(&#039;#reflist-notes&#039;).before(&#039;&amp;lt;h2&amp;gt;الملاحظات&amp;lt;/h2&amp;gt;&#039;);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Common.js&amp;diff=1025</id>
		<title>ميدياويكي:Common.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Common.js&amp;diff=1025"/>
		<updated>2026-08-26T15:25:23Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: أنشأ الصفحة ب&amp;#039;/* اضافه کردن تیتر برای یادداشت ها */ $( function() {     if($(&amp;#039;#reflist-notes .references&amp;#039;).text().length&amp;gt;10) {         $(&amp;#039;#reflist-notes&amp;#039;).before(&amp;#039;&amp;lt;h2&amp;gt;ملاحظات&amp;lt;/h2&amp;gt;&amp;#039;);     } });&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* اضافه کردن تیتر برای یادداشت ها */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if($(&#039;#reflist-notes .references&#039;).text().length&amp;gt;10) {&lt;br /&gt;
        $(&#039;#reflist-notes&#039;).before(&#039;&amp;lt;h2&amp;gt;ملاحظات&amp;lt;/h2&amp;gt;&#039;);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%D9%8A%D8%A9_74_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%AA%D9%88%D8%A8%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%D9%8A%D8%B1&amp;diff=1002</id>
		<title>الآية 74 من سورة التوبة والغدير</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D8%A7%D9%84%D8%A2%D9%8A%D8%A9_74_%D9%85%D9%86_%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%AA%D9%88%D8%A8%D8%A9_%D9%88%D8%A7%D9%84%D8%BA%D8%AF%D9%8A%D8%B1&amp;diff=1002"/>
		<updated>2026-08-24T10:53:06Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: اصلاح ارقام&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{صندوق معلومات آية&lt;br /&gt;
	 | عرض = &lt;br /&gt;
	 | تصویر = آیه ۷۴ سوره توبه.png&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;
	 | صوت = صوت ۷۴ توبه.mp3&lt;br /&gt;
	 | ترجمه صوتی = &lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;الآية ۷۴ من سورة التوبة&#039;&#039;&#039; هي آية تتعلق بممارسات [[المنافق|المنافقين]] ضد واقعة الغدير، وتُظهر أنهم رغم انكشاف مؤامراتهم ضد الغدير، كانوا يحلفون بالله أنهم لم يقصدوا سوءاً. وتذكر الآية أنه إن لم يتب المنافقون، فسيواجهون عذاباً أليماً في الدنيا والآخرة. وقد أُكِّد في روايات عديدة أنهم لم يتوبوا أبداً.&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;
تُعد الآية ۷۴ من سورة التوبة من الآيات التي نزلت على النبي صلى الله عليه وسلم في واقعة الغدير وفيما يتعلق بالمنافقين.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص215.&amp;lt;/ref&amp;gt; وبما أن المنافقين بدأوا الفتنة والتآمر منذ الساعات الأولى لرحلة الغدير وأقدموا على تنفيذ خططهم في مناسبات عديدة؛ فإنه إلى جانب الآيات التي نزلت حول ممارسات النبي صلى الله عليه وسلم في الغدير، نزلت آيات كثيرة حول تحريضات وخطط المنافقين ضده. وقد أوضحت الروايات المتعلقة بهذه الآيات سبب نزولها وارتباطها المباشر بالغدير. هذه الآيات تبلغ ۱۰۴ آيات نزلت في ۳۹ مناسبة.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص213–214.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ومن بينها الآية ۷۴ من سورة التوبة: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ وَكَفَرُوا بَعْدَ إِسْلَامِهِمْ وَهَمُّوا بِمَا لَمْ يَنَالُوا ۚ وَمَا نَقَمُوا إِلَّا أَنْ أَغْنَاهُمُ اللَّهُ وَرَسُولُهُ مِنْ فَضْلِهِ ۚ فَإِنْ يَتُوبُوا يَكُ خَيْرًا لَهُمْ ۖ وَإِنْ يَتَوَلَّوْا يُعَذِّبْهُمُ اللَّهُ عَذَابًا أَلِيمًا فِي الدُّنْيَا وَالْآخِرَةِ ۚ وَمَا لَهُمْ فِي الْأَرْضِ مِنْ وَلِيٍّ وَلَا نَصِيرٍ}}&lt;br /&gt;
&lt;br /&gt;
== الظرف التاريخي للنزول ==&lt;br /&gt;
وصف بعض الباحثين الظرف التاريخي لنزول الآية ۷۴ من سورة التوبة كالتالي: خلال رحلة الغدير التي استمرت شهراً، كان [[المنافق|المنافقون]] -لتيقنهم من قرب رحيل النبي صلى الله عليه وسلم وقراره بشأن الإعلان الرسمي للولاية- يشرعون بشدة في مؤامرات متنوعة لمواجهة ممارساته. كانوا يحاولون إخفاء خططهم، لكن الله كان يُطلع نبيه من الغيب، ومن جهة أخرى كان أصحاب النبي الأوفياء مثل [[سلمان الفارسي|سلمان]]، [[أبو ذر الغفاري|أبو ذر]]، [[المقداد بن عمرو|المقداد]]، [[حذيفة بن اليمان|حذيفة]] و[[عمار بن ياسر|عمار]] يُطلعون النبي على مجالسهم السرية.&lt;br /&gt;
&lt;br /&gt;
كانت الحيلة الوحيدة للمنافقين أمام هذه الفضائح هي القسم الكاذب: فعندما كان النبي صلى الله عليه وسلم يستدعيهم ويكشف أقوالهم وأفعالهم، كانوا يقسمون أنهم لم يقولوا مثل هذا الكلام ولم يفعلوا مثل ذلك الفعل. والقسم الكاذب ممن هم في الباطن كفار لا ينكشف إلا بكشف الله كاشف الأسرار وعلام الغيوب، الذي يظهر باطنهم بأنهم يتآمرون ضد الله ويقسمون له كذباً. وقد تم هذا الكشف الإلهي من خلال الآية ۷۴ من سورة التوبة التي فضحتهم.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص215–216.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== نِقاطٌ حَوْلَ نُزولِ الآيَةِ وَاسْتِخْدامِها ==&lt;br /&gt;
ذَكَرَ بَعْضُ الباحِثينَ ثَلاثَ نِقاطٍ ضَرورِيَّةً حَوْلَ نُزولِ الآيَةِ ۷۴ مِنْ سُورَةِ التَّوْبَةِ وَاسْتِخْدامِها في حادِثَةِ غَديرِ خُمٍّ:&amp;lt;ref&amp;gt;غدیر در قرآن، ج1، ص21۶.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== النُّقْطَةُ الأُولى: الآيَةُ الَّتي استُخدِمَت سَبْعَ مَرّاتٍ ===&lt;br /&gt;
في الغَديرِ، تَكَرَّرَ كَشْفُ مُخَطَّطاتِ [[المنافق|المُنافِقينَ]] سَبْعَ مَرّاتٍ؛ وَفي كُلِّ مَرَّةٍ كانَ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ يَسْتَدْعِيهِمْ وَيُواجِهُهُمْ بِكَشْفِ مُخَطَّطاتِهِمْ. وَهذِهِ المَواقِعُ السَّبْعَةُ هي: أَمامَ مِنْبَرِ الغَديرِ، وَبَعْدَ خُطْبَةِ الغَديرِ في الخَيْمَةِ، وَأَثْناءَ البَيْعَةِ، وَفي جَمْعٍ خاصٍّ لِلْمُنافِقينَ، وَفي مَكَّةَ بَعْدَ التَّوْقيعِ عَلى [[الصَّحيفَةِ المَلْعونَةِ الأُولى|الصَّحيفَةِ]]، وَبَعْدَ إِحْباطِ مُؤامَرَةِ اغْتِيالِ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ، وَبَعْدَ إِحْباطِ مُؤامَرَةِ اغْتِيالِ أَميرِ المُؤْمِنينَ عَلِيٍّ عَلَيْهِ السَّلامُ.&amp;lt;ref&amp;gt;غدیر در قرآن، ج1، ص21۶–218.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== النُّقْطَةُ الثّانِيَةُ: كَمْ مَرَّةً نَزَلَت هذِهِ الآيَةُ؟ ===&lt;br /&gt;
في جَميعِ المَواقِعِ السَّبْعَةِ، قَرَأَ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ الآيَةَ ۷۴ مِن سُورَةِ التَّوْبَةِ رَدّاً عَلى قَسَمِ [[المنافق|المُنافِقينَ]] الكاذِبِ، مُعْلِناً مِن عِنْدِ اللهِ أَنَّهُمْ كاذِبونَ. وَالسُّؤالُ الآنَ هُوَ: هَلْ نَزَلَت هذِهِ الآيَةُ في كُلِّ مَرَّةٍ، مِمّا يَعْني تَكَرُّرَ نُزولِ الآيَةِ الواحِدَةِ؟ أَمْ أَنَّها نَزَلَت مَرَّةً واحِدَةً وَاسْتُخْدِمَت في المَرّاتِ التّالِيَةِ لِمَصاديقَ مُشابِهَةٍ؟ أَمْ أَنَّها نَزَلَت مَرَّةً واحِدَةً ثُمَّ جاءَ الأَمْرُ الإلهِيُّ في المَرّاتِ اللّاحِقَةِ بِتِلاوَةِ الآيَةِ نَفْسِها رَدّاً عَلَيْهِمْ؟ أَمْ أَنَّ مَجْموعَةَ مُؤامَراتِهِمْ تَكَرَّرَت وَأَقْسَموا أَيْماناً كاذِبَةً فَرَدَّ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ قَوْلَهُمْ، وَفي النِّهايَةِ نَزَلَت آيَةٌ جامِعَةٌ حَوْلَها جَميعاً؟&lt;br /&gt;
&lt;br /&gt;
كُلُّ هذِهِ الاحْتِمالاتِ يُمْكِنُ الجَمْعُ بَيْنَها، وَلكِنْ بِالنَّظَرِ إِلى مَحْتوى الآيَةِ يَبْدو الاحْتِمالُ الأَخيرُ هُوَ الأَصَحُّ؛ لِأَنَّ الآيَةَ تُشيرُ إِلى جَميعِ مُؤامَراتِهِمْ: {{قرآن|يَحْلِفُونَ بِاللَّهِ ما قالُوا}}: أَيْمانُهُمُ الكاذِبَةُ؛ {{قرآن|وَ لَقَدْ قالُوا كَلِمَةَ الْكُفْرِ بَعْدَ إِسْلامِهِمْ}}: كَلِماتُهُمُ الكُفْرِيَّةُ؛ {{قرآن|وَ هَمُّوا بِما لَمْ يَنالُوا}}: مُؤامَرَةُ اغْتِيالِ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ وَأَميرِ المُؤْمِنينَ عَلَيْهِ السَّلامُ. وَبِالطَّبْعِ، لا يُنافِي هذا أَنْ يُسْتَشْهَدَ في كُلِّ مُؤامَرَةٍ بِالجُزْءِ المُناسِبِ مِنَ الآيَةِ وَيُذْكَرَ ذلِكَ كَنُزولٍ لِلآيَةِ.&amp;lt;ref&amp;gt;غدیر در قرآن، ج1، ص218.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== النُّقْطَةُ الثّالِثَةُ: نَتيجَةُ نُزولِ الآيَةِ ===&lt;br /&gt;
كانَت نَتيجَةُ هذِهِ الكُشوفاتِ أَنْ عَرَفَ النّاسُ آنَذاكَ وَالأَجْيالُ القادِمَةُ ما كانَ يَدورُ خَلْفَ كَواليسِ الغَديرِ: أَيِ الأَفْكارَ الَّتي كانَ يُضْمِرُها المُنافِقونَ وَكَيْفَ كانوا يُخَطِّطونَ ضِدَّ المَشْروعِ الإلهِيِّ لِلْغَديرِ. وَفي مُعْظَمِ هذِهِ المُؤامَراتِ يَظْهَرُ اسْمُ [[أبو بكر بن أبي قحافة|أبي بَكْرٍ]]، وَ[[عمر بن الخطاب|عُمَرَ]]، وَ[[أبو عبيدة الجراح|أبي عُبَيْدَةَ الجَرّاحِ]]، وَ[[عبد الرحمن بن عوف القرشي (أبو محمد)|عَبْدِ الرَّحْمنِ بْنِ عَوْفٍ]]، وَ[[معاوية بن أبي سفيان|مُعاوِيَةَ]]، وَ[[المغيرة بن شعبة]]، وَ[[معاذ بن جبل]]، وَغَيْرِهِمْ مِنَ الأَشْخاصِ المُرْتَبِطينَ بِـ[[السَّقيفَةِ]]. وَيُظْهِرُ حُضورُهُمْ في هذِهِ المُؤامَراتِ سَبَبَ وُجودِهِمْ عَلى رَأْسِ سُلْطَةِ غَصْبِ الخِلافَةِ بَعْدَ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ.&amp;lt;ref&amp;gt;غدیر در قرآن، ج1، ص219.&amp;lt;/ref&amp;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;
نُقل في رواية عن [[الإمام الصادق عليه السلام]] أن [[المنافق|المنافقين]] نسبوا الجنون إلى النبي صلى الله عليه وسلم قبل إعلان ولاية أمير المؤمنين: «لما نصَبَ رسولُ اللهِ صلى الله عليه وسلم يومَ غديرِ خُمٍّ أميرَ المؤمنينَ (عليه السلام)، كانَ بحضرتِهِ سبعةٌ من المنافقين: أبو بكرٍ، وعمرُ، وعبدُ الرحمنِ بنُ عوفٍ، وسعدُ بنُ أبي وقاصٍ، وأبو عبيدةَ الجرّاحُ، وسالمٌ مولى أبي حذيفةَ، والمغيرةُ بنُ شعبةَ. فقالَ عمرُ: ألا ترونَ عينَيْهِ كأنّهما عينا مجنونٍ -يعني النبيَّ صلى الله عليه وسلم-، يقومُ ويقولُ: قالَ لي ربِّي كذا وكذا. فلمّا قامَ رسولُ اللهِ صلى الله عليه وسلم قالَ: أيُّها النّاسُ، مَن أولى بكم؟ قالوا: اللهُ ورسولُهُ. قالَ: اللهمَّ اشهدْ. ثمّ قالَ: ألا مَن كنتُ مولاهُ فعليٌّ مولاهُ. وبعد [[الخطابة|المنبر]] سلّموا على أميرِ المؤمنينَ (عليه السلام) بإمرةِ المؤمنينَ. فأنزلَ اللهُ جبرئيلَ وأخبرَ النبيَّ صلى الله عليه وسلم بقولِ عمرَ لهم، فدعاهم وسألهم عن ذلك، فأنكروا وحلفوا. فأنزلَ اللهُ هذهِ الآيةَ: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا…}}».&amp;lt;ref&amp;gt;تفسير القمي، ج1، ص174–175؛ بحار الأنوار، ج31، ص635–636؛ بحار الأنوار، ج37، ص119؛ عوالم العلوم، ج2/15، ص134–135.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== الحديث الثاني ====&lt;br /&gt;
بيّن الإمام الصادق عليه السلام في حديث آخر الكلام السري الذي دار بين [[أبو بكر بن أبي قحافة|أبي بكر]] و[[عمر بن الخطاب|عمر]] أمام منبر الغدير قائلاً: «لمّا نصَبَ رسولُ اللهِ صلى الله عليه وسلم يومَ غديرِ خُمٍّ أميرَ المؤمنينَ (عليه السلام) وقالَ: مَن كنتُ مولاهُ فعليٌّ مولاهُ، تضامَّ رجلانِ من [[قريش]] (أبو بكرٍ وعمرُ) وقالا: واللهِ لا نُسلِّمُ لهُ أبداً فيما يقولُ. فأُخبِرَ النبيُّ صلى الله عليه وسلم بذلكَ، فسألهما عن ذلكَ، فكذَّبا وحلفا باللهِ ما قالا شيئاً. فأنزلَ اللهُ جبرئيلَ بهذهِ الآيةِ: «يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ وَكَفَرُوا بَعْدَ إِسْلَامِهِمْ…»».&amp;lt;ref&amp;gt;تفسير العياشي، ج2، ص100؛ عوالم العلوم، ج2/15، ص140، ح206؛ بحار الأنوار، ج37، ص154.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وقد رُويت القصة نفسها في رواية أخرى كالتالي: هزّ أبو بكر وعمر رؤوسهما غضباً وإنكاراً وقالا: لن نسلّم له أبداً. فسمع أحدهم كلامهما وأخبر النبي صلى الله عليه وسلم، فاستدعاهما، لكنهما أنكرا قولهما. وهنا نزلت الآية ۷۴ من سورة التوبة، ثم قال [[الإمام الصادق عليه السلام]]، مع الالتفات إلى الجملة الأخيرة من الآية حول التوبة: والله لقد أعرضوا ولم يتوبوا.&amp;lt;ref&amp;gt;الصراط المستقيم، ج1، ص314.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== الحديث الثالث ====&lt;br /&gt;
بيّن [[الإمام الباقر (عليه السلام)]] كلاماً سرياً آخر لـ[[أبو بكر بن أبي قحافة|أبي بكر]] و[[عمر بن الخطاب|عمر]] أمام منبر الغدير قائلاً: عندما نصّب النبي صلى الله عليه وسلم أمير المؤمنين (عليه السلام) يوم الغدير... قال أبو بكر وعمر سراً: ما زال يرفع من شأن ابن عمه هذا ولم يبلغ أمنيته بعد. ولو استطاع أن يجعله نبياً لفعل. والله، إن هلك، لنصرفنّ الأمر عن قصده. فسمع شاب من الأنصار (بُريدة) كلامهما وقال: والله لقد سمعت كلامكما، ووالله لأخبرنّ النبي صلى الله عليه وسلم بما قلتما. فاستحلفاه بالله ألا يخبر، لكنه رفض وأعلن أنه سيخبر بما قالا. فقال له أبو بكر وعمر: افعل ما شئت. فجاء بُريدة إلى النبي صلى الله عليه وسلم وأخبره بكلامهما، فأرسل النبي صلى الله عليه وسلم خلفهما واستدعاهما. فلما جاءا ورأيا الشاب عند النبي، علما أنه قد أخبره. فقال النبي: يا أبا بكر ويا عمر! ما الذي حملكما على قول ذلك؟ فحلفا بالله الذي لا إله إلا هو أنهما لم يقولا شيئاً من ذلك!&lt;br /&gt;
&lt;br /&gt;
التَفَتَ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ إِلَى الشَّابِّ الأَنْصَارِيِّ وَقَالَ: «يَا أَخَا الأَنْصَارِ، لِمَ نَسَبْتَ هَذَيْنِ الرَّجُلَيْنِ إِلَى الكَذِبِ؟» فَشَعَرَ الشَّابُّ الأَنْصَارِيُّ بِحُزْنٍ شَدِيدٍ حَتَّى تَمَنَّى لَوْ أَنَّ الأَرْضَ ابْتَلَعَتْهُ وَلَمْ يَقُلْ ذَلِكَ، وَدَعَا اللهَ فِي تِلْكَ اللَّحْظَةِ أَنْ يُظْهِرَ صِدْقَهُ حَتَّى لَا يَخْجَلَ أَمَامَ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ. وَفِي هَذِهِ الأَثْنَاءِ نَزَلَ جِبْرِيلُ -فِي سَاعَةٍ لَمْ يَكُنْ يَنْزِلُ فِيهَا عَادَةً- وَأَنْزَلَ هَذِهِ الآيَةَ عَلَى النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ وَكَفَرُوا بَعْدَ إِسْلَامِهِمْ}}.&amp;lt;ref&amp;gt;الأصول الستة عشر، ص 333–334.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وَالنُّقْطَةُ الجَدِيرَةُ بِالاهْتِمَامِ فِي كَلَامِ الإِمَامِ الصَّادِقِ عَلَيْهِ السَّلَامُ هِيَ أَنَّهُ أَقْسَمَ فِي ثَلَاثَةِ مَوَاضِعَ عَلَى أَنَّ أَبَا بَكْرٍ وَعُمَرَ بَعْدَ هَذَا القَوْلِ الخِيَانِيِّ، وَأَمَامَ الخِيَارَيْنِ اللَّذَيْنِ وَضَعَهُمَا اللهُ لَهُمَا فِي الآيَةِ، إِمَّا التَّوْبَةُ أَوْ الإِعْرَاضُ وَانْتِظَارُ [[عذاب|العَذَابِ الإِلَهِيِّ]]، اخْتَارَا الطَّرِيقَ الثَّانِيَ.&amp;lt;ref&amp;gt;غدیر در قرآن، ج 1، ص 223.&amp;lt;/ref&amp;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;
فَجَاؤُوا وَجَلَسُوا أَمَامَ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ وَقَالُوا: بِأَبِينَا أَنْتَ وَأُمِّنَا يَا رَسُولَ اللهِ! لَيْسَ الأَمْرُ كَذَلِكَ، نُقْسِمُ بِالَّذِي بَعَثَكَ بِالحَقِّ وَأَكْرَمَكَ بِالنُّبُوَّةِ، مَا قُلْنَا مَا بَلَغَكَ، نُقْسِمُ بِالَّذِي اصْطَفَاكَ عَلَى البَشَرِ. فَقَالَ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ: «يَحْلِفُونَ بِاللهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الكُفْرِ بَعْدَ إِسْلَامِهِمْ، وَهَمُّوا بِمَا لَمْ يَنَالُوا [فِي العَقَبَةِ]، وَمَا نَقَمُوا إِلَّا أَنْ أَغْنَاهُمُ اللهُ وَرَسُولُهُ مِنْ فَضْلِهِ». وَكَانَ بَعْضُهُمْ يَبِيعُ رُؤُوسَ الحَيَوَانَاتِ، وَبَعْضُهُمْ يَبِيعُ أَكْرَاعَهَا، وَآخَرُونَ كَانُوا رُعَاةَ إِبِلٍ (أَيْ كَانُوا يُمَارِسُونَ أَعْمَالاً دَنِيئَةً)، فَأَغْنَاهُمُ اللهُ بِبَرَكَةِ رَسُولِهِ، لَكِنَّهُمْ سَلُّوا حِدَّةَ سُيُوفِهِمْ ضِدَّهُ.&amp;lt;ref&amp;gt;تفسیر العیاشی، ج 2، ص 99–100، ح 90؛ بحارالانوار، ج 37، ص 154؛ عوالم العلوم، ج 15/2، ص 139–140، ح 205.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== الحَدِيثُ الثَّانِي =====&lt;br /&gt;
يَنْقُلُ [[زید بن ارقم انصاری|زَيْدُ بْنُ أَرْقَمَ الأَنْصَارِيُّ]]، الَّذِي كَانَ حَاضِراً فِي الغَدِيرِ، الحَادِثَةَ الثَّانِيَةَ المُتَعَلِّقَةَ بِحُذَيْفَةَ كَمَا يَلِي: بَعْدَ أَنْ أَخَذَ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ بِيَدِ أَمِيرِ المُؤْمِنِينَ عَلِيٍّ عَلَيْهِ السَّلَامُ وَقَالَ: «مَنْ كُنْتُ مَوْلَاهُ فَعَلِيٌّ مَوْلَاهُ»، عُدْنَا إِلَى مَتَاعِنَا وَكَانَ [[حذيفة بن يمان|حُذَيْفَةُ بْنُ اليَمَانِ]] مَعِي. وَكَانَ بِجَانِبِ خَيْمَتِي خَيْمَةٌ لِثَلَاثَةٍ مِنْ قُرَيْشٍ، فَسَمِعْنَا أَحَدَهُمْ يَقُولُ: وَاللهِ إِنَّ مُحَمَّداً (مَعَاذَ اللهِ) أَحْمَقُ، إِذَا كَانَ يَظُنُّ أَنَّ أَمْرَ الخِلَافَةِ بَعْدَهُ سَيَسْتَقِيمُ لِعَلِيٍّ. فَقَالَ الآخَرُ: أَتَحْسَبُهُ أَحْمَقَ؟ أَلَا تَعْلَمُ أَنَّهُ مَجْنُونٌ، وَقَدْ كَادَ أَنْ يُغْشَى عَلَيْهِ مِنَ الجُنُونِ عِنْدَ زَوْجَةِ ابْنِ أَبِي كَبْشَةَ؟ فَقَالَ الثَّالِثُ: دَعُوهُ! سَوَاءٌ كَانَ أَحْمَقَ أَوْ مَجْنُوناً! وَاللهِ لَنْ يَكُونَ أَبَداً مَا يَقُولُهُ.&lt;br /&gt;
&lt;br /&gt;
فَغَضِبَ حُذَيْفَةُ مِنْ مَقَالَتِهِمْ، وَرَفَعَ طَرَفَ خِبَائِهِمْ وَأَدْخَلَ رَأْسَهُ إِلَيْهِمْ وَقَالَ: أَتَفْعَلُونَ هَذَا وَرَسُولُ اللهِ صَلَّى اللهُ عَلَيْهِ وَآلِهِ حَيٌّ وَوَحْيُ اللهِ يَنْزِلُ؟ وَاللهِ لَأُخْبِرَنَّهُ بِمَقَالَتِكُمْ غَدَاةَ غَدٍ. فَقَالُوا: يَا حُذَيْفَةُ، أَكُنْتَ حَاضِرًا فَسَمِعْتَ مَا قُلْنَا؟ اكْتُمْ عَلَيْنَا مَا سَمِعْتَ، فَإِنَّ حَقَّ الْجِوَارِ الْأَمَانَةُ. فَقَالَ حُذَيْفَةُ: لَا هَذَا مِنْ حَقِّ جِوَارِ الْأَمَانَةِ، وَلَا هَذَا مَجْلِسُكُمْ، وَلَا أَنَا بِنَاصِحٍ لِلَّهِ وَلِرَسُولِهِ إِنْ كَتَمْتُ هَذَا الْأَمْرَ عَنْهُ. قَالُوا: يَا حُذَيْفَةُ، اصْنَعْ مَا بَدَا لَكَ، فَوَاللهِ لَنَحْلِفَنَّ لَهُ أَنَّا مَا قُلْنَا ذَلِكَ، وَلَتَكُونَنَّ أَنْتَ الْكَاذِبَ عَلَيْنَا، وَأَنْتَ تَظُنُّ أَنَّ النَّبِيَّ يَقْبَلُ قَوْلَكَ وَيُكَذِّبُ قَوْلَنَا وَنَحْنُ ثَلَاثَةٌ.&lt;br /&gt;
&lt;br /&gt;
فَقَالَ حُذَيْفَةُ: أَمَّا أَنَا فَلَا أُبَالِي إِذَا أَدَّيْتُ نَصِيحَةَ اللهِ وَرَسُولِهِ، فَقُولُوا مَا شِئْتُمْ! ثُمَّ مَضَى حُذَيْفَةُ إِلَى النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ، وَأَمِيرُ الْمُؤْمِنِينَ عَلَيْهِ السَّلَامُ جَالِسٌ إِلَى جَانِبِهِ مُتَقَلِّدًا سَيْفَهُ، فَأَخْبَرَهُ بِمَقَالَةِ الْمُنَافِقِينَ. فَأَرْسَلَ النَّبِيُّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ إِلَيْهِمْ فَجَاءُوا، فَقَالَ: مَا قُلْتُمْ؟ قَالُوا: وَاللهِ مَا قُلْنَا شَيْئًا، وَإِنْ بَلَغَكَ عَنَّا خَبَرٌ فَقَدْ كُذِبَ عَلَيْنَا. فَنَزَلَ جِبْرِيلُ بِهَذِهِ الْآيَةِ: «يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ وَكَفَرُوا بَعْدَ إِسْلَامِهِمْ». فَقَالَ أَمِيرُ الْمُؤْمِنِينَ عَلَيْهِ السَّلَامُ حِينَئِذٍ: دَعُوهُمْ فَلْيَقُولُوا مَا شَاءُوا، فَوَاللهِ إِنَّ قَلْبِي لَيَخْفِقُ فِي صَدْرِي وَسَيْفِي عَلَى عَاتِقِي، وَلَئِنْ هَمُّوا بِسُوءٍ لَأُقَاتِلَنَّهُمْ.&amp;lt;ref&amp;gt;تفسیر العیاشی، ج2، ص98–99، ح89؛ بحارالانوار، ج37، ص152–153، ح37؛ عوالم العلوم، ج2/15، ص52–53.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وَمِمَّا يَلْفِتُ الِانْتِبَاهَ فِي هَذِهِ الْحَالَاتِ هُوَ رُعْبُهُمُ الشَّدِيدُ مِنْ وُصُولِ الْأَخْبَارِ إِلَى النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ، حَيْثُ يُحَاوِلُونَ تَبْرِئَةَ أَنْفُسِهِمْ بِالْأَيْمَانِ الْكَاذِبَةِ حِينَ لَا يَجِدُونَ مَفَرًّا. وَهَذَا أَحَدُ مَظَاهِرِ عِصْمَةِ النَّبِيِّ مِنَ النَّاسِ فِي غَدِيرِ خُمٍّ، إِذْ أَلْقَى اللهُ فِي قُلُوبِ الْمُنَافِقِينَ هَذَا الرُّعْبَ بِحَيْثُ لَمْ يَجْرُؤُوا عَلَى إِعْلَانِ عَمَلِهِمْ، وَإِلَّا فَلَمْ يَكُنْ فِي قُلُوبِهِمْ أَيُّ مَانِعٍ عَقَائِدِيٍّ، وَكَانَ مِنَ الْمُمْكِنِ أَنْ يَتَّحِدُوا وَيَقُومُوا بِأَعْمَالٍ تَخْرِيبِيَّةٍ.&amp;lt;ref&amp;gt;غدیر در قرآن، ج1، ص227.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== الْمَوْرِدُ الثَّالِثُ: فِي أَعْقَابِ كَلِمَاتٍ بَعْدَ الْبَيْعَةِ ===&lt;br /&gt;
كَانَ النَّاسُ جَمِيعًا يَدْخُلُونَ خِبَاءَ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ لِأَجْلِ [[البيعة|الْبَيْعَةِ]] فِي الْغَدِيرِ، وَبَعْدَ مُبَايَعَتِهِ يَتَوَجَّهُونَ إِلَى خِبَاءِ أَمِيرِ الْمُؤْمِنِينَ عَلَيْهِ السَّلَامُ، فَيُسَلِّمُونَ عَلَيْهِ بِإِمْرَةِ الْمُؤْمِنِينَ وَيُبَايِعُونَهُ. فِي هَذِهِ الْأَجْوَاءِ، دَخَلَ [[أَبو بكرِ بن أَبي قحافة|أَبُو بَكْرٍ]] وَ[[عمر بن الخطاب|عُمَرُ]] وَبَايَعَا، إِلَّا أَنَّ النِّفَاقَ الْبَاطِنِيَّ لَمْ يَسْمَحْ لَهُمَا بِالِابْتِعَادِ عَنْ بَابِ خِبَاءِ الْإِمَامِ، فَتَفَوَّهَا هُنَاكَ بِكَلَامٍ نَارٍ سَمِعَهُ [[بريدة بن الخصيب الْأسلمي|بُرَيْدَةُ الْأَسْلَمِيُّ]] وَرَفَعَهُ فَوْرًا إِلَى النَّبِيِّ.&lt;br /&gt;
&lt;br /&gt;
وَقَدْ رُوِيَ الْجُزْءُ الْحَسَّاسُ مِنْ هَذِهِ الْوَاقِعَةِ كَمَا يَلِي: خَرَجَ أَبُو بَكْرٍ وَعُمَرُ مِنْ خِبَاءِ أَمِيرِ الْمُؤْمِنِينَ عَلَيْهِ السَّلَامُ وَهُمَا مُتَشَابِكَا الْأَيْدِي، وَكَانَا يَقُولَانِ: «وَاللهِ لَنْ يَتِمَّ لَهُ مَا قَالَ أَبَدًا». فَسَمِعَ هَذَا الْقَوْلَ شَابٌّ مِنَ الْأَنْصَارِ فَقَالَ لَهُمَا: أَيُّ شَيْءٍ قَالَ النَّبِيُّ حَتَّى قُلْتُمَا: لَنْ يَتِمَّ لَهُ؟ فَقَالَ لَهُ أَبُو بَكْرٍ وَعُمَرُ: مَا لَكَ وَلِهَذَا الْكَلَامِ! امْضِ لِشَأْنِكَ! فَقَالَ بُرَيْدَةُ: وَاللهِ مَا أَنَا بِنَاصِحٍ لِلَّهِ وَلِرَسُولِهِ إِنْ تَرَكْتُ هَذَا الْأَمْرَ! فَقَالَا: وَاللهِ لَنَحْلِفَنَّ لِلنَّبِيِّ فَيُصَدِّقَنَا وَيُكَذِّبَنَّكَ. (وَبِالنَّظَرِ إِلَى أَنَّ هَذِهِ الْمُحَاوَرَاتِ كَانَتْ خَارِجَ خِبَاءِ الْبَيْعَةِ) قَالَ بُرَيْدَةُ: وَاللهِ لَا أَبْرَحُ مِنْ عِنْدِ خِبَاءِ النَّبِيِّ صَلَّى اللهُ عَلَيْهِ وَآلِهِ حَتَّى يَخْرُجَ أَوْ يُؤْذَنَ لِي بِالدُّخُولِ.&lt;br /&gt;
&lt;br /&gt;
ثُمَّ أَتَى خَيْمَةَ النَّبِيِّ صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ، فَاسْتَأْذَنَ فَدَخَلَ وَقَالَ: بِأَبِي أَنْتَ وَأُمِّي يَا رَسُولَ اللَّهِ، إِنَّ أَبَا بَكْرٍ وَعُمَرَ خَرَجَا مِنْ عِنْدِكَ وَهُمَا يَقُولَانِ: وَاللَّهِ مَا يَنَالُهُ مِمَّا قَالَ شَيْءٌ أَبَدًا. فَقَالَ النَّبِيُّ صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ: أَوَقَالَا ذَلِكَ؟ وَرَبِّ الْكَعْبَةِ، لَقَدْ أَنْبَأَنِي اللَّهُ بِمَا قَالَا وَبِمَا كَانَ يَحِقُّ لَهُمَا أَنْ يَقُولَا. عَلَيَّ بِهِمَا. فَأُتِيَ بِهِمَا، فَسَأَلَهُمَا النَّبِيُّ: مَا قُلْتُمَا آنِفًا؟ قَالَا: وَالَّذِي لَا إِلَهَ إِلَّا هُوَ، مَا قُلْنَا شَيْئًا! فَقَالَ النَّبِيُّ صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ: وَاللَّهِ إِنَّ هَذَا الْفَتَى لَأَصْدَقُ مِنْكُمَا، وَقَدْ أَنْبَأَنِي اللَّهُ بِمَقَالَتِكُمَا، وَأَنْزَلَ فِي إِنْكَارِكُمَا هَذَا آيَةً مِنَ الْقُرْآنِ.&amp;lt;ref&amp;gt;التحصين، ص 537–538.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== المورد الرابع: في أعقاب قصة الضب ===&lt;br /&gt;
كان [[المنافق|المنافقون]] يقرّون في خلواتهم بهزيمتهم وبعظمة واقعة الغدير، وكان ذلك يورثهم ضغينةً، ولكن لعجزهم عن فعل أي شيء، كانوا يلجؤون إلى أعمالٍ مثيرةٍ للسخرية لتفريغ غضبهم. ومن أمثلة ذلك قصة الضب التي أخبر بها [[أبو ذر الغفاري|أبو ذر]] النبيَّ صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ:&lt;br /&gt;
&lt;br /&gt;
حينما فرغ النبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ من تنصيب أمير المؤمنين عَلَيْهِ السَّلَامُ في غدير خم، وتفرق الناس من مجلس الخطبة، اجتمع نفر من قريش يتأسفون على ما حدث. وفي هذه الأثناء مرّ بهم ضبّ، فقال أحدهم: ليت محمداً جعل هذا الضب أميرنا بدلاً من علي! فسمع أبو ذر كلامهم ونقله إلى النبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ، فأرسل إليهم النبي وأحضرهم وعرض عليهم ما قالوه، فأنكروا ذلك وحلفوا على إنكارهم. فأنزل الله تعالى هذه الآية: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا}}. ثم قال النبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ: «ما أظلّت الخضراء ولا أقلّت الغبراء أصدق من أبي ذر». ثم قال: إن جبرائيل أخبرني أنهم يؤتى يوم القيامة بقوم إمامهم ضب، فاحذروا أن تكونوا أنتم، فإن الله تعالى يقول ([[الآية ۷۱ من سورة الإسراء والغدير|آية ۷۱ سورة الإسراء]]): «يَوْمَ نَدْعُو كُلَّ أُنَاسٍ بِإِمَامِهِمْ».&amp;lt;ref&amp;gt;مناقب آل أبي طالب، ج3، ص41–42؛ بحار الأنوار، ج37، ص163؛ عوالم العلوم، ج2/15، ص163.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
والاستشهاد بآية ۷۱ من سورة الإسراء يحمل دلالةً مهمةً؛ وهي أن المعرضين عن إمام الحق ليسوا في مأمن، بل سيحشرون يوم القيامة -سواء أرادوا أم أبوا- مع الإمام الذي اختاروه لأنفسهم.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص230.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== المورد الخامس: حول الصحيفة الملعونة ===&lt;br /&gt;
يمكن القول إن أكبر إجراء ضد الغدير و[[الولاية]] هو كتابة [[الصحيفة الملعونة الأولى|الصحيفة الملعونة]]، التي وقّع عليها خمسة نفر بعد أيام الحج وقبل التوجه نحو الغدير في مكة، وتعاهدوا فيها على ألا يجعلوا الخلافة تصل إلى الأئمة بعد شهادة النبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ.&amp;lt;ref&amp;gt;للمزيد من المعلومات انظر: غدير در قرآن، ج1، ص128–129.&amp;lt;/ref&amp;gt; وعندما فعلوا ذلك، استدعاهم النبي ووبخهم، لكنهم أنكروا. وفي مقابل إنكارهم هذا، نزلت الآية ۷۴ من سورة التوبة.&amp;lt;ref&amp;gt;بحار الأنوار، ج28، ص122؛ الصراط المستقيم، ج3، ص153.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وجاء في رواية أخرى في تفسير هذه الآية: إنها نزلت فيمن تعاهدوا في [[الكعبة]] على ألا يجعلوا أمر الخلافة يصل إلى بني هاشم؛ وعليه، فإن تلك الصحيفة هي «كلمة الكفر» المذكورة في الآية. ثم كمنوا للنبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ في قمة جبل هَرشى وقصدوا قتله، وهذا هو قول الله تعالى (في الآية): «وَهَمُّوا بِمَا لَمْ يَنَالُوا».&amp;lt;ref&amp;gt;تفسير القمي، ج1، ص301؛ بحار الأنوار، ج22، ص96؛ بحار الأنوار، ج31، ص633.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وفي حديث آخر يمتد نطاق هذه الأيمان الكاذبة إلى يوم القيامة؛ حيث ينكرون ويحلفون حين تُكشف مخططاتهم السرية أمام جميع الخلائق. ونص الحديث هو: إذا كان يوم القيامة وجمع الله غاصبي حق آل محمد عَلَيْهِمُ السَّلَامُ وعرض عليهم أعمالهم، حلفوا أنهم لم يفعلوا شيئاً من ذلك؛ كما حلفوا للنبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ في الدنيا. وكان ذلك حين حلفوا ألا تصل الولاية إلى بني هاشم، وكذلك حين قصدوا قتل النبي صَلَّى اللَّهُ عَلَيْهِ وَآلِهِ في جبل هرشى. وعندما أطلع الله نبيه وأخبرهم بذلك، حلفوا له أنهم لم يقولوا مثل هذا الكلام ولم يقصدوا ذلك. وهنا أنزل الله على نبيه هذه الآية: «يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ...».&amp;lt;ref&amp;gt;تفسير القمي، ج2، ص358؛ بحار الأنوار، ج7، ص209، ح102؛ بحار الأنوار، ج31، ص635.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== المورد السادس: قصة عقبة هَرشى ===&lt;br /&gt;
تُعدّ المحاولة الثانية لـ[[المنافق|المنافقين]]، والتي تضاهي في خطورتها كتابة [[صحيفة ملعونة أولى|الصحيفة الملعونة]]، مسألة اغتيال النبي (صلى الله عليه وآله) بعد إعلانه أمر الولاية. وهذا القرار يعكس الغضب والحقد الذي كانوا يضمرونه منذ واقعة غدير خم. ومن جهة أخرى، كانوا يخشون حضور النبي (صلى الله عليه وآله) الذي كان يكشف مخططاتهم بمدد من الوحي ويفضحهم أمام الجميع؛ لذا أرادوا التخلص من هذه العقبات بقتل النبي. لكن الله تعالى عصم نبيه وأطلعه على مؤامرتهم بوعده: «وَاللَّهُ يَعْصِمُكَ مِنَ النَّاسِ»، فواجههم النبي عند عقبة هَرشى، وبظفره بهم باءت خطتهم بالفشل. وقد نادى النبي (صلى الله عليه وآله) عليهم بأسمائهم وأرى وجوههم لعمار وحذيفة اللذين كانا برفقته، لتكون وثيقة دامغة للأجيال القادمة.&amp;lt;ref&amp;gt;للاطلاع المفصل حول هذا الحدث، انظر: «غدير در قرآن»، ج2، ص407.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
وقد نقل بعض الباحثين تفاصيل هذا الحدث نقلاً عن [[حذيفة بن اليمان|حذيفة بن اليمان]]، وبناءً على رواية السيد ابن طاووس مدمجة مع رواية علي بن إبراهيم القمي (بين قوسين)، كالتالي: اجتمع نفر من المنافقين الذين نكثوا عهد النبي (صلى الله عليه وآله) (وارتدوا عن الدين بعده) وقالوا: إن محمداً قال في مسجد الخيف بالأمس تلك الكلمات، وقالها هنا أيضاً -أي في الغدير-. فإذا عاد إلى [[المدينة]] فسيأخذ البيعة له مجدداً. والرأي الصائب هو أن نقتل محمداً قبل أن يدخل المدينة. وعندما حلّت الليلة الموعودة، كمن أربعة عشر رجلاً في جبل هَرشى لاغتياله. وكان جبل هَرشى يقع بين الجحفة والأبواء. جلس سبعة منهم عن يمين العقبة وسبعة عن يسارها لكي يُنفّروا ناقة النبي. تحرك النبي بعد صلاة العشاء، وكان يمتطي ناقة سريعة ويتقدم أصحابه صاعداً في منحدر الجبل. وبينما كان يصعد نحو العقبة، جاءه جبرائيل مخبراً: يا محمد! إن [[أبو بكر بن أبي قحافة|أبا بكر]] و[[عمر بن الخطاب|عمر]] و[[عثمان بن عفان|عثمان]] و[[معاوية بن أبي سفيان|معاوية]] و[[عمرو بن العاص]] و[[طلحة بن عبيد الله التميمي|طلحة]] و[[سعد بن أبي وقاص|سعد بن أبي وقاص]] و[[عبد الرحمن بن عوف|عبد الرحمن بن عوف]] و[[أبو عبيدة الجراح|أبو عبيدة الجراح]] و[[أبو موسى الأشعري|أبو موسى الأشعري]] و[[أبو هريرة]] و[[المغيرة بن شعبة|المغيرة بن شعبة]] و[[معاذ بن جبل|معاذ بن جبل]] و[[سالم مولى أبي حذيفة|سالم مولى أبي حذيفة]]، يكمنون لك في عقبة الجبل ليقتلوك!&lt;br /&gt;
&lt;br /&gt;
التفت النبي (صلى الله عليه وآله) إليّ -وكنت خلفه- وسأل: من هذا خلفي؟ قلت: أنا حذيفة يا رسول الله! قال: هل سمعت ما سمعتُ؟ قلت: نعم. قال: اكتمه! ثم اقترب منهم وناداهم بأسمائهم وأسماء آبائهم. فلما سمعوا نداء النبي (صلى الله عليه وآله) فرّوا وذابوا وسط الحشود، حتى إنهم تركوا نوقهم التي كانوا قد ربطوها في العقبة. وصل النبي (صلى الله عليه وآله) إلى نوقهم وعرفها. ولحق الناس بالنبي من خلفه وأخذوا يبحثون عنهم.&lt;br /&gt;
&lt;br /&gt;
وفي الصباح، حين نزل القوم، قال النبي (صلى الله عليه وآله): إن قوماً تعاهدوا في الكعبة على أنه «إذا مات محمد أو قُتل، لا نردّ أمر الخلافة إلى أهل بيته»، قد أقدموا على هذا الفعل. وبسماعهم هذا الكلام، جاء أولئك الأربعة عشر رجلاً إلى النبي (صلى الله عليه وآله) وأقسموا (أنهم لم يقولوا شيئاً من ذلك ولم يقصدوا ذلك) وأنهم لم يقدموا على أي فعل ضد حياته. فأنزل الله تبارك وتعالى هذه الآية: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا…}}.&amp;lt;ref&amp;gt;تفسير القمي، ج1، ص174–175؛ الإقبال، ج2، ص249–250؛ بحار الأنوار، ج31، ص632، ح137؛ بحار الأنوار، ج37، ص115؛ عوالم العلوم، ج2/15، ص165؛ عوالم العلوم، ج2/15، ص304.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== حدث عقبة هَرشى في مصادر أهل السنة ====&lt;br /&gt;
نُقل نزول هذه الآية في قصة عقبة هَرشى في بعض مصادر أهل السنة. فقد نقل [[جلال الدين السيوطي|السيوطي]] في كتابه &#039;&#039;الدر المنثور&#039;&#039;، في تفسير الآية ۷۴ من سورة التوبة، هذا الحدث عن [[حذيفة بن اليمان|حذيفة]] قائلاً: إنهم كانوا قوماً عزموا على إلقاء النبي (صلى الله عليه وآله) من الجبل ليلة العقبة. وكانوا قد تآمروا على قتله في سفر كان معهم فيه، وكانوا يتحينون الفرصة للكمين، حتى كانت تلك الليلة التي سلك فيها النبي طريق جبل هَرشى. تقدم بعضهم وتأخر بعضهم، وكان ذلك في ساعات من الليل. فقالوا فيما بينهم: إذا بلغ العقبة أسقطناه عن ناقته وألقيناه في الوادي. وكان حذيفة يسمع كلامهم، بينما كان يسوق ناقة النبي (صلى الله عليه وآله) من خلفه.&lt;br /&gt;
&lt;br /&gt;
في تلك الليلة، كان عمار يقود ناقة النبي صلى الله عليه وسلم من أمامها، وحذيفة بن اليمان يوجهها من خلفها. وفجأة، سمع حذيفة وقع أقدام نوق، فالتفت فرأى جماعةً قد غطوا وجوههم، فقال لهم: «تَنَحَّوْا! تَنَحَّوْا! يا أعداء الله!». فتوقفوا، ومضى النبي صلى الله عليه وسلم في طريقه حتى بلغ المكان الذي أراد التوقف فيه فنزل. ولما أصبح الصباح، أرسل النبي صلى الله عليه وسلم في طلبهم واحداً تلو الآخر وقال لهم: «لقد كان منكم كذا وكذا». فحلفوا أنهم لم يقولوا شيئاً، وأنهم لم يقصدوا ما سألهم النبي صلى الله عليه وسلم عنه. فأنزل الله تعالى قوله: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ وَكَفَرُوا بَعْدَ إِسْلَامِهِمْ}}.&amp;lt;ref&amp;gt;الدر المنثور، ج4، ص242.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ووفقاً لبعض الباحثين، فإن رواية السيوطي لم تذكر جميع تفاصيل المواجهة على قمة جبل هرشى ولا رؤية وجوه الأربعة عشر شخصاً؛ ويعود ذلك من جهة إلى حذف الكثير من الأحداث المهمة في كتب أهل السنة، ومن جهة أخرى إلى أن الراوي كان بصدد بيان سبب نزول الآية فذكر أصل القصة باختصار.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص235.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== المورد السابع: مؤامرة اغتيال أمير المؤمنين عليه السلام ====&lt;br /&gt;
بناءً على الآية ۷۴ من سورة التوبة، فإن آخر مورد انكشفت فيه المخططات السرية لأعداء الغدير ونزلت فيه الآية، كان تآمرهم لاغتيال أمير المؤمنين عليه السلام. فقد سعى [[المنافق|المنافقون]] بعد فشل مخططهم لاغتيال النبي صلى الله عليه وسلم، إلى تنفيذ هذه المؤامرة؛ ليتمكنوا من خلال إزاحة الخليفة الذي عينه النبي صلى الله عليه وسلم من تهيئة الظروف لتنفيذ مخططاتهم وفقاً لمحتوى [[الصحيفة الملعونة الثانية]].&lt;br /&gt;
&lt;br /&gt;
وقد وصف ابن عباس هذه المؤامرة قائلاً: إن كبراء قريش كتبوا فيما بينهم كتاباً وتعاهدوا فيه على قتل أمير المؤمنين عليه السلام، وأودعوا هذا الميثاق عند [[أبو عبيدة الجراح|أبي عبيدة الجراح]] - الذي كان يُعد أميناً لديهم -. فأنزل الله الآية وأخبر النبي صلى الله عليه وسلم بذلك، فطلب النبي صلى الله عليه وسلم ذلك الميثاق من أبي عبيدة فسلّمه إليه، فقال له النبي صلى الله عليه وسلم: «أكفرتم بعد إسلامكم!». فحلفوا بالله أنهم لم يقصدوا سوءاً، فأنزل الله هذه الآية: {{قرآن|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا وَلَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ بَعْدَ إِسْلَامِهِمْ وَهَمُّوا بِمَا لَمْ يَنَالُوا}}.&amp;lt;ref&amp;gt;الصراط المستقيم، ج1، ص296.&amp;lt;/ref&amp;gt; وفي هذه الواقعة، ومع أن أبا عبيدة سلّم الميثاق للنبي صلى الله عليه وسلم، إلا أنهم أنكروا وحلفوا على ذلك.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص236.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== تفسير الآية بناءً على أسباب النزول ==&lt;br /&gt;
قدم بعض الباحثين، استناداً إلى أسباب النزول التي أُشير إليها في الأقسام السابقة، تفسيراً لكل جزء من الآية:&lt;br /&gt;
&lt;br /&gt;
=== القسم الأول: {{نص عربي|يَحْلِفُونَ بِاللَّهِ مَا قَالُوا}} ===&lt;br /&gt;
وفقاً للأحاديث المذكورة، فإن فاعل {{نص عربي|يَحْلِفُونَ}} في عدة أحاديث كان [[أبو بكر بن أبي قحافة|أبا بكر]] و[[عمر بن الخطاب|عمر]]، وفي أحاديث أخرى لم يُذكر أسماء الحالفين، ومن المحتمل أن أبا بكر وعمر كانوا من بينهم؛ وبناءً عليه، فإن جرمهم الأول هو الحلف كذباً، وجرمهم الثاني هو تآمرهم.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص236.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== القسم الثاني: {{نص عربي|وَ لَقَدْ قَالُوا كَلِمَةَ الْكُفْرِ بَعْدَ إِسْلَامِهِمْ}} ===&lt;br /&gt;
ينسب الله تعالى صراحةً العمل ضد [[الإسلام]] إلى أبي بكر وعمر وبقية المنافقين في الغدير. ويُستفاد من هذه النسبة أمران: الأول أن العمل ضد الغدير والولاية هو عمل ضد الإسلام؛ والثاني أن أبا بكر وعمر قد عملا ضد الإسلام وفي سبيل انتصار الكفر، وأن ما قالوه ضد [[الولاية|ولاية أمير المؤمنين عليه السلام]] كان كفراً محضاً.&lt;br /&gt;
&lt;br /&gt;
وفي رواية، فُسرت «كَلِمَةَ الْكُفْرِ» صراحةً بـ [[الصحيفة الملعونة]]؛ أي أن هذه الصحيفة كانت أساس الكفر والردة التي تحققت بعد النبي صلى الله عليه وسلم، ورجع الناس إلى [[جاهلية|الجاهلية]].&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص237.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== القسم الثالث: {{نص عربي|وَ هَمُّوا بِمَا لَمْ يَنَالُوا}} ===&lt;br /&gt;
كان لـ [[منافقون|المنافقين]] قراران عمليان، أحدهما وصلوا فيه إلى مرحلة التنفيذ لكن الله أحبط مخططهم، وهو مخطط اغتيال النبي صلى الله عليه وسلم، والآخر انكشف مخططهم قبل التنفيذ، وهو مخطط اغتيال أمير المؤمنين عليه السلام. هذان الموردان يحددانهم كأول من عزم على قتل النبي وأمير المؤمنين عليهما السلام؛ لأنهم - وإن واجهوا تصدي الله لهم - إلا أنهم اتخذوا قرارهم ودخلوا مرحلة العمل، وهذا يثبت كفرهم في الدرجة الأولى، وإجرامهم في الدرجة الثانية.&amp;lt;ref&amp;gt;غدير در قرآن، ج1، ص237.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== القسم الرابع: {{نص عربي|فَإِنْ يَتُوبُوا يَكُ خَيْراً لَهُمْ وَإِنْ يَتَوَلَّوْا يُعَذِّبْهُمُ اللَّهُ}} ===&lt;br /&gt;
مع ما كان عليه المنافقون من نفاق، فتح الله أمامهم طريقين: [[توبة|التوبة]] أو [[عذاب|العذاب]]. فهل تاب المتآمرون في الخفاء ضد الغدير؟ يبيّن التاريخ أنهم لم يتوبوا عن تلك الأعمال فحسب، بل تابعوها، وبعد النبي صلى الله عليه وسلم تولوا الأمور، وتآمروا أكثر من ذي قبل في [[سقيفة|السقيفة]] وما بعدها ضد [[ولایت ائمه علیهم السلام|ولاية أهل البيت عليهم السلام]]، ونفذوها بقوة، وأبادوا المعارضين. ولهذا السبب، يقسم [[إمام صادق علیه السلام|الإمام الصادق عليه السلام]] في عدة أحاديث تتعلق بهذه الآية ويقول: والله لقد تولوا ولم يتوبوا.&amp;lt;ref&amp;gt;تفسير العياشي، ج2، ص100؛ بحار الأنوار، ج37، ص154؛ الصراط المستقيم، ج1، ص314؛ الأصول الستة عشر، ص334.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== الهوامش ==&lt;br /&gt;
{{حواشی}}&lt;br /&gt;
&lt;br /&gt;
== مصادر ==&lt;br /&gt;
{{مصادر}}&lt;br /&gt;
* &#039;&#039;&#039;الأُصولُ السِّتَّةُ عَشَر&#039;&#039;&#039;؛ جَمْعٌ مِنَ المُؤَلِّفینَ، قُم: مُؤَسَّسَةُ عِلْمِیٍّ فَرْهَنْگیِّ دارِ الحَدیث (سازمانُ الطِّباعَةِ وَالنَّشْرِ)، ۱۴۲۳هـ.&lt;br /&gt;
* &#039;&#039;&#039;الإقبالُ بِالأعمالِ الحَسَنَةِ فیما یُعْمَلُ مَرَّةً فِی السَّنَة&#039;&#039;&#039;؛ سَیِّدُ عَلِیُّ بنُ موسَی بنِ طاووس، تَحقیق: جَواد قَیّومی أصفَهانی، قُم: مَکتَبُ الإعْلامِ الإسْلامِیِّ، ۱۴۱۸هـ.&lt;br /&gt;
* &#039;&#039;&#039;بِحارُ الأنوارِ الجامِعَةُ لِدُرَرِ أخبارِ الأئِمَّةِ الأطهار&#039;&#039;&#039;؛ مُحَمَّد باقِر بنُ مُحَمَّد تَقِی مَجلِسی، بَیروت: دارُ إحیاءِ التُّراثِ العَرَبیِّ، ۱۴۰۳هـ.&lt;br /&gt;
* &#039;&#039;&#039;التَّحصینُ لِأسرارِ ما زادَ مِن أخبارِ کِتابِ الیَقین&#039;&#039;&#039;؛ سَیِّدُ رَضِیُّ الدّینِ عَلِیُّ بنُ طاووس حِلِّی، قُم: مُؤَسَّسَةُ دارِ الکِتابِ (الجَزائری)، ۱۴۱۳هـ.&lt;br /&gt;
* &#039;&#039;&#039;تَفْسیرُ العَیّاشِی&#039;&#039;&#039;؛ مُحَمَّد بنُ مَسعود عَیّاشِی، تَحقیق: سَیِّد هاشِم رَسولی مَحَلّاتی، طِهران: المَکتَبَةُ العِلْمِیَّةُ الإسْلامِیَّةُ، ۱۳۸۰هـ.&lt;br /&gt;
* &#039;&#039;&#039;تَفْسیرُ القُمِّی&#039;&#039;&#039;؛ عَلِیُّ بنُ إبراهیم قُمِّی، تَحقیق: طَیِّب موسَوی جَزائری، قُم: دارُ الکِتابِ، ۱۴۰۴هـ.&lt;br /&gt;
* &#039;&#039;&#039;الدُّرُّ المَنثورُ فِی التَّفسیرِ المَأثور&#039;&#039;&#039;؛ عَبدُ الرَّحمنِ بنُ أبی بَکر سُیوطی، بَیروت: دارُ الفِکرِ، ۱۴۱۴هـ.&lt;br /&gt;
* &#039;&#039;&#039;الصِّراطُ المُستَقیمُ إلی مُستَحِقِّی التَّقدیم&#039;&#039;&#039;؛ عَلِیُّ بنُ مُحَمَّد نَباطی عامِلی، تَحقیق: مُحَمَّد باقِر بِهبودی، طِهران: المَکتَبَةُ المُرْتَضَوِیَّةُ، ۱۳۸۴هـ.&lt;br /&gt;
* &#039;&#039;&#039;عَوالِمُ العُلومِ وَالمَعارِفِ وَالأحوالِ مِنَ الآیاتِ وَالأخبارِ وَالأقوال&#039;&#039;&#039;؛ عَبدُ اللهِ بنُ نورِ اللهِ بَحرانی أصفَهانی، تَحقیق: مُحَمَّد باقِر مُوَحِّد أبطَحی أصفَهانی، قُم: مُؤَسَّسَةُ الإمامِ المَهدیِّ عَلَیهِ السَّلامُ، ۱۳۸۲ش.&lt;br /&gt;
* &#039;&#039;&#039;غَدیرٌ دَر قُرآن، قُرآن دَر غَدیر&#039;&#039;&#039; (الغدیر في القرآن، القرآن في الغدیر)؛ مُحَمَّد باقِر أنصاری، قُم: انتشاراتِ دَلیلِ ما، ۱۳۸۷ش.&lt;br /&gt;
* &#039;&#039;&#039;مَناقِبُ آلِ أبی طالِب&#039;&#039;&#039;؛ مُحَمَّد بنُ عَلِیِّ بنِ شَهر آشوب مازَندرانی، تَحقیق: مُحَمَّد حُسَین آشتیانی وَ سَیِّد هاشِم رَسولی مَحَلّاتی، قُم: مُؤَسَّسَةُ انتشاراتِ عَلامِه، ۱۳۷۹هـ.&lt;br /&gt;
{{نهاية}}&lt;br /&gt;
&lt;br /&gt;
[[تصنيف:آيات سورة التوبة]]&lt;br /&gt;
[[تصنيف:الآيات القرآنية المتعلقة بمواقف المنافقين وأفعالهم في غدير خم]]&lt;br /&gt;
&lt;br /&gt;
[[fa:آيه ۷۴ توبه و غدیر]]&lt;br /&gt;
[[en:Verse 74 of Sura al-Tawba and Ghadir]]&lt;br /&gt;
[[ur:سورہ توبہ آیت نمبر ۷۴ اور غدیر]]&lt;br /&gt;
[[en:Verse 74 of Surah al-Tawba and Ghadir]]&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadgets-definition&amp;diff=1001</id>
		<title>ميدياويكي:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadgets-definition&amp;diff=1001"/>
		<updated>2026-08-24T10:52:13Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: أنشأ الصفحة ب&amp;#039;* Extra-Editbuttons[ResourceLoader|dependencies=mediawiki.util|default|rights=minoredit]|Extra-Editbuttons.js|Extra-Editbuttons-persiantools.js|Extra-Editbuttons-persianwikitools.js|Extra-Editbuttons-dictionary.js|Extra-Editbuttons-autoed.js|Extra-Editbuttons-botworks.js&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extra-Editbuttons[ResourceLoader|dependencies=mediawiki.util|default|rights=minoredit]|Extra-Editbuttons.js|Extra-Editbuttons-persiantools.js|Extra-Editbuttons-persianwikitools.js|Extra-Editbuttons-dictionary.js|Extra-Editbuttons-autoed.js|Extra-Editbuttons-botworks.js&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-botworks.js&amp;diff=1000</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-botworks.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-botworks.js&amp;diff=1000"/>
		<updated>2026-08-24T10:51:27Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DO NOT REMOVE THIS LINE EVER&lt;br /&gt;
// fork from mediwiki:TofawikiFinal.js&lt;br /&gt;
var botworks = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
   &lt;br /&gt;
    function trigFillcat() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 &amp;amp;&amp;amp; mw.config.get(&#039;wgNamespaceNumber&#039;) !== 14) { return; }&lt;br /&gt;
        var defer = $.Deferred();&lt;br /&gt;
        $.get(&#039;//rezabot.toolforge.org/hamsang_page.php&#039;, {title: mw.config.get(&#039;wgPageName&#039;)}).then(function () {&lt;br /&gt;
            return $.get(&#039;//rezabot.toolforge.org/fillcat.php&#039;, { title: mw.config.get(&#039;wgPageName&#039;)})&lt;br /&gt;
        }).then(defer.resolve, defer.resolve);&lt;br /&gt;
        console.log(&#039;رده همسنگ شروع شد&#039;);&lt;br /&gt;
        return defer;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function trigMissedRef() {&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) { return; }&lt;br /&gt;
        if ($(&#039;#catlinks a[href=&amp;quot;/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%A8%D8%A7_%DB%8C%D8%A7%D8%AF%DA%A9%D8%B1%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_(%D9%81%D9%82%D8%AF%D8%A7%D9%86_%D9%85%D9%86%D8%A8%D8%B9)&amp;quot;]&#039;).length === 0) {return; } //رده:صفحه‌های با یادکرد خراب (فقدان منبع)&lt;br /&gt;
        console.log(&#039;اصلاح منبع ناموجود شروع شد&#039;);&lt;br /&gt;
        var defer = $.Deferred();&lt;br /&gt;
        $.get(&#039;//rezabot.toolforge.org/missedRef.php&#039;, {title: mw.config.get(&#039;wgPageName&#039;)}).then(defer.resolve, defer.resolve);&lt;br /&gt;
        mw.notify(&#039;درخواست اصلاح منبع ناموجود&#039;);&lt;br /&gt;
        return defer;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function trigMissedFileUpload() {&lt;br /&gt;
        if ($(&#039;#catlinks a[href=&amp;quot;/wiki/%D8%B1%D8%AF%D9%87:%D8%B5%D9%81%D8%AD%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C_%D9%BE%DB%8C%D9%88%D9%86%D8%AF_%D8%AE%D8%B1%D8%A7%D8%A8_%D8%A8%D9%87_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87&amp;quot;]&#039;).length === 0){return;}//رده:صفحه‌های_دارای_پیوند_خراب_به_پرونده&lt;br /&gt;
        if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0) { return; }&lt;br /&gt;
        if ($(&#039;[class=new][title^=&amp;quot;پرونده:&amp;quot;]&#039;).length === 0) { return; }&lt;br /&gt;
        console.log(&#039;بارگذاری پرونده ناموجود شروع شد&#039;);&lt;br /&gt;
        var defer = $.Deferred();&lt;br /&gt;
        $.get(&#039;//rezabot.toolforge.org/uploadfairuse.php&#039;, { title: mw.config.get(&#039;wgPageName&#039;)}).then(defer.resolve, defer.resolve);&lt;br /&gt;
        mw.notify(&#039;درخواست بارگذاری تصویر منصفانهٔ ناموجود داده شد.&#039;);&lt;br /&gt;
        return defer;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        trigFillcat: trigFillcat,&lt;br /&gt;
        trigMissedFileUpload: trigMissedFileUpload,&lt;br /&gt;
        trigMissedRef: trigMissedRef&lt;br /&gt;
    };&lt;br /&gt;
}());&lt;br /&gt;
&lt;br /&gt;
if (typeof window !== &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
    window.botworks = botworks;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-autoed.js&amp;diff=998</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-autoed.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-autoed.js&amp;diff=998"/>
		<updated>2026-08-24T10:51:27Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*global mw*/&lt;br /&gt;
//Selected from [[:en:WP:AutoEd]] scripts&lt;br /&gt;
var autoEd = (function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    //---------------------isbn.js--------------------------------------&lt;br /&gt;
    function autoEdISBN(str) { //MAIN FUNCTION describes list of fixes&lt;br /&gt;
&lt;br /&gt;
        //Allows WikiMagic to work with ISBNs&lt;br /&gt;
        str = str.replace(/ISBN *\-10:|ISBN *\-13:|ISBN *\-10|ISBN *\-13|ISBN:/gi, &amp;quot;ISBN&amp;quot;);&lt;br /&gt;
        //ISSN regexs from [[:en:Wikipedia:AutoWikiBrowser/Settings/ISSN]]&lt;br /&gt;
        str = str.replace(/ISSN\s*(\d)/gi,&amp;quot;ISSN $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/ISSN (\d)(\d)(\d)(\d)[\.\: ~\=]*(\d)(\d)(\d)([\dx])/gi,&amp;quot;ISSN $1$2$3$4-$5$6$7$8 &amp;quot;);&lt;br /&gt;
        str = str.replace(/ISSN (\d)(\d)(\d)(\d)\-(\d)(\d)(\d)x/gi,&amp;quot;ISSN $1$2$3$4-$5$6$7X&amp;quot;);&lt;br /&gt;
        str = str.replace(/ISSN (\d)(\d)(\d)(\d)\-(\d)(\d)(\d)x/gi,&amp;quot;ISSN $1$2$3$4-$5$6$7X&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //ISBN regexs from [[:Wikipedia:AutoWikiBrowser/Settings/ISBN-hyph]]&lt;br /&gt;
        str = str.replace(/ISBN(\d)/gi,&amp;quot;ISBN $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/\[\[ *(ISBN [\d\-x]{10,13}) *\]\]/gi,&amp;quot;$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/\[\[ISBN\|(ISBN\s*[^\]]*)\]\]/gi,&amp;quot;$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/\[*ISBN\]*\:*[ \t]+([0-9X\-]+)/gi,&amp;quot;ISBN $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/ISBN +([\d-]{1,9}) (\d+|X\W)/gi,&amp;quot;ISBN $1$2&amp;quot;);&lt;br /&gt;
        str = str.replace(/\[*ISBN\]*\:* *\[\[Special\:Booksources\/\d*\|([\dxX\- ]+)\]\]/gi,&amp;quot;ISBN $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/\[isbn\]\:* *(\d)/gi,&amp;quot;ISBN $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/ISBN (\d{10,10}) - *(\d)/gi,&amp;quot;ISBN $1 ,$2&amp;quot;);&lt;br /&gt;
        var loopcount = 0;&lt;br /&gt;
        while (loopcount&amp;lt;10) { //&#039;&lt;br /&gt;
            str = str.replace(/ISBN (\d{1,9}) (\d|x)/gi,&amp;quot;ISBN $1$2&amp;quot;);&lt;br /&gt;
            loopcount++;&lt;br /&gt;
        }&lt;br /&gt;
        str = str.replace(/ISBN (\d{1,9})(x)/gi,&amp;quot;ISBN $1X&amp;quot;);&lt;br /&gt;
        str = str.replace(/ISBN (\d\d\d\d\d\d\d\d\d(\d|x)) +(\d)/gi,&amp;quot;ISBN $1, $3&amp;quot;);&lt;br /&gt;
        str = str.replace(/ISBN ([\d-]{12,12}) (\d|x)/gi,&amp;quot;ISBN $1-$2&amp;quot;);&lt;br /&gt;
        /* broken ISBNs with hyphens */&lt;br /&gt;
        // autoFormatter.js &amp;gt; cleanISBNs &lt;br /&gt;
        str = str.replace(&lt;br /&gt;
            /(^|[\s#&#039;(*&amp;gt;|])(?:(ISBN\d?\s*=\s*)|ISBN(?:-?1[03]\b| *1[03]:)?:?\s*)(9-?7-?[89]-?)?([013][\d\u2010-\u2012\u2212-]{8,}[\dX]\b)/gim,&lt;br /&gt;
            function( $0, $1, $2, $3, $4 ) {&lt;br /&gt;
                return $1 + ( $2 || &#039;ISBN &#039; ) + ( $3 || &#039;&#039; ).replace( /^9\D*7\D*(\d)\D*/, &#039;97$1-&#039; ) + $4&lt;br /&gt;
                    /* Remove all dashes */&lt;br /&gt;
                    .replace( /[^\dX]+/gi, &#039;&#039; )&lt;br /&gt;
                    /* Group 0 for English books */&lt;br /&gt;
                    .replace( /^0([01]\d)(\d{6})\B/, &#039;0$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^0([2-6]\d\d)(\d{5})\B/, &#039;0$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^0(7\d{3}|8[0-4]\d\d)(\d{4})\B/, &#039;0$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^0(8[5-9]\d{3})(\d{3})\B/, &#039;0$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^0(9[0-4]\d{4})(\d\d)\B/, &#039;0$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^0(9[5-9]\d{5})(\d)\B/, &#039;0$1-$2-&#039; )&lt;br /&gt;
                    /* Group 1 for English books */&lt;br /&gt;
                    .replace( /^1(0\d)(\d{6})\B/, &#039;1$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^1([1-3]\d\d)(\d{5})\B/, &#039;1$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^1(4\d{3}|5[0-4]\d\d)(\d{4})\B/, &#039;1$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^1(5[5-9]\d{3}|[67]\d{4}|8[0-5]\d{3}|86[0-8]\d\d|869[0-7]\d)(\d{3})\B/, &#039;1$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^1(869[89]\d\d|8[7-9]\d{4}|9[0-8]\d{4}|99[0-8]\d{3})(\d\d)\B/, &#039;1$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^1(999\d{4})(\d)\B/, &#039;1$1-$2-&#039; )&lt;br /&gt;
                    /* Group 3 for German books */&lt;br /&gt;
                    .replace( /^3(0[0-24-9]|1\d)(\d{6})\B/, &#039;3$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^3(03[0-3]|[2-6]\d\d)(\d{5})\B/, &#039;3$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^3(03[4-6]\d|7\d{3}|8[0-4]\d\d)(\d{4})\B/, &#039;3$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^3(03[7-9]\d\d|8[5-9]\d{3}|95[4-9]\d\d|9[69]\d{3})(\d{3})\B/, &#039;3$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^3(9[0-4]\d{4})(\d\d)\B/, &#039;3$1-$2-&#039; )&lt;br /&gt;
                    .replace( /^3(95[0-3]\d{4}|9[78]\d{5})(\d)\B/, &#039;3$1-$2-&#039; )&lt;br /&gt;
                    /* Add missing dash after group */&lt;br /&gt;
                    .replace( /^([0-57]|6\d\d|8\d|9[0-4]|9[5-8]\d|99[0-8]\d|999\d\d)\B/, &#039;$1-&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        );&lt;br /&gt;
        return str&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //---------------------whitespace.js--------------------------------&lt;br /&gt;
    function autoEdWhitespace(str) { //MAIN FUNCTION describes list of fixes&lt;br /&gt;
&lt;br /&gt;
        str = str.replace(/\t/g, &amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        str = str.replace(/^ ? ? \n/gm, &amp;quot;\n&amp;quot;);&lt;br /&gt;
        str = str.replace(/(\n\n)\n+/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/== ? ?\n\n==/g, &amp;quot;==\n==&amp;quot;);&lt;br /&gt;
        str = str.replace(/\n\n(\* ?\[?http)/g, &amp;quot;\n$1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        str = str.replace(/^ ? ? \n/gm, &amp;quot;\n&amp;quot;);&lt;br /&gt;
        str = str.replace(/\n\n\*/g, &amp;quot;\n*&amp;quot;);&lt;br /&gt;
        //  str = str.replace(/[ \t][ \t]+/g, &amp;quot; &amp;quot;);&lt;br /&gt;
        str = str.replace(/([=\n]\n)\n+/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/ \n/g, &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //==Headings==&lt;br /&gt;
        str = str.replace(/^(={1,4} )[ ]*([^= ][^=]*[^= ])[ ]*( ={1,4})$/gm, &amp;quot;$1$2$3&amp;quot;);&lt;br /&gt;
        str = str.replace(/^(={1,4})([^= ][^=]*[^= ])[ ]+(={1,4})$/gm, &amp;quot;$1$2$3&amp;quot;);&lt;br /&gt;
        str = str.replace(/^(={1,4})[ ]+([^= ][^=]*[^= ])(={1,4})$/gm, &amp;quot;$1$2$3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        return str;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //---------------------htmltowikitext.js--------------------------------&lt;br /&gt;
    //Convert HTML to wikitext&lt;br /&gt;
    function autoEdHTMLtoWikitext(str) {&lt;br /&gt;
        // &amp;lt;b&amp;gt;, &amp;lt;strong&amp;gt;, &amp;lt;i&amp;gt;, and &amp;lt;em&amp;gt; tags&lt;br /&gt;
        str = str.replace(/&amp;lt;(B|STRONG)[ ]*&amp;gt;((?:[^&amp;lt;&amp;gt;]|&amp;lt;[a-z][^&amp;lt;&amp;gt;]*\/&amp;gt;|&amp;lt;([a-z]+)(?:| [^&amp;lt;&amp;gt;]*)&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/\3&amp;gt;)*?)&amp;lt;\/\1[ ]*&amp;gt;/gi, &amp;quot;&#039;&#039;&#039;$2&#039;&#039;&#039;&amp;quot;);&lt;br /&gt;
        str = str.replace(/&amp;lt;(I|EM)[ ]*&amp;gt;((?:[^&amp;lt;&amp;gt;]|&amp;lt;[a-z][^&amp;lt;&amp;gt;]*\/&amp;gt;|&amp;lt;([a-z]+)(?:| [^&amp;lt;&amp;gt;]*)&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/\3&amp;gt;)*?)&amp;lt;\/\1[ ]*&amp;gt;/gi, &amp;quot;&#039;&#039;$2&#039;&#039;&amp;quot;);&lt;br /&gt;
        // &amp;lt;/br&amp;gt;, &amp;lt;\br&amp;gt;, &amp;lt;br\&amp;gt;, &amp;lt;BR /&amp;gt;, ...&lt;br /&gt;
        str = str.replace(/&amp;lt;[\\\/]+BR[\\\/\s]*&amp;gt;/gim, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;
        str = str.replace(/&amp;lt;[\\\/\s]*BR[\s]*[\\\/]+[\s]*&amp;gt;/gim, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;
        // &amp;lt;.br&amp;gt;, &amp;lt;br.&amp;gt;, &amp;lt;Br&amp;gt;, ...&lt;br /&gt;
        str = str.replace(/&amp;lt;[\s\.]*BR[\s\.]*&amp;gt;/gim, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
        // &amp;lt;br&amp;gt;&amp;gt;, &amp;lt;&amp;lt;br /&amp;gt;, &amp;lt;&amp;lt;br &amp;gt;&amp;gt; ...&lt;br /&gt;
        str = str.replace(/&amp;lt;[\s]*(&amp;lt;br[\s\/]*&amp;gt;)/gim, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/(&amp;lt;br[\s\/]*&amp;gt;)[\s]*&amp;gt;/gim, &amp;quot;$1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        str = str.replace(/&amp;lt;[\\\/\s]*REFERENCES[\\\/\s]*&amp;gt;/gim, &amp;quot;&amp;lt;references /&amp;gt;&amp;quot;);&lt;br /&gt;
        // Repeated references tag&lt;br /&gt;
        str = str.replace(/(&amp;lt;references \/&amp;gt;)[\s]*\1/gim, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        // Make sure &amp;lt;H1&amp;gt;, ..., &amp;lt;H6&amp;gt; is after a newline&lt;br /&gt;
        str = str.replace(/([^\r\n ])[\t ]*(&amp;lt;H[1-6][^&amp;lt;&amp;gt;]*&amp;gt;)/gim, &amp;quot;$1\n$2&amp;quot;);&lt;br /&gt;
        // Make sure &amp;lt;/H1&amp;gt;, ..., &amp;lt;/H6&amp;gt; is before a newline&lt;br /&gt;
        str = str.replace(/(&amp;lt;\/H[1-6][^&amp;lt;&amp;gt;]*&amp;gt;)[\t ]*([^\r\n ])/gim, &amp;quot;$1\n$2&amp;quot;);&lt;br /&gt;
        // Remove newlines from inside &amp;lt;H1&amp;gt;, ..., &amp;lt;H6&amp;gt;&lt;br /&gt;
        var loopcount = 0;&lt;br /&gt;
        while (str.search(/&amp;lt;H([1-6])[^&amp;lt;&amp;gt;]*&amp;gt;(?:[^&amp;lt;&amp;gt;]|&amp;lt;\/?[^\/h\r\n][^&amp;lt;&amp;gt;]*&amp;gt;)*?&amp;lt;\/H\1[^&amp;lt;&amp;gt;]*&amp;gt;/gim) &amp;gt;= 0 &amp;amp;&amp;amp; loopcount &amp;lt;= 10) {&lt;br /&gt;
            str = str.replace(/(&amp;lt;H)([1-6])([^&amp;lt;&amp;gt;]*&amp;gt;(?:[^&amp;lt;&amp;gt;]|&amp;lt;\/?[^\/h\r\n][^&amp;lt;&amp;gt;]*&amp;gt;)*?)[\r\n]((?:[^&amp;lt;&amp;gt;]|&amp;lt;\/?[^\/h\r\n][^&amp;lt;&amp;gt;]*&amp;gt;)*?&amp;lt;\/H)\2([^&amp;lt;&amp;gt;]*&amp;gt;)/gim, &amp;quot;$1$2$3 $4$2$5&amp;quot;);&lt;br /&gt;
            loopcount++;&lt;br /&gt;
        }&lt;br /&gt;
        // Replace &amp;lt;H1&amp;gt;, ..., &amp;lt;H6&amp;gt; with wikified section headings&lt;br /&gt;
        str = str.replace(/(^|[\r\n])[\t ]*&amp;lt;H1[^&amp;lt;&amp;gt;]*&amp;gt;([^\r\n]*?)&amp;lt;\/H1[\r\n\t ]*&amp;gt;[\t ]*([\r\n]|$)/gim, &#039;$1=$2=$3&#039;);&lt;br /&gt;
        str = str.replace(/(^|[\r\n])[\t ]*&amp;lt;H2[^&amp;lt;&amp;gt;]*&amp;gt;([^\r\n]*?)&amp;lt;\/H2[\r\n\t ]*&amp;gt;[\t ]*([\r\n]|$)/gim, &#039;$1==$2==$3&#039;);&lt;br /&gt;
        str = str.replace(/(^|[\r\n])[\t ]*&amp;lt;H3[^&amp;lt;&amp;gt;]*&amp;gt;([^\r\n]*?)&amp;lt;\/H3[\r\n\t ]*&amp;gt;[\t ]*([\r\n]|$)/gim, &#039;$1===$2===$3&#039;);&lt;br /&gt;
        str = str.replace(/(^|[\r\n])[\t ]*&amp;lt;H4[^&amp;lt;&amp;gt;]*&amp;gt;([^\r\n]*?)&amp;lt;\/H4[\r\n\t ]*&amp;gt;[\t ]*([\r\n]|$)/gim, &#039;$1====$2====$3&#039;);&lt;br /&gt;
        str = str.replace(/(^|[\r\n])[\t ]*&amp;lt;H5[^&amp;lt;&amp;gt;]*&amp;gt;([^\r\n]*?)&amp;lt;\/H5[\r\n\t ]*&amp;gt;[\t ]*([\r\n]|$)/gim, &#039;$1=====$2=====$3&#039;);&lt;br /&gt;
        str = str.replace(/(^|[\r\n])[\t ]*&amp;lt;H6[^&amp;lt;&amp;gt;]*&amp;gt;([^\r\n]*?)&amp;lt;\/H6[\r\n\t ]*&amp;gt;[\t ]*([\r\n]|$)/gim, &#039;$1======$2======$3&#039;);&lt;br /&gt;
        //Replace &amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; with #&lt;br /&gt;
        str = str.replace(&lt;br /&gt;
                    /(\&amp;lt;ol\&amp;gt;[\s\S]+\&amp;lt;\/ol\&amp;gt;)/g,&lt;br /&gt;
                    function($1) {&lt;br /&gt;
                        return $1.replace(/[\r\n] *\&amp;lt;li\&amp;gt;/g,&#039;\n# &#039;).replace(/\&amp;lt;\/li\&amp;gt;/g,&#039;&#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                ).replace(/\n\&amp;lt;\/?ol\&amp;gt;/g,&#039;&#039;)&lt;br /&gt;
        //Replace &amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; with *&lt;br /&gt;
        str = str.replace(&lt;br /&gt;
                    /(\&amp;lt;ul\&amp;gt;[\s\S]+\&amp;lt;\/ul\&amp;gt;)/g,&lt;br /&gt;
                    function($1) {&lt;br /&gt;
                        return $1.replace(/[\r\n] *\&amp;lt;li\&amp;gt;/g,&#039;\n* &#039;).replace(/\&amp;lt;\/li\&amp;gt;/g,&#039;&#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                ).replace(/\n\&amp;lt;\/?ul\&amp;gt;/g,&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        return str;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //---------------------headlines.js--------------------------------&lt;br /&gt;
    function autoEdHeadlines(str) { //MAIN FUNCTION describes list of fixes&lt;br /&gt;
&lt;br /&gt;
        // Remove bold from section headings&lt;br /&gt;
        var loopcount = 0;&lt;br /&gt;
        while (str.search(/^[=]{1,5}[^=\r\n]*&#039;&#039;&#039;[^=\r\n]*[=]{1,5}/gim) &amp;gt;= 0 &amp;amp;&amp;amp; loopcount &amp;lt;= 10) { //&#039;&lt;br /&gt;
            str = str.replace(/(^[=]{1,5}[^=\r\n]*)&#039;&#039;&#039;([^=\r\n]*[=]{1,5})[\t ]*/gim, &amp;quot;$1$2&amp;quot;); //&#039;&lt;br /&gt;
            loopcount++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Remove trailing colon from section headings&lt;br /&gt;
        str = str.replace(/(^[=]{1,5}[^=\r\n]*)[:]([\t ]*[=]{1,5})[\t ]*/gim, &amp;quot;$1$2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Correct caps in &amp;quot;See also&amp;quot; section&lt;br /&gt;
        str = str.replace(/(==[\t ]*)see also([\t ]*==)/gi, &amp;quot;$1See also$2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Change common synonyms for &amp;quot;See also&amp;quot; to &amp;quot;See also&amp;quot;, but only if &amp;quot;See also&amp;quot; doesn&#039;t exist&lt;br /&gt;
        if (!str.match(/=[\t ]*See also[\t ]*=/gi)) {&lt;br /&gt;
            str = str.replace(/(==[\t ]*)(?:related topics|related articles|internal links|also see)([\t ]*==)/gi, &amp;quot;$1See also$2&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        // Common synonyms for &amp;quot;External links&amp;quot;&lt;br /&gt;
        str = str.replace(/(==[\t ]*)(?:external links?|outside links?|web ?links?|exterior links?)([\t ]*==)/gi, &amp;quot;$1External links$2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Capitalization and/or plural of &amp;quot;References&amp;quot;, &amp;quot;Sources&amp;quot;, &amp;quot;Further reading&amp;quot;&lt;br /&gt;
        str = str.replace(/(==[\t ]*)references([\t ]*==)/gi, &amp;quot;$1References$2&amp;quot;);&lt;br /&gt;
        str = str.replace(/(==[\t ]*)sources([\t ]*==)/gi, &amp;quot;$1Sources$2&amp;quot;);&lt;br /&gt;
        str = str.replace(/(==[\t ]*)further readings?([\t ]*==)/gi, &amp;quot;$1Further reading$2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        return str;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    //---------------------tablestowikitext.js--------------------------------&lt;br /&gt;
    function autoEdTablestoWikitext(str) { //MAIN FUNCTION describes list of fixes&lt;br /&gt;
&lt;br /&gt;
        // Remove newlines from inside table specific tags&lt;br /&gt;
        var loopcount = 0;&lt;br /&gt;
        while (str.search(/(?:&amp;lt;\/?table|&amp;lt;\/?tr|&amp;lt;\/?td|&amp;lt;\/?th)[^&amp;lt;&amp;gt;]*[\r\n]/gi) &amp;gt;= 0 &amp;amp;&amp;amp; loopcount &amp;lt;= 10) {&lt;br /&gt;
            str = str.replace(/((?:&amp;lt;\/?table|&amp;lt;\/?tr|&amp;lt;\/?td|&amp;lt;\/?th)[^&amp;lt;&amp;gt;]*)[\r\n]/gi, &amp;quot;$1 &amp;quot;);&lt;br /&gt;
            loopcount++;&lt;br /&gt;
        }&lt;br /&gt;
        // Remove extra whitespace from inside table specific tags&lt;br /&gt;
        str = str.replace(/(&amp;lt;table|&amp;lt;tr|&amp;lt;td|&amp;lt;th)([^&amp;lt;&amp;gt;]*?)[\s]+(&amp;gt;)/gim, &amp;quot;$1$2$3&amp;quot;);&lt;br /&gt;
        str = str.replace(/(&amp;lt;table|&amp;lt;tr|&amp;lt;td|&amp;lt;th)([^&amp;lt;&amp;gt;]*?)[\s][\s]+/gim, &amp;quot;$1$2 &amp;quot;);&lt;br /&gt;
        // Remove any extra junk &amp;lt;/tr&amp;gt;, &amp;lt;/td&amp;gt;, &amp;lt;/th&amp;gt;, &amp;lt;/table&amp;gt;&lt;br /&gt;
        str = str.replace(/(&amp;lt;\/table|&amp;lt;\/tr|&amp;lt;\/td|&amp;lt;\/th)[^&amp;lt;&amp;gt;]+(&amp;gt;)/gim, &amp;quot;$1$2&amp;quot;);&lt;br /&gt;
        // Remove space whitespace after &amp;lt;/tr&amp;gt;, &amp;lt;/td&amp;gt;, &amp;lt;/th&amp;gt;, &amp;lt;table&amp;gt;&lt;br /&gt;
        str = str.replace(/(&amp;lt;\/tr&amp;gt;|&amp;lt;\/td&amp;gt;|&amp;lt;\/th&amp;gt;|&amp;lt;table[^&amp;lt;&amp;gt;]*&amp;gt;)[\s]+/gim, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        // Remove space before &amp;lt;tr&amp;gt;, &amp;lt;td&amp;gt;, &amp;lt;th&amp;gt;, &amp;lt;/table&amp;gt;&lt;br /&gt;
        str = str.replace(/[\s]+(&amp;lt;\/table&amp;gt;|&amp;lt;tr[^&amp;lt;&amp;gt;]*&amp;gt;|&amp;lt;td[^&amp;lt;&amp;gt;]*&amp;gt;|&amp;lt;th[^&amp;lt;&amp;gt;]*&amp;gt;)/gim, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;table&amp;gt;&#039; with &#039;{|&#039;&lt;br /&gt;
        str = str.replace(/&amp;lt;table( [^&amp;lt;&amp;gt;]*|)&amp;gt;[\s]*/gim, &amp;quot;{|$1\n&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;/table&amp;gt;&#039; with &#039;|}&#039;&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;\/table&amp;gt;/gi, &amp;quot;\n|}&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; with &#039;||&#039;&lt;br /&gt;
        str = str.replace(/&amp;lt;\/td[\s]*&amp;gt;[\s]*&amp;lt;td[\s]*&amp;gt;/gim, &amp;quot;||&amp;quot;);&lt;br /&gt;
        str = str.replace(/&amp;lt;\/td[\s]*&amp;gt;[\s]*&amp;lt;td ([^&amp;lt;&amp;gt;]+)&amp;gt;/gim, &amp;quot;|| $1 |&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;&#039; with &#039;!!&#039;&lt;br /&gt;
        str = str.replace(/&amp;lt;\/th[\s]*&amp;gt;[\s]*&amp;lt;th[\s]*&amp;gt;/gim, &amp;quot;!!&amp;quot;);&lt;br /&gt;
        str = str.replace(/&amp;lt;\/th[\s]*&amp;gt;[\s]*&amp;lt;th ([^&amp;lt;&amp;gt;]+)&amp;gt;/gim, &amp;quot;!! $1 |&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&#039; and &#039;&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&#039; with EOL&lt;br /&gt;
        str = str.replace(/&amp;lt;\/(?:td|th)&amp;gt;[\s]*&amp;lt;\/tr&amp;gt;[\s]/gim, &amp;quot;\n&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;/td&amp;gt;&#039;, &#039;&amp;lt;/th&amp;gt;&#039;, &#039;&amp;lt;/tr&amp;gt;&#039; with EOL&lt;br /&gt;
        str = str.replace(/&amp;lt;\/(?:td|th|tr)&amp;gt;[\s]*/gim, &amp;quot;\n&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;tr&amp;gt;&#039; with &#039;|-&#039;&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;tr&amp;gt;[\s]*/gim, &amp;quot;\n|-\n&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;tr ([^&amp;lt;&amp;gt;]*)&amp;gt;[\s]*/gim, &amp;quot;\n|- $1\n&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;td&amp;gt;&#039; with &amp;quot;|&amp;quot;&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;td&amp;gt;([^\s])/gim, &amp;quot;\n| $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;td&amp;gt;([\s])/gim, &amp;quot;\n|$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;td[\s]*([^&amp;lt;&amp;gt;]*?)[\s]*&amp;gt;([^\s])/gim, &amp;quot;\n| $1 | $2&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;td[\s]*([^&amp;lt;&amp;gt;]*?)[\s]*&amp;gt;([\s])/gim, &amp;quot;\n| $1 |$2&amp;quot;);&lt;br /&gt;
        // Replace &#039;&amp;lt;th&amp;gt;&#039; with &#039;!&#039;&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;th&amp;gt;([^\s])/gim, &amp;quot;\n! $1&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;th&amp;gt;([\s])/gim, &amp;quot;\n!$1&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;th[\s]*([^&amp;lt;&amp;gt;]*?)[\s]*&amp;gt;([^\s])/gim, &amp;quot;\n! $1 | $2&amp;quot;);&lt;br /&gt;
        str = str.replace(/[\s]*&amp;lt;th[\s]*([^&amp;lt;&amp;gt;]*?)[\s]*&amp;gt;([^\s])/gim, &amp;quot;\n! $1 |$2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        return str;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //---------------------extrabreaks.js--------------------------------&lt;br /&gt;
    function autoEdExtraBreaks(str) { //MAIN FUNCTION describes list of fixes&lt;br /&gt;
&lt;br /&gt;
        //Usually unneeded BR tags from ends of image descriptions and wikilinks (]]), templates (}}), template parameters (|)&lt;br /&gt;
        str = str.replace(/[\t ]*&amp;lt;[\s\/\.]*br[\s\/\.]*&amp;gt;[\t ]*([\t\n ]*?)(\]\]|}}|\|)/gim, &amp;quot;$1$2&amp;quot;);&lt;br /&gt;
        //BR tag before a list item&lt;br /&gt;
        str = str.replace(/[\t ]*&amp;lt;[\s\/\.]*br[\s\/\.]*&amp;gt;[\t ]*([\s]*?[\n]\*)/gim, &amp;quot;$1&amp;quot;);&lt;br /&gt;
        //BR tag followed by at least two newlines&lt;br /&gt;
        str = str.replace(/[\t ]*&amp;lt;[\s\/\.]*br[\s\/\.]*&amp;gt;[\t ]*([\n])[\t ]*([\n])/gim, &amp;quot;$1$2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        return str;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return {&lt;br /&gt;
        autoEdISBN: autoEdISBN,&lt;br /&gt;
        autoEdWhitespace: autoEdWhitespace,&lt;br /&gt;
        autoEdHTMLtoWikitext: autoEdHTMLtoWikitext,&lt;br /&gt;
        autoEdHeadlines: autoEdHeadlines,&lt;br /&gt;
        autoEdTablestoWikitext: autoEdTablestoWikitext,&lt;br /&gt;
        autoEdExtraBreaks: autoEdExtraBreaks&lt;br /&gt;
    };&lt;br /&gt;
}());&lt;br /&gt;
if (typeof window !== &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
    window.autoEd = autoEd;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-dictionary.js&amp;diff=996</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-dictionary.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-dictionary.js&amp;diff=996"/>
		<updated>2026-08-24T10:51:27Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//To find repeated regex run [[مدیاویکی:Gadget-Extra-Editbuttons-RegexTest.js]] at console &lt;br /&gt;
//Check regex parameters at excel&lt;br /&gt;
var persianToolsDictionary = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var dictionary = {};&lt;br /&gt;
&lt;br /&gt;
    dictionary.adjective = &#039;اخمو|ارزان|ارغه|الکن|الکی|انبوه|آبدار|(نا)?آرام|آرغنده|(نا)?آشکار|(نا)?آماده|آهسته|(بی\u200c|با)انضباط|باریک|بد|بدحساب|بددل|بدریخت&#039; +&lt;br /&gt;
        &#039;|بر|براق|برخوردار|برومند|بزدل|بلند|بی‌آلایش|بی دست و پا|بیچاره|بیدار|بیمار|پخ|پخش|پخمه|پرت|پرنور|پست|پشمالو|پلید|پوچ|(سر|نا)?پوشیده|پوک&#039; +&lt;br /&gt;
        &#039;|پیر|پیروز|تار|تپل|ترد|ترسو|تفت|تلخ|تنبل|تندرو|تنک|تنگ|تنها|تهی|تیره|جلو|چابک|چاپلوس|چالاک|چپ|چرند|چسبان|چفته|چیره|خام|خانم|خراب&#039; +&lt;br /&gt;
        &#039;|خرم|خسته|خشک|(نا)?خفته|خفن|خل|خنگ|(نا)?خوانا|خوب|خوشکل|خوش‌گوار|خیراندیش|دراز|درخور|درستکار|دلباخته|دلیر|دوست|دون|رحیم|رسمی|روانی|روشن&#039; +&lt;br /&gt;
        &#039;|ریغو|زبر|زبردست|زبل|زشت|زیبا|زیرک|ژرف|ژنده|ساده|(نا)?سالم|ساکت|سبک|سخاوتمند|سر|سرکش|سفت|سوسول|شایسته|شکیبا|شل|شور|طولانی|عالم|فراوان|فرز&#039; +&lt;br /&gt;
        &#039;|فنی|قرتی|قشنگ|قلنبه|قهرمان|کارکن|کال|کبود|کج|کچل|کر|کلان|کلفت|کم|کند|کنس|کوتاه|کوتوله|کوچک|کوچولو|کودن|گدا|گران|گرسنه|گشاد&#039; +&lt;br /&gt;
        &#039;|گنگ|گود|گیج|لاغر|لبریز|لخت|لغزنده|له|مات|مچاله|مچل|(نا)?مرد|مردمی|مردنی|مست|مشکوک|مفید|ناپدید|ناپسند|ناتوان|ناجنس|ناجور|ناچیز|ناخوش&#039; +&lt;br /&gt;
        &#039;|نادان|(نا)?درست|نازک|ناسپاس|نافرمان|ناگوار|نامرد|نرم|نیازمند|نیرومند|هشیار|هیز|واژگون|ول|ولرم|ولنگار|یکپارچه|یکدست|یکرنگ|(نا)?پیدا&#039; +&lt;br /&gt;
        &#039;|گناهکار|ریز|دانا|کثیف|آقا|(با|بی\u200c)سواد|عاشق|(با|بی\u200c)محبت|صاف|زمخت|فریبنده|پیچیده|سخت|دشوار|تمیز|(نا)?پاکیزه|بزرگ|پهن|پخته|بی‌مورد&#039; +&lt;br /&gt;
        &#039;|بی‌نیاز|(بی\u200c|با|)تجربه&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.personNames = &#039;الله|محمد|علی|حسن|حسین|جواد|باقر|مهدی|تقی|نقی|نازی|نجم|&#039; +&lt;br /&gt;
        &#039;اکرم|کاظم|عباس|منصور|خسرو|محمود|شمس|ملک|شوکت|&#039; +&lt;br /&gt;
        &#039;نصر|همت|جهان|جلال|موسی|ابراهیم|جعفر|احمد|قاسم|کمال|هاشم|&#039; +&lt;br /&gt;
        &#039;شفیع|صمد|شیخ|اسماعیل|ربیع|سلیمان|رستم|شاهرخ|فرخ|شریف|نعمت|&#039; +&lt;br /&gt;
        &#039;امیر|خلیل|جلیل|مجید|اسد|شوکت|رضا|عجل|ید|عبد|سهیل|معصوم|عظیم&#039; +&lt;br /&gt;
        &#039;اکبر|اصغر|بهمن|قلی|پری|صفی&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.wordsWithA = &#039;ورامدن|هرزاب|هراینه|هجوامیز|نوش‌اذر|نواوری|نواموز|نهراب|میراخور|میراب|می‌اید|می‌اورند&#039; +&lt;br /&gt;
        &#039;|ماخذ|مابی|لس‌انجلس|گل‌اذین|گزنداور|گرداوری|گرداوردن|گرداورد|گردامدن|کنداور|کفرامیز|فرودامدن|عطراگین|طنزامیز&#039; +&lt;br /&gt;
        &#039;|شیرابه|شهرا[یئ]ین|شهراشوب|سوداور|سراوردن|سرامدن|سرامد|سراشپز|سحرامیز|زیرابی|زوراور|زهرالود|زهراگین|زردالو|دوداهنگ|دواتشه&#039; +&lt;br /&gt;
        &#039;|دژاهنگ|دژالود|درداور|دردالود|درایند|دراید|دراویختن|دراوری|دراورنده|دراورند|دراوردن|درامده|درامدن|درامد|خیزاب|خشم‌الود&#039; +&lt;br /&gt;
        &#039;|چندش‌اور|جگراور|تیراهن|تهورامیز|تنفراور|تنداب|پسندامدن|پرنداور|پردرامد|پراشوب|پراب|بی‌اب|بوا|بنداوردن&#039; +&lt;br /&gt;
        &#039;|بنداور|سرامدن|برایند|براورده|براوردن|براورد|برامده|برامدن|برامدگی|برامد|براشفته|براشفتن|براشفتگی|براسودن|بداهنگ&#039; +&lt;br /&gt;
        &#039;|بداموزی|بدامدن|بدامد|ائورت|ائسه|ا[یئ]ینه|ا[یئ]ین‌نامه|ا[یئ]ین|ایه‌یاب|ایه|اینه‌دار|اینده|ایندگان|ایفون&#039; +&lt;br /&gt;
        &#039;|ایروپلن|ایدین|ایتم|ایت‌الله|ایات|اویشن|اویسا|اویژه|اویزون|اویزه|اویزند|اویزگر|اویزش&#039; +&lt;br /&gt;
        &#039;|اویزدار|اویزان|اویز|اویخته|اویختنی|اویختن|اویختگی|اویخت|اویتخه|اووکادو|اونگون|اونگان|اونگ|اوند|اوریل&#039; +&lt;br /&gt;
        &#039;|اوریدن|اورنده|اورند|اورنجن|اوردیدن|اورده|اوردنی|اوردن|اوردگه|اوردگاه|اوردجو|اورد&#039; +&lt;br /&gt;
        &#039;|اوایش|اوانویس|اوانگارد|اوانتاژ|اواکس|اواشناس|اوازه‌خوان|اوازهای|اوازه|اوازخوان|اواز|اواره|اوارگی|اوارگان&#039; +&lt;br /&gt;
        &#039;|اوار|اهو|اهنین|اهنگ‌ساز|اهنگرخانه|اهنگر|اهنگ|اهن‌فروش|اهن‌ربا&#039; +&lt;br /&gt;
        &#039;|اهن‌پاره|اهن‌بر|اهن‌الات|اهن|اهک‌سازی|اهک‌پزی|اهک‌پز|اهک|اهسته|اهستگی|اهای|اهان&#039; +&lt;br /&gt;
        &#039;|انیون|انوقت|انود|انها|ان‌گه|ان‌گاه|ان‌که|ان‌کس|انکارا|ان‌قدر|انفولانزا|انفلوانزا&#039; +&lt;br /&gt;
        &#039;|انفارکتوس|ان‌طور|ان‌طرف|ان‌سو|انژیوگرافی|انژین|انزیم|ان‌روی|ان‌روز|ان‌رو|اندوسکوپی|ان‌چه|ان‌جا|انتیل|انتیک&#039; +&lt;br /&gt;
        &#039;|انتی|انتن|انتریک|انتراکت|انتراسیت|انتالیا|اناهیتا|اناناس|انان|انالیز|انالوگ|انارشیسم|اناتومی|اناتولی&#039; +&lt;br /&gt;
        &#039;|انابولیسم|امینه|امیغه|امیغ|امیزه|امیزگار|امیزش|امیز|امیخته|امیختن|امیختگی|امیب|امونیوم|امونیت|امونیاک|امون&#039; +&lt;br /&gt;
        &#039;|اموکسی|اموزه|اموزنده|اموزگان|اموزگار|اموزش‌یار|اموزشگاه|اموزشکده|اموزش|اموزانه|اموزاندن|اموز|اموده|امودن|امودریا&#039; +&lt;br /&gt;
        &#039;|اموخته|اموختن|اموختگی|اموختار|امله|امریکا|امرزیده|امرزیدن|امرزیدگی|امرزنده|امرزگار|امرزش|امرز|امرانه&#039; +&lt;br /&gt;
        &#039;|امدید|امدوشد|امدورفت|امده|امدن|امدگی|امدکردن|امد|امخته|امپلی|امپرسنج|امپر|امبولی|امبولانس|امایه|امایش|امال&#039; +&lt;br /&gt;
        &#039;|اماسیده|اماسیدن|اماسانیدن|اماس|امازون|امارگیر|امارگر|امارشناسی|امارشناس|اماده‌کردن|اماده|امادگی|امادگاه&#039; +&lt;br /&gt;
        &#039;|اماج‌گاه|اماج|اماتور|الیداد|الیاژهای|الیاژ|الونک|الومینیوم|الومینیم|الوزرد|الوده|الودن|الودگی|الودگر|الود|الوچه&#039; +&lt;br /&gt;
        &#039;|الوبخارا|الما|الفرد|الفا|الرژی|التو|الترناتیو|الت|الپ|البومین|البوم|البانی|البالوئی|البالو|الا[یئ]یدن&#039; +&lt;br /&gt;
        &#039;|الایشی|الایش|الای|الاسکا|الاخون|الاچیق|الات|الاباما|اگنه|اگنده|اگندن|اگاهی‌نامه|اگاهی‌دادن|اگاهی|اگاهگان&#039; +&lt;br /&gt;
        &#039;|اگاهانیدن|اگاهانه|اگاهاندن|اگاه|اکوستیک|اکوردئون|اکواریوم|اکنه|اکنش|اکنده|اکندن|اکله|اکسفورد|اکروبات|اکتئون&#039; +&lt;br /&gt;
        &#039;|اکتینیوم|اکانتاسه|اکادمیک|اکادمی|اق‌بانو|اقائی|اقایان|اقامنشانه|اقامنش|اقاسی|اقازاده|اقاجان|اقا&#039; +&lt;br /&gt;
        &#039;|افریننده|افرینش|افرین|افریکانس|افریقا|افریده|افریدن|افریدگار|افتومات|افتابه|افتاب‌مهتاب|افتاب‌گیر&#039; +&lt;br /&gt;
        &#039;|افتاب‌گردان|افتاب‌زده|افتاب‌زدگی|افتاب‌رو|افتاب‌خورده|افتاب‌پرست|افتاب|افاقی|افاق|افات|اغول|اغوشیدن|اغوش|اغل&#039; +&lt;br /&gt;
        &#039;|اغشته|اغشتن|اغشتگی|اغش|اغالش|اغاسی|اغازین|اغازیدن|اغازیان|اغازی|اغازه|اغازگر|اغاز|اغاجی|اغا|اشیل|اشیانی|اشیانه&#039; +&lt;br /&gt;
        &#039;|اشیان‌بندی|اشیان|اشور|اشوبیدن|اشوب‌ناک|اشوب‌گرانه|اشوب‌گر|اشوب‌کن|اشوب‌طلب|اشوب‌انگیز|اشوب|اشنایان|اشناوری&#039; +&lt;br /&gt;
        &#039;|اشناگر|اشناسازی|اشنا|اشکوخیدن|اشکاره|اشکارگر|اشکارساز|اشکارا|اشکار|اشفته|اشفتن|اشفتگی|اشغالدان|اشتی&#039; +&lt;br /&gt;
        &#039;|اشفتگی|اشپزخانه|اشپز|اشامیدنی|اشامیدن|اشامه|اشامنده|اشام|اشاب|اسیمه|اسیمگی|اسیب‌زدن&#039; +&lt;br /&gt;
        &#039;|اسیب‌دیده|اسیب|اسیاکردن|اسیاسنگ|اسیازنه|اسیاچرخ|اسیابان|اسیاب|اسیا|اسوده‌خاطر|اسوده‌حال|اسوده|اسودن&#039; +&lt;br /&gt;
        &#039;|اسودگی|اسمون|اسمانه|اسمان‌سنجی|اسمان‌خراش|اسمانخانه|اسمان|اسکاریس|اسفالت|استینه|استرکاری&#039; +&lt;br /&gt;
        &#039;|استردوز|استانه|اسپیرین|اسپرین|اسائی|اسا[یئ]یدن|اساینده|اسایشگاه|اسایش|اسان‌گیری|اسانسورچی&#039; +&lt;br /&gt;
        &#039;|اسانسور|اسان|اژیرهوائی|اژیر|اژیانه|اژنگ|اژند|اژفنداک|اژدار|اژانس|ازیدن|ازیتا|ازوقه|ازمون‌گر|ازمون‌گاه|ازمون|ازموده&#039; +&lt;br /&gt;
        &#039;|ازمودن|ازمودگی|ازمندی|ازمند|ازمائی|ازمایه|ازماینده|ازمایشی|ازمایشو|ازمایشگاه|ازمایشات|ازمایش|ازمابنده|ازما|ازگار&#039; +&lt;br /&gt;
        &#039;|ازرده|ازردن|ازردگی|ازرد|ازاریدن|ازارنده|ازاررسان|ازاردهنده|ازار|ازادی‌خواه|ازادوار&#039; +&lt;br /&gt;
        &#039;|ازاده|ازادمنش|ازادمرد|ازادگی|ازادگان|ازادکامی|ازادانه|ازاد|اریانا|اریان|اریا|ار[و]غ&#039; +&lt;br /&gt;
        &#039;|ارواره|ارنولد|ارنگ|ارنج|ارنائوت|ارمینا|ارمین|ارمیس|ارمیده|ارمیدن|ارمیدگی|ارمیچر|ارمه|ارمان‌شهر|ارماگدون|ارگون&#039; +&lt;br /&gt;
        &#039;|ارکاد|ارشیو|ارشیتکت|ارشه|ارشام|ارش|ارستن|ارسان|ارژانتین|ارزومندانه|ارزومند|ارزوخواه|ارزو|ارتین|ارتیشو|ارتیست&#039; +&lt;br /&gt;
        &#039;|ارتور|ارتمیس|ارتروز|ارا[یئ]یدن|ارایه‌گر|ارایشی|ارایشگر|ارایشگاه|ارایش|ارامیدن|ارامگاه|ارامگان|ارام‌کردن&#039; +&lt;br /&gt;
        &#039;|ارامش|ارامانیدن|ارام|اراسته|اراستن|اراستگی|ارارات|اراء|اذین|اذرین|اذرنوش|اذرنگ|اذرگون|اذرشهر|اذرسنجی&#039; +&lt;br /&gt;
        &#039;|اذرروز|اذرخش|اذربرزین|اذربایجان|اذر|ادینه|ادیس|ادونیس|ادنیس|ادمی‌گرا|ادمیزاد&#039; +&lt;br /&gt;
        &#039;|ادمیرال|ادمیت|ادم‌گرا|ادم‌کش|ادمک|ادم‌فروش|ادم‌ربا|ادم‌خوار|ادرنالین|ادرس|ادامس|اداب|اخوندک|اخوند&#039; +&lt;br /&gt;
        &#039;|اخور|اخرین|اخرسالار|اخرزمان|اخرت‌شناسی|اخرت|اخرالدواء|اخرالامر|اخر|اختن|احاد|اچمز|اچارکشی|اچاردار|اچار|اجیل|اجودان&#039; +&lt;br /&gt;
        &#039;|اجرنما|اجرکاری|اجرچین|اجرپز|اجان|اثار|اتیه|اتیکا|اتیسا|اتلیه|اتشین|اتش‌ناک|اتش‌گیره|اتش‌گیر&#039; +&lt;br /&gt;
        &#039;|اتش‌گون|اتش‌گرفتن|اتش‌گاه|اتشکده|اتش‌کار|اتش‌فشان|اتش‌زنه|اتش‌زدن|اتش‌زا|اتش‌دان|اتش‌خوار|اتش‌خانه|اتش‌پاره|اتش‌بان|اتش‌بازی|اتش‌بار&#039; +&lt;br /&gt;
        &#039;|اتش|اتریوم|اتروپین|اتابای|اپولو|اپوستروف|اپاندیسیت|اپاندیس|اپارتمان|اپارتاید|اپارات|ابیار|ابونه|ابونمان&#039; +&lt;br /&gt;
        &#039;|ابها|ابنوس|اب‌نمک|اب‌نما|اب‌[ن]شدنی|ابنبات|ابمیوه‌گیر|اب‌میوه|اب‌لیمو|ابله‌کوب|ابله‌رو|ابگینه|ابگیر|ابگونه|ابگون‌ساز&#039; +&lt;br /&gt;
        &#039;|اب‌گوشت|اب‌گرمکن|اب‌گردان|اب‌گذر|اب‌گاه|اب‌کش|اب‌کانه|اب‌کامه|اب‌کار|اب‌فشان|ابغوره|ابشی|ابشور|اب‌شنگولی|ابشش|اب‌شدنی&#039; +&lt;br /&gt;
        &#039;|ابش‌خور|ابشتگاه|ابشار|ابسوار|ابسه|ابسکون|ابستن|ابسالان|اب‌سال|ابزی‌گاه|ابزی‌دان|ابزی|ابریزگاه|ابریزگان|ابریزش&#039; +&lt;br /&gt;
        &#039;|ابریز|ابرومند|ابروریزی|ابرنگ|ابرفت|ابراهه|ابراهک|ابراه|ابدیده|ابدزدک|ابدانک|ابدان|ابداری|ابدارخانه|ابدارچی&#039; +&lt;br /&gt;
        &#039;|ابدارباشی|ابدار|اب‌خیز|ابخوری|ابجی|ابجوفروشی|ابجوساز|ابجوساختن|ابجو|ابتین|ابتنی|اب‌پنیر|اگهی&#039; +&lt;br /&gt;
        &#039;|اب‌پاش|اب‌بها|اب‌بند|اب‌باز|اب‌انبار|ابان|اباژور|اباده|ابادکردن|ابادسازی|ابادان|اباد|اباء&#039;; // first charcter should be آ&lt;br /&gt;
         //removed ان for [[ان بی سی]]&lt;br /&gt;
    // match ZWNJ also as a space or optional&lt;br /&gt;
    dictionary.wordsWithA = dictionary.wordsWithA.replace(/\u200c/g, &#039;[\u200c ]?&#039;);&lt;br /&gt;
&lt;br /&gt;
    dictionary.PresentVerbsWithA = &#039;ارا|ارام|ارامان|ارای|ازار|ازما|ازمای|اسا|اسای|اشام|اشوب|اغار|اغاز|افرین|اکن|اگن|الای&#039; +&lt;br /&gt;
        &#039;|امرز|اموز|اموزان|امیز|اهنج|اور|اویز&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.PastVerbsWithA = &#039;اراماند|ارامید|ارمید|ازرد|ازمود|اشامید|اشفت|اشوبید|اغازید|اغشت|افرید|اکند|اگند|الود&#039; +&lt;br /&gt;
        &#039;|امد|امرزید|اموخت|اموزاند|امیخت|اهیخت|اورد|اویخت&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.needsNasb = &#039;اتفاقا|الزاما|لزوما|یقینا|قطعا|حتما|قاعدتا|طبیعتا|طبعا|قهرا|جدّا|حقیقتا|واقعا|مطمئنا|واضحا|مسلما|تماما|کاملا&#039; +&lt;br /&gt;
        &#039;|عینا|اکیدا|مطلقا|دقیقا|مستقیما|اصولا|اصلا|اصالتا|نسبا|نسبتا|تقریبا|حدودا|معمولا|قانونا|شرعا|اخلاقا|خلقا|احتمالا&#039; +&lt;br /&gt;
        &#039;|استثنائا|اساسا|کلّا|جزئا|مجموعا|جمعا|اجماعا|شدیدا|نهایتا|اقلا|اکثرا|غالبا|عمدتا|ندرتا|بعضا|گاها|صریحا|صراحتا|عموما&#039; +&lt;br /&gt;
        &#039;|اختصاصا|خصوصا|مجملا|اجمالا|اختصارا|مختصرا|مشروحا|ظاهرا|باطنا|عمیقا|ذاتا|فطرتا|جسما|ابتدائا|مقدمتا|بدوا|بعدا|قبلا&#039; +&lt;br /&gt;
        &#039;|جدیدا|سابقا|اخیرا|ابدا|عمرا|تلویحا|علنا|حضورا|غیابا|نیابتا|لطفا|اجبارا|اختیارا|عالما|عمدا|عامدا|تعمدا|متعمدا|عادتا&#039; +&lt;br /&gt;
        &#039;|مستقلا|احتیاطا|احیانا|غفلتا|سهوا|اشتباها|عاجلا|عجالتا|مرتجلا|ارتجالا|سریعا|فورا|دا[یئ]ما|ضرورتا|نقدا|منحصرا|صرفا|دفعتا&#039; +&lt;br /&gt;
        &#039;|کرارا|مکررا|مجددا|مرتبا|مستمرا|متواترا|تدریجا|تصادفا|عملا|فعلا|موقتا|ضمنا|نتیجتا|نوعا|اصطلاحا|جسارتا|بالا ?غیرتا|م[وؤ]کدا&#039; +&lt;br /&gt;
        &#039;|ذیلا|شخصا|مشترکا|مفصلا|رسما|ترجیحا|قلبا|ر[اأ]سا|تو[اأ]ما|متناوبا|متوالیا|متقابلا|متعاقبا|متّ?فقا|مثلا|فرضا|ایضا|مضافا&#039; +&lt;br /&gt;
        &#039;|مصرّ?ا|ارفاقا|انصافا|جهارا|متدرجا|غانما|احتراما|ناچارا|سفارشا|تلفنا|زبانا|کتبا|شفاها|چهارما|ثانیا|ثالثا&#039; +&lt;br /&gt;
        &#039;|رابعا|خامسا|سادسا|سابعا|ثامنا|تاسعا|عاشرا|مخصوصا&#039;;//اولا و سوما می‌تواند یک نام خاص باشد.&lt;br /&gt;
&lt;br /&gt;
    dictionary.HamzehZam =&#039;امیرالمومنین|مومن|رویا|فواد|موذن|مودب|موخر|موتمن|مواخذه|مولف|موثر|مونث|موکد|موسس(?! خورناتسی)|سوال|موسسه&#039;;//for[[ران مودی]]removedمودی&lt;br /&gt;
    dictionary.HamzehZam = dictionary.HamzehZam.replace(/و/g, &#039;وء?&#039;);&lt;br /&gt;
 &lt;br /&gt;
    dictionary.HamzehNasb =&#039;تاکید|تالیف|تاسیس|تاسیسات|تامل|تفال|تاهل|تامین|تا[یئ]ید|تادیب|تاثیر|تاثر|تاثیرات|تاثیرگذار|تاجیل&#039;+&lt;br /&gt;
        &#039;|تاخر|تاخیر|توام|ماوا|مستاجر|مبدا|منشا|متاسفانه|متاسف|متاثر|مساله|متاهل|خلا|ملا عام|رافت|ماخذ|مایوس|ماخوذ&#039;+&lt;br /&gt;
        &#039;|مامور|مامورین|ماموران|ماموریت|مامون|مانوس&#039;;//removed راس، تالم&lt;br /&gt;
&lt;br /&gt;
    dictionary.HamzehAtEnd =&#039;اجزا|احشا|ارتجا|ارتقا|ازا|استثنا|استغنا|استقرا|استمنا|استهزا|اشبا|اشقیا|اشیا|اطبا|اطفا|اعتلا&#039;+&lt;br /&gt;
       &#039;|اغوا|افترا|اقتضا|امنا|انبیا|انقضا|اولیا|ماورا&#039;;//re املا-انشا-اعضا-امضا-انزوا-ابتلا-استعفا-اعلا-اعتنا بدون همزه متداولترند، ابدا می‌تواند با همزه یا نتوین باشد در نتیجه برداشته شد&lt;br /&gt;
&lt;br /&gt;
    dictionary.HamzehAtInside ={&#039;سو&#039;:&#039;استفاده|تعبیر|تفاهم|برداشت&#039;,&#039;ما&#039;:&#039;الشعیر&#039;,&#039;ماورا&#039;:&#039;الطبیعه|النهر&#039;};&lt;br /&gt;
&lt;br /&gt;
    dictionary.AlefMaghsooreh =&#039;یحیا|حتا|خنثا|مبرا|مرتضا|مصطفا|موسا|مجتبا|عیسا|عظما|علارغم&#039;;//removed اولا- الا&lt;br /&gt;
&lt;br /&gt;
    dictionary.colorsNames = &#039;زرد|قرمز|آبی|سفید|سیاه|بنفش|سرخ|گلگون|ازرق|ابیض|نارنجی|توسی|کبود|ارغوانی|سورمه‌ای|سپید|مشکی|کرم|قهوه‌ای|سبز|طلا[یئ]ی&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.persianNumbers = &#039;یک|دو|سه|چهار|پنج|شش|هفت|هشت|نه|ده|یازده|دوازده|سیزده|چهارده|&#039; +&lt;br /&gt;
        &#039;پانزده|شانزده|هفده|هجده|نوزده|بیست|سی|چهل|پنجاه|شصت|هفتاد|هشتاد|نود|صد|هزار&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.addToAbad = &#039;گلون|افضل|رقی|خیر|دل|حاجی|سید|مبارک|گنج|نهنگ|چنگ|&#039; +&lt;br /&gt;
        &#039;سرخ|جنگل|خرم|خونی|دولت|به|نیاز|حفظ|عیش|نجم|بلاش|شیار|&#039; +&lt;br /&gt;
        &#039;فتح|فضل|خدر|ساق|کج|زین|اسلام|بالش|پارس|اسکل|یاخچی|مهندس|قوژد&#039;;&lt;br /&gt;
&lt;br /&gt;
    dictionary.firstNameComplex = {&lt;br /&gt;
        &#039;حمید|احمد|محمود&#039;: &#039;رضا&#039;,&lt;br /&gt;
        &#039;خدا&#039;: &#039;بنده|داد&#039;,&lt;br /&gt;
        &#039;امیر&#039;: &#039;علی|حسین|محمد|رضا|مهدی|عباس&#039;,&lt;br /&gt;
        &#039;محمد&#039;: &#039;حسین|رضا|مهدی|جواد|باقر|کاظم|حسن|علی|امیر|طاها|هادی|وحید|حمید&#039;,&lt;br /&gt;
        &#039;علی&#039;: &#039;رضا|محمد|اصغر|اکبر|قلی&#039;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    dictionary.complexes = {&lt;br /&gt;
        &#039;ویکی&#039;: &#039;پدیا|مدیا|انبار|واژه|نبشته|خبر|کتاب|داده|دیتا|سفر|تراول|دانشگاه&#039;,&lt;br /&gt;
        &#039;ایده&#039;: &#039;آل&#039;,&lt;br /&gt;
        &#039;سخت|نرم|پای|جنگ|نوشت|بد|ماشین&#039;: &#039;افزار&#039;,&lt;br /&gt;
        &#039;جنگ&#039;: &#039;افروز&#039;,&lt;br /&gt;
        &#039;برون|درون|میان&#039;: &#039;شهری&#039;,&lt;br /&gt;
        &#039;میان&#039;: &#039;وعده&#039;,&lt;br /&gt;
        &#039;مشگین|کلان&#039;: &#039;شهر&#039;,&lt;br /&gt;
        &#039;پایه|برنامه&#039;: &#039;ریزی&#039;,&lt;br /&gt;
        &#039;پیاده&#039;: &#039;روی|نظام&#039;,&lt;br /&gt;
        &#039;انسان|شیطان|روان|گیاه|زیست|جانور|نماد|زمین|هوا|ریخت|خدا|جامعه|رفتار|فرهنگ|معرفت|زبان|کتاب|ستاره|اختر|شرق|اسلام|ریشه|آسیب|باستان|حق|روش|مکان|ویروس|میکروب|حشره&#039;: &#039;شناس&#039;,&lt;br /&gt;
        &#039;بهره|نتیجه|فاصله|اندازه|مچ|رونق|دست|پا|پاچه|آبمیوه|آتش|آمار|اوج|کشتی|رأی|رای|یار|تصمیم|گوشه|کناره|گروگان|نمونه&#039;: &#039;گیر&#039;,&lt;br /&gt;
        &#039;بهره&#039;: &#039;مند|کش|دهی&#039;,&lt;br /&gt;
        &#039;ترانه&#039;: &#039;سرا|سرایی|نویس|پرداز&#039;,&lt;br /&gt;
        &#039;اوج&#039;: &#039;دهی&#039;,&lt;br /&gt;
        &#039;این&#039;: &#039;جا|طور&#039;,// «این گونه در حال انقراض است»&lt;br /&gt;
        &#039;آزاد|بد|نیک|مثبت|مصلحت&#039;: &#039;اندیش&#039;,&lt;br /&gt;
        &#039;پناه|ستیزه&#039;: &#039;جو|جویی|جویان&#039;,&lt;br /&gt;
        &#039;هم&#039;: &#039;اندیشی|ارزی|راهی|سانی|رزم|خانه|نشین|سان|بند|مرز|سایه|مسلک|زمان|معنی|گام|اکنون&#039;,&lt;br /&gt;
        &#039;گرم|نرم|سرد|جمع|خنک|خشک|مرطوب|ضرب|تقسیم|کم|سرگرم|خوشحال|ناراحت|سخت|روان|باز|زیبا|زشت|مصرف|تولید&#039;: &#039;کننده|کنندگی|کنندگان&#039;,&lt;br /&gt;
        &#039;خود|درون|پیه&#039;: &#039;سوز&#039;,&lt;br /&gt;
        &#039;دل&#039;: &#039;افروز|آزار|آرا|آزرده|بریده|افسرده|ربا|سوز|خواه|گشا&#039;,&lt;br /&gt;
        &#039;تفریق|افزایش|کاهش|ویرایش|کوزه|سفال|غارت|چپاول|صنعت|امداد|حساب|افسون|ریخته|ترویج|جهاد|زر|درود|سفید|شیشه|حیله|توطئه&#039;: &#039;گر&#039;,&lt;br /&gt;
        &#039;آهن&#039;: &#039;ربا&#039;,&lt;br /&gt;
        &#039;طیف|امکان|اقتصاد|نور|زمان|عمق|گرما|فشار|قطر&#039;: &#039;سنج&#039;,&lt;br /&gt;
        &#039;فیزیک|شیمی|ریاضی|تاریخ|قلم|کتاب|جغرافی&#039;: &#039;دان&#039;,&lt;br /&gt;
        &#039;نام|اسم|سیاهه|خود|فیلم‌نامه|فیلمنامه|کتاب|روان|نسخه|ویکی|پاک|چرک|دست|پشت|زیر|پا|داستان|برنامه|تاریخ|رمان|عریضه|قصه|مقاله&#039;: &#039;نویس&#039;,&lt;br /&gt;
        &#039;فیلم&#039;: &#039;بردار|شناس&#039;,&lt;br /&gt;
        &#039;بار|تخم|کتاب|خواب&#039;: &#039;گذار&#039;,&lt;br /&gt;
        //اسم خاص&lt;br /&gt;
        &#039;شهر&#039;: &#039;بانو|زاد|ناز|نوش&#039;,&lt;br /&gt;
        &#039;اسد|اسماء?|اسم|امان|امر|امیر|امین|انصار|انعام|اهل|اولیاء?|اکرم|باب|بدیع|برات|بقیة|بهاء?|جار|جند|حبیب|حجت|حزب|حفظ|حمد|خلق|خلیل|خیر|ذبیح|ذکر|رام|رحمت|رحم|رسول|روح|سیف|شمس|شکر|صدق|صدیق|عبد|عزت|عزیز|عین|فتح|فرج|فضل|قدرت|لطف|لعنت|نصرت|نصر|نظیر|نعمت|نور|هیبت|ولی|کلام|کلیم|ید|یوم&#039;: &#039;الله|اللهی&#039;,&lt;br /&gt;
        //اسم مرکب&lt;br /&gt;
        &#039;مستند|هوا|روان|جریان|کار|مجسمه|ایمن|پیاده|مقاوم|امن|ساده|بهینه|مرتب|شبیه|ویکی|پل|جاده|راه|استاندارد|فیلم|آماده|رها|آگاه|زیبا|یکسان|ذخیره|استاندار|متمایز|جدا|شخصی|انبوه|خصوصی|رده|آشکار|ساعت|ماشین|زمینه|دست|سبب|مدل&#039;: &#039;ساز&#039;,&lt;br /&gt;
        &#039;احترام|اختلاف|اضطراب|اعجاب|افتخار|بحث|بر|تحسین|ترحم|تعجب|تعصب|تنفر|ت[اأ]ثر|ت[اأ]سف|ت[اأ]مل|جالب|جدل|جنجال|حزن|حیرت|خفت|خوف|خیال|چالش|دل|رعب|رقت|روح|شهوت|شور|شوق|شگفت|طرب|عبرت|غرور|غم|فرح|ملال|مهر|نشاط|نفرت|هراس|هوس|وحشت|ی[اأ]س&#039;: &#039;برانگیز|انگیز&#039;,&lt;br /&gt;
        &#039;چهره|دور|تاریخ|خبر|روزنامه|روز|لرزه&#039;: &#039;نگار&#039;,&lt;br /&gt;
        &#039;زود|آرام|آب|کله|آش|بخار&#039;: &#039;پز&#039;,&lt;br /&gt;
        &#039;زهر&#039;: &#039;آگین&#039;,&lt;br /&gt;
        &#039;مه|پیمان|یخ|سنگ|بت|صف|قانون|ساختار|هنجار&#039;: &#039;شکن&#039;,&lt;br /&gt;
        &#039;مه&#039;: &#039;لقا&#039;,&lt;br /&gt;
        &#039;مک&#039;: &#039;کارتی&#039;,&lt;br /&gt;
        &#039;خون&#039;: &#039;آشام|خوار|بار|گرم|سرد|بها&#039;,&lt;br /&gt;
        &#039;شیطان|خدا|بت|خورشید|مهر|آتش|یزدان|ایزد|گاو|خود|آفتاب|یکتا|پول|حق|مال|میهن|نژاد|وطن|یگانه&#039;: &#039;پرست&#039;,&lt;br /&gt;
        &#039;پا[یئ]ین|بالا|عقب|جلو|کنار|ساده|بزرگ|کوچک|عمیق|رقیق|ضخیم|فهیم|گسترده|مهم|مشکل|آسان&#039;: &#039;تر&#039;,&lt;br /&gt;
        &#039;برگشت|انحنا|برش|انعطاف|مهمان|امکان|تفکیک|تغییر|آسیب|تأثیر|دل|سازش|مهاجر|بازگشت&#039;: &#039;پذیر|ناپذیر&#039;,&lt;br /&gt;
        &#039;دانش&#039;: &#039;آموخته|پژوه|آموختگی&#039;,&lt;br /&gt;
        &#039;بی&#039;: &#039;آلایش|ابهت|احترام|احساس|اختیار|اخلاق|ادب|اراده|ارزش|استعداد|استقامت|اصالت|اعتماد|اعتبار|اقتدار|امان|امنیت|انتها|اهمیت|بها|بو|تدبیر|تربیت|تسلط|تعصب|تقوی|توجه|ثبات|جنبه|حس|دریغ|دست و پا|دین|رنگ|روح|رویه|سابقه|سیم|شرف|شعور|لیاقت|مایه|مبالات|مزد|مزه|مصرف|معرفت|معنی|مقدار|مورد|نتیجه|نزاکت|نهایت|نیاز|وجدان|پایه|پرستیژ|پناه|پول|چاره|چیز|کار|دلیل|خبر|طرف|حجاب|هویت|آزار|گزند|حاشیه|تفاوت|حاصل|نام|فکر|بازگشت|شکل|کران|انگیزه|اندازه|ضرر|زیان|خرد|جوابنویس|ریا|باک|قاعده|حواس|قرار&#039;,&lt;br /&gt;
        //فعل&lt;br /&gt;
        &#039;می&#039;: &#039;دانم&#039;,&lt;br /&gt;
        &#039;عرضه&#039;: &#039;کننده|کنندگان&#039;,&lt;br /&gt;
        //صفت مرکب&lt;br /&gt;
        &#039;ابرو&#039;: &#039;کمان|قیطان&#039;,&lt;br /&gt;
        &#039;ابله&#039;: &#039;گونه&#039;,&lt;br /&gt;
        &#039;ابن&#039;: &#039;الیوم|الوقت|السبیل|عباس&#039;,&lt;br /&gt;
        &#039;اغراق|خشونت|موفقیت&#039;: &#039;آمیز&#039;,&lt;br /&gt;
        &#039;اجاق&#039;: &#039;کور|سوز&#039;,&lt;br /&gt;
        &#039;اجل&#039;: &#039;برگشته&#039;,&lt;br /&gt;
        &#039;اسفل&#039;: &#039;السافلین&#039;,&lt;br /&gt;
        &#039;اطلاع&#039;: &#039;رسان|رسانی|دهی&#039;,&lt;br /&gt;
        &#039;انگشت&#039;: &#039;نما|نشان|پیچ&#039;,&lt;br /&gt;
        &#039;سپاس|نام&#039;: &#039;گزار&#039;,&lt;br /&gt;
        &#039;گوشت|گیاه|علف|شیر&#039;: &#039;خوار&#039;,&lt;br /&gt;
        &#039;آدم&#039;: &#039;برفی|فروش|ربا|خوار&#039;,&lt;br /&gt;
        &#039;آنتی&#039;: &#039;بادی|ژن|ویروس|بیوتیک|اکسیدان&#039;,&lt;br /&gt;
        &#039;تری|دی&#039;: &#039;اکسید&#039;,&lt;br /&gt;
        &#039;آب&#039;: &#039;لمبو|تنی&#039;,&lt;br /&gt;
        &#039;آب|چشمک&#039;: &#039;بازی&#039;,&lt;br /&gt;
        &#039;ریش|سنگ|قلم&#039;: &#039;تراش&#039;,&lt;br /&gt;
        &#039;آزرده&#039;: &#039;جان&#039;,&lt;br /&gt;
        &#039;آزادی|جمهوری|تمامیت|عدالت|وطن|بنفشه|خود|بد&#039;: &#039;خواه&#039;,&lt;br /&gt;
        &#039;آسوده&#039;: &#039;خاطر|وجدان&#039;,&lt;br /&gt;
        &#039;آش&#039;: &#039;دهن|خور&#039;,&lt;br /&gt;
        &#039;آشفته&#039;: &#039;سامان|دماغ|روز&#039;,&lt;br /&gt;
        &#039;آکنده&#039;: &#039;گوش|پهلو&#039;,&lt;br /&gt;
        &#039;آلاخون&#039;: &#039;والاخون&#039;,&lt;br /&gt;
        &#039;آمد&#039;: &#039;نیامد|شد&#039;,&lt;br /&gt;
        //&#039;با&#039;: &#039;پرستیژ|ابهت|احساس|اخلاق|ادب|ارزش|استعداد|استقامت|اصالت|اقتدار|اهمیت|تدبیر|تربیت|تسلط|تعصب|تقوی&#039;,&lt;br /&gt;
        &#039;باب&#039;: &#039;الحوائج&#039;,&lt;br /&gt;
        //&#039;باقی|ته&#039;: &#039;مانده&#039;, bug &amp;gt; باقی مانده بود- ته مانده بود.&lt;br /&gt;
        &#039;باد&#039;: &#039;نشسته|گرفته&#039;,&lt;br /&gt;
        &#039;بار&#039;: &#039;خاطر&#039;,&lt;br /&gt;
        &#039;بالا|پایین|پائین&#039;: &#039;تنه&#039;,&lt;br /&gt;
        &#039;برنامه|طرح|بتون&#039;: &#039;ریز&#039;,&lt;br /&gt;
        &#039;بزرگ&#039;: &#039;سال|مرد&#039;,&lt;br /&gt;
        &#039;بزن&#039;: &#039;دررو|بهادر&#039;,&lt;br /&gt;
        &#039;بد|خوش&#039;: &#039;سیرت|اخلاق|تراش|ترکیب|ریخت|ادا|استیل|اندام|بو|بینانه|بینی|پخت|برخورد|یمن|خوراک|خیم|رکاب|حال|مزه|حساب|پوش|قلق|منظر|نام&#039;,&lt;br /&gt;
        &#039;بد|خوش|آب|خواب|جهان|قطب|قبله|جهت&#039;: &#039;نما&#039;,&lt;br /&gt;
        &#039;بد&#039;: &#039;انجام|پیله|خوی|عنق|کاره|گمان|گوهر|لگام|مسب|مست|مهر&#039;,&lt;br /&gt;
        &#039;بن&#039;: &#039;بست&#039;,&lt;br /&gt;
        &#039;به&#039;: &#039;شمار|سازی|غایت|کارگیری&#039;,&lt;br /&gt;
        &#039;تماشا&#039;: &#039;گر|چی|کننده&#039;,&lt;br /&gt;
        &#039;حمله|بهره|پیشه|شعله|طاعت|طالع&#039;: &#039;ور&#039;,&lt;br /&gt;
        &#039;بین&#039;: &#039;النهرین|الملل|الممالک&#039;,&lt;br /&gt;
        &#039;پاچه&#039;: &#039;ورمالیده&#039;,&lt;br /&gt;
        &#039;تکه|پاره|آتش|آهن|جگر|چهار&#039;: &#039;پاره&#039;,&lt;br /&gt;
        &#039;جهان|خدا|سود|شفا|نیرو|گرما|سرما|آزادی|رهایی&#039;: &#039;بخش&#039;,&lt;br /&gt;
        &#039;پاک&#039;: &#039;نفس|سرشت|دامن|سیرت|منش|دیده&#039;,&lt;br /&gt;
        &#039;پالان&#039;: &#039;سا[یئ]یده&#039;,&lt;br /&gt;
        &#039;پینه|کفش|کلاه|تو|رو|چرخ|پالان&#039;: &#039;دوز&#039;,&lt;br /&gt;
        &#039;پراگنده|تاریک|شکسته|آشفته|آزرده|آسوده|بد|خوش|خونین|سیاه|نازک&#039;: &#039;دل&#039;,&lt;br /&gt;
        &#039;پری&#039;: &#039;نژاد|چهر&#039;,&lt;br /&gt;
        &#039;نیک|پست&#039;: &#039;فطرت&#039;,&lt;br /&gt;
        &#039;پی&#039;: &#039;گم|گرد|فراخ|سپید|نوشت&#039;,&lt;br /&gt;
        &#039;پیچ&#039;: &#039;واپیچ|پیچ&#039;,&lt;br /&gt;
        &#039;سفید|سیاه|قهوه‌ای|قرمز|زرد|سبز|بنفش|گلگون|سرخ|پیروزه|مشک|نیل|مشکین|رنگین&#039;: &#039;فام|پوست&#039;,&lt;br /&gt;
        &#039;پیش&#039;: &#039;مرگ|کسوت|درآمد|آهنگ|شماره|بینی&#039;,//بحران مالی پیش آمد&lt;br /&gt;
        &#039;تازه&#039;: &#039;وارد|خط|نفس&#039;,&lt;br /&gt;
        &#039;سیمان|سفید|گل|چمن|مدد|رو|دست‌اندر|زیان|کهنه|کمک|تازه|پا|سنبل|شیرین|پنهان&#039;: &#039;کار&#039;,&lt;br /&gt;
        &#039;تام&#039;: &#039;الاختیار&#039;,&lt;br /&gt;
        &#039;خوش|زشت|ترش|میانه|پیاده&#039;: &#039;رو&#039;,&lt;br /&gt;
        &#039;ترگل&#039;: &#039;ور گل&#039;,&lt;br /&gt;
        &#039;تکه&#039;: &#039;تکه&#039;,&lt;br /&gt;
        &#039;ته&#039;: &#039;استکان|لیوان|مانده|دیگ&#039;,&lt;br /&gt;
        &#039;تن&#039;: &#039;فروش|آسان|آرا|تن|پرور&#039;,&lt;br /&gt;
        &#039;تند&#039;: &#039;خو|خوی&#039;,&lt;br /&gt;
        &#039;تنگ&#039;: &#039;چشم&#039;,&lt;br /&gt;
        &#039;تی&#039;: &#039;تیش&#039;,&lt;br /&gt;
        &#039;پا|تن|زیر|سبز|سرخ|قرمز&#039;: &#039;پوش&#039;,&lt;br /&gt;
        &#039;تیره&#039;: &#039;روز&#039;,&lt;br /&gt;
        &#039;جامع&#039;: &#039;الشرایط|الاطراف&#039;,&lt;br /&gt;
        &#039;جان&#039;: &#039;سخت|جانی&#039;,&lt;br /&gt;
        &#039;یدک|فرو|نسل|آدم|ویروس|نقشه|سر|آب|آچار|زوزه|تیغ|لوله|ماله|بار|خط|شیره&#039;: &#039;کش&#039;,&lt;br /&gt;
        &#039;کشتی|گرده|دشت|نگه|دید|زمین|جنگل|دروازه|ویکی|شتر|دیده&#039;: &#039;بان&#039;,&lt;br /&gt;
        &#039;چابک&#039;: &#039;سوار|دست&#039;,&lt;br /&gt;
        &#039;ناقاره|نقاره|چاپ|درشکه&#039;: &#039;چی&#039;,&lt;br /&gt;
        &#039;قاره|راه&#039;: &#039;پیما|پیمایی|پیمایان&#039;,&lt;br /&gt;
        &#039;چرب|آذری|ترک|فارسی&#039;: &#039;زبان&#039;,&lt;br /&gt;
        &#039;چشمه&#039;: &#039;چشمه&#039;,&lt;br /&gt;
        &#039;چل&#039;: &#039;کلید|تاج|تکه&#039;,&lt;br /&gt;
        &#039;ناقاره|چوبک|دف|دمبک|ساز|نی|سنتور|تار|ارگ&#039;: &#039;زن&#039;,//رده:نوازندگان گیتار زن اهل&lt;br /&gt;
        &#039;چیره&#039;: &#039;دست&#039;,&lt;br /&gt;
        &#039;پول|فنگ|قالی|ظرف|خشک|لباس&#039;: &#039;شو[ئی]ی&#039;,&lt;br /&gt;
        &#039;چیز&#039;: &#039;فهم&#039;,&lt;br /&gt;
        &#039;حرف&#039;: &#039;شنو&#039;,&lt;br /&gt;
        &#039;حق&#039;: &#039;السکوت|التدریس|الزحمه&#039;,&lt;br /&gt;
        &#039;حکیم&#039;: &#039;باشی&#039;,&lt;br /&gt;
        &#039;حرام|حلال|نجیب|اشراف|غنی&#039;: &#039;زاده|زادگان&#039;,&lt;br /&gt;
        &#039;حیرت|دریا|دل&#039;: &#039;زده&#039;,&lt;br /&gt;
        &#039;حیرت|نام|مقام|یاد|خواب|درد|شگفت|جمع|الزام|چندش|خفقان&#039;: &#039;آور&#039;,&lt;br /&gt;
        &#039;درد|سوز&#039;: &#039;ناک&#039;,&lt;br /&gt;
        &#039;حواس&#039;: &#039;پرت&#039;,&lt;br /&gt;
        &#039;خاله&#039;: &#039;زنک&#039;,&lt;br /&gt;
        &#039;خام&#039;: &#039;طمع|طبع&#039;,&lt;br /&gt;
        &#039;خرده&#039;: &#039;پا|شیشه&#039;,&lt;br /&gt;
        &#039;خشک|آسیمه&#039;: &#039;سر&#039;,&lt;br /&gt;
        &#039;خنده&#039;: &#039;رو|خریش&#039;,&lt;br /&gt;
        &#039;خواجه&#039;: &#039;سرا|تاش&#039;,&lt;br /&gt;
        &#039;سگ|مرغ|خوک&#039;: &#039;دانی&#039;,&lt;br /&gt;
        &#039;خونین&#039;: &#039;جگر|چشم|شهر&#039;,&lt;br /&gt;
        &#039;دایم&#039;: &#039;الخمر&#039;,&lt;br /&gt;
        &#039;دائم&#039;: &#039;الصوم|الخمر&#039;,&lt;br /&gt;
        &#039;درشت&#039;: &#039;خو&#039;,&lt;br /&gt;
        &#039;دست&#039;: &#039;خوش|پاچه|چین|آورد|اندرکاران&#039;,&lt;br /&gt;
        &#039;دم&#039;: &#039;کلفت&#039;,&lt;br /&gt;
        &#039;دندان|دوره|شهر|بیابان|کوچه|گردا&#039;: &#039;گرد&#039;,&lt;br /&gt;
        &#039;دودوزه&#039;: &#039;باز&#039;,&lt;br /&gt;
        &#039;ذوات&#039;: &#039;الارحام|الاذناب&#039;,&lt;br /&gt;
        &#039;ذوی&#039;: &#039;القربی|الاوتار|العقول&#039;,&lt;br /&gt;
        &#039;ذی&#039;: &#039;نفع|صلاحیت|فقار|ربط|قیمت|شعور|علاقه|حیات|فن|روح|عقل|حق&#039;,&lt;br /&gt;
        &#039;چشم|بار|بر|پس|تیر|رو|زیر|غلط|نارنجک&#039;: &#039;انداز&#039;,&lt;br /&gt;
        &#039;رای|شتاب&#039;: &#039;دهنده|دهندگان&#039;,&lt;br /&gt;
        &#039;راست&#039;: &#039;راستکی&#039;,&lt;br /&gt;
        &#039;رحمت&#039;: &#039;العالمین&#039;,&lt;br /&gt;
        &#039;رسم&#039;: &#039;الخط&#039;,&lt;br /&gt;
        &#039;رقیق&#039;: &#039;القلب|الفکر&#039;,&lt;br /&gt;
        &#039;رنگ&#039;: &#039;وارنگ&#039;,&lt;br /&gt;
        &#039;اندود&#039;: &#039;کاری&#039;,&lt;br /&gt;
        &#039;سنگ|ریز|دانه|تک|بزرگ|رنگ&#039;: &#039;دانه&#039;,&lt;br /&gt;
        &#039;رو[یئ]ین|پاد|نرم|سخت&#039;: &#039;تن&#039;,&lt;br /&gt;
        &#039;روح&#039;: &#039;افزا&#039;,&lt;br /&gt;
        &#039;ریش&#039;: &#039;ریش&#039;,&lt;br /&gt;
        &#039;رئیس&#039;: &#039;الوزراء|الرؤسا|جمهور&#039;,&lt;br /&gt;
        &#039;تصویب|کار|واژه|اجازه|تکذیب|شب|پایان|اساس|آ[یئ]ین|زندگی|توافق|نظام&#039;: &#039;نامه&#039;,&lt;br /&gt;
        &#039;زنگی&#039;: &#039;مزاج&#039;,&lt;br /&gt;
        &#039;زوار&#039;: &#039;دررفته&#039;,&lt;br /&gt;
        &#039;زیست&#039;: &#039;محیط|بوم&#039;,&lt;br /&gt;
        &#039;سابق|اخیر|فوق|لازم&#039;: &#039;الذکر&#039;,&lt;br /&gt;
        &#039;سبک&#039;: &#039;مغز|سنگ|عنان|روح|لقا|سایه|سنگین|دست&#039;,&lt;br /&gt;
        &#039;سبک|سنگین&#039;: &#039;وزن&#039;,&lt;br /&gt;
        &#039;سر&#039;: &#039;فراز&#039;,&lt;br /&gt;
        &#039;سرمایه&#039;: &#039;گذار|دار&#039;,&lt;br /&gt;
        &#039;سربه&#039;: &#039;مهر&#039;,&lt;br /&gt;
        &#039;سریع&#039;: &#039;السیر|الانتقال&#039;,&lt;br /&gt;
        &#039;سست&#039;: &#039;زخم|رگ|ریش|عنصر&#039;,&lt;br /&gt;
        &#039;سنگ&#039;: &#039;فرش&#039;,&lt;br /&gt;
        &#039;دو|سه|چهار&#039;: &#039;پایه&#039;,&lt;br /&gt;
        &#039;سیاه&#039;: &#039;مست|سوخته|چرده&#039;,&lt;br /&gt;
        &#039;سینه&#039;: &#039;چاک&#039;,&lt;br /&gt;
        &#039;شب&#039;: &#039;رنگ|پره|اداری|نشین&#039;,&lt;br /&gt;
        &#039;شبانه&#039;: &#039;روزی&#039;,&lt;br /&gt;
        &#039;شکسته&#039;: &#039;ناخن|مزاج&#039;,&lt;br /&gt;
        &#039;شکل&#039;: &#039;گیری|پذیر|دادن&#039;,&lt;br /&gt;
        &#039;شلم&#039;: &#039;شوربا&#039;,&lt;br /&gt;
        &#039;شوخ&#039;: &#039;طبع|رو|دیده|چشم&#039;,&lt;br /&gt;
        &#039;شوم|نیک|بلند|بد|خوش&#039;: &#039;اختر|اقبال&#039;,&lt;br /&gt;
        &#039;شوی&#039;: &#039;دیده&#039;,&lt;br /&gt;
        &#039;شیرین&#039;: &#039;عقل|دهن&#039;,&lt;br /&gt;
        &#039;صد&#039;: &#039;شاخ&#039;,&lt;br /&gt;
        &#039;قتل|بار&#039;: &#039;عام&#039;,&lt;br /&gt;
        &#039;صف&#039;: &#039;آوار&#039;,&lt;br /&gt;
        &#039;ضرب&#039;: &#039;المثل|العجل&#039;,&lt;br /&gt;
        &#039;ضد&#039;: &#039;اسلام|یهودی|انقلاب|حال|هوایی|زنگ|آفتاب|بارداری|سرمایه‌داری|آب|یخ|اطلاعات|شوره&#039;,&lt;br /&gt;
        //طبق بندهای    شماره ..&lt;br /&gt;
        //&#039;طبق|زمان&#039;: &#039;بند&#039;, &lt;br /&gt;
        &#039;طبقه|زمان|درجه|رده|گروه|رتبه|دسته|جمله|تقسیم|بسته|آرماتور|اسکلت|امتیاز|بخش|جدول|جمع|جناح|رنگ|ساز|سایز|سرهم|سطح|شرط|شکم|فاز|فصل|قاب|پارتیشن|چشم|کادر|کمر|گاو|نیم|آب|جیره|خالی|ماست|سیل&#039;: &#039;بند&#039;,&lt;br /&gt;
        &#039;طوطی|عیال&#039;: &#039;وار&#039;,&lt;br /&gt;
        &#039;طویل&#039;: &#039;المدت&#039;,&lt;br /&gt;
        &#039;طبیعت|اسلام|یهودی&#039;: &#039;ستیز|گریز&#039;,&lt;br /&gt;
        &#039;طی&#039;: &#039;الارض&#039;,&lt;br /&gt;
        &#039;هنر|عاشق&#039;: &#039;پیشه&#039;,&lt;br /&gt;
        &#039;عالی&#039;: &#039;نسب|رتبه&#039;,&lt;br /&gt;
        &#039;عام&#039;: &#039;المنفعه&#039;,&lt;br /&gt;
        &#039;عدیم&#039;: &#039;النظیر&#039;,&lt;br /&gt;
        &#039;عقب&#039;: &#039;گرد|نشینی&#039;,&lt;br /&gt;
        &#039;علی&#039;: &#039;البدل|الحساب|الخصوص|رغم&#039;,&lt;br /&gt;
        &#039;غلط&#039;: &#039;غلوط&#039;,&lt;br /&gt;
        &#039;فارغ&#039;: &#039;الاکناف|التحصیل&#039;,&lt;br /&gt;
        &#039;فراخ&#039;: &#039;رو|شکم|بال|کام|دیده|سخن|آهنگ|دست|آستین|ابرو|روزی&#039;,&lt;br /&gt;
        &#039;فرخ&#039;: &#039;لقا|دیم|فال|پی&#039;,&lt;br /&gt;
        &#039;فرمان&#039;: &#039;روا|بر&#039;,&lt;br /&gt;
        &#039;فرنگی|قدسی&#039;: &#039;مآب&#039;,&lt;br /&gt;
        &#039;غیر&#039;: &#039;قابل|متعهد|اخلاقی|شرعی|انسانی|اصولی|مجاز|حضوری|دولتی|نظامی|انتفاعی|منتظره|قانونی|معمولی|ممکن|رسمی|فعال|نفتی|منقول|ارادی|جایز|طبیعی|عادی|عمد|لازم|مسئول|عادلانه|خودی|عاقلانه|کافی&#039;,&lt;br /&gt;
        &#039;وفا|فره|نیاز|جفا|خرد|غیرت|باور|ارزش|نعل|درد|علاقه&#039;: &#039;مند&#039;,&lt;br /&gt;
        &#039;فرو&#039;: &#039;نهادن|داشت|گذاشت|مایه|بست|پاشی|پاشیده&#039;,&lt;br /&gt;
        &#039;خارق|فوق&#039;: &#039;العاده&#039;,&lt;br /&gt;
        &#039;کیلو|سانتی|میلی|دسی|نانو|ولت&#039;: &#039;متر|آمپر|گرم&#039;,&lt;br /&gt;
        &#039;قاچ&#039;: &#039;قاچ&#039;,&lt;br /&gt;
        &#039;قایق|کلک|کشتی&#039;: &#039;ران|سوار&#039;,&lt;br /&gt;
        &#039;قافله&#039;: &#039;سالار&#039;,&lt;br /&gt;
        &#039;قایم&#039;: &#039;الزاویه&#039;,&lt;br /&gt;
        &#039;قره&#039;: &#039;قاطی&#039;,&lt;br /&gt;
        &#039;قریب&#039;: &#039;الوقوع&#039;,&lt;br /&gt;
        &#039;کاه|قطره|دله|آفتابه&#039;: &#039;دزد&#039;,&lt;br /&gt;
        &#039;قوی|آتشین&#039;: &#039;پنجه&#039;,&lt;br /&gt;
        &#039;قیمه&#039;: &#039;قیمه&#039;,&lt;br /&gt;
        &#039;کاسه&#039;: &#039;یکی|سیاه|لیس&#039;,&lt;br /&gt;
        &#039;کج&#039;: &#039;نهاد|خلق|کلاه&#039;,&lt;br /&gt;
        &#039;کوه|صخره|دریا|فضا|صحرا&#039;: &#039;نورد&#039;,&lt;br /&gt;
        &#039;کلاه&#039;: &#039;گوشه|گذار&#039;,&lt;br /&gt;
        &#039;کله&#039;: &#039;معلق|خشک|گنده|خر|شق|پوک&#039;,&lt;br /&gt;
        &#039;زبانه|زمین|ماشین|فرمان|کمان|کنگره|گوشه|دامنه|خانه|پول|مقام|آ[یئ]ینه|عهده|بار|ادامه&#039;: &#039;دار&#039;,&lt;br /&gt;
        &#039;مصاحبه|تهیه|تعیین|استفاده|کنترل|تسهیل&#039;: &#039;شونده|شوندگان|کننده|کنندگان&#039;,&lt;br /&gt;
        &#039;کهن&#039;: &#039;سال|دیار&#039;,&lt;br /&gt;
        &#039;کینه&#039;: &#039;توز|ورز&#039;,&lt;br /&gt;
        &#039;گران&#039;: &#039;مغز|سایه|قدر|رکاب|سرشت|پایه|قیمت|روح|سنگ|جان|سر|فروش&#039;,&lt;br /&gt;
        &#039;فضل&#039;: &#039;فروش&#039;,&lt;br /&gt;
        &#039;گشاده&#039;: &#039;رو|دست&#039;,&lt;br /&gt;
        &#039;گل&#039;: &#039;چهره|ریزان|ریز|باران|آرا|اندام|برگ&#039;,&lt;br /&gt;
        &#039;گاه&#039;: &#039;شمار&#039;,&lt;br /&gt;
        &#039;گلوله&#039;: &#039;باران&#039;,&lt;br /&gt;
        &#039;لازم&#039;: &#039;الوصول|الاجراء&#039;,&lt;br /&gt;
        &#039;مشکوک|معلوم|مجهول|فارغ&#039;: &#039;الحال&#039;,&lt;br /&gt;
        &#039;لت&#039;: &#039;لت|انبان|انبار&#039;,&lt;br /&gt;
        &#039;لسان&#039;: &#039;الغیب&#039;,&lt;br /&gt;
        &#039;مالک&#039;: &#039;الرقاب&#039;,&lt;br /&gt;
        &#039;ماه&#039;: &#039;طلعت&#039;,&lt;br /&gt;
        &#039;مشغول&#039;: &#039;الذمه&#039;,&lt;br /&gt;
        &#039;معظم&#039;: &#039;له|القدر&#039;,&lt;br /&gt;
        &#039;ملی|همجنس|زمینه|آرمان|جهاد|اسلام|بنیاد|چپ|راست|صنعت|طبیعت|برون|درون|شرق|غرب|وجدان|اعتدال|عقل|جمهوری&#039;: &#039;گرا|گرایی&#039;,&lt;br /&gt;
        &#039;تخمین&#039;: &#039;گر&#039;,&lt;br /&gt;
        &#039;میرزا&#039;: &#039;قلمدان|قشمشم|بنویس&#039;,&lt;br /&gt;
        &#039;ناخن&#039;: &#039;خشک&#039;,&lt;br /&gt;
        &#039;نازک&#039;: &#039;نی|نارنجی|خیال&#039;,&lt;br /&gt;
        &#039;جهان|نافه&#039;: &#039;گشا&#039;,&lt;br /&gt;
        &#039;ندید&#039;: &#039;بدید&#039;,&lt;br /&gt;
        &#039;نظریه|رویا|رؤیا&#039;: &#039;پرداز&#039;,&lt;br /&gt;
        &#039;نقشه|وزنه|بهره|کلاه&#039;: &#039;بردار&#039;,&lt;br /&gt;
        &#039;نق&#039;: &#039;نقو&#039;,&lt;br /&gt;
        &#039;نگون&#039;: &#039;طشت|بخت&#039;,&lt;br /&gt;
        &#039;نیک&#039;: &#039;روز|انجام|پی|بخت&#039;,&lt;br /&gt;
        &#039;نیم&#039;: &#039;ته&#039;,&lt;br /&gt;
        &#039;نخست&#039;: &#039;وزیر&#039;,&lt;br /&gt;
        &#039;هرکن&#039;: &#039;پرکن&#039;,&lt;br /&gt;
        &#039;همایون&#039;: &#039;فال|آثار|بخت&#039;,&lt;br /&gt;
        &#039;همه&#039;: &#039;کاره|جانبه|پرسی&#039;,&lt;br /&gt;
        &#039;هیچ&#039;: &#039;کاره|یک|کس|کدام|کجا&#039;,&lt;br /&gt;
        &#039;هیچ|دید|شبان|سحر&#039;: &#039;گاه&#039;,&lt;br /&gt;
        &#039;ول&#039;: &#039;خرج|معطل&#039;,&lt;br /&gt;
        &#039;یکه&#039;: &#039;شناس|بزن|سوار|تاز|چین|بند|بنداز|زا&#039;,&lt;br /&gt;
        &#039;بیماری|مشکل&#039;: &#039;زا&#039;,&lt;br /&gt;
        &#039;یک&#039;: &#039;هوا|هشتم|وقت|وزن|ور|نیمه|نفره|نفس|لا|کم|کله|کلام&#039;,&lt;br /&gt;
        &#039;ابجد&#039;: &#039;خوان&#039;,&lt;br /&gt;
        &#039;ابر&#039;: &#039;آلود|قدرت|ابزار&#039;,&lt;br /&gt;
        &#039;ابو&#039;: &#039;العجب|الکلام|الهول&#039;,&lt;br /&gt;
        &#039;اولو&#039;: &#039;الالباب|الامر|العزم&#039;,&lt;br /&gt;
        &#039;حسب|صاحب|واجب&#039;: &#039;الامر&#039;,&lt;br /&gt;
        &#039;گل|آذر|ناهم|هم|گندم&#039;: &#039;گون&#039;,&lt;br /&gt;
        &#039;آزاد&#039;: &#039;مرد|وار&#039;,&lt;br /&gt;
        &#039;باز&#039;: &#039;خرید|خواست|دید|بین&#039;,&lt;br /&gt;
        &#039;بر&#039;: &#039;هم|آشفتگی|آشفته|پایی&#039;,&lt;br /&gt;
        &#039;بلند&#039;: &#039;آوازه|پایه&#039;,&lt;br /&gt;
        &#039;آتش&#039;: &#039;بس|نشان|سوزی|افروز|افکن|افزار&#039;,&lt;br /&gt;
        &#039;پا&#039;: &#039;برجا|برهنه|بست|پتی&#039;,&lt;br /&gt;
        &#039;پایه|بنیان|بمب&#039;: &#039;گذار|گذاری|گذاران&#039;,&lt;br /&gt;
        //&#039;مادر|خواهر|برادر|فرزند|پدر&#039;: &#039;خوانده&#039;, // bug &amp;gt; وی پدر خوانده شد.(پدر صدا زده شد)&lt;br /&gt;
        &#039;پر&#039;: &#039;ابهام|ابهت|اتلاف|ادا|ادویه|ازدحام|استرس|استقامت|اشک|برخورد|ترانه|تردد|ترشح|تشبیه|تصادف|تعصب|تقلب|تلاش|تملق|شور|هیاهو|بیننده|بار&#039;,&lt;br /&gt;
        &#039;کم&#039;: &#039;محل|بضاعت|کم&#039;,&lt;br /&gt;
        &#039;پر|کم&#039;: &#039;نظیر|کار|تعداد|اشتباه|اشکال|اهمیت|تحرک|تحول|ترافیک|تراکم|تقاضا|تکرار|تنش|تنوع|رو|آب&#039;,&lt;br /&gt;
        &#039;تنگا&#039;: &#039;تنگ&#039;,&lt;br /&gt;
        &#039;تیز&#039;: &#039;پا|دست|دندان|هوش|بین&#039;,&lt;br /&gt;
        &#039;چادر|تخت|زاغه|شهر|ته|آب|کاخ|پایتخت|یکجا|ییلاق|قشلاق&#039;: &#039;نشین&#039;,&lt;br /&gt;
        &#039;چهار&#039;: &#039;شانه&#039;,&lt;br /&gt;
        &#039;فلز|تشابه|ویروس|مکان|طلا|کم|عیب|مسافت|فاصله|جهت|موقعیت|غلط|راه|اشتباه|گنج&#039;: &#039;یاب&#039;,&lt;br /&gt;
        &#039;راه|گاو&#039;: &#039;آهن&#039;,&lt;br /&gt;
        &#039;دستگیر&#039;: &#039;شدگان&#039;,&lt;br /&gt;
        &#039;هماهنگ&#039;: &#039;کننده|کنندگان|کردن&#039;,&lt;br /&gt;
        //&#039;یاد&#039;: &#039;داشت|دهی&#039;, به یاد داشت- به یاد دهی افتادم&lt;br /&gt;
        &#039;یار&#039;: &#039;کشی&#039;,&lt;br /&gt;
        &#039;ی[اأ]س&#039;: &#039;آلود&#039;,&lt;br /&gt;
        &#039;حاضر&#039;: &#039;جواب|یراق&#039;,&lt;br /&gt;
        &#039;خرد&#039;: &#039;سال&#039;,&lt;br /&gt;
        &#039;دو&#039;: &#039;برجی|تخمه|سره|قلو|به‌شک&#039;,&lt;br /&gt;
        &#039;ذو&#039;: &#039;الجلال|العرش|القدر|القوافی|اللسانین|المجد|المکارم|المن|المناقب|المنن|النور|الوجهین|جسدین&#039;,&lt;br /&gt;
        &#039;رنگا&#039;: &#039;رنگ&#039;,&lt;br /&gt;
        &#039;رو&#039;: &#039;سفید|سیاه|باز&#039;,&lt;br /&gt;
        &#039;قهوه|نگار|آبدار|گل|کتاب|رود|زور|نوا|سرد&#039;: &#039;خانه&#039;,&lt;br /&gt;
        &#039;روز&#039;: &#039;افزون|انه&#039;,&lt;br /&gt;
        &#039;زود&#039;: &#039;باور&#039;,&lt;br /&gt;
        &#039;شاد&#039;: &#039;روان|کام|مان|مانه&#039;,&lt;br /&gt;
        &#039;فرا&#039;: &#039;خور|روی&#039;,&lt;br /&gt;
        &#039;کد&#039;: &#039;خدا|بانو&#039;,&lt;br /&gt;
        &#039;لا&#039;: &#039;ابالی|جون|کردار|مذهب|مروت|یتغیر|یتناهی|یزال|یعقل&#039;,&lt;br /&gt;
        &#039;نا&#039;: &#039;جوانمرد|خودآگاه|نجیب|امید|آزموده|آشنا|آگاه|برابر|تمام&#039;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    //----------------------------------------Wrong dictations-----------------------&lt;br /&gt;
    dictionary.forReplace = {&lt;br /&gt;
       &#039;آندروید&#039;: &#039;اندروید&#039;,&lt;br /&gt;
       &#039;واشنگتن&#039;: &#039;واشینگتن&#039;,&lt;br /&gt;
       &#039;واشنگتون&#039;: &#039;واشینگتن&#039;,&lt;br /&gt;
       &#039;واشینگتون&#039;: &#039;واشینگتن&#039;,&lt;br /&gt;
       &#039;زیمباوه&#039;: &#039;زیمبابوه&#039;,&lt;br /&gt;
       &#039;به شخصه&#039;: &#039;بشخصه&#039;,&lt;br /&gt;
       &#039;به‌شخصه&#039;: &#039;بشخصه&#039;,&lt;br /&gt;
       &#039;به عینه&#039;: &#039;بعینه&#039;,&lt;br /&gt;
       &#039;به‌عینه&#039;: &#039;بعینه&#039;,&lt;br /&gt;
       &#039;احمدی نژاد&#039;: &#039;احمدی‌نژاد&#039;,&lt;br /&gt;
       &#039;جابه جا&#039;: &#039;جابه‌جا&#039;,&lt;br /&gt;
       &#039;جا به جا&#039;: &#039;جابه‌جا&#039;,&lt;br /&gt;
       &#039;جا به‌جا&#039;: &#039;جابه‌جا&#039;,&lt;br /&gt;
       &#039;بیت المقدس&#039;: &#039;بیت‌المقدس&#039;,&lt;br /&gt;
       &#039;بی بی سی&#039;: &#039;بی‌بی‌سی&#039;,&lt;br /&gt;
       &#039;پی دی اف&#039;: &#039;پی‌دی‌اف&#039;,&lt;br /&gt;
       &#039;اس ام اس&#039;: &#039;اس‌ام‌اس&#039;,&lt;br /&gt;
       &#039;اف بی آی&#039;: &#039;اف‌بی‌آی&#039;,&lt;br /&gt;
        &#039;می سی سی پی&#039;: &#039;می‌سی‌سی‌پی&#039;,&lt;br /&gt;
        //&#039;میسیسیپی&#039;: &#039;می‌سی‌سی‌پی&#039;,&lt;br /&gt;
        &#039;ویژه‌گی&#039;: &#039;ویژگی&#039;,&lt;br /&gt;
        &#039;دبیر کل&#039;: &#039;دبیرکل&#039;,&lt;br /&gt;
        &#039;دایره‌المعارف&#039;: &#039;دایرةالمعارف&#039;,&lt;br /&gt;
        &#039;دایره المعارف&#039;: &#039;دایرةالمعارف&#039;,&lt;br /&gt;
        &#039;تأئید&#039;: &#039;تأیید&#039;,&lt;br /&gt;
        &#039;تائید&#039;: &#039;تأیید&#039;,&lt;br /&gt;
        &#039;تصویه&#039;: &#039;تصفیه&#039;,&lt;br /&gt;
        &#039;بقیه‌الله&#039;: &#039;بقیةالله&#039;,&lt;br /&gt;
        &#039;بقیه الله&#039;: &#039;بقیةالله&#039;,&lt;br /&gt;
        &#039;بقیة الله&#039;: &#039;بقیةالله&#039;,&lt;br /&gt;
        &#039;دگمه&#039;: &#039;دکمه&#039;,&lt;br /&gt;
        &#039;وحله&#039;: &#039;وهله&#039;,&lt;br /&gt;
        //&#039;هاوی&#039;: &#039;حاوی&#039;, ممکن است اسم خاص باشد&lt;br /&gt;
        &#039;نقطه‌نظر&#039;: &#039;دیدگاه&#039;,&lt;br /&gt;
        &#039;ناچاراً&#039;: &#039;به‌ناچار&#039;,&lt;br /&gt;
        &#039;ناچارا&#039;: &#039;به‌ناچار&#039;,&lt;br /&gt;
        &#039;منیت&#039;: &#039;منی&#039;,&lt;br /&gt;
        &#039;منیٔت&#039;: &#039;منی&#039;,&lt;br /&gt;
        &#039;فرآیند&#039;: &#039;فرایند&#039;,&lt;br /&gt;
        &#039;فرآیندها&#039;: &#039;فرایندها&#039;,&lt;br /&gt;
        &#039;کارآیی&#039;: &#039;کارایی&#039;,&lt;br /&gt;
        &#039;ملاحضه&#039;: &#039;ملاحظه&#039;,&lt;br /&gt;
        &#039;ملیون&#039;: &#039;میلیون&#039;,&lt;br /&gt;
        &#039;ملیارد&#039;: &#039;میلیارد&#039;,&lt;br /&gt;
        &#039;مطمعن&#039;: &#039;مطمئن&#039;,&lt;br /&gt;
        &#039;مرهمت&#039;: &#039;مرحمت&#039;,&lt;br /&gt;
        &#039;مرحم&#039;: &#039;مرهم&#039;,&lt;br /&gt;
        &#039;مونته نگرو&#039;: &#039;مونته‌نگرو&#039;,&lt;br /&gt;
        &#039;محصوب&#039;: &#039;محسوب&#039;,&lt;br /&gt;
        &#039;مذبور&#039;: &#039;مزبور&#039;,&lt;br /&gt;
        &#039;متعصفانه|متاصفانه&#039;: &#039;متأسفانه&#039;,&lt;br /&gt;
        &#039;متغییر&#039;: &#039;متغیر&#039;,&lt;br /&gt;
        &#039;لشگر&#039;: &#039;لشکر&#039;,&lt;br /&gt;
        &#039;لحجه&#039;: &#039;لهجه&#039;,&lt;br /&gt;
        &#039;گاهاً&#039;: &#039;گاهی&#039;,&lt;br /&gt;
        &#039;گاها&#039;: &#039;گاهی&#039;,&lt;br /&gt;
        &#039;کهکیلویه&#039;: &#039;کهگیلویه&#039;,&lt;br /&gt;
        &#039;قائله&#039;: &#039;غائله&#039;,&lt;br /&gt;
        &#039;فارق‌التحصیل&#039;: &#039;فارغ‌التحصیل&#039;,&lt;br /&gt;
        &#039;علاالدین&#039;: &#039;علاءالدین&#039;,&lt;br /&gt;
        &#039;علم‌شنگه&#039;: &#039;الم‌شنگه&#039;,&lt;br /&gt;
        &#039;غلطاندن&#039;: &#039;غلتاندن&#039;,&lt;br /&gt;
        &#039;ظبط&#039;: &#039;ضبط&#039;,&lt;br /&gt;
        &#039;طنبور&#039;: &#039;تنبور&#039;,&lt;br /&gt;
        &#039;طپش&#039;: &#039;تپش&#039;,&lt;br /&gt;
        &#039;ضمینه&#039;: &#039;زمینه&#039;,&lt;br /&gt;
        &#039;زخامت|ذخامت&#039;: &#039;ضخامت&#039;,&lt;br /&gt;
        &#039;زخیم|ذخیم&#039;: &#039;ضخیم&#039;,&lt;br /&gt;
        &#039;صحفه&#039;: &#039;صفحه&#039;,&lt;br /&gt;
        //&#039;سوماً&#039;: &#039;سوم&#039;,&lt;br /&gt;
        //&#039;سوما&#039;: &#039;سوم&#039;,&lt;br /&gt;
        &#039;سفارشاً&#039;: &#039;سفارشی&#039;,&lt;br /&gt;
        &#039;سفارشا&#039;: &#039;سفارشی&#039;,&lt;br /&gt;
        &#039;سرلشگر&#039;: &#039;سرلشکر&#039;,&lt;br /&gt;
        &#039;سپاسگذار&#039;: &#039;سپاسگزار&#039;,&lt;br /&gt;
        &#039;خبرگذار&#039;: &#039;خبرگزار&#039;,&lt;br /&gt;
        &#039;ساتع&#039;: &#039;ساطع&#039;,&lt;br /&gt;
        &#039;زنده‌گی&#039;: &#039;زندگی&#039;,&lt;br /&gt;
        &#039;زباناً&#039;: &#039;زبانی&#039;,&lt;br /&gt;
        &#039;زبانا&#039;: &#039;زبانی&#039;,&lt;br /&gt;
        &#039;رهبریت&#039;: &#039;رهبری&#039;,&lt;br /&gt;
        &#039;در باره&#039;: &#039;درباره&#039;,&lt;br /&gt;
        &#039;دوئیت&#039;: &#039;دوگانگی&#039;,&lt;br /&gt;
        //&#039;دوماً&#039;: &#039;دوم&#039;,&lt;br /&gt;
        //&#039;دوما&#039;: &#039;دوم&#039;,&lt;br /&gt;
        &#039;داوطلبین&#039;: &#039;داوطلبان&#039;,&lt;br /&gt;
        &#039;خوشنود&#039;: &#039;خشنود&#039;,&lt;br /&gt;
        &#039;خوبیت&#039;: &#039;خوبی&#039;,&lt;br /&gt;
        &#039;خوانواده&#039;: &#039;خانواده&#039;,&lt;br /&gt;
        &#039;خواستگاه&#039;: &#039;خاستگاه&#039;,&lt;br /&gt;
        &#039;خرشید&#039;: &#039;خورشید&#039;,&lt;br /&gt;
        &#039;خردن&#039;: &#039;خوردن&#039;,&lt;br /&gt;
        &#039;خانند&#039;: &#039;خوانند&#039;,&lt;br /&gt;
        &#039;خابیدن&#039;: &#039;خوابیدن&#039;,&lt;br /&gt;
        &#039;حظور&#039;: &#039;حضور&#039;,&lt;br /&gt;
        &#039;حظرت&#039;: &#039;حضرت&#039;,&lt;br /&gt;
        &#039;حدلامکان&#039;: &#039;حتی‌الامکان&#039;,&lt;br /&gt;
        &#039;حاظر&#039;: &#039;حاضر&#039;,&lt;br /&gt;
        &#039;چهارماً&#039;: &#039;چهارم&#039;,&lt;br /&gt;
        &#039;چهارما&#039;: &#039;چهارم&#039;,&lt;br /&gt;
        &#039;چارشنبه&#039;: &#039;چهارشنبه&#039;,&lt;br /&gt;
        &#039;جاناً&#039;: &#039;جانی&#039;,&lt;br /&gt;
        //&#039;جانا&#039;: &#039;جانی&#039;, باگ در [[جانا رودین]]&lt;br /&gt;
        &#039;توجیح&#039;: &#039;توجیه&#039;,&lt;br /&gt;
        &#039;توضیع&#039;: &#039;توزیع&#039;,&lt;br /&gt;
        &#039;تلوزیون&#039;: &#039;تلویزیون&#039;,&lt;br /&gt;
        &#039;تضاهر&#039;: &#039;تظاهر&#039;,&lt;br /&gt;
        &#039;ترجیه&#039;: &#039;ترجیح&#039;,&lt;br /&gt;
        &#039;پنچ&#039;: &#039;پنج&#039;,&lt;br /&gt;
        &#039;پزشگی&#039;: &#039;پزشکی&#039;,&lt;br /&gt;
        //&#039;پرفسور&#039;: &#039;پروفسور&#039;, //[[Special:Permalink/20573389#professeur]]&lt;br /&gt;
        &#039;پاتوغ&#039;: &#039;پاتوق&#039;,&lt;br /&gt;
        &#039;بی‌مهابا&#039;: &#039;بی‌محابا&#039;,&lt;br /&gt;
        &#039;بنیانگزار&#039;: &#039;بنیانگذار&#039;,&lt;br /&gt;
        &#039;بلقور&#039;: &#039;بلغور&#039;,&lt;br /&gt;
        &#039;بلاخره&#039;: &#039;بالاخره&#039;,&lt;br /&gt;
        &#039;برخواستن&#039;: &#039;برخاستن&#039;,&lt;br /&gt;
        &#039;برعلیه&#039;: &#039;علیه&#039;,&lt;br /&gt;
        &#039;برخواست&#039;: &#039;برخاست&#039;,&lt;br /&gt;
        &#039;بدیت&#039;: &#039;بدی&#039;,&lt;br /&gt;
        &#039;باطلاق&#039;: &#039;باتلاق&#039;,&lt;br /&gt;
        &#039;بازرسین&#039;: &#039;بازرسان&#039;,&lt;br /&gt;
        &#039;بارگزار&#039;: &#039;بارگذار&#039;,&lt;br /&gt;
        &#039;باجناق&#039;: &#039;باجناغ&#039;,&lt;br /&gt;
        &#039;باباقوری&#039;: &#039;باباغوری&#039;,&lt;br /&gt;
        &#039;آروق&#039;: &#039;آروغ&#039;,&lt;br /&gt;
        &#039;انظباط&#039;: &#039;انضباط&#039;,&lt;br /&gt;
        &#039;التفاط&#039;: &#039;التفات&#039;,&lt;br /&gt;
        &#039;افضل‌تر&#039;: &#039;بهتر&#039;,&lt;br /&gt;
        &#039;افسنطین&#039;: &#039;افسنتین&#039;,&lt;br /&gt;
        &#039;اعلم‌تر&#039;: &#039;داناتر&#039;,&lt;br /&gt;
        &#039;اطو&#039;: &#039;اتو&#039;,&lt;br /&gt;
        &#039;اطراق&#039;: &#039;اتراق&#039;,&lt;br /&gt;
        &#039;اطاق&#039;: &#039;اتاق&#039;,&lt;br /&gt;
        &#039;اصطرلاب&#039;: &#039;اسطرلاب&#039;,&lt;br /&gt;
        &#039;ارتقاع&#039;: &#039;ارتقا&#039;,&lt;br /&gt;
        &#039;اختاپوث&#039;: &#039;اختاپوس&#039;,&lt;br /&gt;
        &#039;ابولفضل&#039;: &#039;ابوالفضل&#039;,&lt;br /&gt;
        &#039;امپراطور&#039;: &#039;امپراتور&#039;,&lt;br /&gt;
        //&#039;طوسی&#039;: &#039;توسی&#039;, خواجه نصیرالدین طوسی را به تبدیل می کرد&lt;br /&gt;
        &#039;آزوقه&#039;: &#039;آذوقه&#039;,&lt;br /&gt;
        &#039;ذکام&#039;: &#039;زکام&#039;,&lt;br /&gt;
        &#039;بگیر و ببند&#039;: &#039;بگیر ببند&#039;,&lt;br /&gt;
        &#039;ساز و کار&#039;: &#039;سازوکار&#039;,&lt;br /&gt;
        &#039;جر و بحث&#039;: &#039;جربحث&#039;,&lt;br /&gt;
        &#039;خوار و بار&#039;: &#039;خواربار&#039;,&lt;br /&gt;
        &#039;احجام&#039;: &#039;حجم‌ها&#039;,&lt;br /&gt;
        &#039;لازم به ذکر است&#039;: &#039;لازم است ذکر شود&#039;,&lt;br /&gt;
        &#039;بدلیل&#039;:&#039;به دلیل&#039;,&lt;br /&gt;
        //برپایه http://www.persianacademy.ir/fa/pishvand.aspx&lt;br /&gt;
        &#039;آن‌را&#039;: &#039;آن را&#039;,&lt;br /&gt;
        &#039;این‌را&#039;: &#039;این را&#039;,&lt;br /&gt;
        &#039;هیات&#039;: &#039;هیئت&#039;,&lt;br /&gt;
        &#039;هیأت&#039;: &#039;هیئت&#039;,&lt;br /&gt;
        &#039;رییسه&#039;: &#039;رئیسه&#039;,&lt;br /&gt;
        &#039;رییس&#039;: &#039;رئیس&#039;,&lt;br /&gt;
        &#039;رییس‌جمهور&#039;: &#039;رئیس‌جمهور&#039;,&lt;br /&gt;
        &#039;مساله&#039;: &#039;مسئله&#039;,&lt;br /&gt;
        &#039;مسأله&#039;: &#039;مسئله&#039;,&lt;br /&gt;
        &#039;همین جا&#039;: &#039;همین‌جا&#039;,&lt;br /&gt;
        &#039;همینجا&#039;: &#039;همین‌جا&#039;,&lt;br /&gt;
        &#039;همینطور&#039;: &#039;همین‌طور&#039;,&lt;br /&gt;
        &#039;همین طور&#039;: &#039;همین‌طور&#039;,&lt;br /&gt;
        &#039;همان جا&#039;: &#039;همان‌جا&#039;,&lt;br /&gt;
        &#039;همانجا&#039;: &#039;همان‌جا&#039;,&lt;br /&gt;
        &#039;به طور&#039;: &#039;به‌طور&#039;,&lt;br /&gt;
        &#039;بطور&#039;: &#039;به‌طور&#039;,&lt;br /&gt;
        &#039;همان طور&#039;: &#039;همان‌طور&#039;,&lt;br /&gt;
        &#039;همانطور&#039;: &#039;همان‌طور&#039;,&lt;br /&gt;
        &#039;هیچکدام&#039;: &#039;هیچ‌کدام&#039;,&lt;br /&gt;
        &#039;هیچ کدام&#039;: &#039;هیچ‌کدام&#039;,&lt;br /&gt;
        &#039;هیچکس&#039;: &#039;هیچ‌کس&#039;,&lt;br /&gt;
        &#039;هیچ کس&#039;: &#039;هیچ‌کس&#039;,&lt;br /&gt;
        &#039;هیچیک&#039;: &#039;هیچ‌یک&#039;,&lt;br /&gt;
        &#039;هیچ یک&#039;: &#039;هیچ‌یک&#039;,&lt;br /&gt;
        &#039;هم‌دیگر&#039;: &#039;همدیگر&#039;,&lt;br /&gt;
        &#039;عبدالهی&#039;: &#039;عبداللهی&#039;,&lt;br /&gt;
        &#039;آن چه&#039;: &#039;آنچه&#039;,&lt;br /&gt;
        &#039;آن‌چه&#039;: &#039;آنچه&#039;,&lt;br /&gt;
        &#039;چنان چه&#039;: &#039;چنانچه&#039;,&lt;br /&gt;
        &#039;چنانچه&#039;: &#039;چنانچه&#039;,&lt;br /&gt;
        &#039;چنان که&#039;: &#039;چنان‌که&#039;,&lt;br /&gt;
        &#039;چنانکه&#039;: &#039;چنان‌که&#039;,&lt;br /&gt;
        &#039;ئیدروژن&#039;: &#039;هیدروژن&#039;,&lt;br /&gt;
        //بدل از تنوین&lt;br /&gt;
        &#039;بعضن&#039;: &#039;بعضا&#039;,&lt;br /&gt;
        &#039;غالبن&#039;: &#039;غالبا&#039;,&lt;br /&gt;
        &#039;کاملن&#039;: &#039;کاملا&#039;,&lt;br /&gt;
        &#039;احتمالن&#039;: &#039;احتمالا&#039;,&lt;br /&gt;
        &#039;اصلن&#039;: &#039;اصلا&#039;,&lt;br /&gt;
        &#039;اشتباهن&#039;: &#039;اشتباها&#039;,&lt;br /&gt;
        &#039;منشاء&#039;: &#039;منشأ&#039;,&lt;br /&gt;
        &#039;مبداء&#039;: &#039;مبدأ&#039;,&lt;br /&gt;
        &#039;موسیقیایی&#039;: &#039;موسیقایی&#039;,&lt;br /&gt;
        &#039;یوگوسلاوی&#039;: &#039;یوگسلاوی&#039;,&lt;br /&gt;
        &#039;وب‌گاه&#039;: &#039;وبگاه&#039;,&lt;br /&gt;
        //وپ:کوته‌نوشت&lt;br /&gt;
        //رجوع کنید&lt;br /&gt;
       &#039;ر\\. ?ک\\.?&#039;: &#039;ر.ک.&#039;,&lt;br /&gt;
        //هجری خورشیدی&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?\\. ?خ\\.?&#039;: &#039;ه‍.خ&#039;,&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?[\\u200C ]خ&#039;: &#039;ه‍.خ&#039;,&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?\\. ?خ\\.?\\)&#039;: &#039;ه‍.خ)&#039;,&lt;br /&gt;
        &#039;\\([هﻫﻩ]\\u200D?\\. ?خ\\.?&#039;: &#039;(ه‍.خ&#039;,&lt;br /&gt;
        //هجری قمری&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?\\. ?ق\\.?&#039;: &#039;ه‍.ق&#039;,&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?[\\u200C ]ق&#039;: &#039;ه‍.ق&#039;,&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?\\. ?ق\\.?\\)&#039;: &#039;ه‍.ق)&#039;,&lt;br /&gt;
        &#039;\\([هﻫﻩ]\\u200D?\\. ?ق\\.?&#039;: &#039;(ه‍.ق&#039;,&lt;br /&gt;
        //هجری شمسی&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?\\. ?ش\\.?&#039;: &#039;ه‍.ش&#039;,&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?[\u200C ]ش&#039;: &#039;ه‍.ش&#039;,&lt;br /&gt;
        &#039;[هﻫﻩ]\\u200D?\\. ?ش\\.?\\)&#039;: &#039;ه‍.ش)&#039;,&lt;br /&gt;
        &#039;\\([هﻫﻩ]\\u200D?\\. ?ش\\.?&#039;: &#039;(ه‍.ش&#039;,&lt;br /&gt;
        //الی آخر&lt;br /&gt;
        &#039;الخ\\.&#039;: &#039;الخ&#039;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    return dictionary;&lt;br /&gt;
}());&lt;br /&gt;
if (typeof window !== &#039;undefined&#039;) {&lt;br /&gt;
    window.persianToolsDictionary = persianToolsDictionary;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persianwikitools.js&amp;diff=994</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-persianwikitools.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persianwikitools.js&amp;diff=994"/>
		<updated>2026-08-24T10:51:26Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DO NOT REMOVE THIS LINE EVER&lt;br /&gt;
/**&lt;br /&gt;
 * Wikipedia specific Persian text style improvement tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also: [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 */&lt;br /&gt;
/*global persianTools, persianToolsDictionary, autoEd*/&lt;br /&gt;
var persianWikiTools = (function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
	var persianMonths = [&amp;quot;فروردین&amp;quot;, &amp;quot;اردیبهشت&amp;quot;, &amp;quot;خرداد&amp;quot;, &amp;quot;تیر&amp;quot;, &amp;quot;مرداد&amp;quot;, &amp;quot;شهریور&amp;quot;, &amp;quot;مهر&amp;quot;, &amp;quot;آبان&amp;quot;, &amp;quot;آذر&amp;quot;, &amp;quot;دی&amp;quot;, &amp;quot;بهمن&amp;quot;, &amp;quot;اسفند&amp;quot;];&lt;br /&gt;
	//http://www.entitycode.com/&lt;br /&gt;
	var htmlEntityCodes = {&lt;br /&gt;
		&amp;quot;&amp;amp;iexcl;&amp;quot;: &amp;quot;¡&amp;quot;, &amp;quot;&amp;amp;cent;&amp;quot;: &amp;quot;¢&amp;quot;, &amp;quot;&amp;amp;pound;&amp;quot;: &amp;quot;£&amp;quot;, &amp;quot;&amp;amp;curren;&amp;quot;: &amp;quot;¤&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;yen;&amp;quot;: &amp;quot;¥&amp;quot;, &amp;quot;&amp;amp;brvbar;&amp;quot;: &amp;quot;¦&amp;quot;, &amp;quot;&amp;amp;sect;&amp;quot;: &amp;quot;§&amp;quot;, &amp;quot;&amp;amp;copy;&amp;quot;: &amp;quot;©&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;middot;&amp;quot;: &amp;quot;·&amp;quot;, &amp;quot;&amp;amp;times;&amp;quot;: &amp;quot;×&amp;quot;, &amp;quot;&amp;amp;rdquo;&amp;quot;: &amp;quot;”&amp;quot;, &amp;quot;&amp;amp;dagger;&amp;quot;: &amp;quot;†&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;Dagger;&amp;quot;: &amp;quot;‡&amp;quot;, &amp;quot;&amp;amp;euro;&amp;quot;: &amp;quot;€&amp;quot;, &amp;quot;&amp;amp;laquo;&amp;quot;: &amp;quot;«&amp;quot;, &amp;quot;&amp;amp;reg;&amp;quot;: &amp;quot;®&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;deg;&amp;quot;: &amp;quot;°&amp;quot;, &amp;quot;&amp;amp;plusmn;&amp;quot;: &amp;quot;±&amp;quot;, &amp;quot;&amp;amp;sup2;&amp;quot;: &amp;quot;²&amp;quot;, &amp;quot;&amp;amp;sup3;&amp;quot;: &amp;quot;³&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;para;&amp;quot;: &amp;quot;¶&amp;quot;, &amp;quot;&amp;amp;sup1;&amp;quot;: &amp;quot;¹&amp;quot;, &amp;quot;&amp;amp;raquo;&amp;quot;: &amp;quot;»&amp;quot;, &amp;quot;&amp;amp;frac14;&amp;quot;: &amp;quot;¼&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;frac12;&amp;quot;: &amp;quot;½&amp;quot;, &amp;quot;&amp;amp;frac34;&amp;quot;: &amp;quot;¾&amp;quot;, &amp;quot;&amp;amp;iquest;&amp;quot;: &amp;quot;¿&amp;quot;, &amp;quot;&amp;amp;divide;&amp;quot;: &amp;quot;÷&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ndash;&amp;quot;: &amp;quot;–&amp;quot;, &amp;quot;&amp;amp;mdash;&amp;quot;: &amp;quot;—&amp;quot;, &amp;quot;&amp;amp;lsquo;&amp;quot;: &amp;quot;‘&amp;quot;, &amp;quot;&amp;amp;rsquo;&amp;quot;: &amp;quot;’&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ldquo;&amp;quot;: &amp;quot;“&amp;quot;, &amp;quot;&amp;amp;trade;&amp;quot;: &amp;quot;™&amp;quot;, &amp;quot;&amp;amp;bull;&amp;quot;: &amp;quot;•&amp;quot;, &amp;quot;&amp;amp;hellip;&amp;quot;: &amp;quot;…&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;permil;&amp;quot;: &amp;quot;‰&amp;quot;, &amp;quot;&amp;amp;lsaquo;&amp;quot;: &amp;quot;‹&amp;quot;, &amp;quot;&amp;amp;rsaquo;&amp;quot;: &amp;quot;›&amp;quot;, &amp;quot;&amp;amp;larr;&amp;quot;: &amp;quot;←&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;uarr;&amp;quot;: &amp;quot;↑&amp;quot;, &amp;quot;&amp;amp;rarr;&amp;quot;: &amp;quot;→&amp;quot;, &amp;quot;&amp;amp;darr;&amp;quot;: &amp;quot;↓&amp;quot;, &amp;quot;&amp;amp;harr;&amp;quot;: &amp;quot;↔&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;crarr;&amp;quot;: &amp;quot;↵&amp;quot;, &amp;quot;&amp;amp;minus;&amp;quot;: &amp;quot;−&amp;quot;, &amp;quot;&amp;amp;radic;&amp;quot;: &amp;quot;√&amp;quot;, &amp;quot;&amp;amp;infin;&amp;quot;: &amp;quot;∞&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;loz;&amp;quot;: &amp;quot;◊&amp;quot;, &amp;quot;&amp;amp;spades;&amp;quot;: &amp;quot;♠&amp;quot;, &amp;quot;&amp;amp;rfloor;&amp;quot;: &amp;quot;⌋&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;quot;: &amp;quot; &amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ne;&amp;quot;: &amp;quot;≠&amp;quot;, &amp;quot;&amp;amp;ap;&amp;quot;: &amp;quot;≈&amp;quot;, &amp;quot;&amp;amp;approx;&amp;quot;: &amp;quot;≈&amp;quot;, &amp;quot;&amp;amp;asymp;&amp;quot;: &amp;quot;≈&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;rceil;&amp;quot;: &amp;quot;⌉&amp;quot;, &amp;quot;&amp;amp;lfloor;&amp;quot;: &amp;quot;⌊&amp;quot;, &amp;quot;&amp;amp;diams;&amp;quot;: &amp;quot;♦&amp;quot;, &amp;quot;&amp;amp;auml;&amp;quot;: &amp;quot;ä&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ouml;&amp;quot;: &amp;quot;ö&amp;quot;, &amp;quot;&amp;amp;uuml;&amp;quot;: &amp;quot;ü&amp;quot;, &amp;quot;&amp;amp;szlig;&amp;quot;: &amp;quot;ß&amp;quot;, &amp;quot;&amp;amp;aring;&amp;quot;: &amp;quot;å&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;oline; &amp;quot;: &amp;quot;‾ &amp;quot;, &amp;quot;&amp;amp;aelig;&amp;quot;: &amp;quot;æ&amp;quot;, &amp;quot;&amp;amp;ccedil;&amp;quot;: &amp;quot;ç&amp;quot;, &amp;quot;&amp;amp;ntilde;&amp;quot;: &amp;quot;ñ&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;acirc;&amp;quot;: &amp;quot;â&amp;quot;, &amp;quot;&amp;amp;aacute;&amp;quot;: &amp;quot;á&amp;quot;, &amp;quot;&amp;amp;agrave;&amp;quot;: &amp;quot;à&amp;quot;, &amp;quot;&amp;amp;#36;&amp;quot;: &amp;quot;$&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;clubs;&amp;quot;: &amp;quot;♣&amp;quot;, &amp;quot;&amp;amp;hearts;&amp;quot;: &amp;quot;♥&amp;quot;, &amp;quot;&amp;amp;Prime;&amp;quot;: &amp;quot;″&amp;quot;, &amp;quot;&amp;amp;prime;&amp;quot;: &amp;quot;′&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;lceil;&amp;quot;: &amp;quot;⌈&amp;quot;, &amp;quot;&amp;amp;mldr;&amp;quot;: &amp;quot;…&amp;quot;, &amp;quot;&amp;amp;bullet;&amp;quot;: &amp;quot;•&amp;quot;, &amp;quot;&amp;amp;grave;&amp;quot;: &amp;quot;`&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;pm;&amp;quot;: &amp;quot;±&amp;quot;, &amp;quot;&amp;amp;acute;&amp;quot;: &amp;quot;´&amp;quot;, &amp;quot;&amp;amp;centerdot;&amp;quot;: &amp;quot;·&amp;quot;, &amp;quot;&amp;amp;half;&amp;quot;: &amp;quot;½&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;Auml;&amp;quot;: &amp;quot;Ä&amp;quot;, &amp;quot;&amp;amp;Ouml;&amp;quot;: &amp;quot;Ö&amp;quot;, &amp;quot;&amp;amp;Uuml;&amp;quot;: &amp;quot;Ü&amp;quot;, &amp;quot;&amp;amp;rsquor;&amp;quot;: &amp;quot;’&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;lsquor;&amp;quot;: &amp;quot;‚&amp;quot;, &amp;quot;&amp;amp;sbquo;&amp;quot;: &amp;quot;‚&amp;quot;, &amp;quot;&amp;amp;rdquor;&amp;quot;: &amp;quot;”&amp;quot;, &amp;quot;&amp;amp;bdquo;&amp;quot;: &amp;quot;„&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;ldquor;&amp;quot;: &amp;quot;„&amp;quot;, &amp;quot;&amp;amp;ddagger;&amp;quot;: &amp;quot;‡&amp;quot;, &amp;quot;&amp;amp;div;&amp;quot;: &amp;quot;÷&amp;quot;, &amp;quot;&amp;amp;leq;&amp;quot;: &amp;quot;≤&amp;quot;,&lt;br /&gt;
		&amp;quot;&amp;amp;geq;&amp;quot;: &amp;quot;≥&amp;quot;, &amp;quot;&amp;amp;le;&amp;quot;: &amp;quot;≤&amp;quot;, &amp;quot;&amp;amp;ge;&amp;quot;: &amp;quot;≥&amp;quot;&lt;br /&gt;
	}; // &amp;amp;quot; , &amp;amp;amp; &amp;amp;lt; &amp;amp;gt; &amp;amp;#124;&lt;br /&gt;
	var patterns = {&lt;br /&gt;
		arabicDigitsEnglishContext: /[a-z]([\|a-z %&amp;quot;&#039;\._:\;,\-\\\/\(\)\#\^\+\d&amp;gt;&amp;lt;–\[\]&amp;amp;?{}](?!\|\|))*\d|(\d|[a-z])[a-z %&amp;quot;&#039;\._:\;\|,\-\\\/\(\)\#\^\+\d&amp;gt;&amp;lt;–\[\]&amp;amp;?{}]*[a-z]\d*/gi,&lt;br /&gt;
		arabicTagEnclosed: /\{\{(?:عربی|شروع عربی|آغاز عربی)\}\}([\s\S]*?)\{\{(?:پایان عربی)\}\}/g,&lt;br /&gt;
		LtRTagEnclosed: /\{\{(?:چپ چین|چپ‌چین)\}\}([\s\S]*?)\{\{(?:پایان چپ‌چین|پایان چپ چین|پایان)\}\}/g,&lt;br /&gt;
		argumentsBlacklist: /(?:accessdate|namespace|legend1start|image|تصویر|doi|style|شابک|عرض|bibcode|isbn|issn|pmid|arxiv|upright|upleft|padding|spacing|border|filename|نام پرونده|ایستاده)\s*\=\s*[^\|\}\]]*/gi,&lt;br /&gt;
		color: /#(?:[abcdef0-9]{8}|[abcdef0-9]{6}|[abcdef0-9]{3})/gi,&lt;br /&gt;
		//colorAsParameter: /\=\s*(?:[abcdef0-9]{8}|[abcdef0-9]{6}|[abcdef0-9]{3})(?:[\s\|\}]|$)/gi,&lt;br /&gt;
		// space, &amp;quot;, \t, \n, {, |, }, ... they will interfere with wiki markup&lt;br /&gt;
		decodeUriBlacklist: /(?:%20|%27|%5C|%5E|%60|%23|%25|%3C|%3E|%5B|%5D|%22|%09|%0A|%7B|%7C|%7D|%C2|%A0)/gi,&lt;br /&gt;
		diffLink: /\[\[(?:ویژه|Special):(?:تفاوت|Diff)\/[^\|\]]*/gi,&lt;br /&gt;
		englishDate: /\d{1,2},? [a-z]{3,} \d{2,4}/gi, // 3, May 2013&lt;br /&gt;
		fileNames: /(?:پرونده|File|تصویر|Image)\:.*?(?=\||\]|\n|$)|=.*\.(?:flac|gif|jpeg|jpg|mid|mp3|mpeg|mpg|ogg|pdf|png|svg|wav|webm)$/mgi, // don&#039;t capture | after&lt;br /&gt;
		fileParameter: /\|\s*(image|تصویر)\s*\=\s*.*/g,&lt;br /&gt;
		ipSign: /\[\[ویژه:مشارکت\u200cها.*?\]\]/g,&lt;br /&gt;
		isbn: /(?:ISBN|ISSN|PMID) [\d\-]*/gi,&lt;br /&gt;
		galleryTag: /&amp;lt;gallery.*?&amp;gt;[\s\S]*?&amp;lt;\/gallery&amp;gt;/g,&lt;br /&gt;
		htmlAttributes: /(?:style|perrow|colspan|color|rowspan|cellpadding|cellspacing|height|width|size|border|thumbtime|name|perrow|upright|upleft)\s*[\=\:]\s*(?:[&#039;\&amp;quot;].*?[&#039;\&amp;quot;]|[\da-z]+)/gi,&lt;br /&gt;
		htmlEntity: /&amp;amp;#\d+;/,&lt;br /&gt;
		imagePixelSize: /[\|=] *[x\d]+?(px|پیکسل)[\]\|\s]/g, // means it will capture |10px| and |10x10px|&lt;br /&gt;
		insideQuote: /[^ا]&amp;quot;.*?&amp;quot;/g,&lt;br /&gt;
		wikilinkTargets: /\[[^\[|\]]+/g,&lt;br /&gt;
		nowikiTag: /&amp;lt;nowiki&amp;gt;.+?&amp;lt;\/nowiki&amp;gt;/g,&lt;br /&gt;
		preTag: /&amp;lt;pre.*?&amp;gt;.*?&amp;lt;\/pre&amp;gt;/g,&lt;br /&gt;
		insideHtmlComment: /&amp;lt;\!\-\-[\s\S]*?\-\-&amp;gt;/g,&lt;br /&gt;
		linksOnEnglishContext: /[a-z][\:\,\. ]*\[\[[\da-z\-\, ]*/gi,&lt;br /&gt;
		mapFrameTag: /&amp;lt;mapframe.*?&amp;gt;[\s\S]*?&amp;lt;\/mapframe&amp;gt;/g,&lt;br /&gt;
		mathTag: /&amp;lt;math.*?&amp;gt;[\s\S]*?&amp;lt;\/math&amp;gt;/g,&lt;br /&gt;
		otherLanguagesInline: /\{\{(?:به .+?|پم|به انگلیسی|انگلیسی|عربی|متن عربی|عبارت عربی|حدیث|به عربی|به اردو|اردو|lang\-[au]r|پینگ|ping)[\s\S]*?\}\}/g,&lt;br /&gt;
		parameter: /\{\{\{\d+/gi,&lt;br /&gt;
		parenthesesAfterDigits: /\w\s?\([\w\s\.\-]*?\)/g,&lt;br /&gt;
		parenthesesHa: /\)ها/g,&lt;br /&gt;
		ref: /(?:&amp;lt;ref[^\/]*?&amp;gt;[\s\S]*?&amp;lt;\/ref&amp;gt;|&amp;lt;ref[^\/]*?\/&amp;gt;)/g, // inside &amp;lt;ref&amp;gt;&amp;lt;/ref&amp;gt; and &amp;lt;ref/&amp;gt;&lt;br /&gt;
		refname: /\&amp;lt;ref name\=.*?\&amp;gt;/g,&lt;br /&gt;
		citation: /\{\{\s*(?:[Cc]it|یادکرد).*?[_\s]*(?:\{\{.*?\}\}|[^\}])*\}\}/g,&lt;br /&gt;
		signatures: /\[\[(?:کاربر|User|بحث[ _]کاربر|User[_ ]talk)\:.*?\]\]/gi,&lt;br /&gt;
		sourceTag: /(&amp;lt;source.*?&amp;gt;[\s\S]*?&amp;lt;\/source&amp;gt;|&amp;lt;syntaxhighlight.*?&amp;gt;[\s\S]*?&amp;lt;\/syntaxhighlight&amp;gt;|&amp;lt;code.*?&amp;gt;[\s\S]*?&amp;lt;\/code&amp;gt;|&amp;lt;timeline.*?&amp;gt;[\s\S]*?&amp;lt;\/timeline&amp;gt;)/g,&lt;br /&gt;
		tagNames: /&amp;lt;\/?[a-zA-Z\d]*/g,&lt;br /&gt;
		graphTemplate: /(?:\&amp;lt;div[^\&amp;gt;]+&amp;gt;)?\{\{[ \_]*(?:الگو|Template)?(?:[Gg]raph\:?[^\|\}]+).*?[_\s\n]*(?:\{\{.*?\}\}|[^\}])*\}\}(?:\&amp;lt;\/div\&amp;gt;)?/g,&lt;br /&gt;
		templateEnglishName: /(الگو|Template):[a-z][a-z\d\-\+_]+/gi,&lt;br /&gt;
		templateWithEnglishName: /\{\{[ \_]*(?:الگو|Template)?[\x00-\x7a~]*\|.*?\}\}/gi,&lt;br /&gt;
		templateParameterName: /\|\s*(?=[a-z_]*\d)[a-z_\d]*\s*\=/gi,&lt;br /&gt;
		globalExceptionTag: /(&amp;lt;nowiki&amp;gt;.+?&amp;lt;\/nowiki&amp;gt;|&amp;lt;!--[\s]*ابر[\s]*--&amp;gt;.+?&amp;lt;!--[\s]*\/[\s]*ابر[\s]*--&amp;gt;|\{\{استثنای ابرابزار\|[\s\S]*?\}\})/gi,&lt;br /&gt;
		translatedUrl: /.(کام|نت|آی‌آر)/g,&lt;br /&gt;
		boxVar: /([a-zA-Z][۱۲۳۴۵۶۷۸۹۰]+) *\=/g,&lt;br /&gt;
		url: /\/\/.*?(?=[\s\n\|\}\]&amp;lt;]|$)/gi,	 // بدون https?: هم ممکن است&lt;br /&gt;
		url2: /\/\/.*?(?:[\s\n\|\}\]&amp;lt;]|$)/gi,	 //برای مواردی که نیاز باشد ادامهٔ نشانی وب را دست نزند&lt;br /&gt;
		urlArchive: /\/\/web\.archive\.org[^\|\}\n\&amp;lt;\&amp;gt;]+/gi,&lt;br /&gt;
		mediawikiFunctions: /\{\{\#(?:\{\{.*?\}\}|[^\}])*\}\}/gi,&lt;br /&gt;
		articleTitleParts: new RegExp(&#039;\\s&#039; + escapeRegExp(mw.config.get(&#039;wgTitle&#039;)).split(&#039; &#039;).join(&#039;\\s|\\s&#039;) + &#039;\\s&#039;, &#039;g&#039;),&lt;br /&gt;
		catgories: /\[\[(?:رده|[Cc]ategory)\:[^\]]+\]\]/gi,&lt;br /&gt;
		rfd: /\{\{نظرخواهی برای حذف.*\}\}/g&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	function escapeRegExp(string) {&lt;br /&gt;
		return string.replace(/[.*+?^${}()|[\]\\]/g, &#039;\\$&amp;amp;&#039;); // $&amp;amp; means the whole matched string&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function escapeRE(s) {&lt;br /&gt;
		return s.replace(/([$()*+\-.?[\\\]^{|}])/g, &#039;\\$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function descendingFromComparetor(x, y) {&lt;br /&gt;
		return x.from - y.from;&lt;br /&gt;
	}&lt;br /&gt;
	function removeCheckDict(text) {&lt;br /&gt;
		// رفع مشکل [[Special:Permalink/25174868#متن هایلایت‌شده]]&lt;br /&gt;
		var otext = &#039;&#039;&lt;br /&gt;
		while (otext != text) {&lt;br /&gt;
			otext = text&lt;br /&gt;
			text = text.replace(/\&amp;lt;span[^&amp;gt;]+CheckDictation\-marked[^&amp;gt;]+\&amp;gt;([^&amp;lt;&amp;gt;]+)\&amp;lt;\/span\&amp;gt;/g, &#039;$1&#039;)&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
	}&lt;br /&gt;
	function replaceExcept(text, callback, excepts) {&lt;br /&gt;
		var match, result = [], i, ranges, minRange, to, min, max;&lt;br /&gt;
		while (text !== &#039;&#039;) {&lt;br /&gt;
			ranges = [];&lt;br /&gt;
&lt;br /&gt;
			for (i in excepts) {&lt;br /&gt;
				if (excepts.hasOwnProperty(i)) {&lt;br /&gt;
					// a global regex should be reset before calls&lt;br /&gt;
					excepts[i].lastIndex = 0;&lt;br /&gt;
					match = excepts[i].exec(text);&lt;br /&gt;
					if (match !== null) {&lt;br /&gt;
						ranges.push({&lt;br /&gt;
							from: match.index,&lt;br /&gt;
							to: match.index + match[0].length&lt;br /&gt;
						});&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// so nothing is matched&lt;br /&gt;
			if (ranges.length === 0) {&lt;br /&gt;
				result.push(callback(text));&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			minRange = ranges.sort(descendingFromComparetor)[0];&lt;br /&gt;
			min = minRange.from;&lt;br /&gt;
&lt;br /&gt;
			to = [];&lt;br /&gt;
			for (i in ranges) {&lt;br /&gt;
				if (ranges.hasOwnProperty(i)) {&lt;br /&gt;
					if (ranges[i].from &amp;lt;= minRange.to) {&lt;br /&gt;
						to.push(ranges[i].to);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			max = Math.max.apply(null, to);&lt;br /&gt;
&lt;br /&gt;
			result.push(callback(text.substr(0, min)));&lt;br /&gt;
			result.push(text.substr(min, max - min));&lt;br /&gt;
			// console.log(&#039;Excepted: &amp;quot;&#039; + text.substr(min, max - min) + &#039;&amp;quot;&#039;);&lt;br /&gt;
			text = text.substr(max);&lt;br /&gt;
		}&lt;br /&gt;
		return result.join(&#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiConvertToPersianCharacters(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.toStandardPersianCharacters,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.otherLanguagesInline, patterns.arabicTagEnclosed, patterns.fileNames, patterns.signatures, patterns.url, patterns.fileParameter]&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!String.prototype.trim) { // if is not available currently&lt;br /&gt;
		String.prototype.trim = function () {&lt;br /&gt;
			return this.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanReferences(str) {&lt;br /&gt;
		// تمیزکاری autoFormater.js &amp;gt; cleanReferences&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;\s*references\s*(\s\b[^&amp;lt;&amp;gt;]*?)?\s*(?:\/|&amp;gt;\s*&amp;lt;\s*\/\s*references)\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;references$1/&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
			//ویکی‌پدیای فارسی منبع برای ارجاع نیست  &lt;br /&gt;
			str = str.replace(/\&amp;lt;ref[^&amp;gt;]*\&amp;gt;\[?(?:https?:)?\/\/fa.(?:m\.)?wikipedia.org\/[^\&amp;lt;\n\}\]\[]+\]?\&amp;lt;\/ref\&amp;gt;/gi, &#039;&#039;)&lt;br /&gt;
		};&lt;br /&gt;
		str = str.replace(/&amp;lt;\s*references\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;/gi, &#039;&amp;lt;references$1&amp;gt;&#039;);&lt;br /&gt;
		str = str.replace(/&amp;lt;\s*\/\s*references\s*&amp;gt;/gi, &#039;&amp;lt;\/references&amp;gt;&#039;);&lt;br /&gt;
		var re = /(&amp;lt;references[^&amp;lt;\/&amp;gt;]*)&amp;gt;/g, m;&lt;br /&gt;
		while (m = re.exec(str)) {&lt;br /&gt;
			if (str.indexOf(&#039;&amp;lt;\/references&amp;gt;&#039;, m.index) &amp;lt; 0) {&lt;br /&gt;
				str = str.slice(0, m.index) + m[1] + &#039;/&amp;gt;&#039; + str.slice(m.index + m[0].length);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;&amp;gt;]*?)\s*(?:\/+|&amp;gt;\s*&amp;lt;\s*\/+\s*ref) *&amp;gt;/gi, &#039;&amp;lt;ref$1/&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
		/* remove line breaks with assays only the top of the article */&lt;br /&gt;
		var i = str.indexOf(&#039;&amp;lt;references&#039;),&lt;br /&gt;
			slice;&lt;br /&gt;
		if (i &amp;gt; 0) {&lt;br /&gt;
			slice = str.slice(i);&lt;br /&gt;
			slice = slice.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;[\t ]*/gi, &#039;&amp;lt;ref$1&amp;gt;&#039;);&lt;br /&gt;
			slice = slice.replace(/(?:(\n[\t ]*)|[\t ]*)&amp;lt;\s*\/+\s*ref\s*&amp;gt;/gi, &#039;$1&amp;lt;\/ref&amp;gt;&#039;);&lt;br /&gt;
			str = str.slice(0, i);&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(/&amp;lt; *ref\s*(\s\b[^&amp;lt;\/&amp;gt;]*?)?\s*&amp;gt;\s*/gi, &#039;&amp;lt;ref$1&amp;gt;&#039;);&lt;br /&gt;
		str = str.replace(/\s*&amp;lt;\s*\/+\s*ref\s*&amp;gt;/gi, &#039;&amp;lt;\/ref&amp;gt;&#039;);&lt;br /&gt;
		if (slice) {&lt;br /&gt;
			str += slice;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/* Space between the end of block and remove &amp;lt;ref&amp;gt; or two &amp;lt;ref&amp;gt; */&lt;br /&gt;
		str = str.replace(/([!,.;?]|&amp;lt;ref\b[^&amp;lt;&amp;gt;]*(?:\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/ref)&amp;gt;) +(?=&amp;lt;ref[ &amp;gt;])/gi, &#039;$1&#039;);&lt;br /&gt;
		/* Two identical punctuation before and cut after a &amp;lt;ref&amp;gt; on one */&lt;br /&gt;
		str = str.replace(/([!,.:;?])(&amp;lt;ref\b[^&amp;lt;&amp;gt;]*(?:\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/ref)&amp;gt;)\1/gi, &#039;$1$2&#039;);&lt;br /&gt;
		/* ref inside small */&lt;br /&gt;
		return str.replace(/\&amp;lt;small\&amp;gt; *(\&amp;lt;ref[^\&amp;lt;]+\&amp;lt;\/ref\&amp;gt;)&amp;lt;\/small\&amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanTags(str) {&lt;br /&gt;
		str = str.replace(/(&amp;lt;\/?s)trike\b/gi, &#039;$1&#039;);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;u\&amp;gt;([^\&amp;lt;]+)\&amp;lt;\/u\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;&#039;&#039;$1&#039;&#039;&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;center\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;{{وسط‌چین}}&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/\&amp;lt;\/center\&amp;gt;/gi,&lt;br /&gt;
			&amp;quot;{{پایان}}&amp;quot;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;sub\s*(&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;)\s*(?:su[bp]\s*[.\/\\]+|[.\/\\]+\s*su[bp])\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;sub$1/sub&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;sup\s*(&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;)\s*(?:su[bp]\s*[.\/\\]+|[.\/\\]+\s*su[bp])\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;sup$1/sup&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/* Drop default font attributes */&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;font\b[^&amp;lt;&amp;gt;]*?)\s+fa\w+(?:[\s&amp;quot;&#039;,=]*(?:Arial|Helvetica(?:\W?N\w*)?|sans\W?serif)\b)+[\s&amp;quot;&#039;;]*(?=\s\w+\s*=|&amp;gt;)/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;font\b[^&amp;lt;&amp;gt;]*?)\s+size[\s&amp;quot;&#039;,=]*(?:-1\b|2\b|100\b[ ,.]*\d*%|1(?:\.0*)?em\b)[&amp;quot;&#039;;]*/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Remove inline elements with no attributes */&lt;br /&gt;
		while (/&amp;lt;(font|span)\s*&amp;gt;\s*(?:&amp;lt;(?!\1)|[^&amp;lt;])*?\s*&amp;lt;\/\1[^&amp;lt;&amp;gt;]*&amp;gt;/i.test(str)) {&lt;br /&gt;
			str = str.replace(/&amp;lt;(font|span)\s*&amp;gt;[ \n]*((?:&amp;lt;(?!\1)|[^&amp;lt;])*?)[ \n]*&amp;lt;\/\1[^&amp;lt;&amp;gt;]*&amp;gt;/gi, &#039;$2&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+color[\s&amp;quot;&#039;,=]*(#[\dA-F]{3,6}|[a-z]{3,20})[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;color:$1;&amp;quot;&amp;gt;$2&amp;lt;\/span&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+size[\s&amp;quot;&#039;,=]*(?:-[2-9]|[01])[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;small&amp;gt;$1&amp;lt;\/small&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;font\s+size[\s&amp;quot;&#039;,=]*(?:[+-]0|3)[\s&amp;quot;&#039;;]*&amp;gt;((?:&amp;lt;(?!font)|[^&amp;lt;])*?)&amp;lt;\/font[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;$1&amp;lt;\/span&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Merge nested inline tags */&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;(abbr|cite|mark|q|s|small|u)\s*&amp;gt;&amp;lt;(font|span)\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/\2\s*&amp;gt;\s*(?=&amp;lt;\/\1\s*&amp;gt;)/gi,&lt;br /&gt;
			&#039;&amp;lt;$1 style=&amp;quot;$3;&amp;quot;&amp;gt;$4&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/(&amp;lt;span\b[^&amp;lt;&amp;gt;]*?)\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;&amp;lt;span\s+style\s*=\s*[&amp;quot;&#039;]?([^\n&amp;quot;&amp;lt;&amp;gt;]*?);?[&amp;quot;&#039;]?\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/span\s*&amp;gt;\s*(?=&amp;lt;\/span\s*&amp;gt;)/gi,&lt;br /&gt;
			&#039;$1 style=&amp;quot;$2; $3;&amp;quot;&amp;gt;$4&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/* Verschiedenste Formen von HTML-Zeilenumbrüchen durch einheitliche ersetzen */&lt;br /&gt;
		str = str.replace(/&amp;lt;(?:[\s\/\\]*br\b)+\s*(\s\w[^&amp;lt;&amp;gt;]*?)?[\s.\/\\]*&amp;gt;/gi, &#039;&amp;lt;br$1/&amp;gt;&#039;);&lt;br /&gt;
		/* Unnötige HTML-Zeilenumbrüche entfernen, wenn sowieso ein Absatz folgt */&lt;br /&gt;
		str = str.replace(/ *(?:{{سخ}}|&amp;lt;br \/&amp;gt;)(?=[\r\n][\n#*:;\|}\]])/gi, &#039;&#039;);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;(ref|small|su[bp])\b\s*(\s\w[^&amp;lt;&amp;gt;]*?)?\s*&amp;gt;&amp;lt;small\s*&amp;gt;([^&amp;lt;&amp;gt;]*)&amp;lt;\/small\s*&amp;gt;&amp;lt;\/\1\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;$1$2&amp;gt;$3&amp;lt;\/$1&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/&amp;lt;small\s*&amp;gt;&amp;lt;(ref|small|su[bp])\b\s*(\s\w[^&amp;lt;&amp;gt;]*?)?\s*?( ?\/|&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;\/\1)\s*&amp;gt;&amp;lt;\/small\s*&amp;gt;/gi,&lt;br /&gt;
			&#039;&amp;lt;$1$2$3&amp;gt;&#039;&lt;br /&gt;
		);&lt;br /&gt;
		/* Drop old navigation bar wrapper, see [[Template:NaviBlock]] */&lt;br /&gt;
		return str.replace(&lt;br /&gt;
			/&amp;lt;div\s+class[^&amp;lt;&amp;gt;\w]*BoxenVerschmelzen[^&amp;lt;&amp;gt;\w]*&amp;gt;\s*(\{\{[^#:&amp;lt;&amp;gt;{}]*\}\})\s*&amp;lt;\/div&amp;gt;/gi,&lt;br /&gt;
			&#039;$1&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanDuplicateLinks(str) {&lt;br /&gt;
		/* Exclude files and infoboxes from the start of the article */&lt;br /&gt;
		var m = /^(?:\s*\[\[\w+:(?:\[\[[^\n\]]*\]\]|[^\n\]])*\]\])*(?:\s*\{\{(?:\{\{[^}]*\}\}|[^}])*\}\})+/.exec(str),&lt;br /&gt;
			start = m ? m[0].length : 0,&lt;br /&gt;
			found = [],&lt;br /&gt;
			a = [];&lt;br /&gt;
		/* Unlink years that are linked more than one time */&lt;br /&gt;
		var re = /\[\[ *([۱۲][۱۲۳۴۵۶۷۸۹۰]{3}|[۱۲][۱۲۳۴۵۶۷۸۹۰]{3} \((میلادی|قمری)\)) *\]\]/g;&lt;br /&gt;
		/* In each case the first discovery of a year noted entlinken thereafter */&lt;br /&gt;
		while (m = re.exec(str)) {&lt;br /&gt;
			if (m.index &amp;gt;= start) {&lt;br /&gt;
				found[m[1]] ? a.push(m) : found[m[1]] = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		var r = &#039;&#039;,&lt;br /&gt;
			p = 0;&lt;br /&gt;
		for (var i = 0; i &amp;lt; a.length; i++) {&lt;br /&gt;
			r += str.slice(p, a[i].index) + a[i][1];&lt;br /&gt;
			p = a[i].index + a[i][0].length;&lt;br /&gt;
		}&lt;br /&gt;
		return p ? r + str.slice(p) : str;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function autoFormatCleanDates(str) {&lt;br /&gt;
		var months = [&amp;quot;ژانویه&amp;quot;, &amp;quot;فوریه&amp;quot;, &amp;quot;مارس&amp;quot;, &amp;quot;آوریل&amp;quot;, &amp;quot;مه&amp;quot;, &amp;quot;ژوئن&amp;quot;, &amp;quot;ژوئیه&amp;quot;, &amp;quot;اوت&amp;quot;, &amp;quot;سپتامبر&amp;quot;, &amp;quot;اکتبر&amp;quot;, &amp;quot;نوامبر&amp;quot;, &amp;quot;دسامبر&amp;quot;, &amp;quot;January&amp;quot;, &amp;quot;February&amp;quot;, &amp;quot;March&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;June&amp;quot;, &amp;quot;July&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;October&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;December&amp;quot;].concat(persianMonths);&lt;br /&gt;
&lt;br /&gt;
		/* Add missing space between day and month */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s!\&#039;(&amp;gt;|„](?:3[01]|[12]\\d|0?[1-9])\\.?)(?=(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;)\\b)&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* No non-breaking space between month and year */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;(\\b(?:3[01]|[12]\\d|0?[1-9])\\.?(?:[\\s\\xA0]|&amp;amp;nbsp;)+(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;))(?:\xA0|&amp;amp;nbsp;)(?=[12]\\d{3}\\b)&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* Missverständliches deutsches Datumsformat durch Langform ersetzen */&lt;br /&gt;
		var separator = &#039; &#039;;&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/([\s&#039;(&amp;gt;„])(3[01]|[12]\d|0?[1-9])\. *(1[012]|0?[1-9])\. *(?=[12]\d{3}[!,.:;?]?[\s&#039;)&amp;lt;\]“])/g,&lt;br /&gt;
			function ($0, $1, $2, $3) {&lt;br /&gt;
				return $1 + ($2 | 0) + separator + months[$3 | 0] + &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		// عدد فارسی&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s!\&#039;(&amp;gt;|„](?:۳[۰۱]|[۱۲][۱۲۳۴۵۶۷۸۹]|۰?[۱۲۳۴۵۶۷۸۹])\\.?)(?=(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;)[\\s\&#039;)&amp;lt;\\]»}|])&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* No non-breaking space between month and year */&lt;br /&gt;
		str = str.replace(new RegExp(&#039;([\\s\&#039;(&amp;gt;«](?:۳[۰۱]|[۱۲][۱۲۳۴۵۶۷۸۹]|۰?[۱۲۳۴۵۶۷۸۹])\\.?(?:[\\s\\xA0]|&amp;amp;nbsp;)+(?:&#039; +&lt;br /&gt;
			months.join(&#039;|&#039;) + &#039;))(?:\xA0|&amp;amp;nbsp;)(?=[۱۲][۱۲۳۴۵۶۷۸۹]{3}[\\s\&#039;)&amp;lt;\\]»}|])&#039;, &#039;g&#039;), &#039;$1 &#039;);&lt;br /&gt;
		/* Missverständliches deutsches Datumsformat durch Langform ersetzen */&lt;br /&gt;
		var separator = &#039; &#039;;&lt;br /&gt;
		str = str.replace(&lt;br /&gt;
			/([\s&#039;(&amp;gt;«])(۳[۰۱]|[۱۲][۱۲۳۴۵۶۷۸۹]|۰?[۱۲۳۴۵۶۷۸۹])\. *(۱[۰۱۲]|۰?[۱۲۳۴۵۶۷۸۹])\. *(?=[۱۲][۱۲۳۴۵۶۷۸۹]{3}[!,.:;?]?[\s&#039;)&amp;lt;\]»}|])/g,&lt;br /&gt;
			function ($0, $1, $2, $3) {&lt;br /&gt;
				return $1 + ($2 | 0) + separator + months[$3 | 0] + &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		return str&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function quotationReplace(line) {&lt;br /&gt;
		[&lt;br /&gt;
			[&#039;“&#039;, &#039;”&#039;], [&#039;”&#039;, &#039;“&#039;], [&#039;‘&#039;, &#039;’&#039;], [&#039;’&#039;, &#039;‘&#039;], [&#039;‚&#039;, &#039;’&#039;], [&#039;„&#039;, &#039;”&#039;], [&#039;\\&amp;lt;\\&amp;lt;&#039;, &#039;\\&amp;gt;\\&amp;gt;&#039;], [&#039;\\(\\(&#039;, &#039;\\)\\)&#039;]&lt;br /&gt;
		].forEach(function(qs) {&lt;br /&gt;
			line = line.replace(new RegExp(&lt;br /&gt;
				&#039;(^|[&#039; + persianTools.persianCharacters + &#039;\\:&amp;gt;،»؛\\s\\n\\}\\]\\.]+)&#039;&lt;br /&gt;
				+ qs[0] + &#039;((?:\\[\\[|).*?[&#039; + persianTools.persianCharacters + &#039;\\n]+?(?:\\]\\]|\\.|\\&amp;lt;|\\:|\\{|\\[|…|))&#039; + qs[1]&lt;br /&gt;
				+ &#039;([&#039; + persianTools.persianCharacters + &#039;،«؛\\s\\n\\.\\[\\{]|$)&#039;, &#039;g&#039;&lt;br /&gt;
			), &#039;$1«$2»$3&#039;);&lt;br /&gt;
		});&lt;br /&gt;
		return line;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function quotation(text) {&lt;br /&gt;
		// این تابع زمانی گیومه را به فارسی تیدیل می‌کند که در پاراگراف مورد نظر تعداد گیومهٔ لاتین زوج باشد.&lt;br /&gt;
		var lines = text.split(/\n\n/);&lt;br /&gt;
		var result = [];&lt;br /&gt;
		for (var i = 0; i &amp;lt; lines.length; ++i) {&lt;br /&gt;
			var line = lines[i];&lt;br /&gt;
			if ((line.match(/&amp;quot;/g) || []).length % 2 === 0) { // count of quote marks&lt;br /&gt;
				// تبدیل گیومهٔ لاتین به فارسی&lt;br /&gt;
				// این دستور در ابتدا باشد تا فاصله‌های قبل و بعد گیومه هم اصلاح شود&lt;br /&gt;
				line = line.replace(&lt;br /&gt;
					new RegExp(&#039;(^|[&#039; + persianTools.persianCharacters + &#039;\\:&amp;gt;،»؛\\s\\n\\}\\]\\.\\)]+)&amp;quot;((?:\\[\\[|).*?[&#039; + persianTools.persianCharacters + &#039;؛\\n،]+?(?:\\]\\]|\\.|\\&amp;lt;|\\:|…|))&amp;quot;([&#039; + persianTools.persianCharacters + &#039;،«؛\\s\\n\\.\\[\\{\\(]|$)&#039;, &#039;g&#039;),&lt;br /&gt;
					&#039;$1«$2»$3&#039;&lt;br /&gt;
				);&lt;br /&gt;
				// if some of quote marks are remained from conversion, something might wrong, revert&lt;br /&gt;
				var testline = line.replace(/(?:&amp;lt;ref[^\/]*?&amp;gt;[\s\S]*?&amp;lt;\/ref&amp;gt;|&amp;lt;ref[^\/]*?\/&amp;gt;)/g, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
				if (testline.match(/&amp;quot;/g)) {&lt;br /&gt;
					line = lines[i];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// رفع مشکل استفاده از ـً به جای گیومه لاتین در متن فارسی&lt;br /&gt;
			line = line.replace(new RegExp(&#039;ا\\&amp;quot;([ ]*[&#039; + persianTools.persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;اً$1&#039;)&lt;br /&gt;
			line = line.replace(new RegExp(&#039;ا\\”([ ]*[&#039; + persianTools.persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;اً$1&#039;)&lt;br /&gt;
			line = quotationReplace(line);&lt;br /&gt;
			result.push(line);&lt;br /&gt;
		}&lt;br /&gt;
		return result.join(&#039;\n\n&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * افزودن ستون به الگوی پانویس&lt;br /&gt;
	 * @param {string} text محتوا&lt;br /&gt;
	*/&lt;br /&gt;
	function addColumnToRefTemplate(text) {&lt;br /&gt;
		var refTemplate = /\{\{پانویس([^\}\{]+)?\}\}/i.exec(text), needChange = false;&lt;br /&gt;
		if (refTemplate) {&lt;br /&gt;
			if ((text.match(/&amp;lt;ref/gi) || []).length &amp;gt;= 6) {&lt;br /&gt;
				if (refTemplate[1] !== undefined) {&lt;br /&gt;
					var refParams = refTemplate[1].split(&#039;|&#039;);&lt;br /&gt;
					for (var i = refParams.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						// اگر از پیش ستون یا پارامتر عرض تعریف شده‌باشد تغییری ایجاد نمی‌شود.&lt;br /&gt;
						if (refParams[i].length == 1 || refParams[i].indexOf(&#039;عرض&#039;) &amp;gt; -1) {&lt;br /&gt;
							needChange = true;&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (refTemplate[1] === undefined || !needChange) {&lt;br /&gt;
					return text.replace(refTemplate[0], refTemplate[0].replace(&#039;}}&#039;, &#039;|۲}}&#039;));&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			if ((mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgEditMessage&amp;quot;) === &#039;editing&#039;) || mw.config.get(&#039;wgPageName&#039;) === &amp;quot;ویکی‌پدیا:ویکی‌پروژه_ابزارها/آزمایش_واحد&amp;quot;) {&lt;br /&gt;
				if ((text.match(/&amp;lt;ref/gi) || []).length &amp;gt; 0 &amp;amp;&amp;amp; /\{\{پانویس([^\}\{]+)?\}\}/i.exec(text) != null) {&lt;br /&gt;
					var text2 = text.replace(&#039;== منابع ==&#039;, &#039;== منابع ==\n{{پانویس}}&#039;)&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text.replace(&#039;== پانویس ==&#039;, &#039;== پانویس ==\n{{پانویس}}&#039;)&lt;br /&gt;
					}&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text.replace(&#039;[[رده:&#039;, &#039;== منابع ==\n{{پانویس}}\n\n[[رده:&#039;)&lt;br /&gt;
					}&lt;br /&gt;
					if (text2 == text) {&lt;br /&gt;
						text2 = text + &#039;\n== منابع ==\n{{پانویس}}&#039;&lt;br /&gt;
					}&lt;br /&gt;
					text = text2&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * اصلاح پیوندها&lt;br /&gt;
	 * @param  {string} text محتوا&lt;br /&gt;
	 * @return {string}&lt;br /&gt;
	 */&lt;br /&gt;
	function fixBadLinks(text) {&lt;br /&gt;
		// حذف متن جایگزین پیوند اگر با نشانی پیوند برابر باشد؛ مانند [[سلام|سلام]]&lt;br /&gt;
		text = text.replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;);&lt;br /&gt;
&lt;br /&gt;
		// حذف پیوند سال و روز ماه&lt;br /&gt;
		text = text.replace(/\[{2}([۰-۹]+|[۰-۹]+ [\)\(\u0621-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2]+)(?:\|([^\]\|\[]+))?\]{2}/g, function (match, p1, p2) {&lt;br /&gt;
			// اگر فقط سال پیوند شده‌باشد یا به شکل [[سال|همان سال]] باشد فقط سال را می‌گرداند.&lt;br /&gt;
			var calendar_type = / \((میلادی|قمری|خورشیدی|شمسی|پیش از میلاد|قبل از میلاد)\)/g;&lt;br /&gt;
			if (p1 !== p2 &amp;amp;&amp;amp; p1.replace(calendar_type, &#039;&#039;) === p2) {&lt;br /&gt;
				return p2;&lt;br /&gt;
			}//[[Special:Permalink/19908981#حذف پیوند تاریخ‌ها]]&lt;br /&gt;
			if (p2 === undefined || p1 === p2) {&lt;br /&gt;
				// اگر پیوند به روز و ماه بود، برای جلوگیری از اشتباه و تداخل، بررسی می‌شوند که حتما یکی از ماه‌ها داخل رشته باشد.&lt;br /&gt;
				if (p1.indexOf(&amp;quot; &amp;quot;) &amp;gt; -1) {&lt;br /&gt;
					var&lt;br /&gt;
						months = [&lt;br /&gt;
							&amp;quot;محرم&amp;quot;, &amp;quot;صفر&amp;quot;, &amp;quot;ربیع‌الاول&amp;quot;, &amp;quot;ربیع‌الثانی&amp;quot;, &amp;quot;جمادی‌الاول&amp;quot;, &amp;quot;جمادی‌الثانی&amp;quot;, &amp;quot;رجب&amp;quot;, &amp;quot;شعبان&amp;quot;, &amp;quot;رمضان&amp;quot;, &amp;quot;شوال&amp;quot;, &amp;quot;ذیقعده&amp;quot;, &amp;quot;ذیحجه&amp;quot;&lt;br /&gt;
						].concat(persianMonths),&lt;br /&gt;
						i;&lt;br /&gt;
					for (i = months.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						if (p1.indexOf(months[i]) &amp;gt; -1) {&lt;br /&gt;
							return p1.replace(calendar_type, &#039;&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					return &amp;quot;[[&amp;quot; + p1 + &amp;quot;]]&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			// اگر متن جایگزین پیوند مخالف پیوند سال بود، متن جایگزین را برمی‌گرداند.&lt;br /&gt;
			return p2;&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function sortCategories(content, pageName) {&lt;br /&gt;
		return content.replace(/((?:\n\[\[رده:.+\]\])+)/, function (categories) {&lt;br /&gt;
			var sortedCategories = persianTools.persianSort(categories.trim().split(&#039;\n&#039;));&lt;br /&gt;
			return &#039;\n&#039; + sortedCategories.map(function (line, i) {&lt;br /&gt;
				// Put a &amp;quot;| &amp;quot; on category with the same name as the page&lt;br /&gt;
				if (line.indexOf(&#039;[[رده:&#039; + pageName + &#039;]]&#039;) === 0)&lt;br /&gt;
					line = &#039;[[رده:&#039; + pageName + &#039;| ]]&#039;;&lt;br /&gt;
&lt;br /&gt;
				// If it contains &amp;quot;| &amp;quot; put it at top&lt;br /&gt;
				if (line.indexOf(&#039;| ]]&#039;) !== -1) i = -1;&lt;br /&gt;
&lt;br /&gt;
				return { index: i, content: line };&lt;br /&gt;
			}).sort(function (x, y) { // sort based on their initial line index&lt;br /&gt;
				return x.index - y.index;&lt;br /&gt;
			}).map(function (x) { return x.content; }).join(&#039;\n&#039;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiPunctuation(text) {&lt;br /&gt;
		text = autoFormatCleanReferences(text)&lt;br /&gt;
		text = autoFormatCleanTags(text)&lt;br /&gt;
		text = autoFormatCleanDuplicateLinks(text)&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return quotation(text);&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.ref]&lt;br /&gt;
		);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
			var old_text = text.replace(/\=\=/g, &#039;&#039;)&lt;br /&gt;
			if (old_text == text) {//در صورتی که در مقاله بخش‌بندی وجود نداشته باشد&lt;br /&gt;
				text = text.replace(/(\n\{\{سخ\}\}|\n\n)(\s|_|)\&#039;\&#039;\&#039;(.*?)\&#039;\&#039;\&#039;(\s|_|)(\{\{سخ\}\}|\n)([\n\#\*])/g, &#039;\n\n== $3 ==\n$6&#039;)&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&#039;([&#039; + persianTools.persianCharactersNoVowels + &#039;])ـ+([&#039; + persianTools.persianCharactersNoVowels + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
					&#039;$1$2&#039;&lt;br /&gt;
				);&lt;br /&gt;
				return text.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;])(\\]\\]|), (\\[\\[|)?(?=[&#039; + persianTools.persianCharacters + &amp;quot;])&amp;quot;, &#039;g&#039;), &#039;$1$2، $3&#039;);&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.url, patterns.galleryTag, patterns.sourceTag, patterns.translatedUrl, patterns.parenthesesHa]&lt;br /&gt;
		);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return text.replace(/(&amp;lt;\/ref&amp;gt;)\s+(&amp;lt;ref)/g, &#039;$1$2&#039;).replace(/([^=])\s+&amp;lt;ref(?!erences)/g, &#039;$1&amp;lt;ref&#039;);&lt;br /&gt;
			},&lt;br /&gt;
			[/\{\{(پانویس|پانویس‌ها|پی‌نوشت)\s*\|[\s\S]*/]&lt;br /&gt;
		);&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				return persianTools.punctuation(text)&lt;br /&gt;
					.replace(/^([*#]+;?)([^*#;\:\s])/mg, &#039;$1 $2&#039;) // Adds a space after the # or * for lists&lt;br /&gt;
					.replace(/^([*#]+;?) {2,}(.)/mg, &#039;$1 $2&#039;); // Trim more that one space after the # or * for lists&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.mapFrameTag, patterns.mathTag, patterns.fileNames, patterns.url, patterns.wikilinkTargets,&lt;br /&gt;
			patterns.galleryTag, patterns.sourceTag, patterns.translatedUrl, patterns.parenthesesHa, patterns.insideHtmlComment]&lt;br /&gt;
		)&lt;br /&gt;
			.replace(/\u00A0/g, &#039; &#039;) // convert implicit nbsp to space, probably is being added by some bug on ContentTranslation&lt;br /&gt;
			.replace(/٬ /g, &#039;، &#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;\]])٬&#039;, &#039;g&#039;), &#039;$1،&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianTools.persianCharacters + &#039;])(\]\]|»|)[ ]*[,]&#039;, &#039;g&#039;), &#039;$1$2، &#039;)&lt;br /&gt;
			.replace(/\[\[([^\|\]]+)\|(\&#039;{2,3})\1&#039;{2,3}\]\]/g, &#039;$2[[$1]]$2&#039;) // for [[foo|&#039;&#039;&#039;foo&#039;&#039;&#039;]] &amp;gt; &#039;&#039;&#039;[[foo]]&#039;&#039;&#039;&lt;br /&gt;
			.replace(new RegExp(&#039;\\[\\[(&#039; + escapeRE(mw.config.get(&#039;wgPageName&#039;)) + &#039;)\\]\\]&#039;, &#039;g&#039;), &#039;$1&#039;) // پیوندزدایی از خود صفحه&lt;br /&gt;
			//برگرفته از https://checkwiki.toolforge.org/cgi-bin/checkwikin.cgi?project=fawiki&amp;amp;view=project&lt;br /&gt;
			.replace(/\[\[([^\|\]]+)\|\1([\u200c ]*(های?))\]\]/g, &#039;[[$1]]$2&#039;)//[[Special:Diff/17515365/17865938]]&lt;br /&gt;
			.replace(/([\S]*)[\s\u200c]*-[\s\u200c]*(تاکنون)(?![ ]+)/g, &#039;$1-اکنون&#039;)//[[Special:Diff/17515365/17865938]]&lt;br /&gt;
			//مشکل در نشانی اینترنتی&lt;br /&gt;
			.replace(/(\&amp;lt;ref.*?\&amp;gt;) *(\[|)\www(6|3|)\./gi, &#039;$1$2http://www$3.&#039;)&lt;br /&gt;
			.replace(/\[\[ *(https?\:\/\/.*?) *\]\]/g, &#039;[$1]&#039;)&lt;br /&gt;
			.replace(/\[\[ *(\/\/.*?) *\]\]/g, &#039;[$1]&#039;)&lt;br /&gt;
			.replace(/(https?:\/?\/?){2,}/g, &#039;$1&#039;)&lt;br /&gt;
			// تمیزکاری autoFormatter.js &amp;gt; cleanExternalLinks&lt;br /&gt;
			.replace(/\b(?:http(s?)(?::+\/*|\/\/+:*)\b)+/gi, &#039;http$1://&#039;)&lt;br /&gt;
			// repair links with vertical stroke&lt;br /&gt;
			.replace(/(\[https?:\/\/[^\s[\]|]*?) *\| *(?=[^\s=[\]|]+\])/gi, &#039;$1 &#039;)&lt;br /&gt;
			// supplement slashes at the end easier Domains&lt;br /&gt;
			.replace(/(\[https?:\/\/\w[\w.-]*\w\.\w+) +/gi, &#039;$1/ &#039;)&lt;br /&gt;
			// Domains lowercase, whether labeled or not&lt;br /&gt;
			.replace(/\bhttps?:\/\/\b[0-9a-z.-]*[A-Z][\w.-]*/g, function ($0) {&lt;br /&gt;
				return $0.toLowerCase();&lt;br /&gt;
			})&lt;br /&gt;
			// پیوند به بیرون‌هایی که در میان پیوند نویسهٔ رفتن به خط بعد، وجود داشته باشد&lt;br /&gt;
			.replace(/\[(?:https?\:|)\/\/[^\]\[]+\]/g, function (x) {&lt;br /&gt;
				x = x.replace(/[\n\r]/g, &#039;&#039;);&lt;br /&gt;
				return x&lt;br /&gt;
			})&lt;br /&gt;
			// فاصله اول زیربخش&lt;br /&gt;
			.replace(/پیوند\n\=/, &#039;پیوند=&#039;)// [[Special:Diff/20238012/20244702]]&lt;br /&gt;
			.replace(/^ +(\=+[^\=]+\=+)/mg, &#039;$1&#039;)&lt;br /&gt;
			.replace(/\[\[\|/g, &#039;[[&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *\/ *br *\&amp;gt;|\&amp;lt; *br *\\ *\&amp;gt;|\&amp;lt; *br *\. *\&amp;gt;)/g, &#039;&amp;lt;br/&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\})([\r\n])(\*|\#|\=\=)/g, &#039;$2$3&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\}) *\]\]/g, &#039;]]&#039;)&lt;br /&gt;
			.replace(/\[\[ *(\&amp;lt;br *\/\&amp;gt;|\{\{سخ\}\})/g, &#039;[[&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *span *\/ *\&amp;gt;|\&amp;lt; *\/ *span *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *center *\/ *\&amp;gt;|\&amp;lt; *\/ *center *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/center&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *b *\/ *\&amp;gt;|\&amp;lt; *\/ *b *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/b&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *div *\/ *\&amp;gt;|\&amp;lt; *\/ *div *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *p *\/ *\&amp;gt;|\&amp;lt; *\/ *p *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/p&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *td *\/ *\&amp;gt;|\&amp;lt; *\/ *td *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/td&amp;gt;&#039;)&lt;br /&gt;
			.replace(/(\&amp;lt; *small *\/ *\&amp;gt;|\&amp;lt; *\/ *small *\/ *\&amp;gt;)/gi, &#039;&amp;lt;/small&amp;gt;&#039;)&lt;br /&gt;
			.replace(/\[\[([^\]]+)\{\{\!\}\}([^\]]+)\]\]/g, &#039;[[$1|$2]]&#039;)//وجود {{!}} درون پیوند&lt;br /&gt;
			.replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;)//زمانی که بخش هدف و نمایه پیوند یکی باشند&lt;br /&gt;
			.replace(/\[\[(.+)\|(&#039;+)(.+\b)(&#039;+)\]\]/gi, &#039;$2[[$1|$3]]$4&#039;)// انتقال &#039;&#039;&#039; به بیرون پیوند&lt;br /&gt;
			// تمیزکاری autoFormatter.js &amp;gt; CleanGalleries&lt;br /&gt;
			.replace(/&amp;lt;gallery\b([^&amp;lt;&amp;gt;]*)&amp;gt;([^&amp;lt;&amp;gt;]+)&amp;lt;\/gallery\b[^&amp;lt;&amp;gt;]*&amp;gt;/gi,&lt;br /&gt;
				function ($0, $1, $2) {&lt;br /&gt;
					return &#039;&amp;lt;gallery&#039; + $1 + &#039;&amp;gt;&#039; + $2&lt;br /&gt;
						.replace(/^(\s*)\[+([^[\]]*)\]\]?\s*$/gm, &#039;$1$2&#039;)&lt;br /&gt;
						.replace(/^(\s*)\[+/gm, &#039;$1&#039;) + &#039;&amp;lt;\/gallery&amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			)&lt;br /&gt;
			// تمیزکاری پرونده‌ها&lt;br /&gt;
			// زمانی که برچسب کوچک در توضیحات تصویر می‌آید برای دستگاه‌های با مانیتور کوچک خواندن متن مشکل می‌شود&lt;br /&gt;
			//https://checkwiki.toolforge.org/cgi-bin/checkwiki.cgi?project=fawiki&amp;amp;view=only&amp;amp;id=77&lt;br /&gt;
			.replace(/\[\[(پرونده|[Ff]ile)\:((?:\[\[.*?\]\]|[^\]])*)\]\]/g, function ($0, $1, $2) {&lt;br /&gt;
				$2 = $2.replace(/\&amp;lt;\/?(big|center|small)&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
				return &#039;[[&#039; + $1 + &#039;:&#039; + $2 + &#039;]]&#039;&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/\[\[ *تصو[يی]ر\:/gi, &#039;[[پرونده:&#039;)&lt;br /&gt;
			// تمیزکاری الگو autoFormater.js &amp;gt; cleanTemplates&lt;br /&gt;
			.replace(/\{\{\s*:?\s*(?:الگو|Template)\s*:\s*/gi, &#039;{\{&#039;)&lt;br /&gt;
			// حذف خط زیر از عنوان الگو&lt;br /&gt;
			.replace(/(?:^|[^{])\{\{[ 0-9a-z\xC0-\u024F-]*_[ \w\xC0-\u024F-]*/gi,&lt;br /&gt;
				function ($0) {&lt;br /&gt;
					return $0.replace(/_+$/, &#039;&#039;).replace(/[ _]+/g, &#039; &#039;).replace(/\{ +/, &#039;{&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			)&lt;br /&gt;
			//سایر موارد&lt;br /&gt;
			.replace(/\[\[(رده|الگو|ویکی\u200cپدیا)\: +/g, &#039;[[$1:&#039;)&lt;br /&gt;
			.replace(/\{\{\*\}\}/g, &#039;{{•}}&#039;)&lt;br /&gt;
			.replace(/[\n\s]*\{\{[•·ن](w?)\}\}\s*/g, &#039;{{•$1}} &#039;)&lt;br /&gt;
			.replace(/\=\{\{[•·ن](w?)\}\}\s*/g, &#039;=\n{{•$1}} &#039;)//رفع باگ [[Special:Diff/14799178/16387261]] در خط بالا &lt;br /&gt;
			.replace(/ *(&amp;lt;\/? ?br ?\/?&amp;gt;|\{\{بر\}\}) */g, &#039;{{سخ}}&#039;)&lt;br /&gt;
			.replace(/\{\{سخ\}\}\n\n/g, &#039;\n\n&#039;)&lt;br /&gt;
			.replace(/\n\n\{\{سخ\}\}/g, &#039;\n\n&#039;)&lt;br /&gt;
			.replace(/\{\{سخ\}\}\]/g, &#039;]&#039;)&lt;br /&gt;
			.replace(/\[\{\{سخ\}\}/g, &#039;[&#039;)&lt;br /&gt;
			.replace(/\n\n(\*|\#)/g, &#039;\n$1&#039;)&lt;br /&gt;
			.replace(/\n(\#|\*)( |)\n/g, &#039;\n$1&#039;)&lt;br /&gt;
			.replace(/\n(\*|\#)( |)(\={2,})/g, &#039;\n$3&#039;)&lt;br /&gt;
			.replace(/(\n?)\s+?&amp;lt;\/ref&amp;gt;/g, &#039;$1&amp;lt;/ref&amp;gt;&#039;)&lt;br /&gt;
			.replace(/\{ *\|/g, &#039;{|&#039;)&lt;br /&gt;
			.replace(/\| *\}/g, &#039;|}&#039;)&lt;br /&gt;
			.replace(/\{\| *\{\|/g, &#039;{|&#039;)&lt;br /&gt;
			.replace(/\|\} *\|\}/g, &#039;|}&#039;)&lt;br /&gt;
			.replace(/^=.*&amp;amp;nbsp;.*=$/gim, function ($0) {&lt;br /&gt;
				return $0.replace(/(?:&amp;amp;nbsp;|\s)+/gi, &#039; &#039;);&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/([^=])\n+(\=.*?\=\n+)/g, &#039;$1\n\n$2&#039;)&lt;br /&gt;
			.replace(/^(=+([^=].*?)=+)[\t\s]{1,}\n/g, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/^(\={2,}) +[\:,;&amp;gt;&amp;amp;\^#@•→←↔↑↓—–…~٫،؛ٔ]/mg, &#039;$1&#039;) // Cleanup headers&lt;br /&gt;
			.replace(/[\:,;&amp;lt;&amp;amp;\^#@•→←↔↑↓—–…~٫،؛ٔ] +(\={2,})$/mg, &#039;$1&#039;)&lt;br /&gt;
			.replace(/^(\={2,}\s*)(«)([^\n«»]*?)(»)(\s*\={2,})/mg, &#039;$1 $3 $5&#039;)&lt;br /&gt;
			.replace(/^(\={2,}) *&#039;+(.*?)&#039;+ *(\={2,})/mg, &#039;$1 $2 $3&#039;)&lt;br /&gt;
			.replace(/^[•●⚫⬤]/mg, &#039;*&#039;) // Wikify bullets in start of lines&lt;br /&gt;
			.replace(/^#\s*(REDIRECT|تغییر[ _]?مسیر)/gi, &#039;#تغییرمسیر&#039;)&lt;br /&gt;
			.replace(/^#تغییرمسیر(?=\S)/g, &#039;#تغییرمسیر &#039;) // Adds a space after #REDIRECT&lt;br /&gt;
			.replace(/(\={2,}) *([^\n\r]*?) *(\={2,})/g, &#039;$1 $2 $3&#039;) // Format headings level 2 and above&lt;br /&gt;
			// زیربخش نیازی به برچسب بزرگ و کوچک ندارد&lt;br /&gt;
			.replace(/(\=+) \&amp;lt;(?:small|big)\&amp;gt;([^\=\n\r]+)\&amp;lt;\/(?:small|big)\&amp;gt; (\=+)/g, &#039;$1 $2 $3&#039;)&lt;br /&gt;
			//حذف فاصلهٔ اضافی درون {{}}&lt;br /&gt;
			.replace(/\{\{(\s*)(.*?)(\s*)\}\}/g, &#039;{{$2}}&#039;)&lt;br /&gt;
			// تبدیل به نویسه / یکی کردن فاصله های مجازی پشت سرهم&lt;br /&gt;
			.replace(/(\{\{فم\}\}|\&amp;amp;zwnj\;|\u200c+)/g, &#039;\u200c&#039;)&lt;br /&gt;
			// Full stop and comma should be before citation. See en:WP:REFPUNC&lt;br /&gt;
			.replace(/ *((?:&amp;lt;ref[^\/]*?&amp;gt;.*?&amp;lt;\/ref&amp;gt;)+)([\.،,:])?/g, &#039;$2$1&#039;)&lt;br /&gt;
			.replace(/([^.])([\.،,:]){2}((?:&amp;lt;ref[^\/]*?&amp;gt;.*?&amp;lt;\/ref&amp;gt;)+)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			.replace(/ *((?:&amp;lt;ref[^\/]*?\/&amp;gt;)+)([\.،,:])/g, &#039;$2$1&#039;)&lt;br /&gt;
			.replace(/([^.])([\.،,:]){2}(((?:&amp;lt;ref[^\/]*?\/&amp;gt;)+)+)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			/* هر رده در یک خط */&lt;br /&gt;
			.replace(/([^\s&amp;gt;-]) *(\[\[رده:[^\n[\]]*\]\])/gi, &#039;$1\n$2&#039;)&lt;br /&gt;
			.replace(/(\[\[رده:[^\n[\]]*\]\]) *(?![\s&amp;lt;-]|$)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/(\[\[رده:[^\n[\]]*\]\]\n) *(?!\[\[رده:|[\s&amp;lt;-]|$)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			//ترتیب‌پیش‌فرض&lt;br /&gt;
			.replace(/\{\{(?:DEFAULTSORT|[Dd]efaultsort|ترتیب|ترتیب[‌ ]پیش[‌ ]?فرض) *[|:] *(?=.*?}})/g, &#039;{{ترتیب‌پیش‌فرض:&#039;)&lt;br /&gt;
			.replace(/\{\{(ترتیب‌پیش‌فرض|DEFAULTSORT)\:[-\w,\s\(\)]+\}\}\n?/g, &#039;&#039;)&lt;br /&gt;
			.replace(/(\{\{(?:ترتیب‌پیش‌فرض|DEFAULT\w*SORT\w*):[^\n{}]*\}\})\s*(?=\[\[رده:)/gi, &#039;$1\n&#039;)&lt;br /&gt;
			.replace(/(\{\{ترتیب‌پیش‌فرض\:)\s/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/(==\n)\n+(?=&amp;lt;references[^\n&amp;lt;&amp;gt;]*\/&amp;gt;\n\n)/gi, &#039;$1&#039;)&lt;br /&gt;
			//نچسبیدن و+فاصله به براکت که محصول اشتباه در تایپ کردن است&lt;br /&gt;
			.replace(/\]\]و /g, &#039;]] و &#039;)&lt;br /&gt;
			.replace(/(\s|^)\&#039;\&#039;\&#039;(\s|)(.*?)(\s|)\&#039;\&#039;\&#039;(\s)/g, &amp;quot;$1&#039;&#039;&#039;$3&#039;&#039;&#039;$5&amp;quot;) // حذف فاصلهٔ اضافی درون ویکی کد&lt;br /&gt;
			.replace(/&#039;&#039;&#039;\{\{به /g, &amp;quot;&#039;&#039;&#039; {{به &amp;quot;)&lt;br /&gt;
			.replace(/\*(\s+|\n)?\{\{پانویس/g, &amp;quot;{{پانویس&amp;quot;)&lt;br /&gt;
			.replace(/((?:^|\n\s)\=+\s+\=+(?:\s+|)\n)/g, &amp;quot;\n\n&amp;quot;)&lt;br /&gt;
			.replace(/\n{3,}/g, &#039;\n\n&#039;)&lt;br /&gt;
			// فاصله‌های اضافی را از داخل پیوند به بیرون منتقل کند تا اگر اضافه بودند در کدهای دیگر حذف شوند&lt;br /&gt;
			// غیرفعال‌سازی: عملکرد مشابه پایین هم وجود دارد&lt;br /&gt;
			// .replace(/\[\[(\s*)(.*?)(\s*)\]\]/g, &#039;$1[[$2]]$3&#039;)&lt;br /&gt;
			.replace(/(\[{1,2})([^\[\]\n]*[^\[\]\n\|]) +(\]{1,2})/g, &amp;quot;$1$2$3&amp;quot;)&lt;br /&gt;
			.replace(/(\[{1,2}) +([^\[\]\n]+)(\]{1,2})/g, &amp;quot;$1$2$3&amp;quot;)&lt;br /&gt;
			//تبدیل بندهای ترتیبی به قالب‌بندی ویکی [[Special:Permalink/19923598#تبدیل بندهای ترتیبی به قالب‌بندی ویکی]]&lt;br /&gt;
			.replace(/(?:(?:^(?:\* ?)?[۱۲۳۴۵۶۷۸۹۰0-9]{1,2} ?[\.\-\)]) ?[^۱۲۳۴۵۶۷۸۹۰0-9\n]+\n+){2,}/gm, function (x) {&lt;br /&gt;
				var x2 = x.replace(/((?:\* ?)?[۱۲۳۴۵۶۷۸۹۰0-9]{1,2} ?[\.\-\)]) ?([^۱۲۳۴۵۶۷۸۹۰0-9\n]+)\n+/gm, &#039;# $2\n&#039;)&lt;br /&gt;
				if (x2.replace(/[۱۲۳۴۵۶۷۸۹۰0-9]/g, &#039;&#039;) === x2) {&lt;br /&gt;
					return x2;&lt;br /&gt;
				}&lt;br /&gt;
				return x;&lt;br /&gt;
			})&lt;br /&gt;
			.trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiSubsection(text) {&lt;br /&gt;
		return text.replace(/\&amp;lt;(?:\s*)references?(?:\s*\/|\s*\/\s*)\&amp;gt;/g, &#039;{{پانویس}}&#039;)&lt;br /&gt;
			.replace(/\{\{(?:[Rr]eflist|[Rr]eferences?|پانویس[‌ ]?ها)(?=\||\})/g, &#039;{{پانویس&#039;)&lt;br /&gt;
			.replace(/\{\{راست(| |‌)چین\}\}\s*\{\{پانویس(.*?)\}\}\s*\{\{(پایان راست(| |‌)چین|پایان)\}\}/g, &#039;{{پانویس$2}}&#039;)&lt;br /&gt;
			.replace(/\{\{چپ(| |‌)چین\}\}\s*\{\{پانویس(.*?)\}\}\s*\{\{(پایان چپ(| |‌)چین|پایان)\}\}/g, &#039;{{پانویس$2|چپ‌چین=بله}}&#039;)&lt;br /&gt;
			.replace(/\&amp;lt;small\&amp;gt;\s*\{\{پانویس(.*?)\}\}\s*\&amp;lt;\/small\&amp;gt;/g, &#039;{{پانویس$1|اندازه=کوچک}}&#039;)&lt;br /&gt;
			.replace(/(({\{پانویس.*?\}\})(\n|)){1,}/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/\=\s*لیست\s*\=/g, &#039;= فهرست =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[gG]allery|نگارستان|گالری (تصویر|عکس|))\s*\=/g, &#039;= نگارخانه =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:بیوگرافی|زندگینامه)\s*\=/g, &#039;= زندگی‌نامه =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[eE]xternal links|لینک‌?های بیرونی|پیوندهای خارجی|لینک‌?های خارجی|پیوندهای بیرونی)\s*\=/g, &#039;= پیوند به بیرون =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[nN]otes|[fF]ootnotes?|پاورقی|پاورقی‌ها|پانوشت|پانویس‌ها)\s*\=/g, &#039;= پانویس =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:[Ss]ee [Aa]lso|همچنین ببینی[مد]|بیشتر ببینی[مد]|همچنین نگاه کنید|بیشتر بدانی[مد]|مراجعات مرتبط|جستار وابسته|مطلب مرتبط|مطالب مرتبط|جستارهای مشابه|جستارهای دیگر)\s*\=/g, &#039;= جستارهای وابسته =&#039;)&lt;br /&gt;
			.replace(/\=\s*(?:منبع|منبع[‌ ]?ها|رفرنس|رفرنس[‌ ]?ها|ارجاع[‌ ]?ها|ارجاع|مرجع[‌ ]?ها|رفرنس|برگرفته از|مراجع|منابع و یادداشت[‌ ]?ها|منبع|مرجع|م[آا]خذ|منابع و م[آا]خذ|منابع و پانویس‌ها|فهرست مراجع|لیست مراجع|فهرست ارجاع[‌ ]?ها|فهرست ارجاع|[rR]eferences)\s*\=/g, &#039;= منابع =&#039;)&lt;br /&gt;
			//.replace(/\=\s*(?:مطالعه بیشتر|بیشتر بخوانی[مد])\s*\=/g, &#039;= برای مطالعهٔ بیشتر =&#039;)&lt;br /&gt;
			.replace(/^\={3,}\s*(جستارهای وابسته|پانویس|منابع)\s*\={3,}$/g, &#039;== $1 ==&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function wikiUrlMinifier(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(patterns.url, function (x) {&lt;br /&gt;
				return replaceExcept(&lt;br /&gt;
					x,&lt;br /&gt;
					function (x) {&lt;br /&gt;
						try {&lt;br /&gt;
							x = decodeURI(x);&lt;br /&gt;
						} catch (e) {&lt;br /&gt;
							try {&lt;br /&gt;
								x = decodeURIComponent(unescape(x));&lt;br /&gt;
							} catch (e) { mw.notify(e); }&lt;br /&gt;
						}&lt;br /&gt;
						return x;&lt;br /&gt;
					},&lt;br /&gt;
					[patterns.globalExceptionTag, patterns.decodeUriBlacklist, patterns.refname, patterns.urlArchive]&lt;br /&gt;
				);&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			// Strip the http(s) prefix&lt;br /&gt;
			.replace(/\[(https?\:)(?=\/\/(?:[\w\-]+)\.(?:m\.)?(wiki(pedia|media|data|source|news|oyage|quote)|wiktionary)\.org\/[^\s\]]*)/g, &#039;[&#039;)&lt;br /&gt;
			.replace(/[\[\=](?:https?\:|)\/\/[\w\-]{2,}\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/([^\n?]*?)[\]\|]/g, function (x) {&lt;br /&gt;
				x = x.replace(/\[(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?) (.*?)\]/g, &#039;[[:$1:$2|$3]]&#039;)&lt;br /&gt;
				x = x.replace(/\[(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?)\]/g, &#039;[[:$1:$2]]&#039;)&lt;br /&gt;
				//x = x.replace(/\=(?:https?\:|)\/\/([\w\-]{2,})\.(?:m\.)?wikipedia\.org\/w(?:iki)?\/(.*?)\|/g,&#039;=[[:$1:$2]]|&#039;) // در الگو یادکرد مشکل ایجاد می‌کند&lt;br /&gt;
				x = x.replace(/\[\[\:fa\:/g, &#039;[[&#039;).replace(/\%20/g, &#039; &#039;).replace(/٪۲۰/g, &#039; &#039;).replace(/\[\[[a-zA-Z\&#039;0-9 ]+\|/g, &#039;[[&#039;)&lt;br /&gt;
				x = x.replace(/\[\[.*?\]\]/g, function (y) {&lt;br /&gt;
					y = y.replace(/\_/g, &#039; &#039;)&lt;br /&gt;
					return y&lt;br /&gt;
				})&lt;br /&gt;
				return x&lt;br /&gt;
			}).replace(/\[{2}([^\|]+)\|\1\]{2}/gi, &#039;[[$1]]&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function SubSectionLeveling(text) {&lt;br /&gt;
		// تنظیم سطح زیربخش‌ها&lt;br /&gt;
		text = text.replace(/^(\={2,}) *(.*?) *(\={2,})/mg, &#039;$1 $2 $3&#039;)&lt;br /&gt;
		if ((mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 &amp;amp;&amp;amp; mw.config.get(&amp;quot;wgEditMessage&amp;quot;) === &#039;editing&#039;) || mw.config.get(&#039;wgPageName&#039;) === &amp;quot;ویکی‌پدیا:ویکی‌پروژه_ابزارها/آزمایش_واحد&amp;quot;) {&lt;br /&gt;
			//مقاله‌ای که فقط زیربخش سطح ۱ دارد&lt;br /&gt;
			if (text.replace(/\=\=/g, &#039;&#039;) === text) {&lt;br /&gt;
				var text2 = text.replace(new RegExp(&#039;^\=([^\=\r\n]+)\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
				if (text !== text2) {&lt;br /&gt;
					text = text2.replace(/\n\=  /g, &#039;\n= &#039;).replace(/  \=\n/g, &#039; =\n&#039;)&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
			//مقاله‌ای که فقط زیربخش سطح ۳ یا ۴ دارد&lt;br /&gt;
			var text_test = text.replace(/^\=+ (منابع|جستارهای وابسته|پیوند به بیرون|پانویس|نگارخانه) \=+\n/gm, &#039;&#039;)&lt;br /&gt;
			if (text_test.replace(/^\=\= /gm, &#039;&#039;) === text_test) {&lt;br /&gt;
				if (text_test.replace(/^\=\=\= /gm, &#039;&#039;) !== text_test) {&lt;br /&gt;
					//سطح ۳&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=([^\=\r\n]+)\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=\=([^\=\r\n]+)\=\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;=== $1 ===&amp;quot;)&lt;br /&gt;
				} else if (text_test.replace(/^\=\=\=\= /gm, &#039;&#039;) !== text_test) {&lt;br /&gt;
					//سطح ۴&lt;br /&gt;
					text = text.replace(new RegExp(&#039;^\=\=\=\=([^\=\r\n]+)\=\=\=\=$&#039;, &#039;gm&#039;), &amp;quot;== $1 ==&amp;quot;)&lt;br /&gt;
				} else {&lt;br /&gt;
					text = text.replace(/===/g, &#039;==&#039;)&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
			text = text.replace(/==  /g, &#039;== &#039;).replace(/  ==/g, &#039; ==&#039;)&lt;br /&gt;
		};&lt;br /&gt;
		return text;&lt;br /&gt;
	};&lt;br /&gt;
	function decimalPointToPersian(text) {&lt;br /&gt;
		//Decimal point [[Special:Permalink/25438370#جمع‌بندی_بدون_رسیدگی]]&lt;br /&gt;
		return text.replace(new RegExp(&#039;([۰۱۲۳۴۵۶۷۸۹])\\.(?=[۰۱۲۳۴۵۶۷۸۹])&#039;, &#039;g&#039;), &#039;$1٫&#039;)&lt;br /&gt;
	};&lt;br /&gt;
	function wikiTextDigitsToPersian(text) {&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			toEnglishDigits,&lt;br /&gt;
			[patterns.argumentsBlacklist, patterns.fileNames, patterns.fileParameter]);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.toPersianDigits,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.url, patterns.argumentsBlacklist, patterns.mapFrameTag, patterns.mathTag, patterns.imagePixelSize, patterns.fileNames, patterns.ref,&lt;br /&gt;
			patterns.sourceTag, patterns.arabicDigitsEnglishContext, patterns.signatures, patterns.htmlEntity, patterns.diffLink,&lt;br /&gt;
			patterns.htmlAttributes, patterns.fileParameter, patterns.templateParameterName, patterns.ipSign,&lt;br /&gt;
			patterns.parenthesesAfterDigits, patterns.otherLanguagesInline, patterns.preTag, patterns.isbn, patterns.englishDate,&lt;br /&gt;
			patterns.parameter, patterns.color, patterns.templateEnglishName, patterns.linksOnEnglishContext, patterns.citation, patterns.refname,&lt;br /&gt;
			patterns.LtRTagEnclosed, patterns.boxVar, patterns.mediawikiFunctions, patterns.graphTemplate]&lt;br /&gt;
		);&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			decimalPointToPersian,&lt;br /&gt;
			[patterns.catgories, patterns.graphTemplate]&lt;br /&gt;
		);&lt;br /&gt;
		return text&lt;br /&gt;
			//  thousands&#039; separator&lt;br /&gt;
			.replace(/([۱۲۳۴۵۶۷۸۹۰]),([۱۲۳۴۵۶۷۸۹۰])/g, &#039;$1٬$2&#039;)&lt;br /&gt;
			.replace(/([۱۲۳۴۵۶۷۸۹۰])( |)\u0652/g, &#039;$1°&#039;)//تبدیل نویسه سکون+عدد فارسی به نویسه درجه و عدد فارسی&lt;br /&gt;
			.replace(/\u0652( |)([۱۲۳۴۵۶۷۸۹۰])/g, &#039;°$2&#039;)&lt;br /&gt;
			//فاصله بین نویسه درجه و حروف الفبای فارسی به جز عدد فارسی&lt;br /&gt;
			.replace(/([\u0621-\u064A\u0653-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2])°/g, &#039;$1 °&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function dictationReplace(x, y, extensions, text) {&lt;br /&gt;
		return text.replace(&lt;br /&gt;
			new RegExp(&lt;br /&gt;
				&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;])(\\s|\u200c|_|)(&#039; + x + &#039;)(\\s|_)(&#039; + y + &#039;)(\\s|\u200c|_|)(&#039; +&lt;br /&gt;
				extensions + &#039;)($|[^&#039; + persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
				&#039;g&#039;&lt;br /&gt;
			),&lt;br /&gt;
			&#039;$1$2$3\u200c$5$6$7$8&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// it has dependency to MediaWiki:Gadget-Extra-Editbuttons-Dictionary.js&lt;br /&gt;
	function dictation(text) {&lt;br /&gt;
		var i,&lt;br /&gt;
			dictionary = persianToolsDictionary,&lt;br /&gt;
			NASB = &#039;\u064b&#039;, // ًـ&lt;br /&gt;
			ZAMM = &#039;\u064c&#039;; // ُـ&lt;br /&gt;
		for (i in dictionary.complexes) {&lt;br /&gt;
			if (dictionary.complexes.hasOwnProperty(i)) {&lt;br /&gt;
				text = dictationReplace(&lt;br /&gt;
					i,&lt;br /&gt;
					dictionary.complexes[i],&lt;br /&gt;
					&#039;ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
					text&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// for last name&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.personNames,&lt;br /&gt;
			&#039;ی|یی|زاده|نیا|گان|فر|نژاد|یان|ی\u200cها|یها&#039;,&lt;br /&gt;
			&#039;ی|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for &#039;آباد&#039;s&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.personNames + &#039;|&#039; + dictionary.addToAbad,&lt;br /&gt;
			&#039;آباد&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یان|ها|های|یی|هایی|ی\u200cها|یها|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for first names&lt;br /&gt;
		for (i in dictionary.firstNameComplex) {&lt;br /&gt;
			if (dictionary.firstNameComplex.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&lt;br /&gt;
						&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;]|\\s|_)(&#039; + i + &#039;)(\\s|_)(&#039; +&lt;br /&gt;
						dictionary.firstNameComplex[i] + &#039;)(\\s|_)($|[^&#039; + persianTools.persianCharacters + &#039;]|[^&#039; +&lt;br /&gt;
						persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
						&#039;g&#039;&lt;br /&gt;
					),&lt;br /&gt;
					&#039;$1$2\u200c$4$5$6&#039;&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// for colors&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.colorsNames,&lt;br /&gt;
			&#039;فام|گون&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|ی\u200cها|یها|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// for numbers&lt;br /&gt;
		text = dictationReplace(&lt;br /&gt;
			dictionary.persianNumbers,&lt;br /&gt;
			&#039;گانه|ماهه&#039;,&lt;br /&gt;
			&#039;زاده|نیا|پور|گان|فر|نژاد|ی|یی|ها|های|هایی|هایم|هایت|هایش|هایمان|هایتان|هایشان|&#039;,&lt;br /&gt;
			text&lt;br /&gt;
		);&lt;br /&gt;
		// wrong dictation&lt;br /&gt;
		for (i in dictionary.forReplace) {&lt;br /&gt;
			if (dictionary.forReplace.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(&lt;br /&gt;
					new RegExp(&lt;br /&gt;
						&#039;(^|[^&#039; + persianTools.persianCharacters + &#039;])(\\s|\\(|\u200c|_|)(&#039; + i + &#039;)(\\s|\\)|\u200c|_|)($|[^&#039; +&lt;br /&gt;
						persianTools.persianCharacters + &#039;])&#039;,&lt;br /&gt;
						&#039;g&#039;&lt;br /&gt;
					),&lt;br /&gt;
					&#039;$1$2&#039; + dictionary.forReplace[i] + &#039;$4$5&#039;&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var preword = &amp;quot;(^|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot;;&lt;br /&gt;
		// کلماتی که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.wordsWithA + &amp;quot;)(ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\]|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\&#039;|\\!|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
		// بن مضارع که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(&amp;quot;(^|\u200c|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.PresentVerbsWithA + &amp;quot;)(م|ی|د|یم|ید|ند)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// بن ماضی که آ دارند&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(&amp;quot;(^|\u200c|\\s|_|«|»|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.PastVerbsWithA + &amp;quot;)(م|ی|یم|ید|ند|ه|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;آ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// همزه ضم&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.HamzehZam + &amp;quot;)(‌ها|ها|ین|ان|ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/وء/, &#039;ؤ&#039;).replace(/و/i, &#039;ؤ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
		//همزه نصب&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.HamzehNasb + &amp;quot;)(ی|ئی|یی|ٔ|)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;أ&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		//همزه وسط کلمه&lt;br /&gt;
		for (i in dictionary.HamzehAtInside) {&lt;br /&gt;
			text = text.replace(new RegExp(&lt;br /&gt;
				preword + i + &#039;)(| )(&#039; + dictionary.HamzehAtInside[i] + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;,&lt;br /&gt;
				&#039;g&#039;&lt;br /&gt;
			), &#039;$1$2ء$4&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// در مورد افزودن یا حذف همزهٔ پایانی اجماعی وجود ندارد.&lt;br /&gt;
		/* text = text.replace(new RegExp(preword + dictionary.HamzehAtEnd + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&#039;$1$2ء&#039;); */&lt;br /&gt;
&lt;br /&gt;
		//الف مقصوره&lt;br /&gt;
		text = text.replace(&lt;br /&gt;
			new RegExp(preword + dictionary.AlefMaghsooreh + &amp;quot;)(?= |«|»|\\.|،|_|\\s|\\]|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;),&lt;br /&gt;
			function (x) { return x.replace(/ا/i, &#039;ی&#039;); } // &#039;i&#039; is just to trick bidi algorithm on code view&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// صفت+تر&lt;br /&gt;
		text = text.replace(new RegExp(&amp;quot;(^|\\s|_|«|»|\\]|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.adjective + &amp;quot;)( |_)تر(?= |«|»|\\.|\\[|\\]|،|_|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;), &#039;$1$2\u200cتر&#039;);&lt;br /&gt;
&lt;br /&gt;
		// اسامی رنگ‌ها (به‌عنوان صفت)+تر&lt;br /&gt;
		text = text.replace(new RegExp(&amp;quot;(^|\\s|_|«|»|\\]|\\[|\\(|\\&amp;lt;|\\&amp;gt;|\\&#039;)(&amp;quot; + dictionary.colorsNames + &amp;quot;)( |_)تر(?= |«|»|\\.|\\[|\\]|،|_|\\s|\\:|\\)|\\&amp;lt;|\\&amp;gt;|؟|\\!|\\&#039;|$)&amp;quot;, &#039;g&#039;), &#039;$1$2\u200cتر&#039;);&lt;br /&gt;
&lt;br /&gt;
		text = text.replace(/به دست\u200cآورد/g, &#039;به دست آورد&#039;); // Solving a bug!&lt;br /&gt;
		text = persianTools.normalizeZwnj(text);&lt;br /&gt;
		return text.replace(new RegExp(&amp;quot;(^|[؛\\s\\n\\.،«»\&#039;\\&amp;lt;\\&amp;gt;؟])(&amp;quot; + dictionary.needsNasb + &#039;)[&#039; + NASB + ZAMM + &#039;]?([؛؟\\s\\n\\.،«»\&#039;&amp;quot;\\&amp;lt;\\&amp;gt;]|$)&#039;, &#039;g&#039;), function (match) {&lt;br /&gt;
			return match&lt;br /&gt;
				.replace(new RegExp(&#039;ا([\\s\\n\\.،«»؟؛&amp;quot;\&#039;\\&amp;gt;\\&amp;lt;&#039; + ZAMM + &#039;])&#039;, &#039;i&#039;), &#039;ا&#039; + NASB + &#039;$1&#039;)&lt;br /&gt;
				.replace(new RegExp(NASB + &#039;[&amp;quot;&#039; + NASB + ZAMM + &#039;]&#039;), NASB);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function wikiDictation(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			dictation,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag, patterns.insideQuote, patterns.argumentsBlacklist, patterns.articleTitleParts]&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
	function wikiApplyOrthography(text) {&lt;br /&gt;
		text = text //en:Wikipedia:HTML5&lt;br /&gt;
			//big&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){5})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){5})/g, &#039;&amp;lt;span style=&amp;quot;font-size: 56px;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){4})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){4})/g, &#039;&amp;lt;span style=&amp;quot;font-size: 38px;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){3})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){3})/g, &#039;{{خیلی بزرگ|$2}}&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){2})([^&amp;lt;]+)((?:\&amp;lt;\/big\&amp;gt;){2})/g, &#039;{{بزرگ|$2}}&#039;)&lt;br /&gt;
			.replace(/((?:\&amp;lt;big\&amp;gt;){1})([^&amp;lt;]+|[\s\S]+)((?:\&amp;lt;\/big\&amp;gt;){1})/g, &#039;{{درشت|$2}}&#039;)&lt;br /&gt;
			//center&lt;br /&gt;
			.replace(/&amp;lt;center&amp;gt;&amp;lt;gallery&amp;gt;([\S\s]+?)\&amp;lt;\/gallery&amp;gt;&amp;lt;\/center&amp;gt;/g, &#039;&amp;lt;gallery class=&amp;quot;center&amp;quot;&amp;gt;$1&amp;lt;/gallery&amp;gt;&#039;)&lt;br /&gt;
			//.replace(/&amp;lt;center&amp;gt;([\S\s]+?)&amp;lt;\/center&amp;gt;/g,&#039;{{وسط|$1}}&#039;)&lt;br /&gt;
			//empty tag&lt;br /&gt;
			.replace(/&amp;lt;span style=&amp;quot;font-size: [^&amp;gt;]+&amp;quot;&amp;gt;&amp;lt;\/span&amp;gt;/g, &#039;&#039;)&lt;br /&gt;
			.replace(/{{(?:درشت|خیلی بزرگ|بزرگ|وسط)\|}}/g, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		//حذف برچسب‌های خالی نرم‌افزار مدیاویکی&lt;br /&gt;
		var tags = [&#039;math&#039;, &#039;div&#039;, &#039;grammarly\\-btn&#039;, &#039;code&#039;, &#039;nowiki&#039;, &#039;pre&#039;, &#039;syntaxhighlight&#039;, &#039;source&#039;, &#039;s&#039;, &#039;noinclude&#039;, &#039;includeonly&#039;, &#039;big&#039;, &#039;small&#039;, &#039;gallery&#039;];// has bug for sub , sup [[Special:Diff/19450140/19490903]]&lt;br /&gt;
		text = replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				for (var i = 0; i &amp;lt; tags.length; ++i) {&lt;br /&gt;
					for (var b = 0; b &amp;lt; 5; ++b) {//خیلی از برچسب‌های خالی تو در تو هستند مانند [[Special:PermaLink/19223877]]&lt;br /&gt;
						text = text.replace(new RegExp(&#039;\&amp;lt;&#039; + tags[i] + &#039;[^\&amp;gt;]*\&amp;gt;(\\n|\\s|\u200c)*?\&amp;lt;\\/&#039; + tags[i] + &#039;\&amp;gt;&#039;, &#039;g&#039;), &#039;&#039;);&lt;br /&gt;
					}&lt;br /&gt;
					// remove the tags if they occurred multiple times consequently&lt;br /&gt;
					if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0 || mw.config.get(&#039;wgNamespaceNumber&#039;) === 4) {&lt;br /&gt;
						text = text.replace(new RegExp(&#039;(\&amp;lt;&#039; + tags[i] + &#039;\&amp;gt;){2,}&#039;, &#039;g&#039;), &#039;$1&#039;)&lt;br /&gt;
							.replace(new RegExp(&#039;(\&amp;lt;\\/&#039; + tags[i] + &#039;\&amp;gt;){2,}&#039;, &#039;g&#039;), &#039;$1&#039;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
					text = text.replace(/\&amp;lt;ref\&amp;gt;[\s\n]*\&amp;lt;\/ref\&amp;gt;/g, &#039;&#039;).replace(/\&amp;lt;ref\&amp;gt;[\s\n]*\&amp;lt;ref\&amp;gt;/g, &#039;&amp;lt;ref&amp;gt;&#039;).replace(/\&amp;lt;\/ref\&amp;gt;[\s\n]*\&amp;lt;\/ref\&amp;gt;/g, &#039;&amp;lt;/ref&amp;gt;&#039;).replace(/\&amp;lt;ref\/\&amp;gt;/g, &#039;&amp;lt;/ref&amp;gt;&#039;);&lt;br /&gt;
				};&lt;br /&gt;
				return text&lt;br /&gt;
			},&lt;br /&gt;
			[patterns.insideHtmlComment]&lt;br /&gt;
		);&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.applyOrthography,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag, patterns.wikilinkTargets, patterns.rfd]&lt;br /&gt;
		).replace(patterns.galleryTag, function (gallery) {&lt;br /&gt;
			// apply `applyOrthography` on gallery descriptions separately&lt;br /&gt;
			return gallery.replace(/^([^\|]*?\|)(.*)$/mg, function (x, y, z) {&lt;br /&gt;
				return y + persianTools.applyOrthography(z);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// probably should be exactly same above but for applyZwnj&lt;br /&gt;
	function wikiApplyZwnj(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			persianTools.applyZwnj,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.signatures, patterns.url, patterns.galleryTag]&lt;br /&gt;
		).replace(patterns.galleryTag, function (gallery) {&lt;br /&gt;
			// apply `applyOrthography` on gallery descriptions separatly&lt;br /&gt;
			return gallery.replace(/^([^\|]*?\|)(.*)$/mg, function (x, y, z) {&lt;br /&gt;
				return y + persianTools.applyZwnj(z);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function replaceEnMonth(text) {&lt;br /&gt;
		var enMonth = {&lt;br /&gt;
			&#039;آگست&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;آگوست&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;جولای&#039;: &#039;ژوئیه&#039;,&lt;br /&gt;
			&#039;مارچ&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;آپریل&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;فوریوری&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;january&#039;: &#039;ژانویه&#039;,&lt;br /&gt;
			&#039;jan&#039;: &#039;ژانویه&#039;,&lt;br /&gt;
			&#039;february&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;feb&#039;: &#039;فوریه&#039;,&lt;br /&gt;
			&#039;march&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;mar&#039;: &#039;مارس&#039;,&lt;br /&gt;
			&#039;april&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;apr&#039;: &#039;آوریل&#039;,&lt;br /&gt;
			&#039;may&#039;: &#039;مه&#039;,&lt;br /&gt;
			&#039;june&#039;: &#039;ژوئن&#039;,&lt;br /&gt;
			&#039;jun&#039;: &#039;ژوئن&#039;,&lt;br /&gt;
			&#039;july&#039;: &#039;ژوئیه&#039;,&lt;br /&gt;
			&#039;august&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;aug&#039;: &#039;اوت&#039;,&lt;br /&gt;
			&#039;september&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;sept&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;sep&#039;: &#039;سپتامبر&#039;,&lt;br /&gt;
			&#039;october&#039;: &#039;اکتبر&#039;,&lt;br /&gt;
			&#039;oct&#039;: &#039;اکتبر&#039;,&lt;br /&gt;
			&#039;november&#039;: &#039;نوامبر&#039;,&lt;br /&gt;
			&#039;nov&#039;: &#039;نوامبر&#039;,&lt;br /&gt;
			&#039;december&#039;: &#039;دسامبر&#039;,&lt;br /&gt;
			&#039;dec&#039;: &#039;دسامبر&#039;&lt;br /&gt;
		};&lt;br /&gt;
		for (var i in enMonth) {&lt;br /&gt;
			var text_new = text.replace(new RegExp(i, &#039;ig&#039;), enMonth[i])&lt;br /&gt;
			if (text_new != text) {&lt;br /&gt;
				return text_new&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
	};&lt;br /&gt;
	function autoFormatCleanDatesException(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			autoFormatCleanDates,&lt;br /&gt;
			[patterns.globalExceptionTag, patterns.fileNames, patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.citation, patterns.argumentsBlacklist, patterns.ref]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function wikitranslateEnMonth(text) {&lt;br /&gt;
		text = autoFormatCleanDatesException(text)&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function translateEnMonth(text) {&lt;br /&gt;
				var enMonthRegex = &#039;(آگست|آگوست|جولای|مارچ|آپریل|january|jan|february|feb|march|mar|april|apr|may|jun|june|july|august|aug|sep|sept|september|oct|october|nov|november|december|dec)&#039;;&lt;br /&gt;
				return text.replace(new RegExp(&#039;([^a-zA-Z])(\^|\\||\\s|\\=|\\n|\\(|«|\\:)&#039; + enMonthRegex + &#039; (\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2})\\, (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|\$|\\)|\\}|»)([\^a\-zA\-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
					function (x) {&lt;br /&gt;
						x = x.replace(new RegExp(&#039;([\^a\-zA\-Z])(\^|\\||\\s|\\=|\\n|\\(|«|\\:)&#039; + enMonthRegex + &#039; (\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2})\\, (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|\$|\\)|\\}||»)([^a-zA-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
							&#039;$1$2$4 $3 $5$6$7&#039;)&lt;br /&gt;
						x = persianTools.toPersianDigits(x);&lt;br /&gt;
						x = replaceEnMonth(x);&lt;br /&gt;
						return x;&lt;br /&gt;
					})&lt;br /&gt;
					.replace(new RegExp(&#039;([\^a\-zA\-Z])(\^|\\||\\s|\\=|\\n|\\(|«)((\\d{1,2}|[۱۲۳۴۵۶۷۸۹۰]{1,2}) |)&#039; + enMonthRegex + &#039; (\\d{3,4}|[۱۲۳۴۵۶۷۸۹۰]{3,4})(\\||\\s|\\n|$|\\)|\\}|»|\\:)([\^a\-zA\-Z])&#039;, &#039;ig&#039;),&lt;br /&gt;
						function (x) {&lt;br /&gt;
							x = persianTools.toPersianDigits(x);&lt;br /&gt;
							x = replaceEnMonth(x);&lt;br /&gt;
							return x;&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.ref, patterns.fileParameter, patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.citation, patterns.argumentsBlacklist]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var arabicDigits = &#039;0123456789&#039;, persianDigits = &#039;۰۱۲۳۴۵۶۷۸۹&#039;, arabicIndicDigits = &#039;٠١٢٣٤٥٦٧٨٩&#039;;&lt;br /&gt;
	function robustToEnglishDigits(text) {&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
			text = text.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function toEnglishDigits(text) {&lt;br /&gt;
		text = text.replace(/[a-zA-Z]([\_\s\:\.\,\;\]\[\&amp;quot;\&#039;\)\(\}\{\/\\ ]+|)([۱۲۳۴۵۶۷۸۹۰٪\.٫\-\—\–°÷×\+\,\s\_\:،»«؛]+)([\_\s\:\.\,\;\]\[\&amp;quot;\&#039;\)\(\}\{\/\\\&amp;lt;\&amp;gt; ]+|)([a-zA-Z\&amp;gt;]|$)/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x.replace(/،/g, &#039;,&#039;).replace(/»/g, &#039;&amp;quot;&#039;).replace(/«/g, &#039;&amp;quot;&#039;).replace(/؛/g, &#039;;&#039;);&lt;br /&gt;
		});&lt;br /&gt;
		// bug [[Special:Diff/17760890/17760898]]&lt;br /&gt;
		text = text.replace(/([a-zA-Z][۱۲۳۴۵۶۷۸۹۰]+) *\=/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		// ISBN, ISSN and PMID&#039;s numbers should in english&lt;br /&gt;
		text = text.replace(/\b(ISBN|ISSN|PMID|PubMed) *:? *([۱۲۳۴۵۶۷۸۹۰0-9–—−ـ_\-]+)([^۱۲۳۴۵۶۷۸۹۰0-9–—−ـ_\-]|$)/gi, function (x) {&lt;br /&gt;
			x = x.replace(/[–—−ـ_\-]+/g, &#039;-&#039;)&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			x = x.replace(/\b(ISBN|ISSN|PMID|PubMed) *:? *([۱۲۳۴۵۶۷۸۹۰\-0-9]+)([^۱۲۳۴۵۶۷۸۹۰\-0-9]|$)/gi, &#039;$1 $2$3&#039;)&lt;br /&gt;
			x = x.replace(&#039;PubMed&#039;, &#039;PMID&#039;)&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		text = text.replace(/ISBN \-note/g, &#039;ISBN-note&#039;);&lt;br /&gt;
		// تبدیل عددهای فارسی در عدد ترتیبی انگلیسی&lt;br /&gt;
		text = text.replace(/(?:^|[&amp;quot;\&#039;\s_«\(\[\{])([۱۲۳۴۵۶۷۸۹۰]+)(st|nd|rd|th)[\s_\.,»&amp;quot;\&#039;\)\]\}]/g, function (x) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
				x = x.replace(new RegExp(&#039;[&#039; + persianDigits[i] + arabicIndicDigits[i] + &#039;]&#039;, &#039;g&#039;), arabicDigits[i]);&lt;br /&gt;
			}&lt;br /&gt;
			return x;&lt;br /&gt;
		});&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + arabicDigits + &#039;]) ?٪&#039;, &#039;g&#039;), &#039;$1%&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + arabicDigits + &#039;])٫(?=[&#039; + arabicDigits + &#039;])&#039;, &#039;g&#039;), &#039;$1.&#039;) // English decimal separator&lt;br /&gt;
	}&lt;br /&gt;
	function cleanTemplateBracesFromArticle(text, alwaysRun) { // like [[Special:Diff/18828723]]&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 0 &amp;amp;&amp;amp; !alwaysRun) {&lt;br /&gt;
			return text;&lt;br /&gt;
		}&lt;br /&gt;
		var i = 0&lt;br /&gt;
		for (i = 0; i &amp;lt;= 5; i = i + 1) {&lt;br /&gt;
			text = text.replace(/\{\{\{[^\|\}]+\|([^\}]+)\}\}\}/g, &#039;$1&#039;)&lt;br /&gt;
				.replace(/\{\{\{[^\|\}]+\| *\}\}\}/g, &#039;&#039;)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return text.replace(/\{\{\#(?!invoke)/ig, &#039;{{جا:#&#039;)&lt;br /&gt;
			.replace(/\{\{ *(PAGENAME|FULLPAGENAMEE|SITENAME|NAMESPACE) *\}\}/g, &#039;{{جا:$1}}&#039;)&lt;br /&gt;
			.replace(&#039;{{ترتیب‌پیش‌فرض:}}&#039;, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	function decodeHTMLSymbolEntitiesCodes(text) {&lt;br /&gt;
		//&amp;amp;copy; &amp;gt; ©&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function decodeEntitiesCodes(text) {&lt;br /&gt;
				if(!text) return &#039;&#039;;&lt;br /&gt;
				for (var i in htmlEntityCodes) {&lt;br /&gt;
					var entityInput = i;&lt;br /&gt;
					var entityoutput = htmlEntityCodes[i];&lt;br /&gt;
					text = text.replace(new RegExp(entityInput, &#039;g&#039;), entityoutput);&lt;br /&gt;
				}&lt;br /&gt;
				return text;&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.ref, patterns.fileParameter,&lt;br /&gt;
			patterns.galleryTag, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName,&lt;br /&gt;
			patterns.citation, patterns.url]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function removeWikiSigne(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			function (text) {&lt;br /&gt;
				text = text.replace(/\[\[([^\|\]]+)\|([^\]]+)\]\]/g, &#039;$2&#039;);&lt;br /&gt;
				text = text.replace(/\[\[([^\|\]]+)\]\]/g, &#039;$1&#039;);&lt;br /&gt;
				return text;&lt;br /&gt;
			}, [patterns.globalExceptionTag, patterns.fileNames, patterns.fileParameter,&lt;br /&gt;
			patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag, patterns.templateWithEnglishName, patterns.nowikiTag, patterns.preTag,&lt;br /&gt;
			patterns.insideHtmlComment]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function autoEdHTMLtoWikitextWikiTools(text) {&lt;br /&gt;
		return replaceExcept(&lt;br /&gt;
			text,&lt;br /&gt;
			autoEd.autoEdHTMLtoWikitext,&lt;br /&gt;
			[patterns.fileParameter, patterns.mapFrameTag, patterns.mathTag, patterns.sourceTag]&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	function superTool(text) {&lt;br /&gt;
		text = decodeHTMLSymbolEntitiesCodes(text);&lt;br /&gt;
		text = cleanTemplateBracesFromArticle(text);&lt;br /&gt;
		text = persianWikiTools.wikiConvertToPersianCharacters(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyZwnj(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyOrthography(text);&lt;br /&gt;
		text = persianWikiTools.wikitranslateEnMonth(text);&lt;br /&gt;
		if (mw.config.get(&#039;wgNamespaceNumber&#039;) !== 10) {&lt;br /&gt;
			text = persianWikiTools.wikiTextDigitsToPersian(text);&lt;br /&gt;
		}&lt;br /&gt;
		text = persianWikiTools.wikiUrlMinifier(text);&lt;br /&gt;
		text = persianWikiTools.wikiDictation(text);&lt;br /&gt;
		text = persianWikiTools.wikiPunctuation(text);&lt;br /&gt;
		text = persianWikiTools.wikiSubsection(text);&lt;br /&gt;
		text = persianWikiTools.SubSectionLeveling(text)&lt;br /&gt;
		//ابزارهای بیشتر برگرفته از ویکی‌پدیای انگلیسی [[Mediawiki:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
		text = autoEd.autoEdISBN(text);&lt;br /&gt;
		text = autoEd.autoEdWhitespace(text);&lt;br /&gt;
		text = autoEdHTMLtoWikitextWikiTools(text);&lt;br /&gt;
		text = autoEd.autoEdHeadlines(text);&lt;br /&gt;
		text = autoEd.autoEdTablestoWikitext(text);&lt;br /&gt;
		text = autoEd.autoEdExtraBreaks(text);&lt;br /&gt;
		text = persianWikiTools.addColumnToRefTemplate(text);&lt;br /&gt;
		text = persianWikiTools.removeCheckDict(text);&lt;br /&gt;
		text = persianWikiTools.sortCategories(text, mw.config.get(&#039;wgPageName&#039;).replace(/_/g, &#039; &#039;));&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function superToolMove(text) {&lt;br /&gt;
		text = &#039; &#039; + text + &#039; &#039;; // بعضی از کدها اگر فاصله در انتها یا اول نباشد عمل نمی‌کنند مانند افزودن تنوین به کلمه بعدا&lt;br /&gt;
		text = persianWikiTools.wikiConvertToPersianCharacters(text);&lt;br /&gt;
		text = persianTools.applyZwnj(text);&lt;br /&gt;
		text = persianWikiTools.wikiApplyOrthography(text);&lt;br /&gt;
		text = persianWikiTools.wikiTextDigitsToPersian(text);&lt;br /&gt;
		text = persianWikiTools.wikiUrlMinifier(text);&lt;br /&gt;
		text = persianWikiTools.wikiDictation(text);&lt;br /&gt;
		text = persianWikiTools.wikiPunctuation(text);&lt;br /&gt;
		return text.trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Puts the selceted text (trims spaces from start and end) in bdi tags&lt;br /&gt;
	// does not put the whole content in tags if no text is selected&lt;br /&gt;
	function putSelectionInBDI(text) {&lt;br /&gt;
	    // if no text is selected, don&#039;t put the whole content inside the tags&lt;br /&gt;
	    // can&#039;t return nothing because applyOnSelection() expects some text&lt;br /&gt;
	    // and throws an error while no text is provided&lt;br /&gt;
	    if (text == $(&#039;#wpTextbox1&#039;).val()) {&lt;br /&gt;
	        return text;&lt;br /&gt;
	    } else {&lt;br /&gt;
	        // regExp to trim space from begining and end of the selected text,&lt;br /&gt;
	        // and save them to be placed outside of tags&lt;br /&gt;
	        var regExp = /(^\s*)|(\s*$)/gm;&lt;br /&gt;
	        var startEndSpaces = text.match(regExp);&lt;br /&gt;
	        // place selected spaces outside of tags&lt;br /&gt;
	        // and remove them from the text inside&lt;br /&gt;
	        var outText = startEndSpaces[0] + &#039;&amp;lt;bdi&amp;gt;&#039; + text.replace(regExp, &#039;&#039;) + &#039;&amp;lt;/bdi&amp;gt;&#039; +  startEndSpaces[1]; &lt;br /&gt;
	        return outText;&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		removeWikiSigne: removeWikiSigne,&lt;br /&gt;
		superTool: superTool,&lt;br /&gt;
		superToolMove: superToolMove,&lt;br /&gt;
		dictation: dictation,&lt;br /&gt;
		wikiApplyOrthography: wikiApplyOrthography,&lt;br /&gt;
		wikiApplyZwnj: wikiApplyZwnj,&lt;br /&gt;
		wikiConvertToPersianCharacters: wikiConvertToPersianCharacters,&lt;br /&gt;
		wikiDictation: wikiDictation,&lt;br /&gt;
		wikiPunctuation: wikiPunctuation,&lt;br /&gt;
		wikiSubsection: wikiSubsection,&lt;br /&gt;
		SubSectionLeveling: SubSectionLeveling,&lt;br /&gt;
		wikiUrlMinifier: wikiUrlMinifier,&lt;br /&gt;
		wikiTextDigitsToPersian: wikiTextDigitsToPersian,&lt;br /&gt;
		wikitranslateEnMonth: wikitranslateEnMonth,&lt;br /&gt;
		addColumnToRefTemplate: addColumnToRefTemplate,&lt;br /&gt;
		fixBadLinks: fixBadLinks,&lt;br /&gt;
		robustToEnglishDigits: robustToEnglishDigits,&lt;br /&gt;
		toEnglishDigits: toEnglishDigits,&lt;br /&gt;
		cleanTemplateBracesFromArticle: cleanTemplateBracesFromArticle,&lt;br /&gt;
		removeCheckDict: removeCheckDict,&lt;br /&gt;
		sortCategories: sortCategories,&lt;br /&gt;
		putSelectionInBDI : putSelectionInBDI&lt;br /&gt;
	};&lt;br /&gt;
}());&lt;br /&gt;
if (typeof window !== &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
	window.persianWikiTools = persianWikiTools;&lt;br /&gt;
}&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persiantools.js&amp;diff=992</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons-persiantools.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons-persiantools.js&amp;diff=992"/>
		<updated>2026-08-24T10:51:26Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DO NOT REMOVE THIS LINE EVER&lt;br /&gt;
/**&lt;br /&gt;
 * Persian text style improvement tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 */&lt;br /&gt;
var persianTools = (function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
	&lt;br /&gt;
	var persianGlyphs, persianDigits, arabicIndicDigits, arabicDigits,&lt;br /&gt;
		vowels, persianCharacters, persianCharactersNoVowels, persianPastVerbs,&lt;br /&gt;
		persianPresentVerbs, persianComplexPastVerbs, persianComplexPresentVerbs, similarPersianCharacters, hamza;&lt;br /&gt;
&lt;br /&gt;
	arabicDigits = &#039;0123456789&#039;;&lt;br /&gt;
	arabicIndicDigits = &#039;٠١٢٣٤٥٦٧٨٩&#039;;&lt;br /&gt;
	//نویسه\u200cهای غیرفارسی ي-ك-ە و موارد مشابه پیش از تبدیل به نویسهٔ فارسی در سایر ریجکس\u200cها باید به عنوان کاراکتر فارسی شناخته شوند.&lt;br /&gt;
	similarPersianCharacters = &#039;\u0643\uFB91\uFB90\uFB8F\uFB8E\uFEDC\uFEDB\uFEDA\uFED9\u0649\uFEEF\u064A\u06C1\u06D5\u06BE\uFEF0-\uFEF4&#039;;&lt;br /&gt;
	vowels = &#039;\u064B-\u0650\u0652\u0670&#039;;&lt;br /&gt;
	persianCharacters = &#039;\u0621-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2&#039; + similarPersianCharacters;&lt;br /&gt;
	persianCharactersNoVowels = &#039;\u0621-\u064A\u0653-\u0655\u067E\u0686\u0698\u06AF\u06A9\u0643\u06AA\uFED9\uFEDA\u06CC\uFEF1\uFEF2&#039; + similarPersianCharacters;&lt;br /&gt;
	persianDigits = &#039;۰۱۲۳۴۵۶۷۸۹&#039;;&lt;br /&gt;
	hamza = &#039;\u0654&#039;;&lt;br /&gt;
&lt;br /&gt;
	function normalizeZwnj(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			// Replace LRM، RLM characters with ZWNJ and it will remove unneeded ZWNJ at next lines&lt;br /&gt;
			// .replace(/[\u180E\u2028\u2029\u202A\u202B\u202C\u202D\u202E\u200F¬]/g, &#039;\u200c&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;] *)[\u200F\u200E]+( *[&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;$1\u200c$2&#039;)&lt;br /&gt;
			// Remove more than a ZWNJs&lt;br /&gt;
			.replace(/([\u200B-\u200D\uFEFF\u200E\u200F]){2,}/g, &#039;$1&#039;)&lt;br /&gt;
			// Convert ¬ to zwnj in Persian context&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])¬(?=[&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;$1\u200c&#039;)&lt;br /&gt;
			// Clean ZWNJs after characters that don&#039;t conncet to the next letter&lt;br /&gt;
			.replace(/([۰-۹0-9إأةؤورزژاآدذ،؛,\:«»\\\/@#$٪×\*\(\)ـ\-=\|ء])\u200c/g, &#039;$1&#039;)&lt;br /&gt;
			// Clean ZWNJs before and after English characters&lt;br /&gt;
			.replace(/[\u200B-\u200D\uFEFF]([\w])/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/([\w])[\u200B-\u200D\uFEFF]/g, &#039;$1&#039;)&lt;br /&gt;
			// Clean ZWNJs before and after Persian characters&lt;br /&gt;
			.replace(new RegExp(&#039;\[\\u200b\-\\u200d\\uFEFF\]([&#039; + vowels + arabicIndicDigits + persianDigits + hamza + &#039;])&#039;,&#039;g&#039;), &#039;$1&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039;+arabicIndicDigits+&#039;])\[\\u200b\-\\u200d\\uFEFF\]&#039;,&#039;g&#039;), &#039;$1&#039;)&lt;br /&gt;
			// Clean ZWNJs after and before punctuation&lt;br /&gt;
			.replace(/[\u200B\u200C\uFEFF]([ء\n\s\[\]\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\\|])/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/([\n\s\[\.،«»\:\(\)\؛\؟\?\;\$\!\@\-\=\+\\\|])[\u200B-\u200D\uFEFF]/g, &#039;$1&#039;)&lt;br /&gt;
			// Clean ZWNJs before brackets which have space after/before them&lt;br /&gt;
			.replace(/[\u200B-\u200D\uFEFF](\]\][\s\n])/g, &#039;$1&#039;)&lt;br /&gt;
			.replace(/([\n\s]\[\[)[\u200B-\u200D\uFEFF]/g, &#039;$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	persianGlyphs = {&lt;br /&gt;
		// these two are for visually available ZWNJ #visualZwnj&lt;br /&gt;
		&#039;\u200cه&#039;: &#039;ﻫ&#039;,&lt;br /&gt;
		&#039;ی\u200c&#039;: &#039;ﻰﻲ&#039;,&lt;br /&gt;
		&#039;أ&#039;: &#039;ﺄﺃﺃ&#039;,&lt;br /&gt;
		&#039;آ&#039;: &#039;ﺁﺁﺂ&#039;,&lt;br /&gt;
		&#039;إ&#039;: &#039;ﺇﺈﺇ&#039;,&lt;br /&gt;
		&#039;ا&#039;: &#039;ﺍﺎ&#039;,&lt;br /&gt;
		&#039;ب&#039;: &#039;ﺏﺐﺑﺒ&#039;,&lt;br /&gt;
		&#039;پ&#039;: &#039;ﭖﭗﭘﭙ&#039;,&lt;br /&gt;
		&#039;ت&#039;: &#039;ﺕﺖﺗﺘ&#039;,&lt;br /&gt;
		&#039;ث&#039;: &#039;ﺙﺚﺛﺜ&#039;,&lt;br /&gt;
		&#039;ج&#039;: &#039;ﺝﺞﺟﺠ&#039;,&lt;br /&gt;
		&#039;چ&#039;: &#039;ﭺﭻﭼﭽ&#039;,&lt;br /&gt;
		&#039;ح&#039;: &#039;ﺡﺢﺣﺤ&#039;,&lt;br /&gt;
		&#039;خ&#039;: &#039;ﺥﺦﺧﺨ&#039;,&lt;br /&gt;
		&#039;د&#039;: &#039;ﺩﺪ&#039;,&lt;br /&gt;
		&#039;ذ&#039;: &#039;ﺫﺬ&#039;,&lt;br /&gt;
		&#039;ر&#039;: &#039;ﺭﺮ&#039;,&lt;br /&gt;
		&#039;ز&#039;: &#039;ﺯﺰ&#039;,&lt;br /&gt;
		&#039;ژ&#039;: &#039;ﮊﮋ&#039;,&lt;br /&gt;
		&#039;س&#039;: &#039;ﺱﺲﺳﺴ&#039;,&lt;br /&gt;
		&#039;ش&#039;: &#039;ﺵﺶﺷﺸ&#039;,&lt;br /&gt;
		&#039;ص&#039;: &#039;ﺹﺺﺻﺼ&#039;,&lt;br /&gt;
		&#039;ض&#039;: &#039;ﺽﺾﺿﻀ&#039;,&lt;br /&gt;
		&#039;ط&#039;: &#039;ﻁﻂﻃﻄ&#039;,&lt;br /&gt;
		&#039;ظ&#039;: &#039;ﻅﻆﻇﻈ&#039;,&lt;br /&gt;
		&#039;ع&#039;: &#039;ﻉﻊﻋﻌ&#039;,&lt;br /&gt;
		&#039;غ&#039;: &#039;ﻍﻎﻏﻐ&#039;,&lt;br /&gt;
		&#039;ف&#039;: &#039;ﻑﻒﻓﻔ&#039;,&lt;br /&gt;
		&#039;ق&#039;: &#039;ﻕﻖﻗﻘ&#039;,&lt;br /&gt;
		&#039;ک&#039;: &#039;ﮎﮏﮐﮑﻙﻚﻛﻜ&#039;,&lt;br /&gt;
		&#039;گ&#039;: &#039;ﮒﮓﮔﮕ&#039;,&lt;br /&gt;
		&#039;ل&#039;: &#039;ﻝﻞﻟﻠ&#039;,&lt;br /&gt;
		&#039;م&#039;: &#039;ﻡﻢﻣﻤ&#039;,&lt;br /&gt;
		&#039;ن&#039;: &#039;ﻥﻦﻧﻨ&#039;,&lt;br /&gt;
		&#039;ه&#039;: &#039;ﻩﻪﻫﻬ&#039;,&lt;br /&gt;
		&#039;هٔ&#039;: &#039;ﮤﮥ&#039;,&lt;br /&gt;
		&#039;و&#039;: &#039;ﻭﻮ&#039;,&lt;br /&gt;
		&#039;ؤ&#039;: &#039;ﺅﺅﺆ&#039;,&lt;br /&gt;
		&#039;ی&#039;: &#039;ﯼﯽﯾﯿﻯﻰﻱﻲﻳﻴ&#039;,&lt;br /&gt;
		&#039;ئ&#039;: &#039;ﺉﺊﺋﺌ&#039;,&lt;br /&gt;
		&#039;لا&#039;: &#039;ﻻﻼ&#039;,&lt;br /&gt;
		&#039;لإ&#039;: &#039;ﻹﻺ&#039;,&lt;br /&gt;
		&#039;لأ&#039;: &#039;ﻸﻷ&#039;,&lt;br /&gt;
		&#039;لآ&#039;: &#039;ﻵﻶ&#039;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	function toStandardPersianCharacters(text) {&lt;br /&gt;
		var i;&lt;br /&gt;
		for (i in persianGlyphs) {&lt;br /&gt;
			if (persianGlyphs.hasOwnProperty(i)) {&lt;br /&gt;
				text = text.replace(new RegExp(&#039;[&#039; + persianGlyphs[i] + &#039;]&#039;, &#039;g&#039;), i);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return normalizeZwnj(text) // needed because of #visualZwnj&lt;br /&gt;
			.replace(/ك/g, &#039;ک&#039;) // Arabic&lt;br /&gt;
			.replace(/ڪ/g, &#039;ک&#039;) // Urdu&lt;br /&gt;
			.replace(/ﻙ/g, &#039;ک&#039;) // Pushtu&lt;br /&gt;
			.replace(/ﻚ/g, &#039;ک&#039;) // Uyghur&lt;br /&gt;
			.replace(/ي/g, &#039;ی&#039;) // Arabic&lt;br /&gt;
			.replace(/ى/g, &#039;ی&#039;) // Urdu&lt;br /&gt;
			.replace(/ے/g, &#039;ی&#039;) // Urdu&lt;br /&gt;
			.replace(/ۍ/g, &#039;ی&#039;) // Pushtu&lt;br /&gt;
			.replace(/ې/g, &#039;ی&#039;) // Uyghur&lt;br /&gt;
			.replace(/ہ/g, &#039;ه&#039;) // Convert &amp;amp;#x06C1; to &amp;amp;#x0647; ہہہہ to ههه&lt;br /&gt;
			.replace(/ە/g, &#039;ه\u200c&#039;) // Kurdish&lt;br /&gt;
			.replace(/ھ/g, &#039;ه&#039;); // Kurdish&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function toPersianDigits(text) {&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		for (i = 0; i &amp;lt;= 9; i = i + 1) {&lt;br /&gt;
			text = text.replace(new RegExp(&#039;[&#039; + arabicIndicDigits[i] + arabicDigits[i] + &#039;]&#039;, &#039;g&#039;), persianDigits[i]);&lt;br /&gt;
		}&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianDigits + &#039;]) ?%&#039;, &#039;g&#039;), &#039;$1٪&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;٪([&#039; + persianDigits + &#039;]+(?:[.٬٫][&#039; + persianDigits + &#039;]*)*)&#039;, &#039;g&#039;), &#039;$1٪&#039;)&lt;br /&gt;
			//.replace(new RegExp(&#039;([&#039; + persianDigits + &#039;])\\.(?=[&#039; + persianDigits + &#039;])&#039;, &#039;g&#039;), &#039;$1٫&#039;) // persian decimal separator&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianDigits + &#039;])\\،(?=[&#039; + persianDigits + &#039;])&#039;, &#039;g&#039;), &#039;$1٬&#039;); // جایگزینی جداکننده هزاگان به جای ویرگول در میان اعداد&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function applyOrthography(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(/\r/g, &#039;&#039;)&lt;br /&gt;
			//تمیزکاری autoFormatter.js&lt;br /&gt;
			.replace( /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F\uFEFF\u00AD]+/g, &#039;&#039; )&lt;br /&gt;
			.replace(/[ \xA0\xAD\u1680\u180E\u2000-\u200D\u2028\u2029\u202F\u205F\u2060\u3000]+\n/g,&#039;\n&#039;)&lt;br /&gt;
			//تبدیل تب و فاصله نشکن اول خط به هیچ چون مدیاویکی آن را در نظر نمی‌گیرد&lt;br /&gt;
			.replace(/\n[\t\u00A0]+/g, &#039;\n&#039;)&lt;br /&gt;
			//تبدیل انواع فاصله‌ها به فاصله ساده&lt;br /&gt;
			.replace(/[\u0020\u0085\u00A0\u180E\u2000-\u200A\u202F\u205F\u3000]/g, &#039; &#039;)&lt;br /&gt;
			.replace(/[\u0085]/g, &#039;&#039;)&lt;br /&gt;
			//http://kb.mozillazine.org/Network.IDN.blacklist_chars&lt;br /&gt;
			.replace(/[\u01C3\uFE15]/g, &#039;!&#039;)&lt;br /&gt;
			.replace(/[\u0589\u05C3\uA789]/g, &#039;:&#039;)&lt;br /&gt;
			.replace(/[\u0338\u2044\u2215\u2571\u29F8\u3033\uFF0F]/g, &#039;/&#039;)&lt;br /&gt;
			.replace(/[\u05F4]/g, &#039;&amp;quot;&#039;)&lt;br /&gt;
			.replace(/[\u06D4\u0701\uFF0E\uFF61]/g, &#039;.&#039;)&lt;br /&gt;
			.replace(/\u3014/g, &#039;(&#039;)&lt;br /&gt;
			.replace(/\u3015/g, &#039;)&#039;)&lt;br /&gt;
			// جایگزینی ۀ غیراستاندار+حرف بعدی بدون فاصله به ه+همزه+فاصله&lt;br /&gt;
			.replace(/[ۂۀ](?![\s\n])/g, &#039;هٔ &#039;)&lt;br /&gt;
			// Replace ه followed by ARABIC LETTER HIGH HAMZA with the correct one, ARABIC HAMZA ABOVE&lt;br /&gt;
			.replace(/هٴ([\s\n])/g, &#039;هٔ$1&#039;)&lt;br /&gt;
			// Replace ه followed by (space|ZWNJ|lrm) follow by ی with هٔ&lt;br /&gt;
			.replace(/ه[\u200c\u200e\s]+ی([\s\n])/g, &#039;هٔ$1&#039;)&lt;br /&gt;
			// Replace ه followed by (space|ZWNJ|lrm|nothing) follow by ء or with هٔ&lt;br /&gt;
			.replace(/ه[\u200c\u200e\s]*[ءٔ]([\s\n])/g, &#039;هٔ$1&#039;)&lt;br /&gt;
			// Replace هٓ or single-character ۀ with the standard هٔ&lt;br /&gt;
			.replace(/(ۀ|هٓ)/g, &#039;هٔ&#039;)&lt;br /&gt;
			// Replace ه followed by ئ or ی, and then by ی, with ه\u200cای, example: خانهئی becomes خانه\u200cای&lt;br /&gt;
			.replace(/ه\u200c[ئی]ی/g, &#039;ه\u200cای&#039;)&lt;br /&gt;
			// Function for removing incorrect ZWNJs&lt;br /&gt;
			.replace(/([\u200c\u200e])([\s\n])/g, &#039;$2&#039;)&lt;br /&gt;
			.replace(/([\s\n])([\u200c\u200e])/g, &#039;$1&#039;)&lt;br /&gt;
			//فاصلهٔ پیش از واکه\u200cهای کوتاه اشتباه است و برای جلوگیر از به هم چسبیدن کلمات فاصله و واکه جابجا باید گردند.&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + vowels + hamza + &#039;])(\\s)([&#039; + vowels + hamza + &#039;])&#039;, &#039;g&#039;), &#039;$1$3$2&#039;)&lt;br /&gt;
			//واکه\u200cهای کوتاه پشت سرهم نمی\u200cآیند و یک حرف باید بینشان فاصله باشد&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + vowels + hamza + &#039;]){2,}&#039;, &#039;g&#039;), &#039;$1&#039;)&lt;br /&gt;
			.replace(/ئء/g, &#039;یء&#039;) //two hamzes after each other&lt;br /&gt;
			.replace(/أء/g, &#039;اء&#039;) //two hamzes after each other&lt;br /&gt;
			.replace(/ؤء/g, &#039;ؤ&#039;) //two hamzes after each other&lt;br /&gt;
			//.replace(/وء/g, &#039;ؤ&#039;)//bug on  سوء&lt;br /&gt;
			.replace(/سؤ ?استفاده/g, &#039;سوءاستفاده&#039;)//bug on سوءاستفاده و سوء&lt;br /&gt;
			.replace(/ و یا /g, &#039; یا &#039;);// replace «و یا» with «یا»&lt;br /&gt;
			//افزودن همزه&lt;br /&gt;
			//.replace(/درباره (ام|ات|اش|مان|تان|شان|ای)(\s|$)/g, &#039;درباره‌$1$2&#039;)//i برای جلوگیری از باگ احتمالی برای افزودن همزه به درباره&lt;br /&gt;
			//.replace(/درباره /g, &#039;دربارهٔ &#039;)&lt;br /&gt;
			//.replace(new RegExp(&#039;صفحه(\\s|)([&#039;+persianDigits+&#039;]+)(\\n|\\.|\\,|\\||\\&amp;lt;)&#039;, &#039;g&#039;), &#039;صفحهٔ $2$3&#039;);//[[Special:PermaLink/15326391#افزودن همزه]]&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Replaces Persian characters with Arabic&#039;s ones so an Arabic sorter can sort Persian lines&lt;br /&gt;
	 */&lt;br /&gt;
	function prepareForArabicSort(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			.replace(/ی/g, &#039;ي&#039;)&lt;br /&gt;
			.replace(/ک/g, &#039;ك&#039;)&lt;br /&gt;
			.replace(/گ/g, &#039;كی&#039;)&lt;br /&gt;
			.replace(/ژ/g, &#039;زی&#039;)&lt;br /&gt;
			.replace(/چ/g, &#039;جی&#039;)&lt;br /&gt;
			.replace(/پ/g, &#039;بی&#039;)&lt;br /&gt;
			.replace(/و/g, &#039;نی&#039;)&lt;br /&gt;
			// 1728 === &#039;۰&#039;.charCodeAt(0) - &#039;0&#039;.charCodeAt(0)&lt;br /&gt;
			.replace(/([۰-۹])/g, function (x) { return String.fromCharCode(x.charCodeAt(0) - 1728) });&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function persianSort(array) {&lt;br /&gt;
		return array.sort(function (x, y) {&lt;br /&gt;
			var keyX = prepareForArabicSort(x),&lt;br /&gt;
				keyY = prepareForArabicSort(y);&lt;br /&gt;
			return keyX &amp;lt; keyY ? -1 : keyX &amp;gt; keyY ? 1 : 0;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	persianPastVerbs = &#039;(&#039; +&lt;br /&gt;
		&#039;ارزید|افتاد|افراشت|افروخت|افزود|افسرد|افشاند|افکند|انباشت|انجامید|انداخت|اندوخت|اندود|اندیشید|انگاشت|انگیخت|انگیزاند|اوباشت|ایستاد&#039; +&lt;br /&gt;
		&#039;|آراست|آراماند|آرامید|آرمید|آزرد|آزمود|آسود|آشامید|آشفت|آشوبید|آغازید|آغشت|آفرید|آکند|آگند|آلود|آمد|آمرزید|آموخت|آموزاند&#039; +&lt;br /&gt;
		&#039;|آمیخت|آهیخت|آورد|آویخت|باخت|باراند|بارید|بافت|بالید|باوراند|بایست|بخشود|بخشید|برازید|برد|برید|بست|بسود|بسیجید|بلعید&#039; +&lt;br /&gt;
		&#039;|بود|بوسید|بویید|بیخت|پاشاند|پاشید|پالود|پایید|پخت|پذیراند|پذیرفت|پراکند|پراند|پرداخت|پرستید|پرسید|پرهیزید|پروراند|پرورد|پرید&#039; +&lt;br /&gt;
		&#039;|پژمرد|پژوهید|پسندید|پلاسید|پلکید|پناهید|پنداشت|پوسید|پوشاند|پوشید|پویید|پیچاند|پیچانید|پیچید|پیراست|پیمود|پیوست|تاباند|تابید|تاخت&#039; +&lt;br /&gt;
		&#039;|تاراند|تازاند|تازید|تافت|تپاند|تپید|تراشاند|تراشید|تراوید|ترساند|ترسید|ترشید|ترکاند|ترکید|تکاند|تکانید|تنید|توانست|جَست|جُست&#039; +&lt;br /&gt;
		&#039;|جست|جنباند|جنبید|جنگید|جهاند|جهید|جوشاند|جوشید|جوید|چاپید|چایید|چپاند|چپید|چراند|چربید|چرخاند|چرخید|چرید|چسباند|چسبید&#039; +&lt;br /&gt;
		&#039;|چشاند|چشید|چکاند|چکید|چلاند|چلانید|چمید|چید|خاراند|خارید|خاست|خایید|خراشاند|خراشید|خرامید|خروشید|خرید|خزید|خشکاند&#039; +&lt;br /&gt;
		&#039;|خشکید|خفت|خلید|خمید|خنداند|خندانید|خندید|خواباند|خوابانید|خوابید|خواست|خواند|خوراند|خورد|خوفید|خیساند|خیسید|داد|داشت|دانست&#039; +&lt;br /&gt;
		&#039;|درخشانید|درخشید|دروید|درید|دزدید|دمید|دواند|دوخت|دوشید|دوید|دید|دیدم|راند|ربود|رخشید|رساند|رسانید|رست|رَست|رُست&#039; +&lt;br /&gt;
		&#039;|رسید|رشت|رفت|رُفت|رقصاند|رقصید|رمید|رنجاند|رنجید|رندید|رهاند|رهانید|رهید|روبید|روفت|رویاند|رویید|ریخت|رید|ریسید&#039; +&lt;br /&gt;
		&#039;|زاد|زارید|زایید|زد|زدود|زیست|سابید|ساخت|سپارد|سپرد|سپوخت|ستاند|ستد|سترد|ستود|ستیزید|سرایید|سرشت|سرود|سرید&#039; +&lt;br /&gt;
		&#039;|سزید|سفت|سگالید|سنجید|سوخت|سود|سوزاند|شاشید|شایست|شتافت|شد|شست|شکافت|شکست|شکفت|شکیفت|شگفت|شمارد|شمرد|شناخت&#039; +&lt;br /&gt;
		&#039;|شناساند|شنید|شوراند|شورید|طپید|طلبید|طوفید|غارتید|غرید|غلتاند|غلتانید|غلتید|غلطاند|غلطانید|غلطید|غنود|فرستاد|فرسود|فرمود|فروخت&#039; +&lt;br /&gt;
		&#039;|فریفت|فشاند|فشرد|فهماند|فهمید|قاپید|قبولاند|کاست|کاشت|کاوید|کرد|کشاند|کشانید|کشت|کشید|کفت|کفید|کند|کوبید|کوچید&#039; +&lt;br /&gt;
		&#039;|کوشید|کوفت|گَزید|گُزید|گایید|گداخت|گذارد|گذاشت|گذراند|گذشت|گرازید|گرایید|گرداند|گردانید|گردید|گرفت|گروید|گریاند|گریخت|گریست&#039; +&lt;br /&gt;
		&#039;|گزارد|گزید|گسارد|گستراند|گسترد|گسست|گسیخت|گشت|گشود|گفت|گمارد|گماشت|گنجاند|گنجانید|گنجید|گندید|گوارید|گوزید|لرزاند|لرزید&#039; +&lt;br /&gt;
		&#039;|لغزاند|لغزید|لمباند|لمدنی|لمید|لندید|لنگید|لهید|لولید|لیسید|ماسید|مالاند|مالید|ماند|مانست|مرد|مکشید|مکید|مولید|مویید&#039; +&lt;br /&gt;
		&#039;|نازید|نالید|نامید|نشاند|نشست|نکوهید|نگاشت|نگریست|نمایاند|نمود|نهاد|نهفت|نواخت|نوردید|نوشاند|نوشت|نوشید|نیوشید|هراسید|هشت&#039; +&lt;br /&gt;
		&#039;|ورزید|وزاند|وزید|یارست|یازید|یافت&#039; +&lt;br /&gt;
		&#039;)&#039;;&lt;br /&gt;
&lt;br /&gt;
	persianPresentVerbs = &#039;(&#039; +&lt;br /&gt;
		&#039;ارز|افت|افراز|افروز|افزا|افزای|افسر|افشان|افکن|انبار|انباز|انجام|انداز|اندای|اندوز|اندیش|انگار|انگیز|انگیزان&#039; +&lt;br /&gt;
		&#039;|اوبار|ایست|آرا|آرام|آرامان|آرای|آزار|آزما|آزمای|آسا|آسای|آشام|آشوب|آغار|آغاز|آفرین|آکن|آگن|آلا|آلای&#039; +&lt;br /&gt;
		&#039;|آمرز|آموز|آموزان|آمیز|آهنج|آور|آویز|آی|بار|باران|باز|باش|باف|بال|باوران|بای|باید|بخش|بخشا|بخشای&#039; +&lt;br /&gt;
		&#039;|بر|بَر|بُر|براز|بساو|بسیج|بلع|بند|بو|بوس|بوی|بیز|بین|پا|پاش|پاشان|پالا|پالای|پذیر|پذیران&#039; +&lt;br /&gt;
		&#039;|پر|پراکن|پران|پرداز|پرس|پرست|پرهیز|پرور|پروران|پز|پژمر|پژوه|پسند|پلاس|پلک|پناه|پندار|پوس|پوش|پوشان&#039; +&lt;br /&gt;
		&#039;|پوی|پیچ|پیچان|پیرا|پیرای|پیما|پیمای|پیوند|تاب|تابان|تاران|تاز|تازان|تپ|تپان|تراش|تراشان|تراو|ترس|ترسان&#039; +&lt;br /&gt;
		&#039;|ترش|ترک|ترکان|تکان|تن|توان|توپ|جنب|جنبان|جنگ|جه|جهان|جو|جوش|جوشان|جوی|چاپ|چای|چپ|چپان&#039; +&lt;br /&gt;
		&#039;|چر|چران|چرب|چرخ|چرخان|چسب|چسبان|چش|چشان|چک|چکان|چل|چلان|چم|چین|خار|خاران|خای|خر|خراش&#039; +&lt;br /&gt;
		&#039;|خراشان|خرام|خروش|خز|خشک|خشکان|خل|خم|خند|خندان|خواب|خوابان|خوان|خواه|خور|خوران|خوف|خیز|خیس&#039; +&lt;br /&gt;
		&#039;|خیسان|دار|درخش|درخشان|درو|دزد|دم|ده|دو|دوان|دوز|دوش|ران|ربا|ربای|رخش|رس|رسان&#039; +&lt;br /&gt;
		&#039;|رشت|رقص|رقصان|رم|رنج|رنجان|رند|ره|رهان|رو|روب|روی|رویان|ریز|ریس|رین|زا|زار|زای|زدا&#039; +&lt;br /&gt;
		&#039;|زدای|زن|زی|ساب|ساز|سای|سپار|سپر|سپوز|ستا|ستان|ستر|ستیز|سر|سرا|سرای|سرشت|سز|سگال|سنب&#039; +&lt;br /&gt;
		&#039;|سنج|سوز|سوزان|شاش|شای|شتاب|شکاف|شکف|شکن|شکوف|شکیب|شمار|شمر|شناس|شناسان|شنو|شو|شور|شوران|شوی&#039; +&lt;br /&gt;
		&#039;|طپ|طلب|طوف|غارت|غر|غلت|غلتان|غلط|غلطان|غنو|فرسا|فرسای|فرست|فرما|فرمای|فروش|فریب|فشار|فشان|فشر&#039; +&lt;br /&gt;
		&#039;|فهم|فهمان|قاپ|قبولان|کار|کاه|کاو|کش|کَش|کُش|کِش|کشان|کف|کن|کوب|کوچ|کوش|گا|گای|گداز&#039; +&lt;br /&gt;
		&#039;|گذار|گذر|گذران|گرا|گراز|گرای|گرد|گردان|گرو|گری|گریان|گریز|گز|گزار|گزین|گسار|گستر|گستران|گسل|گشا&#039; +&lt;br /&gt;
		&#039;|گشای|گمار|گنج|گنجان|گند|گو|گوار|گوز|گوی|گیر|لرز|لرزان|لغز|لغزان|لم|لمبان|لند|لنگ|له|لول&#039; +&lt;br /&gt;
		&#039;|لیس|ماس|مال|مان|مک|مول|موی|میر|ناز|نال|نام|نشان|نشین|نکوه|نگار|نگر|نما|نمای|نمایان|نه&#039; +&lt;br /&gt;
		&#039;|نهنب|نواز|نورد|نوش|نوشان|نویس|نیوش|هراس|هست|هل|ورز|وز|وزان|یاب|یار|یاز&#039; +&lt;br /&gt;
		&#039;)&#039;;&lt;br /&gt;
&lt;br /&gt;
	persianComplexPastVerbs={&lt;br /&gt;
		&#039;باز&#039;:&#039;آفرید|آمد|آموخت|آورد|ایستاد|تابید|جست|خواند|داشت|رساند|ستاند|شمرد|ماند|نمایاند|نهاد|نگریست|پرسید|گذارد&#039;+&lt;br /&gt;
			&#039;|گرداند|گردید|گرفت|گشت|گشود|گفت|یافت&#039;,&lt;br /&gt;
		&#039;در&#039;:&#039;بر ?داشت|بر ?گرفت|آمد|آمیخت|آورد|آویخت|افتاد|افکند|انداخت|رفت|ماند|نوردید|کشید|گرفت&#039;,//bug: در گذشته &lt;br /&gt;
		&#039;بر&#039;:&#039;آشفت|آمد|آورد|افتاد|افراشت|افروخت|افشاند|افکند|انداخت|انگیخت|تاباند|تابید|تافت|تنید|جهید|خاست|خواست|خورد&#039;+&lt;br /&gt;
			&#039;|داشت|دمید|شمرد|نهاد|چید|کرد|کشید|گرداند|گردانید|گردید|گزید|گشت|گشود|گمارد|گماشت&#039;,&lt;br /&gt;
		&#039;فرو&#039;:&#039;آمد|خورد|داد|رفت|نشاند|کرد|گذارد|گذاشت&#039;,&lt;br /&gt;
		&#039;وا&#039;:&#039;داشت|رهاند|ماند|نهاد|کرد&#039;,&lt;br /&gt;
		&#039;ور&#039;:&#039;آمد|افتاد|رفت&#039;,&lt;br /&gt;
		&#039;یاد&#039;:&#039;گرفت&#039;,&lt;br /&gt;
		&#039;پدید&#039;:&#039;آورد&#039;,&lt;br /&gt;
		&#039;پراکنده&#039;:&#039;ساخت&#039;,&lt;br /&gt;
		&#039;زمین&#039;:&#039;خورد&#039;,&lt;br /&gt;
		&#039;گول&#039;:&#039;زد&#039;,&lt;br /&gt;
		&#039;لخت&#039;:&#039;کرد&#039;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	persianComplexPresentVerbs={&lt;br /&gt;
		&#039;باز&#039;:&#039;آفرین|آموز|آور|ایست|تاب|جو|خوان|دار|رس|ستان|شمار|مان|نمایان|نه|نگر|پرس|گذار|گردان|گرد|گشا|گو|گیر|یاب&#039;,&lt;br /&gt;
		&#039;در&#039;:&#039;بر ?دار|بر ?گیر|آمیز|آور|آویز|افت|افکن|انداز|مان|نورد|کش|گذر|گیر&#039;,//مشکل با: در روم باستان، در ده &lt;br /&gt;
		&#039;بر&#039;:&#039;آشوب|آور|افت|افراز|افروز|افشان|افکن|انداز|انگیز|تابان|تاب|تن|جه|خواه|خور|خیز|دار|دم|شمار|نه|چین|کش|کن&#039;+&lt;br /&gt;
			&#039;|گردان|گزین|گشا|گمار&#039;,&lt;br /&gt;
		//مشکل با : بر گردن&lt;br /&gt;
		&#039;فرو&#039;:&#039;خور|ده|رو|نشین|کن|گذار&#039;,&lt;br /&gt;
		&#039;وا&#039;:&#039;دار|رهان|مان|نه|کن&#039;,&lt;br /&gt;
		&#039;ور&#039;:&#039;افت|رو&#039;,&lt;br /&gt;
		&#039;یاد&#039;:&#039;گیر&#039;,&lt;br /&gt;
		&#039;پدید&#039;:&#039;آور&#039;,&lt;br /&gt;
		&#039;پراکنده&#039;:&#039;ساز&#039;,&lt;br /&gt;
		&#039;زمین&#039;:&#039;خور&#039;,&lt;br /&gt;
		&#039;گول&#039;:&#039;زن&#039;,&lt;br /&gt;
		&#039;لخت&#039;:&#039;کن&#039;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function complexVerbsApplyZwnj(text) {&lt;br /&gt;
		for (var x in persianComplexPastVerbs) {&lt;br /&gt;
			var y = persianComplexPastVerbs[x]&lt;br /&gt;
			text = text.replace(new RegExp(&lt;br /&gt;
				  &#039;(^|[^&#039; + persianCharacters + &#039;])(&#039; + x + &#039;) ?(می|نمی|)( |\u200c|)(ن|)(&#039;&lt;br /&gt;
					 + y + &#039;)(م|ی|یم|ید|ند|ه|ن|)($|[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1$2\u200c$3\u200c$5$6$7$8&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		for (var x in persianComplexPresentVerbs) {&lt;br /&gt;
			var y = persianComplexPresentVerbs[x]&lt;br /&gt;
			text = text.replace(new RegExp(&lt;br /&gt;
				  &#039;(^|[^&#039; + persianCharacters + &#039;])(&#039; + x + &#039;) ?(می|نمی|)( |\u200c|)(ن|)(&#039;&lt;br /&gt;
					 + y + &#039;)(م|ی|د|یم|ید|ند|ن)($|[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1$2\u200c$3\u200c$5$6$7$8&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		return text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function applyZwnj(text) {&lt;br /&gt;
		text=complexVerbsApplyZwnj(text);&lt;br /&gt;
		return normalizeZwnj(text)&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;(^|[^&#039; + persianCharacters + &#039;])(می|نمی) ?&#039; + persianPastVerbs +&lt;br /&gt;
					&#039;(م|ی|یم|ید|ند|ه|)($|[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1$2\u200c$3$4$5&#039;&lt;br /&gt;
			)&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;(^|[^&#039; + persianCharacters + &#039;])(می|نمی) ?&#039; + persianPresentVerbs +&lt;br /&gt;
					&#039;(م|ی|د|یم|ید|ند)($|[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1$2\u200c$3$4$5&#039;&lt;br /&gt;
			)&lt;br /&gt;
			// ماضی نقلی&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;(^|[^&#039; + persianCharacters + &#039;])(ن|)&#039; + persianPastVerbs +&lt;br /&gt;
					&#039;ه (ام|ای|ایم|اید|اند)($|[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1$2$3ه\u200c$4$5&#039;&lt;br /&gt;
			)&lt;br /&gt;
			&lt;br /&gt;
			// بن فعل مضارع «دان» جدا آمد چون پسوند «ی» با عبارت «میدانی» تداخل داشت&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;(^|[^&#039; + persianCharacters + &#039;])(می|نمی) ?(دان)(م|د|یم|ید|ند)($|[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1$2\u200c$3$4$5&#039;&lt;br /&gt;
			)&lt;br /&gt;
			// ای «توان» ناقلا!&lt;br /&gt;
			.replace(/(\s)(می|نمی) ?توان/g, &#039;$1$2\u200cتوان&#039;)&lt;br /&gt;
			// چسباندن تمام «ها»ها با فاصلهٔ مجازی&lt;br /&gt;
			.replace(/ ها([\]\.،\:»\)\s]|\&#039;{2,3}|\={2,})/g, &#039;\u200cها$1&#039;)&lt;br /&gt;
			.replace(/ ها(ی|یی|یم|یت|یش|ی?مان|ی?تان|ی?شان)([\]\.،\:»\)\s])/g, &#039;\u200cها$1$2&#039;)&lt;br /&gt;
			.replace(/هها/g, &#039;ه‌ها&#039;)&lt;br /&gt;
			// چسباندن تمام «ترین»ها با فاصلهٔ مجازی&lt;br /&gt;
			.replace(/ ترین([\]\.،\:»\)\s]|\&#039;{2,3}|\={2,})/g, &#039;\u200cترین$1&#039;)&lt;br /&gt;
			// چسباندن تمام «تبار»ها با فاصلهٔ مجازی&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;([&#039; + persianCharacters + &#039;]ی) تبار([^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1\u200cتبار$2&#039;&lt;br /&gt;
			)&lt;br /&gt;
			// چسباندن تمام «شناس»ها با فاصلهٔ مجازی&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;([&#039; + persianCharacters + &#039;]) شناس(ی?[^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1\u200cشناس$2&#039;&lt;br /&gt;
			)&lt;br /&gt;
			// چسباندن تمام «گیر»ها با فاصلهٔ مجازی&lt;br /&gt;
			.replace(&lt;br /&gt;
				new RegExp(&#039;([&#039; + persianCharacters + &#039;]) گیری([^&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;),&lt;br /&gt;
				&#039;$1\u200cگیری$2&#039;&lt;br /&gt;
			)&lt;br /&gt;
			// برای حذف علامت ستاره اضافی قبل از عنوان ها&lt;br /&gt;
			.replace(/\n\*\s*(\=+.+?\=+\n)/g, &#039;\n$1&#039;)&lt;br /&gt;
			// عضو علامت های نقل قول تکی از عنوان ها&lt;br /&gt;
			.replace(/(\n=+)(.*?)(?:&#039;+)(.*?)(?:&#039;+)(.*?)(=+\n)/g, &#039;$1$2$3$4$5&#039;)&lt;br /&gt;
			// اول و آخر هم خط اگر فاصلهٔ مجازی باشد، حذف شود&lt;br /&gt;
			.replace(/(^\u200c|\u200c$)/mg, &#039;&#039;)&lt;br /&gt;
			// شناسه ها&lt;br /&gt;
			// توجه: «است» تعدماً از شناسه ها حذف شده چون به عنوان فعل مستقل هم کاربرد دارد و در آن موارد باید جدا نوشته شود&lt;br /&gt;
			// مثال: «این یک خانه است» که است در آن باید از خانه جدا نوشته شود&lt;br /&gt;
			// حروف «ام» و «ای» هم به دلیل تشابه با حرف ندا «اِی» و ام انگلیسی و ای انگلیسی حذف شدند.&lt;br /&gt;
			//.replace(new RegExp(&#039;ه +(ایم|اید|اند)($|[^&#039; + persianCharacters + &#039;\u200c])&#039;, &#039;g&#039;), &#039;ه\u200c$1$2&#039;)// به بخش ماضی نقلی منتقل شد&lt;br /&gt;
			// موارد جزئی دیگر و بی ربط به فاصلهٔ مجازی، باید منتقل شود&lt;br /&gt;
			.replace(/ا\sً/g, &#039;اً&#039;)&lt;br /&gt;
			// رفع اشکال که\u200cای&lt;br /&gt;
			.replace(/ که\u200cای /g, &#039; که ای &#039;)&lt;br /&gt;
			//رفع اشکال میستری (Mystery)&lt;br /&gt;
			.replace(/می\u200cستری/g, &#039;میستری&#039;)&lt;br /&gt;
			.replace(/ویکیپدیا/g, &#039;ویکی‌پدیا&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;می\u200cگوی($|[^&#039; + persianCharacters + &#039;\u200c])&#039;, &#039;g&#039;), &#039;میگوی$1&#039;) // for میگوی دریایی&lt;br /&gt;
			.replace(new RegExp(&#039;می\u200cدوی($|[^&#039; + persianCharacters + &#039;\u200c])&#039;, &#039;g&#039;), &#039;میدوی$1&#039;);// for [[میدوی (ابهام‌زدایی)]]&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function punctuation(text) {&lt;br /&gt;
		return text&lt;br /&gt;
			/// سجاوندی غیرفارسی&lt;br /&gt;
			.replace(/ː/g, &#039;:&#039;) // Replace incorrect : character&lt;br /&gt;
			// استفاده از ؟ فارسی&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])[ ]*[?]&#039;, &#039;g&#039;), &#039;$1؟&#039;)&lt;br /&gt;
			// استفاده از ; فارسی&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])[ ]*[;]&#039;, &#039;g&#039;), &#039;$1؛ &#039;)&lt;br /&gt;
			// استفاده از ، فارسی&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])(\]\]|»|)[ ]*[,]&#039;, &#039;g&#039;), &#039;$1$2، &#039;)&lt;br /&gt;
			//حذف دو فاصله بعد از سجاوندی&lt;br /&gt;
			.replace(/(،|؛|؟|\.)  /g, &#039;$1 &#039;)&lt;br /&gt;
			.replace(/\r/g, &#039;&#039;)&lt;br /&gt;
			// افزودن یا حذف فاصله&lt;br /&gt;
			// حذف فاصله‌های تکراری میان واژه‌ها، به جز بین نام پارامتر و علامت مساوی&lt;br /&gt;
			.replace(/(. ) +(?=[^= ])/g, &#039;$1&#039;)&lt;br /&gt;
			//فاصله بعد از سجاوندی به جز ! به دلیل (&amp;lt;!-- و !! در بالای جدول‌ها)&lt;br /&gt;
			.replace(/([،\.\؛\؟»])([^\s،\.\(\)«»\&amp;quot;\[\]&amp;lt;&amp;gt;\d\w\{\}\|۰۱۲۳۴۵۶۷۸۹\&#039;])/g, &#039;$1 $2&#039;)&lt;br /&gt;
			// افزودن فاصله به بعد از سجاوندی&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;]+|\\]|\\)|»)([؟،؛\\!\\.])([&#039; + persianCharacters +persianDigits + &#039;]+|\\[|\\(|«)&#039;, &#039;g&#039;), &#039;$1$2 $3&#039;)&lt;br /&gt;
			// حذف فاصله بعد از گیومه، پرانتز، براکت باز&lt;br /&gt;
			.replace(/([\(«\[]) /g, &#039;$1&#039;)&lt;br /&gt;
			// حذف فاصله قبل از گیومه، پرانتز&lt;br /&gt;
			.replace(/ ([\)»])/g, &#039;$1&#039;)&lt;br /&gt;
			//.replace(/ (\])/g, &#039;$1&#039;) // فاصله پیش از پراکت را حذف نکن زیرا در ویکی کاربرد مهمی دارد&lt;br /&gt;
			// افزودن فاصله قبل از گیومه باز&lt;br /&gt;
			.replace(/([^ \(\[\|\r\n&amp;gt;&#039;])(«)/g, &#039;$1 $2&#039;)&lt;br /&gt;
			.replace(/ +\( +/g, &#039; (&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;]|\\]|») *\\( *(?=[&#039; + persianCharacters + &#039;])(?!ها\\)|ان\\))&#039;, &#039;g&#039;), &#039;$1 (&#039;)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;]) *\\) *(?=[&#039; + persianCharacters + &#039;]|\\[|«)&#039;, &#039;g&#039;), &#039;$1) &#039;)&lt;br /&gt;
			// خط جدید&lt;br /&gt;
			.replace(/\n\s{1,}\n/g, &#039;\n\n&#039;)&lt;br /&gt;
			// Removes extra line between two items list&lt;br /&gt;
			.replace(/(\n\*.*?)\n+(?=\n\*)/g, &#039;$1&#039;)&lt;br /&gt;
			// Removes extra line between two items list&lt;br /&gt;
			.replace(/(\n#.*?)\n+(?=\n#)/g, &#039;$1&#039;)&lt;br /&gt;
			// Convert , to ، if there are Persian characters on both sides of it &lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;]), ?(?=[&#039; + persianCharacters + &amp;quot;])&amp;quot;, &#039;g&#039;), &#039;$1$2، &#039;)&lt;br /&gt;
			// بعد از نقطه‌ویرگول فارسی علامتی قرار نمی‌گیرد&lt;br /&gt;
			.replace(/(؛)(([\s]+)?[\.،؛:!؟\-…])/g, &#039;$1&#039;)&lt;br /&gt;
			// در انتهای پاراگراف نقطه‌ویرگول فارسی نمی‌آید&lt;br /&gt;
			.replace(/(؛)(\s|)\n\n/g, &#039;.\n\n&#039;)&lt;br /&gt;
			// سجاوندی در ابتدای علامت باز قرار نمی‌گیرد&lt;br /&gt;
			.replace(/([\(«])[\s]([؛\.،])/g, &#039;$1&#039;)&lt;br /&gt;
			// ویرگول فارسی&lt;br /&gt;
			// بعد از ویرگول فارسی این علامت‌ها قرار نمی‌گیرد&lt;br /&gt;
			.replace(/(،)([\s]+)?([،؛!؟\-][\.،؛!؟\-]*|\.(?!\.))/g, &#039;$1&#039;)&lt;br /&gt;
			// نقطه&lt;br /&gt;
			// باید سه نقطه باشد&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])( *)(\\.{3,})&#039;, &#039;g&#039;), &#039;$1$2…&#039;)&lt;br /&gt;
			.replace(/ \.\.\. /g, &#039; … &#039;)&lt;br /&gt;
			// بعد از نقطه این علایم نمی‌آیند&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])\\.( *[،؛:!؟\\?]+)&#039;, &#039;g&#039;), &#039;$1.&#039;)&lt;br /&gt;
			// سجاوندی در ابتدای پرانتز و گیومه باز قرار نمی‌گیرد&lt;br /&gt;
			.replace(new RegExp(&#039;(\\(|«)[\\.،؛](\\s|)([&#039; + persianCharacters + &#039;])&#039;, &#039;g&#039;), &#039;$1$3&#039;)&lt;br /&gt;
			// سجاوندی در داخل پرانتز&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])(\\s|)[\\.،؛](\\s|)(\\))&#039;, &#039;g&#039;), &#039;$1$2$3$4&#039;)&lt;br /&gt;
			// در صورت وابستگی معنی جملات بهتر است نقطه‌ویرگول فارسی قرار گیرد&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianCharacters + &#039;])(\\s|)(\\.)(\\s|)(مثلاً|فرضاً|زیرا|یعنی|بنابراین|لذا)&#039;, &#039;g&#039;), &#039;$1؛ $5&#039;)&lt;br /&gt;
			/// Question &amp;amp; exclamation mark&lt;br /&gt;
			// علامت تعجب تکراری به دلیل وجود !! در عنوان جدول‌های مدیاویکی نباید اصلاح شود.&lt;br /&gt;
			// تكرار علامت سوال فارسی&lt;br /&gt;
			.replace(/(؟(\s|)){2,}/g, &#039;؟&#039;)&lt;br /&gt;
			// علامت‌گذاری نادرست&lt;br /&gt;
			.replace(&#039;؟ !&#039;, &#039;؟!&#039;).replace(&#039;! ؟&#039;, &#039;!؟&#039;)&lt;br /&gt;
			// Remove space preceding punctuation, except for ellipses&lt;br /&gt;
			.replace(/([^ \.]) +([؟،\:؛!\.])(\s[^ \.]|&amp;lt;|$)/g, &#039;$1$2$3&#039;)&lt;br /&gt;
			// تبدیل نیم‌خط به تمام خط بین اعداد فارسی (وپ:خط تیره)&lt;br /&gt;
			.replace(new RegExp(&#039;([&#039; + persianDigits + &#039;]+\\s?(?:\\_\\_|\\-|ـ+)\\s?)*([&#039; + persianDigits + &#039;]+)\\s?(?:\\_\\_|\\-|ـ+)\\s?([&#039; + persianDigits + &#039;]+)(?!\\s?(?:\\_\\_|\\-|ـ+)\\s?[&#039; + persianDigits + &#039;]+)&#039;, &#039;g&#039;), function ($0, $1, $2, $3) { return ($1 ? $0 : $2 + &#039;–&#039; + $3) })&lt;br /&gt;
			// عبارت «ها» درون پرانتز می‌تواند به کلمه قبلی خود بچسبد&lt;br /&gt;
			.replace(/ \(ها\)/g, &#039;(ها)&#039;)&lt;br /&gt;
			.replace(/(\(|)ه‍\. (ق|خ|ش)([\n\/ ]|\))/g, &#039;ه‍.$2$3&#039;)//iاصلاح تاریخ هجری&lt;br /&gt;
			// حذف فاصلهٔ میان دو عبارت مختصر که دارای نقطهٔ اختصار باشند&lt;br /&gt;
			.replace(new RegExp(&#039;(\^|\\||\\(|«|\\}|&amp;quot;|\\s|\\*|\\#)(([&#039; + persianCharacters + &#039;]\{1,2\})\\. \?)\{2,6\}&#039;, &#039;g&#039;), function (m) { return m.replace(/\. (.)/g, &#039;.$1&#039;); })&lt;br /&gt;
			//ویکی پاسخ &lt;br /&gt;
			.replace(/به\[\[/g, &#039;به [[&#039;)&lt;br /&gt;
			.replace(/ \(ع\)/g, &#039;(ع)&#039;)&lt;br /&gt;
			.replace(/ \(ص\)/g, &#039;(ص)&#039;)&lt;br /&gt;
			.replace(/ \(س\)/g, &#039;(س)&#039;)&lt;br /&gt;
			.replace(/ \(عج\)/g, &#039;(عج)&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	return {&lt;br /&gt;
		applyOrthography: applyOrthography,&lt;br /&gt;
		applyZwnj: applyZwnj,&lt;br /&gt;
		normalizeZwnj: normalizeZwnj,&lt;br /&gt;
		persianSort: persianSort,&lt;br /&gt;
		punctuation: punctuation,&lt;br /&gt;
		toPersianDigits: toPersianDigits,&lt;br /&gt;
		toStandardPersianCharacters: toStandardPersianCharacters,&lt;br /&gt;
		vowels: vowels,&lt;br /&gt;
		persianCharacters: persianCharacters,&lt;br /&gt;
		persianCharactersNoVowels: persianCharactersNoVowels&lt;br /&gt;
	};&lt;br /&gt;
}());&lt;br /&gt;
if (typeof window !== &#039;undefined&#039;) {&lt;br /&gt;
	window.persianTools = persianTools;&lt;br /&gt;
}&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons.js&amp;diff=990</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons.js</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons.js&amp;diff=990"/>
		<updated>2026-08-24T10:51:26Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DON&#039;T REMOVE THIS LINE EVER&lt;br /&gt;
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/&lt;br /&gt;
/**&lt;br /&gt;
 * UI code for Persian tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	//&lt;br /&gt;
	// ابزار در حالت نمایش&lt;br /&gt;
	//&lt;br /&gt;
&lt;br /&gt;
	function loadPage(title) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			prop: &#039;revisions&#039;,&lt;br /&gt;
			titles: title,&lt;br /&gt;
			rvprop: &#039;content&#039;,&lt;br /&gt;
			format: &#039;json&#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return Object.values(data.query.pages)[0].revisions[0][&#039;*&#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function redirectPost(url, data) {&lt;br /&gt;
		var form = document.createElement(&#039;form&#039;);&lt;br /&gt;
		document.body.appendChild(form);&lt;br /&gt;
		form.method = &#039;post&#039;;&lt;br /&gt;
		form.action = url;&lt;br /&gt;
		for (var name in data) {&lt;br /&gt;
			var input = document.createElement(&#039;input&#039;);&lt;br /&gt;
			input.type = &#039;hidden&#039;;&lt;br /&gt;
			input.name = name;&lt;br /&gt;
			input.value = data[name];&lt;br /&gt;
			form.appendChild(input);&lt;br /&gt;
		}&lt;br /&gt;
		form.submit();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function addWatchthisParamIfAlreadyIsWatched(object) {&lt;br /&gt;
		// if unwatch button exists it is in the user&#039;s watchlist right now&lt;br /&gt;
		if ($(&#039;#ca-unwatch&#039;).length) {&lt;br /&gt;
			object.wpWatchthis = &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		return object;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function bringShowChanges(page, content, summary) {&lt;br /&gt;
		redirectPost(new mw.Uri(mw.config.get(&#039;wgScript&#039;)).extend({&lt;br /&gt;
			title: page,&lt;br /&gt;
			action: &#039;submit&#039;&lt;br /&gt;
		}), addWatchthisParamIfAlreadyIsWatched({&lt;br /&gt;
			wpTextbox1: content,&lt;br /&gt;
			wpDiff: &#039;&#039;,&lt;br /&gt;
			wpSummary: summary,&lt;br /&gt;
			wpUltimateParam: 1&lt;br /&gt;
		}));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&#039;wgAction&#039;) === &#039;view&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			mw.config.get(&#039;wgIsArticle&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
			mw.config.get(&#039;wgUserEditCount&#039;) &amp;gt; 100 &amp;amp;&amp;amp;&lt;br /&gt;
			mw.config.get(&#039;wgPageName&#039;) !== &#039;صفحهٔ_اصلی&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			$(&#039;#mw-imagepage-nofile, #noarticletext&#039;).length === 0 &amp;amp;&amp;amp;&lt;br /&gt;
			mw.config.get(&#039;wgNamespaceNumber&#039;) !== 6 &amp;amp;&amp;amp;&lt;br /&gt;
			mw.config.get(&#039;wgNamespaceNumber&#039;) !== 8) {&lt;br /&gt;
		$(&#039;#ca-abar-abzar&#039;).remove();&lt;br /&gt;
		var interwikiFix = !$(&#039;#t-wikibase&#039;).length &amp;amp;&amp;amp;&lt;br /&gt;
			$(&#039;.interlanguage-link&#039;).length &amp;amp;&amp;amp;&lt;br /&gt;
			$(&#039;.wbc-editpage&#039;).length;&lt;br /&gt;
		$(mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-views&#039;, &#039;#&#039;,&lt;br /&gt;
			interwikiFix ? &#039;ابرابزار+انتقال میان‌ویکی&#039; : &#039;ابرابزار&#039;,&lt;br /&gt;
			&#039;ca-abar-abzar&#039;,&lt;br /&gt;
			interwikiFix ?&lt;br /&gt;
				&#039;ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده&#039; :&lt;br /&gt;
				&#039;ابزار پیشرفتهٔ ویرایش متن&#039;&lt;br /&gt;
		)).click(function (e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			Promise.all([&lt;br /&gt;
				// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار&lt;br /&gt;
				interwikiFix ? &lt;br /&gt;
					$.get(&#039;//dexbot.toolforge.org/interwikidata.php&#039;, {&lt;br /&gt;
						page: mw.config.get(&#039;wgPageName&#039;)&lt;br /&gt;
					}) : &#039;&#039;,&lt;br /&gt;
				// اجرای کدهای ربات&lt;br /&gt;
				botworks.trigFillcat,&lt;br /&gt;
				botworks.trigMissedFileUpload,&lt;br /&gt;
				botworks.trigMissedRef&lt;br /&gt;
			]).catch(function () {}).then(function () {&lt;br /&gt;
				return loadPage(mw.config.get(&#039;wgPageName&#039;));&lt;br /&gt;
			}).then(function (content) {&lt;br /&gt;
				bringShowChanges(&lt;br /&gt;
					mw.config.get(&#039;wgPageName&#039;),&lt;br /&gt;
					persianWikiTools.superTool(content),&lt;br /&gt;
					&#039;ابرابزار&#039;&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;
	function insertTags(pre, post, peri) {&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length) {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).textSelection(&lt;br /&gt;
				&#039;encapsulateSelection&#039;, { pre: pre, peri: peri, post: post }&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Adds edit summary&lt;br /&gt;
	 */&lt;br /&gt;
	function addEditSummary(summaryText, replaceSummary) {&lt;br /&gt;
		var summary = $(&#039;input#wpSummary, #wpSummary &amp;gt; input&#039;),&lt;br /&gt;
			summaryPrefix = &#039;&#039;,&lt;br /&gt;
			pos;&lt;br /&gt;
		if (mw.util.getParamValue(&#039;section&#039;) === &#039;new&#039; ||&lt;br /&gt;
				summaryText === &#039;&#039; || summary.length === 0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (summary.val().includes(&#039;*/ &#039;)) {&lt;br /&gt;
			pos = summary.val().indexOf(&#039;*/ &#039;);&lt;br /&gt;
			summaryPrefix = summary.val().substr(0, pos + 3);&lt;br /&gt;
		}&lt;br /&gt;
		if (replaceSummary) {&lt;br /&gt;
			summary.val(summaryPrefix + summaryText);&lt;br /&gt;
		} else {&lt;br /&gt;
			if (summary.val() === summaryPrefix) {&lt;br /&gt;
				summary.val(summary.val() + summaryText);&lt;br /&gt;
			} else {&lt;br /&gt;
				if (!summary.val().includes(summaryText)) { // do not repeat in edit summary&lt;br /&gt;
					summary.val(summary.val() + &#039;، &#039; + summaryText);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Makes a simple button from parameters&lt;br /&gt;
	 */&lt;br /&gt;
	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {&lt;br /&gt;
		function clickCallback(e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			callback();&lt;br /&gt;
			addEditSummary(summaryText, replaceSummary);&lt;br /&gt;
		}&lt;br /&gt;
		var img = $(&#039;&amp;lt;img&amp;gt;&#039;).on(&#039;error&#039;, function () {&lt;br /&gt;
			img.replaceWith($(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				class: &#039;mw-ui-button mw-ui-small mw-ui-constructive&#039;,&lt;br /&gt;
				text: alt,&lt;br /&gt;
				style: &#039;padding: 0;&#039;&lt;br /&gt;
			}));&lt;br /&gt;
		}).attr({&lt;br /&gt;
			src: image,&lt;br /&gt;
			title: title,&lt;br /&gt;
			alt: alt&lt;br /&gt;
		});&lt;br /&gt;
		var button = $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
			id: &#039;persian-wiki-tools-&#039; + idSuffix&lt;br /&gt;
		}).click(clickCallback).append(img);&lt;br /&gt;
		return button[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Applies the string functions defined below to the&lt;br /&gt;
	 * selected text in the edit box. If no text is selected, applies&lt;br /&gt;
	 * the function to the whole contents of edit box.&lt;br /&gt;
	 */&lt;br /&gt;
	function applyOnSelection(callback) {&lt;br /&gt;
		var txtarea, range, startPos, endPos, selText;&lt;br /&gt;
		if (document.getElementById(&#039;editform&#039;) || $(&#039;.ns-446&#039;).length) {&lt;br /&gt;
			txtarea = document.getElementById(&#039;wpTextbox1&#039;);&lt;br /&gt;
		} else if ($(&#039;[name=wpNewTitleMain]&#039;)[0]) {&lt;br /&gt;
			txtarea = $(&#039;[name=wpNewTitleMain]&#039;)[0];&lt;br /&gt;
		} else {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (document.selection &amp;amp;&amp;amp; document.selection.createRange) { // IE/Opera&lt;br /&gt;
			// get current selection	&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			range = document.selection.createRange();&lt;br /&gt;
			selText = range.text;&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				range.text = callback(selText);&lt;br /&gt;
				range.select();&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else if (txtarea.selectionStart || txtarea.selectionStart === 0) { // Mozilla&lt;br /&gt;
			// get current selection&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			startPos = txtarea.selectionStart;&lt;br /&gt;
			endPos = txtarea.selectionEnd;&lt;br /&gt;
			selText = txtarea.value.substring(startPos, endPos);&lt;br /&gt;
			// insert tags&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				txtarea.value = txtarea.value.substring(0, startPos) + callback(selText) + txtarea.value.substring(endPos, txtarea.value.length);&lt;br /&gt;
				txtarea.selectionStart = startPos + selText.length;&lt;br /&gt;
				txtarea.selectionEnd = txtarea.selectionStart;&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var tools = {};&lt;br /&gt;
&lt;br /&gt;
	// Buttons that FIX wikitext&lt;br /&gt;
	/* ی ک */&lt;br /&gt;
	tools.ykArabic = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.toStandardPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه\u200cهای عربی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/8/88/Button_YehKeh.png&#039;,&lt;br /&gt;
		&#039;اصلاح ی و ک&#039;,&lt;br /&gt;
		&#039;ی و ک&#039;,&lt;br /&gt;
		&#039;YehKeh&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* فاصلهٔ مجازی */&lt;br /&gt;
	tools.zwnj = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyZwnj);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح فاصلهٔ مجازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/d/d0/Button_ZWNJ.png&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;ZWNJ&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */&lt;br /&gt;
	tools.applyOrthography = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyOrthography);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/9/94/Button_non_standard.png&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;apply-orthography&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام */&lt;br /&gt;
	tools.dig = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام مخصوص صفحه انتقال */&lt;br /&gt;
	tools.digMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر&lt;br /&gt;
	/*if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
		 برداشتن پیوند تاریخ‌ها &lt;br /&gt;
		tools.fixBadLinks = buttonGenerator(&lt;br /&gt;
			function () {&lt;br /&gt;
				applyOnSelection(persianWikiTools.fixBadLinks);&lt;br /&gt;
			},&lt;br /&gt;
			&#039;[[وپ:پیوند سال|حذف پیوند تاریخ‌ها]]&#039;,&lt;br /&gt;
			false,&lt;br /&gt;
			&#039;//upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_link_remove.png&#039;,&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;datelinks&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}*/&lt;br /&gt;
&lt;br /&gt;
	/* یونیکد نشانی وب */&lt;br /&gt;
	tools.urlFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiUrlMinifier);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نشانی وب&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/b/ba/Button_decode_URI.png&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی نشانی\u200cها&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی&#039;,&lt;br /&gt;
		&#039;decode-URI&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح علامت @ */&lt;br /&gt;
	tools.atSignFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return text.replace(/(\S+?)@(\S+?)/g, &#039;$1{&#039; + &#039;{at}}$2&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح @&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/7/7f/Button_at_sign.png&#039;,&lt;br /&gt;
		&#039;اصلاح علامت @&#039;,&lt;br /&gt;
		&#039;@&#039;,&lt;br /&gt;
		&#039;at-sign&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار */&lt;br /&gt;
	tools.superTool = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superTool);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابزار املا &lt;br /&gt;
	tools.dictation = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiDictation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح املا&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/a/a3/Button_Dictation-fa.png&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;dictation&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* ابرابزار مخصوص صفحه انتقال */&lt;br /&gt;
	tools.superToolMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superToolMove);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاحات قراردادن نقطه */&lt;br /&gt;
	tools.punc = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiPunctuation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح سجاوندی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/e/ed/Button_punctuation.png&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;punctuation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that add tags&lt;br /&gt;
	/* برچسب ویکی\u200cسازی &lt;br /&gt;
	tools.wikify = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{ویکی\u200cسازی}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/3/38/Button_wikify.png&#039;,&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* بدون منبع &lt;br /&gt;
	tools.noSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{بدون منبع}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/8/8a/Button_no_source_fa.png&#039;,&lt;br /&gt;
		&#039;برچسب بدون منبع&#039;,&lt;br /&gt;
		&#039;بدون منبع&#039;,&lt;br /&gt;
		&#039;no-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* حذف سریع &lt;br /&gt;
	tools.speedyDel = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = $(&#039;#wpTextbox1&#039;).val();&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{&#039; + &#039;{&#039; + &#039;حذف سریع|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/1/13/Button_delete.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف سریع&#039;,&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		&#039;delete-vote&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* حذف زماندار &lt;br /&gt;
	tools.prod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = $(&#039;#wpTextbox1&#039;).val();&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{&#039; + &#039;{&#039; + &#039;جا:حذف زمان\u200cدار|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;attendre&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* منبع تصویر نامعلوم &lt;br /&gt;
	tools.picSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{&#039; + &#039;جا:منبع تصویر نامعلوم&#039; + &#039;}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/5/59/Button_image_source.png&#039;,&lt;br /&gt;
		&#039;برچسب منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* حق تکثیر تصویر نامعلوم &lt;br /&gt;
	tools.picCopy = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{&#039; + &#039;جا:حق تکثیر تصویر نامعلوم}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/7/7e/Button_image_copyright.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-copyright&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* تمیزکاری &lt;br /&gt;
	tools.cleanup = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{تمیزکاری}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png&#039;,&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		&#039;تمیزکاری&#039;,&lt;br /&gt;
		&#039;broom&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* اخطار نگاره &lt;br /&gt;
	tools.imgWarn = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{&#039; + &#039;{&#039; + &#039;جا:اخطار نگاره|&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نگاره&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب نگاره&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/e/ec/Button_aviso.png&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;aviso&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* حق تکثیر مشکوک &lt;br /&gt;
	tools.sus = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{حق تکثیر مشکوک}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/c/c7/Button_Sus.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;sus&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* نقض حق تکثیر &lt;br /&gt;
	tools.copyR = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{&#039; + &#039;{&#039; + &#039;جا:نقض حق تکثیر|url=&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نشانی ایرنتنتی&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/6/6f/Button_CopyR.png&#039;,&lt;br /&gt;
		&#039;برچسب نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;copyr&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* لحن نامناسب &lt;br /&gt;
	tools.tone = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;{&#039; + &#039;{لحن نامناسب}}\n&#039; + $(&#039;#wpTextbox1&#039;).val());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب لحن&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/f/fc/Button_Tone.png&#039;,&lt;br /&gt;
		&#039;برچسب لحن نامناسب&#039;,&lt;br /&gt;
		&#039;لحن&#039;,&lt;br /&gt;
		&#039;tone&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	// Buttons that help with wiki writing&lt;br /&gt;
	/* تغییر جهت */&lt;br /&gt;
	tools.toggleDirection = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1, [name=wpNewTitleMain], .ace_editor&#039;).css({&lt;br /&gt;
				&#039;text-align&#039;: &#039;start&#039;,&lt;br /&gt;
				&#039;direction&#039;: $(&#039;#wpTextbox1, [name=wpNewTitleMain]&#039;).css(&#039;direction&#039;) === &#039;rtl&#039; ? &#039;ltr&#039; : &#039;rtl&#039;&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/d/d0/Button_toggle_dir.png&#039;,&lt;br /&gt;
		&#039;تغییر جهت جعبهٔ ویرایش&#039;,&lt;br /&gt;
		&#039;تغییرجهت&#039;,&lt;br /&gt;
		&#039;toggle-dir&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	tools.putSelectionInBDI = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.putSelectionInBDI);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;جداسازی دوجهته&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/3/31/Button_bdi_tag.png&#039;,&lt;br /&gt;
		&#039;جداسازی دوجهته&#039;,&lt;br /&gt;
		&#039;دوجهته&#039;,&lt;br /&gt;
		&#039;put-in-bdi&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	/* پیوند درونی */&lt;br /&gt;
	tools.wikiLink = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;[[&#039;, &#039;]]&#039;, &#039;مقاله&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/d/d0/Button_in_wikify.png&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* متن خطخورده */&lt;br /&gt;
	tools.strikeTextButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;s&amp;gt;&#039;, &#039;&amp;lt;/s&amp;gt;&#039;, &#039;متن خط خورده&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;strike&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* توضیح &lt;br /&gt;
	tools.commentButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;!--&#039;, &#039;--&amp;gt;&#039;, &#039;توضیح&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/3/34/Button_hide_comment.png&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;hide-comment&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* ملزومات مقاله &lt;br /&gt;
	tools.addEssentialThings = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;== جستارهای وابسته ==\n\n== منابع ==\n{&#039; + &#039;{پانویس}}&#039;, &#039;&#039;, &#039;&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/e/ef/Add_note.jpg&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;add-note&#039;&lt;br /&gt;
	);*/&lt;br /&gt;
	/* خوشامدید &lt;br /&gt;
	tools.welcome = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{&#039; + &#039;{&#039; + &#039;جا:خوشامد|~~&#039; + &#039;~~}}&#039;,&lt;br /&gt;
				&#039;&#039;,&lt;br /&gt;
				&#039;&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/4/4a/Smilies_Alien_cool.png&#039;,&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		&#039;خوشامد&#039;,&lt;br /&gt;
		&#039;alien-cool&#039;&lt;br /&gt;
	);*/&lt;br /&gt;
	/* چپچین */&lt;br /&gt;
	tools.chapChin = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{&#039; + &#039;{چپ\u200cچین}}\n&#039;,&lt;br /&gt;
				&#039;\n{&#039; + &#039;{پایان چپ\u200cچین}}&#039;,&lt;br /&gt;
				&#039;متن چپ\u200cچین\u200cشده&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/e/ea/Button_align_left.png&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین\u200cکردن متن&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین&#039;,&lt;br /&gt;
		&#039;align-left&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس بالا &lt;br /&gt;
	tools.upperText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sup&amp;gt;&#039;, &#039;&amp;lt;/sup&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/6/6a/Button_sup_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;upper-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* اندیس پایین &lt;br /&gt;
	tools.lowerText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sub&amp;gt;&#039;, &#039;&amp;lt;/sub&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/a/aa/Button_sub_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;lower-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* تغییرمسیر &lt;br /&gt;
	tools.redirectButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;#تغییرمسیر [[&#039;,&lt;br /&gt;
				&#039;]]&#039;,&lt;br /&gt;
				&#039;پیوند&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;redirect&#039;&lt;br /&gt;
	);&lt;br /&gt;
*/&lt;br /&gt;
	/* سال میلادی */&lt;br /&gt;
	tools.gregYear = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;[[&#039;,&lt;br /&gt;
				&#039; (میلادی)|]]&#039;,&lt;br /&gt;
				&#039;سال&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/a/a7/Button_cal.png&#039;,&lt;br /&gt;
		&#039;سال میلادی&#039;,&lt;br /&gt;
		&#039;میلادی&#039;,&lt;br /&gt;
		&#039;cal&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* مرتبسازی */&lt;br /&gt;
	tools.sortText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return persianTools.persianSort(text.split(&#039;\n&#039;)).join(&#039;\n&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/3/33/Button_sort.png&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی بر اساس الفبا&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی&#039;,&lt;br /&gt;
		&#039;sort&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* شد! &lt;br /&gt;
	tools.shod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			$(&#039;#wpTextbox1&#039;).val($(&#039;#wpTextbox1&#039;).val().trimRight() + &#039;\n:{&#039; + &#039;{شد}} ~~&#039; + &#039;~~&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/5/5b/Button_check.png&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;check&#039;&lt;br /&gt;
	);*/&lt;br /&gt;
	/* عدد انگلیسی */&lt;br /&gt;
	tools.toEnNumRobust = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.robustToEnglishDigits);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/commons/f/f5/Button_enNum.png&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;ToEnNumberRobust&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* حذف ویکی‌سازی &lt;br /&gt;
	tools.removeWiki = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.removeWikiSigne);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف ویکی‌سازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//upload.wikimedia.org/wikipedia/fa/8/88/Button_NoWiki.png&#039;,&lt;br /&gt;
		&#039;حذف ویکی‌سازی&#039;,&lt;br /&gt;
		&#039;حذف ویکی‌سازی&#039;,&lt;br /&gt;
		&#039;removeWiki&#039;&lt;br /&gt;
	);*/&lt;br /&gt;
	$(function () {&lt;br /&gt;
		if (typeof Array.prototype.includes !== &#039;function&#039;) {&lt;br /&gt;
			mw.log.error(&#039;Script not supported by browser.&#039;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		// کد مناسب ویرایشگر جدید متنی&lt;br /&gt;
		/*mw.hook(&#039;ve.activationComplete&#039;).add(function () {&lt;br /&gt;
			var surface = ve.init.target.getSurface();&lt;br /&gt;
			if (surface.getMode() === &#039;source&#039;) {&lt;br /&gt;
				$(&#039;#firstHeading&#039;).append($(&#039;&amp;lt;img&amp;gt;&#039;, { src: &#039;//upload.wikimedia.org/wikipedia/fa/f/fc/Button_super_tool.png&#039; }).click(function () {&lt;br /&gt;
					$(&#039;.ve-ce-contentBranchNode&#039;).get().forEach(function (x) {&lt;br /&gt;
						x.innerText = persianWikiTools.superTool(x.innerText);&lt;br /&gt;
					});&lt;br /&gt;
				}));&lt;br /&gt;
			}&lt;br /&gt;
		});*/&lt;br /&gt;
&lt;br /&gt;
		var extraEditButtons = [],&lt;br /&gt;
			extraMoveButtons = [],&lt;br /&gt;
			space = &#039; &#039;;&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, tools.putSelectionInBDI, space, tools.ykArabic, tools.zwnj, tools.applyOrthography,&lt;br /&gt;
			tools.dig, tools.punc, tools.dictation, tools.superTool, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,&lt;br /&gt;
			tools.addEssentialThings, tools.noSource, tools.sus, tools.tone, tools.wikify,&lt;br /&gt;
			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,&lt;br /&gt;
			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);&lt;br /&gt;
		var userGroups = mw.config.get(&#039;wgUserGroups&#039;, []);&lt;br /&gt;
		// شرط برای کاربری که گشت خودکار دارد&lt;br /&gt;
		// ابزار حذف الگوهای ناموجود&lt;br /&gt;
		if (userGroups.includes(&#039;autopatrolled&#039;) ||&lt;br /&gt;
				userGroups.includes(&#039;eliminator&#039;) ||&lt;br /&gt;
				userGroups.includes(&#039;sysop&#039;)) {&lt;br /&gt;
			extraEditButtons = extraEditButtons.concat(tools.removeWiki);&lt;br /&gt;
		}&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);&lt;br /&gt;
&lt;br /&gt;
		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,&lt;br /&gt;
			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);&lt;br /&gt;
&lt;br /&gt;
		$(&#039;#persian-wiki-tools&#039;).remove();&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length) {&lt;br /&gt;
			$(&#039;&amp;lt;div&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;,&lt;br /&gt;
				dir: &#039;rtl&#039;,&lt;br /&gt;
				style: &#039;float:right;&#039;&lt;br /&gt;
			}).append(extraEditButtons).insertBefore(&#039;#wpTextbox1&#039;);&lt;br /&gt;
		} else if ($(&#039;#movepage&#039;).length) {&lt;br /&gt;
			$(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;&lt;br /&gt;
			}).append(extraMoveButtons).insertAfter(&#039;#wpNewTitle&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons&amp;diff=988</id>
		<title>ميدياويكي:Gadget-Extra-Editbuttons</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Extra-Editbuttons&amp;diff=988"/>
		<updated>2026-08-24T10:51:26Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;دکمه‌های ویرایشی بیشتر ([https://fa.wikipedia.org/wiki/%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7:%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C_%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4%DB%8C/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7 راهنما])&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%82%D8%A7%D9%84%D8%A8:%D8%AD%D9%88%D8%A7%D8%B4%DB%8C&amp;diff=985</id>
		<title>قالب:حواشی</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%82%D8%A7%D9%84%D8%A8:%D8%AD%D9%88%D8%A7%D8%B4%DB%8C&amp;diff=985"/>
		<updated>2026-08-20T12:15:44Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;max-height: 20em; overflow: auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;references&amp;quot; style=&amp;quot;margin: 0px 0px 10px 0px; padding: 3px; font-size:95%; background: #f6ffff; line-height:1.4em; column-width: 15em;&amp;quot;&amp;gt;{{#tag:references}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;notes&amp;quot; id=&amp;quot;reflist-notes&amp;quot; style=&amp;quot;margin: 0px 0px 10px 0px; padding: 0px; font-size:95%; background: #f6ffff; line-height:2.4em; max-height: 20em; overflow: auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;references group=&amp;quot;ملاحظة&amp;quot;/&amp;gt;&amp;lt;/div&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;description&amp;quot;: &amp;quot;قالب لعرض المراجع&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[en:Template:Footnotes]]&lt;br /&gt;
[[fa:الگو:پانویس]]&lt;br /&gt;
[[ur:سانچہ:حوالہ جات]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%AA%D9%88%D8%AB%D9%8A%D9%82/styles.css&amp;diff=942</id>
		<title>وحدة:توثيق/styles.css</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%AA%D9%88%D8%AB%D9%8A%D9%82/styles.css&amp;diff=942"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.documentation,&lt;br /&gt;
.documentation-metadata {&lt;br /&gt;
	border: 1px solid #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 #aaa;&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Color_contrast/colors&amp;diff=940</id>
		<title>وحدة:Color contrast/colors</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Color_contrast/colors&amp;diff=940"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	aliceblue            = 0.92880068253475,&lt;br /&gt;
	antiquewhite         = 0.84646951707754,&lt;br /&gt;
	aqua                 = 0.7874,&lt;br /&gt;
	aquamarine           = 0.8078549208338,&lt;br /&gt;
	azure                = 0.97265264954166,&lt;br /&gt;
	beige                = 0.8988459998705,&lt;br /&gt;
	bisque               = 0.80732327372979,&lt;br /&gt;
	black                = 0,&lt;br /&gt;
	blanchedalmond       = 0.85084439608156,&lt;br /&gt;
	blue                 = 0.0722,&lt;br /&gt;
	blueviolet           = 0.12622014321946,&lt;br /&gt;
	brown                = 0.098224287876511,&lt;br /&gt;
	burlywood            = 0.51559844533893,&lt;br /&gt;
	cadetblue            = 0.29424681085422,&lt;br /&gt;
	chartreuse           = 0.76032025902623,&lt;br /&gt;
	chocolate            = 0.23898526114557,&lt;br /&gt;
	coral                = 0.37017930872924,&lt;br /&gt;
	cornflowerblue       = 0.30318641994179,&lt;br /&gt;
	cornsilk             = 0.93562110372965,&lt;br /&gt;
	crimson              = 0.16042199953026,&lt;br /&gt;
	cyan                 = 0.7874,&lt;br /&gt;
	darkblue             = 0.018640801980939,&lt;br /&gt;
	darkcyan             = 0.20329317839046,&lt;br /&gt;
	darkgoldenrod        = 0.27264703559993,&lt;br /&gt;
	darkgray             = 0.39675523072563,&lt;br /&gt;
	darkgreen            = 0.091143429047575,&lt;br /&gt;
	darkgrey             = 0.39675523072563,&lt;br /&gt;
	darkkhaki            = 0.45747326349994,&lt;br /&gt;
	darkmagenta          = 0.07353047651207,&lt;br /&gt;
	darkolivegreen       = 0.12651920884889,&lt;br /&gt;
	darkorange           = 0.40016167026524,&lt;br /&gt;
	darkorchid           = 0.13413142174857,&lt;br /&gt;
	darkred              = 0.054889674531132,&lt;br /&gt;
	darksalmon           = 0.40541471563381,&lt;br /&gt;
	darkseagreen         = 0.43789249325969,&lt;br /&gt;
	darkslateblue        = 0.065792846227988,&lt;br /&gt;
	darkslategray        = 0.067608151928044,&lt;br /&gt;
	darkslategrey        = 0.067608151928044,&lt;br /&gt;
	darkturquoise        = 0.4874606277449,&lt;br /&gt;
	darkviolet           = 0.10999048339343,&lt;br /&gt;
	deeppink             = 0.23866895828276,&lt;br /&gt;
	deepskyblue          = 0.44481603395575,&lt;br /&gt;
	dimgray              = 0.14126329114027,&lt;br /&gt;
	dimgrey              = 0.14126329114027,&lt;br /&gt;
	dodgerblue           = 0.27442536991456,&lt;br /&gt;
	firebrick            = 0.10724525535015,&lt;br /&gt;
	floralwhite          = 0.95922484825004,&lt;br /&gt;
	forestgreen          = 0.18920812076002,&lt;br /&gt;
	fuchsia              = 0.2848,&lt;br /&gt;
	gainsboro            = 0.71569350050648,&lt;br /&gt;
	ghostwhite           = 0.94311261886323,&lt;br /&gt;
	gold                 = 0.69860877428159,&lt;br /&gt;
	goldenrod            = 0.41919977809569,&lt;br /&gt;
	gray                 = 0.2158605001139,&lt;br /&gt;
	green                = 0.15438342968146,&lt;br /&gt;
	greenyellow          = 0.80609472611453,&lt;br /&gt;
	grey                 = 0.2158605001139,&lt;br /&gt;
	honeydew             = 0.96336535554782,&lt;br /&gt;
	hotpink              = 0.34658438169715,&lt;br /&gt;
	indianred            = 0.21406134963884,&lt;br /&gt;
	indigo               = 0.03107561486337,&lt;br /&gt;
	ivory                = 0.99071270600615,&lt;br /&gt;
	khaki                = 0.77012343394121,&lt;br /&gt;
	lavender             = 0.80318750514521,&lt;br /&gt;
	lavenderblush        = 0.90172748631046,&lt;br /&gt;
	lawngreen            = 0.73905893124963,&lt;br /&gt;
	lemonchiffon         = 0.94038992245622,&lt;br /&gt;
	lightblue            = 0.63709141280807,&lt;br /&gt;
	lightcoral           = 0.35522120733135,&lt;br /&gt;
	lightcyan            = 0.94587293494829,&lt;br /&gt;
	lightgoldenrodyellow = 0.93348351018297,&lt;br /&gt;
	lightgray            = 0.65140563741982,&lt;br /&gt;
	lightgreen           = 0.69091979956865,&lt;br /&gt;
	lightgrey            = 0.65140563741982,&lt;br /&gt;
	lightpink            = 0.58566152734898,&lt;br /&gt;
	lightsalmon          = 0.4780675225206,&lt;br /&gt;
	lightseagreen        = 0.35050145117042,&lt;br /&gt;
	lightskyblue         = 0.56195637618331,&lt;br /&gt;
	lightslategray       = 0.23830165007287,&lt;br /&gt;
	lightslategrey       = 0.23830165007287,&lt;br /&gt;
	lightsteelblue       = 0.53983888284666,&lt;br /&gt;
	lightyellow          = 0.98161818392882,&lt;br /&gt;
	lime                 = 0.7152,&lt;br /&gt;
	limegreen            = 0.44571042246098,&lt;br /&gt;
	linen                = 0.88357340984379,&lt;br /&gt;
	magenta              = 0.2848,&lt;br /&gt;
	maroon               = 0.045891942324215,&lt;br /&gt;
	mediumaquamarine     = 0.49389703310801,&lt;br /&gt;
	mediumblue           = 0.044077780212328,&lt;br /&gt;
	mediumorchid         = 0.21639251153773,&lt;br /&gt;
	mediumpurple         = 0.22905858091648,&lt;br /&gt;
	mediumseagreen       = 0.34393112338131,&lt;br /&gt;
	mediumslateblue      = 0.20284629471622,&lt;br /&gt;
	mediumspringgreen    = 0.70704308194184,&lt;br /&gt;
	mediumturquoise      = 0.5133827926448,&lt;br /&gt;
	mediumvioletred      = 0.14371899849357,&lt;br /&gt;
	midnightblue         = 0.02071786635086,&lt;br /&gt;
	mintcream            = 0.97834604947588,&lt;br /&gt;
	mistyrose            = 0.82183047859185,&lt;br /&gt;
	moccasin             = 0.80083000991567,&lt;br /&gt;
	navajowhite          = 0.76519682342785,&lt;br /&gt;
	navy                 = 0.015585128108224,&lt;br /&gt;
	oldlace              = 0.91900633405549,&lt;br /&gt;
	olive                = 0.20027537200568,&lt;br /&gt;
	olivedrab            = 0.22593150951929,&lt;br /&gt;
	orange               = 0.4817026703631,&lt;br /&gt;
	orangered            = 0.25516243753416,&lt;br /&gt;
	orchid               = 0.31348806761439,&lt;br /&gt;
	palegoldenrod        = 0.78792647887614,&lt;br /&gt;
	palegreen            = 0.77936759006353,&lt;br /&gt;
	paleturquoise        = 0.76436077921714,&lt;br /&gt;
	palevioletred        = 0.28754994117889,&lt;br /&gt;
	papayawhip           = 0.87797100199835,&lt;br /&gt;
	peachpuff            = 0.74905589878251,&lt;br /&gt;
	peru                 = 0.30113074877936,&lt;br /&gt;
	pink                 = 0.63271070702466,&lt;br /&gt;
	plum                 = 0.45734221587969,&lt;br /&gt;
	powderblue           = 0.68254586500605,&lt;br /&gt;
	purple               = 0.061477070432439,&lt;br /&gt;
	rebeccapurple        = 0.07492341159447,&lt;br /&gt;
	red                  = 0.2126,&lt;br /&gt;
	rosybrown            = 0.32319457649407,&lt;br /&gt;
	royalblue            = 0.16663210743188,&lt;br /&gt;
	saddlebrown          = 0.097922285020521,&lt;br /&gt;
	salmon               = 0.36977241527596,&lt;br /&gt;
	sandybrown           = 0.46628543696283,&lt;br /&gt;
	seagreen             = 0.19734199706275,&lt;br /&gt;
	seashell             = 0.92737862206922,&lt;br /&gt;
	sienna               = 0.13697631337098,&lt;br /&gt;
	silver               = 0.52711512570581,&lt;br /&gt;
	skyblue              = 0.55291668518184,&lt;br /&gt;
	slateblue            = 0.14784278062136,&lt;br /&gt;
	slategray            = 0.20896704076536,&lt;br /&gt;
	slategrey            = 0.20896704076536,&lt;br /&gt;
	snow                 = 0.96533341834849,&lt;br /&gt;
	springgreen          = 0.73052306068529,&lt;br /&gt;
	steelblue            = 0.20562642207625,&lt;br /&gt;
	tan                  = 0.48237604163921,&lt;br /&gt;
	teal                 = 0.16996855778968,&lt;br /&gt;
	thistle              = 0.56818401093733,&lt;br /&gt;
	tomato               = 0.30638612719415,&lt;br /&gt;
	turquoise            = 0.5895536427578,&lt;br /&gt;
	violet               = 0.40315452986676,&lt;br /&gt;
	wheat                = 0.74909702820482,&lt;br /&gt;
	white                = 1,&lt;br /&gt;
	whitesmoke           = 0.91309865179342,&lt;br /&gt;
	yellow               = 0.9278,&lt;br /&gt;
	yellowgreen          = 0.50762957208707,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Color_contrast&amp;diff=938</id>
		<title>وحدة:Color contrast</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Color_contrast&amp;diff=938"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbar/styles.css&amp;diff=936</id>
		<title>وحدة:Navbar/styles.css</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbar/styles.css&amp;diff=936"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=yes}} */&lt;br /&gt;
.navbar {&lt;br /&gt;
	display: inline;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-collapse {&lt;br /&gt;
	float: right;&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-boxtext {&lt;br /&gt;
	word-spacing: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar ul {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::before {&lt;br /&gt;
	margin-left: -0.125em;&lt;br /&gt;
	content: &#039;[ &#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::after {&lt;br /&gt;
	margin-right: -0.125em;&lt;br /&gt;
	content: &#039; ]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar li {&lt;br /&gt;
	word-spacing: -0.125em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar a &amp;gt; span,&lt;br /&gt;
.navbar a &amp;gt; abbr {&lt;br /&gt;
	text-decoration: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-mini abbr {&lt;br /&gt;
	font-variant: small-caps;&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	cursor: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-full {&lt;br /&gt;
	font-size: 114%;&lt;br /&gt;
	margin: 0 7em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-mini {&lt;br /&gt;
	font-size: 114%;&lt;br /&gt;
	margin: 0 4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* not the usual @media screen, we simply remove navbar in @media print */&lt;br /&gt;
html.skin-theme-clientpref-night .navbar li a abbr {&lt;br /&gt;
	color: var(--color-base) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
	html.skin-theme-clientpref-os .navbar li a abbr {&lt;br /&gt;
		color: var(--color-base) !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
	.navbar {&lt;br /&gt;
		display: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Icon/data&amp;diff=934</id>
		<title>وحدة:Icon/data</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Icon/data&amp;diff=934"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&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;Featured article star - cross.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 = true,&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 = true,&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 = true,&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 = true,&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 = true,&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 = true,&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;
	gareview = {&lt;br /&gt;
		aliases = {&amp;quot;ganrv&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Good article review icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article review&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	new = {&lt;br /&gt;
		aliases = {&amp;quot;stork&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol Stork.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;New&amp;quot;,&lt;br /&gt;
		link = true&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Icon&amp;diff=932</id>
		<title>وحدة:Icon</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Icon&amp;diff=932"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements [[Template:Icon]].&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
local yesNo = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Determine whether we&#039;re being called from a sandbox&lt;br /&gt;
local sandbox = mw.getCurrentFrame():getTitle():find(&#039;sandbox&#039;, 1, true) and &#039;/sandbox&#039; or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Implements [[Template:Icon]]&lt;br /&gt;
-- Returns the icon image corresponding to a string (like &#039;B&#039;)&lt;br /&gt;
function p._main(args, data)&lt;br /&gt;
	local data_module = &#039;Module:Icon/data&#039;..sandbox&lt;br /&gt;
	data = data or mw.loadData(data_module)&lt;br /&gt;
	local code = args.class or args[1]&lt;br /&gt;
	local iconData&lt;br /&gt;
	if code then&lt;br /&gt;
		code = code:match(&#039;^%s*(.-)%s*$&#039;):lower() -- trim whitespace and put in lower case&lt;br /&gt;
		iconData = data[code]&lt;br /&gt;
	end&lt;br /&gt;
	if not iconData then&lt;br /&gt;
		iconData = data._DEFAULT&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[[File:%s%s%s|%s|class=noviewer|alt=%s]]&#039;,&lt;br /&gt;
		iconData.image,&lt;br /&gt;
		iconData.tooltip and &#039;|&#039; .. iconData.tooltip or &#039;&#039;,&lt;br /&gt;
		iconData.link == false and &#039;|link=&#039; or &#039;&#039;,&lt;br /&gt;
		args.size or &#039;16x16px&#039;,&lt;br /&gt;
		iconData.alt or &#039;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]&lt;br /&gt;
-- Returns an icon, plus a suitably formatted wikilink&lt;br /&gt;
function p._link(args, data)&lt;br /&gt;
	args.size = args.size or args.iconsize&lt;br /&gt;
	local icon = p._main(args, data)&lt;br /&gt;
	-- If no link given in args[2], default back to [[Template:Icon]]&lt;br /&gt;
	if not args[2] then&lt;br /&gt;
		return icon&lt;br /&gt;
	end&lt;br /&gt;
	-- Strip wiki markup out of link&lt;br /&gt;
	local getPlain = require(&amp;quot;Module:Text&amp;quot;).Text().getPlain&lt;br /&gt;
	local link = getPlain(args[2])&lt;br /&gt;
	local display = args[3] or args[2]&lt;br /&gt;
	-- italicize display string, if requested&lt;br /&gt;
	if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then&lt;br /&gt;
		display = &#039;&amp;lt;i&amp;gt;&#039;..display..&#039;&amp;lt;/i&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- if display is link, just use standard wlink&lt;br /&gt;
	if link == display then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&#039;..icon..&#039; &amp;lt;/span&amp;gt;[[&#039;..link..&#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&#039;..icon..&#039; &amp;lt;/span&amp;gt;[[&#039;..link..&#039;|&#039;..display..&#039;]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame,{parentFirst=true})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link(frame)&lt;br /&gt;
	local args = getArgs(frame,{parentFirst=true})&lt;br /&gt;
	return p._link(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&#039;&#039;] = function (frame) return p._main(frame.args) end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox/%D9%88%D8%B3%D8%A7%D8%A6%D8%B7&amp;diff=930</id>
		<title>وحدة:Navbox/وسائط</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox/%D9%88%D8%B3%D8%A7%D8%A6%D8%B7&amp;diff=930"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	aliases = {&lt;br /&gt;
		[&#039;child&#039;] = {&#039;طفل&#039;,&#039;فرع&#039;,&#039;child&#039; },&lt;br /&gt;
		[&#039;name&#039;] = {&#039;اسم&#039;,&#039;اسم القالب&#039;,&#039;name&#039;,&#039;الاسم&#039; },&lt;br /&gt;
		[&#039;style&#039;] = {&#039;نمط&#039;,&#039;style&#039; },&lt;br /&gt;
		[&#039;bodyclass&#039;] = {&#039;صنف_البنية&#039;, &#039;كلاس_بنية&#039;,&#039;bodyclass&#039;, &#039;صنف الهيكل&#039; },&lt;br /&gt;
		[&#039;bodystyle&#039;] = {&#039;نمط_البنية&#039; ,&#039;نمط_بنية&#039; ,&#039;نمط_جسم&#039;,&#039;bodystyle&#039;, &#039;نمط الهيكل&#039;},&lt;br /&gt;
		[&#039;border&#039;] = {&#039;حاشية&#039;,&#039;border&#039;},&lt;br /&gt;
		[&#039;title&#039;] = {&#039;عنوان&#039;,&#039;العنوان&#039;,&#039;title&#039; },&lt;br /&gt;
		[&#039;titlestyle&#039;] = {&#039;اللون&#039;,&#039;نمط_عنوان&#039;,&#039;titlestyle&#039; },&lt;br /&gt;
		[&#039;titleclass&#039;] = {&#039;كلاس_عنوان&#039;,&#039;titleclass&#039; },&lt;br /&gt;
		[&#039;state&#039;] = {&#039;وضع&#039;,&#039;حالة&#039;,&#039;state&#039; },&lt;br /&gt;
		[&#039;innerstyle&#039;] = {&#039;نمط_داخلي&#039;,&#039;innerstyle&#039; },&lt;br /&gt;
		[&#039;basestyle&#039;] = {&#039;نمط_أساسي&#039;,&#039;basestyle&#039; },&lt;br /&gt;
		[&#039;titlegroup&#039;] = {&#039;مجموعة_عنوان&#039;,&#039;titlegroup&#039; },&lt;br /&gt;
		[&#039;titlegroupclass&#039;] = {&#039;كلاس_مجموعة_عنوان&#039;,&#039;titlegroupclass&#039; },&lt;br /&gt;
		[&#039;titlegroupstyle&#039;] = {&#039;نمط_مجموعة_عنوان&#039;,&#039;titlegroupstyle&#039; },&lt;br /&gt;
		[&#039;groupstyle&#039;] = {&#039;نمط_مجموعة&#039;,&#039;groupstyle&#039; },&lt;br /&gt;
		[&#039;image&#039;] = {&#039;صورة&#039;,&#039;الصورة&#039;,&#039;image&#039; },&lt;br /&gt;
		[&#039;imageclass&#039;] = {&#039;كلاس_صورة&#039;,&#039;imageclass&#039; },&lt;br /&gt;
		[&#039;imagestyle&#039;] = {&#039;نمط_صورة&#039;,&#039;imagestyle&#039; },&lt;br /&gt;
		[&#039;imageleft&#039;] = {&#039;يمين_صورة&#039;,&#039;يسار_صورة&#039;,&#039;صورة_يمين&#039;,&#039;صورة_يسار&#039;,&#039;imageleft&#039; },&lt;br /&gt;
		[&#039;imageleftstyle&#039;] = {&#039;نمط_صورة_يسار&#039;,&#039;نمط_صورة_يمين&#039;,&#039;imageleftstyle&#039; },&lt;br /&gt;
		[&#039;navbar&#039;] = {&#039;وصلات قالب&#039;,&#039;navbar&#039; } ,&lt;br /&gt;
		[&#039;above&#039;] = {&#039;اعلى&#039;,&#039;أعلى&#039;,&#039;فوق&#039;,&#039;above&#039; },&lt;br /&gt;
		[&#039;aboveclass&#039;] = {&#039;كلاس_فوق&#039;,&#039;كلاس_اعلى&#039;,&#039;كلاس_أعلى&#039;,&#039;aboveclass&#039; },&lt;br /&gt;
		[&#039;abovestyle&#039;] = {&#039;نمط_فوق&#039;,&#039;نمط_أعلى&#039;,&#039;نمط_اعلى&#039;,&#039;abovestyle&#039; },&lt;br /&gt;
		[&#039;below&#039;] = {&#039;تحت&#039;,&#039;أدنى&#039;,&#039;ادنى&#039;,&#039;below&#039; },&lt;br /&gt;
		[&#039;belowclass&#039;] = {&#039;كلاس_تحت&#039;,&#039;كلاس_ادنى&#039;,&#039;كلاس_أدنى&#039;,&#039;belowclass&#039; },&lt;br /&gt;
		[&#039;belowstyle&#039;] = {&#039;نمط_تحت&#039;,&#039;نمط_أدنى&#039;,&#039;نمط_ادنى&#039;,&#039;belowstyle&#039; },&lt;br /&gt;
		[&#039;tracking&#039;] = {&#039;متابعة&#039;,&#039;tracking&#039; },&lt;br /&gt;
&lt;br /&gt;
		[&#039;groupclass&#039;] = {&#039;كلاس_مجموعة&#039;,&#039;groupclass&#039; },&lt;br /&gt;
		[&#039;groupwidth&#039;] = {&#039;عرض_مجموعة&#039;,&#039;groupwidth&#039; },&lt;br /&gt;
		[&#039;liststyle&#039;] = {&#039;نمط_قائمة&#039;,&#039;liststyle&#039; },&lt;br /&gt;
		[&#039;listclass&#039;] = {&#039;كلاس_قائمة&#039;,&#039;listclass&#039;, &#039;صنف القائمة&#039; },&lt;br /&gt;
		[&#039;listpadding&#039;] = {&#039;تبطين_قائمة&#039;,&#039;listpadding&#039; },&lt;br /&gt;
		[&#039;oddstyle&#039;] = {&#039;نمط_فردي&#039;,&#039;oddstyle&#039; },&lt;br /&gt;
		[&#039;evenodd&#039;] = {&#039;زوجي_فردي&#039;,&#039;evenodd&#039; },&lt;br /&gt;
		[&#039;evenstyle&#039;] = {&#039;نمط_زوجي&#039;,&#039;evenstyle&#039; },&lt;br /&gt;
		&lt;br /&gt;
		[&#039;list1&#039;] = {&#039;المحتوى&#039;,&#039;قائمة1&#039;,&#039;list1&#039;,&#039;list&#039;,&#039;قائمة&#039; },&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
	numbered_aliases = {&lt;br /&gt;
		[&#039;list#&#039;] = {&#039;قائمة#&#039;,&#039;list#&#039; },&lt;br /&gt;
		[&#039;group#&#039;] = {&#039;مجموعة#&#039;,&#039;group#&#039; },&lt;br /&gt;
		[&#039;group#style&#039;] = {&#039;نمط_مجموعة#&#039;,&#039;group#style&#039; },&lt;br /&gt;
		[&#039;list#style&#039;] = {&#039;نمط_قائمة#&#039;,&#039;list#style&#039; }&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox/styles.css&amp;diff=928</id>
		<title>وحدة:Navbox/styles.css</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox/styles.css&amp;diff=928"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=y}} */&lt;br /&gt;
.navbox {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 1px;&lt;br /&gt;
	margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox {&lt;br /&gt;
	margin-top: 0; /* No top margin for nested navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox + .navbox, /* TODO: remove first line after transclusions have updated */&lt;br /&gt;
.navbox + .navbox-styles + .navbox {&lt;br /&gt;
	margin-top: -1px; /* Single pixel border between adjacent navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-inner,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-group,&lt;br /&gt;
.navbox-title,&lt;br /&gt;
.navbox-abovebelow {&lt;br /&gt;
	padding: 0.25em 1em;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-group {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-list {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	border-color: #f8f9fa; /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-list-with-group {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	border-left-width: 2px;&lt;br /&gt;
	border-right-style: solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* cell spacing for navbox cells */&lt;br /&gt;
/* Borders above 2nd, 3rd, etc. rows */&lt;br /&gt;
/* TODO: figure out how to replace tr as structure;&lt;br /&gt;
 * with div structure it should be just a matter of first-child */&lt;br /&gt;
tr + tr &amp;gt; .navbox-abovebelow,&lt;br /&gt;
tr + tr &amp;gt; .navbox-group,&lt;br /&gt;
tr + tr &amp;gt; .navbox-image,&lt;br /&gt;
tr + tr &amp;gt; .navbox-list {&lt;br /&gt;
	border-top: 2px solid #f8f9fa; /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-title {&lt;br /&gt;
	background-color: #b3ccff; /* Level 1 color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-abovebelow,&lt;br /&gt;
.navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-title {&lt;br /&gt;
	background-color: #dbe7ff; /* Level 2 color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-subgroup .navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-abovebelow {&lt;br /&gt;
	background-color: #e5edff; /* Level 3 color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-even {&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-odd {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO: figure out how to remove reliance on td as structure */&lt;br /&gt;
.navbox .hlist td dl,&lt;br /&gt;
.navbox .hlist td ol,&lt;br /&gt;
.navbox .hlist td ul,&lt;br /&gt;
.navbox td.hlist dl,&lt;br /&gt;
.navbox td.hlist ol,&lt;br /&gt;
.navbox td.hlist ul {&lt;br /&gt;
	padding: 0.125em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbar {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-title .navbar {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin-left: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* RTL fix for navbox-list bullet lists; See [[Special:Permalink/24864265#خطای ظاهری]]. */&lt;br /&gt;
.navbox-list li {&lt;br /&gt;
	unicode-bidi: isolate;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox/configuration&amp;diff=926</id>
		<title>وحدة:Navbox/configuration</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox/configuration&amp;diff=926"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&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_collapsible_groups_short = &#039;collapsible&#039;,&lt;br /&gt;
		with_columns = &#039;with columns&#039;,&lt;br /&gt;
		with_columns_short = &#039;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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbar/configuration&amp;diff=924</id>
		<title>وحدة:Navbar/configuration</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbar/configuration&amp;diff=924"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	[&#039;templatestyles&#039;] = &#039;Module:Navbar/styles.css&#039;,&lt;br /&gt;
	[&#039;hlist_templatestyles&#039;] = &#039;Hlist/styles.css&#039;,&lt;br /&gt;
	[&#039;box_text&#039;] = &#039;This box: &#039;,			-- default text box when not plain or mini&lt;br /&gt;
	[&#039;title_namespace&#039;] = &#039;Template&#039;,		-- namespace to default to for title&lt;br /&gt;
	[&#039;invalid_title&#039;] = &#039;Invalid title &#039;,&lt;br /&gt;
	[&#039;classes&#039;] = { -- set a line to nil if you don&#039;t want it&lt;br /&gt;
		[&#039;navbar&#039;] = &#039;navbar&#039;,&lt;br /&gt;
		[&#039;plainlinks&#039;] = &#039;plainlinks&#039;, -- plainlinks&lt;br /&gt;
		[&#039;horizontal_list&#039;] = &#039;hlist&#039;, -- horizontal list class&lt;br /&gt;
		[&#039;mini&#039;] = &#039;navbar-mini&#039;, -- class indicating small links in the navbar&lt;br /&gt;
		[&#039;box_text&#039;] = &#039;navbar-boxtext&#039;,&lt;br /&gt;
		[&#039;brackets&#039;] = &#039;navbar-brackets&#039;,&lt;br /&gt;
		-- &#039;collapsible&#039; is the key for a class to indicate the navbar is&lt;br /&gt;
		-- setting up the collapsible element in addition to the normal&lt;br /&gt;
		-- navbar.&lt;br /&gt;
		[&#039;collapsible&#039;] = &#039;navbar-collapse&#039;,&lt;br /&gt;
		[&#039;collapsible_title_mini&#039;] = &#039;navbar-ct-mini&#039;,&lt;br /&gt;
		[&#039;collapsible_title_full&#039;] = &#039;navbar-ct-full&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbar&amp;diff=922</id>
		<title>وحدة:Navbar</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbar&amp;diff=922"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Navbar/configuration&#039;)&lt;br /&gt;
&lt;br /&gt;
local function get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_arg = 1&lt;br /&gt;
	if is_collapsible then title_arg = 2 end&lt;br /&gt;
	if template then title_arg = &#039;template&#039; end&lt;br /&gt;
	return title_arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function choose_links(template, args)&lt;br /&gt;
	-- The show table indicates the default displayed items.&lt;br /&gt;
	-- view, talk, edit, hist, move, watch&lt;br /&gt;
	-- TODO: Move to configuration.&lt;br /&gt;
	local show = {true, true, true, false, false, false}&lt;br /&gt;
	if template then&lt;br /&gt;
		show[2] = false&lt;br /&gt;
		show[3] = false&lt;br /&gt;
		local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,&lt;br /&gt;
			talk = 2, edit = 3, hist = 4, move = 5, watch = 6}&lt;br /&gt;
		-- TODO: Consider removing TableTools dependency.&lt;br /&gt;
		for _, v in ipairs(require (&#039;Module:TableTools&#039;).compressSparseArray(args)) do&lt;br /&gt;
			local num = index[v]&lt;br /&gt;
			if num then show[num] = true end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local remove_edit_link = args.noedit&lt;br /&gt;
	if remove_edit_link then show[3] = false end&lt;br /&gt;
	&lt;br /&gt;
	return show&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_link(link_description, ul, is_mini, font_style)&lt;br /&gt;
	local l&lt;br /&gt;
	if link_description.url then&lt;br /&gt;
		l = {&#039;[&#039;, &#039;&#039;, &#039;]&#039;}&lt;br /&gt;
	else&lt;br /&gt;
		l = {&#039;[[&#039;, &#039;|&#039;, &#039;]]&#039;}&lt;br /&gt;
	end&lt;br /&gt;
	ul:tag(&#039;li&#039;)&lt;br /&gt;
		:addClass(&#039;nv-&#039; .. link_description.full)&lt;br /&gt;
		:wikitext(l[1] .. link_description.link .. l[2])&lt;br /&gt;
		:tag(is_mini and &#039;abbr&#039; or &#039;span&#039;)&lt;br /&gt;
			:attr(&#039;title&#039;, link_description.html_title)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(is_mini and link_description.mini or link_description.full)&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(l[3])&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)&lt;br /&gt;
	if not title then&lt;br /&gt;
		error(cfg.invalid_title .. title_text)&lt;br /&gt;
	end&lt;br /&gt;
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: Get link_descriptions and show into the configuration module.&lt;br /&gt;
	-- link_descriptions should be easier...&lt;br /&gt;
	local link_descriptions = {&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;v&#039;, [&#039;full&#039;] = &#039;view&#039;, [&#039;html_title&#039;] = &#039;View this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;t&#039;, [&#039;full&#039;] = &#039;talk&#039;, [&#039;html_title&#039;] = &#039;Discuss this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = talkpage, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;e&#039;, [&#039;full&#039;] = &#039;edit&#039;, [&#039;html_title&#039;] = &#039;Edit this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = &#039;Special:EditPage/&#039; .. title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;h&#039;, [&#039;full&#039;] = &#039;hist&#039;, [&#039;html_title&#039;] = &#039;History of this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = &#039;Special:PageHistory/&#039; .. title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;m&#039;, [&#039;full&#039;] = &#039;move&#039;, [&#039;html_title&#039;] = &#039;Move this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = mw.title.new(&#039;Special:Movepage&#039;):fullUrl(&#039;target=&#039;..title.fullText), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;w&#039;, [&#039;full&#039;] = &#039;watch&#039;, [&#039;html_title&#039;] = &#039;Watch this template&#039;, &lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=watch&#039;), [&#039;url&#039;] = true }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local ul = mw.html.create(&#039;ul&#039;)&lt;br /&gt;
	if has_brackets then&lt;br /&gt;
		ul:addClass(cfg.classes.brackets)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, _ in ipairs(displayed_links) do&lt;br /&gt;
		if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end&lt;br /&gt;
	end&lt;br /&gt;
	return ul:done()&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbar(args)&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: We probably don&#039;t need both fontstyle and fontcolor...&lt;br /&gt;
	local font_style = args.fontstyle&lt;br /&gt;
	local font_color = args.fontcolor&lt;br /&gt;
	local is_collapsible = args.collapsible&lt;br /&gt;
	local is_mini = args.mini&lt;br /&gt;
	local is_plain = args.plain&lt;br /&gt;
	&lt;br /&gt;
	local collapsible_class = nil&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		collapsible_class = cfg.classes.collapsible&lt;br /&gt;
		if not is_plain then is_mini = 1 end&lt;br /&gt;
		if font_color then&lt;br /&gt;
			font_style = (font_style or &#039;&#039;) .. &#039;; color: &#039; .. font_color .. &#039;;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local navbar_style = args.style&lt;br /&gt;
	local div = mw.html.create():tag(&#039;div&#039;)&lt;br /&gt;
	div&lt;br /&gt;
		:addClass(cfg.classes.navbar)&lt;br /&gt;
		:addClass(cfg.classes.plainlinks)&lt;br /&gt;
		:addClass(cfg.classes.horizontal_list)&lt;br /&gt;
		:addClass(collapsible_class) -- we made the determination earlier&lt;br /&gt;
		:cssText(navbar_style)&lt;br /&gt;
&lt;br /&gt;
	if is_mini then div:addClass(cfg.classes.mini) end&lt;br /&gt;
&lt;br /&gt;
	local box_text = (args.text or cfg.box_text) .. &#039; &#039;&lt;br /&gt;
	 -- the concatenated space guarantees the box text is separated&lt;br /&gt;
	if not (is_mini or is_plain) then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(cfg.classes.box_text)&lt;br /&gt;
				:cssText(font_style)&lt;br /&gt;
				:wikitext(box_text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local template = args.template&lt;br /&gt;
	local displayed_links = choose_links(template, args)&lt;br /&gt;
	local has_brackets = args.brackets&lt;br /&gt;
	local title_arg = get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_text = args[title_arg] or (&#039;:&#039; .. mw.getCurrentFrame():getParent():getTitle())&lt;br /&gt;
	local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	div:node(list)&lt;br /&gt;
&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		local title_text_class&lt;br /&gt;
		if is_mini then&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_mini&lt;br /&gt;
		else&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_full&lt;br /&gt;
		end&lt;br /&gt;
		div:done()&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(title_text_class)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- hlist -&amp;gt; navbar is best-effort to preserve old Common.css ordering.&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.hlist_templatestyles }&lt;br /&gt;
	} .. frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.templatestyles }&lt;br /&gt;
	} .. tostring(div:done())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbar(frame)&lt;br /&gt;
	return p._navbar(require(&#039;Module:Arguments&#039;).getArgs(frame))&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox&amp;diff=920</id>
		<title>وحدة:Navbox</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Navbox&amp;diff=920"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&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 .. args.argHash)&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;th&#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;
		local function readSubgroups(element, i)&lt;br /&gt;
			if inArray(cfg.keyword.subgroups, args[prefix .. andnum(element, 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;
		-- 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 _&lt;br /&gt;
		_ = args[prefix .. cfg.arg.title]&lt;br /&gt;
		_ = args[prefix .. cfg.arg.above]&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;
		local boxtype = args.type or cfg.keyword[boxtype]&lt;br /&gt;
		if boxtype == cfg.keyword.with_columns then&lt;br /&gt;
			for i = 1, 20 do&lt;br /&gt;
				_ = args[prefix .. andnum(&#039;colheader&#039;, i)]&lt;br /&gt;
			end		&lt;br /&gt;
			for i = 1, 20 do&lt;br /&gt;
				readSubgroups(&#039;col&#039;, i)&lt;br /&gt;
			end		&lt;br /&gt;
			for i = 1, 20 do&lt;br /&gt;
				_ = args[prefix .. andnum(&#039;colfooter&#039;, i)]&lt;br /&gt;
			end		&lt;br /&gt;
		end&lt;br /&gt;
		for i = 1, 20 do&lt;br /&gt;
			_ = args[prefix .. andnum(&#039;group&#039;, i)]&lt;br /&gt;
			readSubgroups(&#039;list&#039;, i)&lt;br /&gt;
		end&lt;br /&gt;
		_ = args[prefix .. cfg.arg.below]&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;
	readArgs(args, &amp;quot;&amp;quot;)&lt;br /&gt;
	args.argHash = nil -- we shouldn&#039;t accept argHash passed from a template&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%B4%D8%B1%D9%8A%D8%B7&amp;diff=918</id>
		<title>وحدة:شريط</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%B4%D8%B1%D9%8A%D8%B7&amp;diff=918"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return require(&#039;Module:Navbox&#039;)&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Format_link&amp;diff=916</id>
		<title>وحدة:Format link</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Format_link&amp;diff=916"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
-- Format link&lt;br /&gt;
--&lt;br /&gt;
-- Makes a wikilink from the given link and display values. Links are escaped&lt;br /&gt;
-- with colons if necessary, and links to sections are detected and displayed&lt;br /&gt;
-- with &amp;quot; § &amp;quot; as a separator rather than the standard MediaWiki &amp;quot;#&amp;quot;. Used in&lt;br /&gt;
-- the {{format link}} template.&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 mError -- lazily initialise [[Module:Error]]&lt;br /&gt;
local yesno -- lazily initialise [[Module:Yesno]]&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;
local function maybeItalicize(s, shouldItalicize)&lt;br /&gt;
	-- Italicize s if s is a string and the shouldItalicize parameter is true.&lt;br /&gt;
	if s and shouldItalicize then&lt;br /&gt;
		return &#039;&amp;lt;i&amp;gt;&#039; .. s .. &#039;&amp;lt;/i&amp;gt;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseLink(link)&lt;br /&gt;
	-- Parse a link and return a table with the link&#039;s components.&lt;br /&gt;
	-- These components are:&lt;br /&gt;
	-- - link: the link, stripped of any initial colon (always present)&lt;br /&gt;
	-- - page: the page name (always present)&lt;br /&gt;
	-- - section: the page name (may be nil)&lt;br /&gt;
	-- - display: the display text, if manually entered after a pipe (may be nil)&lt;br /&gt;
	link = removeInitialColon(link)&lt;br /&gt;
&lt;br /&gt;
	-- Find whether a faux display value has been added with the {{!}} magic&lt;br /&gt;
	-- word.&lt;br /&gt;
	local prePipe, display = link:match(&#039;^(.-)|(.*)$&#039;)&lt;br /&gt;
	link = prePipe or link&lt;br /&gt;
&lt;br /&gt;
	-- Find the page, if it exists.&lt;br /&gt;
	-- For links like [[#Bar]], the page will be nil.&lt;br /&gt;
	local preHash, postHash = link:match(&#039;^(.-)#(.*)$&#039;)&lt;br /&gt;
	local page&lt;br /&gt;
	if not preHash then&lt;br /&gt;
		-- We have a link like [[Foo]].&lt;br /&gt;
		page = link&lt;br /&gt;
	elseif preHash ~= &#039;&#039; then&lt;br /&gt;
		-- We have a link like [[Foo#Bar]].&lt;br /&gt;
		page = preHash&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the section, if it exists.&lt;br /&gt;
	local section&lt;br /&gt;
	if postHash and postHash ~= &#039;&#039; then&lt;br /&gt;
		section = postHash&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return {&lt;br /&gt;
		link = link,&lt;br /&gt;
		page = page,&lt;br /&gt;
		section = section,&lt;br /&gt;
		display = display,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatDisplay(parsed, options)&lt;br /&gt;
	-- Formats a display string based on a parsed link table (matching the&lt;br /&gt;
	-- output of parseLink) and an options table (matching the input options for&lt;br /&gt;
	-- _formatLink).&lt;br /&gt;
	local page = maybeItalicize(parsed.page, options.italicizePage)&lt;br /&gt;
	local section = maybeItalicize(parsed.section, options.italicizeSection)&lt;br /&gt;
	if (not section) then&lt;br /&gt;
		return page&lt;br /&gt;
	elseif (not page) then&lt;br /&gt;
		return mw.ustring.format(&#039;§&amp;amp;nbsp;%s&#039;, section)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.ustring.format(&#039;%s §&amp;amp;nbsp;%s&#039;, page, section)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function missingArgError(target)&lt;br /&gt;
	mError = require(&#039;Module:Error&#039;)&lt;br /&gt;
	return mError.error{message =&lt;br /&gt;
		&#039;Error: no link or target specified! ([[&#039; .. target .. &#039;#Errors|help]])&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Main functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.formatLink(frame)&lt;br /&gt;
	-- The formatLink export function, for use in templates.&lt;br /&gt;
	yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local link = args[1] or args.link&lt;br /&gt;
	local target = args[3] or args.target&lt;br /&gt;
	if not (link or target) then&lt;br /&gt;
		return missingArgError(&#039;Template:Format link&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p._formatLink{&lt;br /&gt;
		link = link,&lt;br /&gt;
		display = args[2] or args.display,&lt;br /&gt;
		target = target,&lt;br /&gt;
		italicizePage = yesno(args.italicizepage),&lt;br /&gt;
		italicizeSection = yesno(args.italicizesection),&lt;br /&gt;
		categorizeMissing = args.categorizemissing&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._formatLink(options)&lt;br /&gt;
	-- The formatLink export function, for use in modules.&lt;br /&gt;
	checkType(&#039;_formatLink&#039;, 1, options, &#039;table&#039;)&lt;br /&gt;
	local function check(key, expectedType) --for brevity&lt;br /&gt;
		checkTypeForNamedArg(&lt;br /&gt;
			&#039;_formatLink&#039;, key, options[key], expectedType or &#039;string&#039;, true&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	check(&#039;link&#039;)&lt;br /&gt;
	check(&#039;display&#039;)&lt;br /&gt;
	check(&#039;target&#039;)&lt;br /&gt;
	check(&#039;italicizePage&#039;, &#039;boolean&#039;)&lt;br /&gt;
	check(&#039;italicizeSection&#039;, &#039;boolean&#039;)&lt;br /&gt;
	check(&#039;categorizeMissing&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Normalize link and target and check that at least one is present&lt;br /&gt;
	if options.link == &#039;&#039; then options.link = nil end&lt;br /&gt;
	if options.target == &#039;&#039; then options.target = nil end&lt;br /&gt;
	if not (options.link or options.target) then&lt;br /&gt;
		return missingArgError(&#039;Module:Format link&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local parsed = parseLink(options.link)&lt;br /&gt;
	local display = options.display or parsed.display&lt;br /&gt;
	local catMissing = options.categorizeMissing&lt;br /&gt;
	local category = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find the display text&lt;br /&gt;
	if not display then display = formatDisplay(parsed, options) end&lt;br /&gt;
&lt;br /&gt;
	-- Handle the target option if present&lt;br /&gt;
	if options.target then&lt;br /&gt;
		local parsedTarget = parseLink(options.target)&lt;br /&gt;
		parsed.link = parsedTarget.link&lt;br /&gt;
		parsed.page = parsedTarget.page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Test if page exists if a diagnostic category is specified&lt;br /&gt;
	if catMissing and (mw.ustring.len(catMissing) &amp;gt; 0) then&lt;br /&gt;
		local title = nil&lt;br /&gt;
		if parsed.page then title = mw.title.new(parsed.page) end&lt;br /&gt;
		if title and (not title.isExternal) then&lt;br /&gt;
			local success, exists = pcall(function() return title.exists end)&lt;br /&gt;
			if success and not exists then&lt;br /&gt;
				category = mw.ustring.format(&#039;[[Category:%s]]&#039;, catMissing)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Format the result as a link&lt;br /&gt;
	if parsed.link == display then&lt;br /&gt;
		return mw.ustring.format(&#039;[[:%s]]%s&#039;, parsed.link, category)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.ustring.format(&#039;[[:%s|%s]]%s&#039;, parsed.link, display, category)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Derived convenience functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.formatPages(options, pages)&lt;br /&gt;
	-- Formats an array of pages using formatLink and the given options table,&lt;br /&gt;
	-- and returns it as an array. Nil values are not allowed.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, page in ipairs(pages) do&lt;br /&gt;
		ret[i] = p._formatLink{&lt;br /&gt;
			link = page,&lt;br /&gt;
			categorizeMissing = options.categorizeMissing,&lt;br /&gt;
			italicizePage = options.italicizePage,&lt;br /&gt;
			italicizeSection = options.italicizeSection&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	return ret&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Hatnote_list&amp;diff=914</id>
		<title>وحدة:Hatnote list</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Hatnote_list&amp;diff=914"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                           Module:Hatnote list                              --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module produces and formats lists for use in hatnotes. In particular, --&lt;br /&gt;
-- it implements the for-see list, i.e. lists of &amp;quot;For X, see Y&amp;quot; statements,   --&lt;br /&gt;
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced    --&lt;br /&gt;
-- are andList &amp;amp; orList helpers for formatting lists with those conjunctions. --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local mFormatLink = require(&#039;Module:Format link&#039;)&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- List stringification helper functions&lt;br /&gt;
--&lt;br /&gt;
-- These functions are used for stringifying lists, usually page lists inside&lt;br /&gt;
-- the &amp;quot;Y&amp;quot; portion of &amp;quot;For X, see Y&amp;quot; for-see items.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--default options table used across the list stringification functions&lt;br /&gt;
local stringifyListDefaultOptions = {&lt;br /&gt;
	conjunction = &amp;quot;and&amp;quot;,&lt;br /&gt;
	separator = &amp;quot;,&amp;quot;,&lt;br /&gt;
	altSeparator = &amp;quot;;&amp;quot;,&lt;br /&gt;
	space = &amp;quot; &amp;quot;,&lt;br /&gt;
	formatted = false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Searches display text only&lt;br /&gt;
local function searchDisp(haystack, needle)&lt;br /&gt;
	return string.find(&lt;br /&gt;
		string.sub(haystack, (string.find(haystack, &#039;|&#039;) or 0) + 1), needle&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies a list generically; probably shouldn&#039;t be used directly&lt;br /&gt;
local function stringifyList(list, options)&lt;br /&gt;
	-- Type-checks, defaults, and a shortcut&lt;br /&gt;
	checkType(&amp;quot;stringifyList&amp;quot;, 1, list, &amp;quot;table&amp;quot;)&lt;br /&gt;
	if #list == 0 then return nil end&lt;br /&gt;
	checkType(&amp;quot;stringifyList&amp;quot;, 2, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(stringifyListDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	local s = options.space&lt;br /&gt;
	-- Format the list if requested&lt;br /&gt;
	if options.formatted then&lt;br /&gt;
		list = mFormatLink.formatPages(&lt;br /&gt;
			{categorizeMissing = mHatnote.missingTargetCat}, list&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	-- Set the separator; if any item contains it, use the alternate separator&lt;br /&gt;
	local separator = options.separator&lt;br /&gt;
	for k, v in pairs(list) do&lt;br /&gt;
		if searchDisp(v, separator) then&lt;br /&gt;
			separator = options.altSeparator&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Set the conjunction, apply Oxford comma, and force a comma if #1 has &amp;quot;§&amp;quot;&lt;br /&gt;
	local conjunction = s .. options.conjunction .. s&lt;br /&gt;
	if #list == 2 and searchDisp(list[1], &amp;quot;§&amp;quot;) or #list &amp;gt; 2 then&lt;br /&gt;
		conjunction = separator .. conjunction&lt;br /&gt;
	end&lt;br /&gt;
	-- Return the formatted string&lt;br /&gt;
	return mw.text.listToText(list, separator .. s, conjunction)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--DRY function&lt;br /&gt;
function p.conjList (conj, list, fmt)&lt;br /&gt;
	return stringifyList(list, {conjunction = conj, formatted = fmt})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies lists with &amp;quot;and&amp;quot; or &amp;quot;or&amp;quot;&lt;br /&gt;
function p.andList (...) return p.conjList(&amp;quot;and&amp;quot;, ...) end&lt;br /&gt;
function p.orList (...) return p.conjList(&amp;quot;or&amp;quot;, ...) end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- For see&lt;br /&gt;
--&lt;br /&gt;
-- Makes a &amp;quot;For X, see [[Y]].&amp;quot; list from raw parameters. Intended for the&lt;br /&gt;
-- {{about}} and {{redirect}} templates and their variants.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--default options table used across the forSee family of functions&lt;br /&gt;
local forSeeDefaultOptions = {&lt;br /&gt;
	andKeyword = &#039;and&#039;,&lt;br /&gt;
	title = mw.title.getCurrentTitle().text,&lt;br /&gt;
	otherText = &#039;other uses&#039;,&lt;br /&gt;
	forSeeForm = &#039;For %s, see %s.&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Collapses duplicate punctuation at end of string, ignoring italics and links&lt;br /&gt;
local function punctuationCollapse (text)&lt;br /&gt;
 	return text:match(&amp;quot;[.?!](&#039;?)%1(%]?)%2%.$&amp;quot;) and text:sub(1, -2) or text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Structures arguments into a table for stringification, &amp;amp; options&lt;br /&gt;
function p.forSeeArgsToTable (args, from, options)&lt;br /&gt;
	-- Type-checks and defaults&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 1, args, &#039;table&#039;)&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 2, from, &#039;number&#039;, true)&lt;br /&gt;
	from = from or 1&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 3, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(forSeeDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	-- maxArg&#039;s gotten manually because getArgs() and table.maxn aren&#039;t friends&lt;br /&gt;
	local maxArg = 0&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; and k &amp;gt; maxArg then maxArg = k end&lt;br /&gt;
	end&lt;br /&gt;
	-- Structure the data out from the parameter list:&lt;br /&gt;
	-- * forTable is the wrapper table, with forRow rows&lt;br /&gt;
	-- * Rows are tables of a &amp;quot;use&amp;quot; string &amp;amp; a &amp;quot;pages&amp;quot; table of pagename strings&lt;br /&gt;
	-- * Blanks are left empty for defaulting elsewhere, but can terminate list&lt;br /&gt;
	local forTable = {}&lt;br /&gt;
	local i = from&lt;br /&gt;
	local terminated = false&lt;br /&gt;
	-- If there is extra text, and no arguments are given, give nil value&lt;br /&gt;
	-- to not produce default of &amp;quot;For other uses, see foo (disambiguation)&amp;quot;&lt;br /&gt;
	if options.extratext and i &amp;gt; maxArg then return nil end&lt;br /&gt;
	-- Loop to generate rows&lt;br /&gt;
	repeat&lt;br /&gt;
		-- New empty row&lt;br /&gt;
		local forRow = {}&lt;br /&gt;
		-- On blank use, assume list&#039;s ended &amp;amp; break at end of this loop&lt;br /&gt;
		forRow.use = args[i]&lt;br /&gt;
		if not args[i] then terminated = true end&lt;br /&gt;
		-- New empty list of pages&lt;br /&gt;
		forRow.pages = {}&lt;br /&gt;
		-- Insert first pages item if present&lt;br /&gt;
		table.insert(forRow.pages, args[i + 1])&lt;br /&gt;
		-- If the param after next is &amp;quot;and&amp;quot;, do inner loop to collect params&lt;br /&gt;
		-- until the &amp;quot;and&amp;quot;&#039;s stop. Blanks are ignored: &amp;quot;1|and||and|3&amp;quot; → {1, 3}&lt;br /&gt;
		while args[i + 2] == options.andKeyword do&lt;br /&gt;
			if args[i + 3] then&lt;br /&gt;
				table.insert(forRow.pages, args[i + 3])&lt;br /&gt;
			end&lt;br /&gt;
			-- Increment to next &amp;quot;and&amp;quot;&lt;br /&gt;
			i = i + 2&lt;br /&gt;
		end&lt;br /&gt;
		-- Increment to next use&lt;br /&gt;
		i = i + 2&lt;br /&gt;
		-- Append the row&lt;br /&gt;
		table.insert(forTable, forRow)&lt;br /&gt;
	until terminated or i &amp;gt; maxArg&lt;br /&gt;
&lt;br /&gt;
	return forTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies a table as formatted by forSeeArgsToTable&lt;br /&gt;
function p.forSeeTableToString (forSeeTable, options)&lt;br /&gt;
	-- Type-checks and defaults&lt;br /&gt;
	checkType(&amp;quot;forSeeTableToString&amp;quot;, 1, forSeeTable, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	checkType(&amp;quot;forSeeTableToString&amp;quot;, 2, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(forSeeDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	-- Stringify each for-see item into a list&lt;br /&gt;
	local strList = {}&lt;br /&gt;
	if forSeeTable then&lt;br /&gt;
		for k, v in pairs(forSeeTable) do&lt;br /&gt;
			local useStr = v.use or options.otherText&lt;br /&gt;
			local pagesStr =&lt;br /&gt;
				p.andList(v.pages, true) or&lt;br /&gt;
				mFormatLink._formatLink{&lt;br /&gt;
					categorizeMissing = mHatnote.missingTargetCat,&lt;br /&gt;
					link = mHatnote.disambiguate(options.title)&lt;br /&gt;
				}&lt;br /&gt;
			local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)&lt;br /&gt;
			forSeeStr = punctuationCollapse(forSeeStr)&lt;br /&gt;
			table.insert(strList, forSeeStr)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..&#039;.&#039;)) end&lt;br /&gt;
	-- Return the concatenated list&lt;br /&gt;
	return table.concat(strList, &#039; &#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produces a &amp;quot;For X, see [[Y]]&amp;quot; string from arguments. Expects index gaps&lt;br /&gt;
-- but not blank/whitespace values. Ignores named args and args &amp;lt; &amp;quot;from&amp;quot;.&lt;br /&gt;
function p._forSee (args, from, options)&lt;br /&gt;
	local forSeeTable = p.forSeeArgsToTable(args, from, options)&lt;br /&gt;
	return p.forSeeTableToString(forSeeTable, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- As _forSee, but uses the frame.&lt;br /&gt;
function p.forSee (frame, from, options)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	return p._forSee(mArguments.getArgs(frame), from, options)&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:If_empty&amp;diff=912</id>
		<title>وحدة:If empty</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:If_empty&amp;diff=912"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {wrappers = &#039;Template:Ifempty&#039;, removeBlanks = false})&lt;br /&gt;
&lt;br /&gt;
	-- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank,&lt;br /&gt;
	-- even though there&#039;s really no legitimate use case for this. At some point, this will be removed.&lt;br /&gt;
	local lowestNil = math.huge&lt;br /&gt;
	for i = 8,1,-1 do&lt;br /&gt;
		if args[i] == nil then&lt;br /&gt;
			args[i] = &#039;&#039;&lt;br /&gt;
			lowestNil = i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k,v in ipairs(args) do&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			if lowestNil &amp;lt; k then&lt;br /&gt;
				-- If any uses of this template depend on the behavior above, add them to a tracking category.&lt;br /&gt;
				-- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module&#039;s output won&#039;t be modified&lt;br /&gt;
				-- by it.&lt;br /&gt;
				frame:extensionTag(&#039;ref&#039;, &#039;[[تصنيف:Instances of Template:If_empty missing arguments]]&#039;, {group = &#039;TrackingCategory&#039;})&lt;br /&gt;
				frame:extensionTag(&#039;references&#039;, &#039;&#039;, {group = &#039;TrackingCategory&#039;})&lt;br /&gt;
			end&lt;br /&gt;
			return v&lt;br /&gt;
		end&lt;br /&gt;
	end&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Hatnote/styles.css&amp;diff=910</id>
		<title>وحدة:Hatnote/styles.css</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Hatnote/styles.css&amp;diff=910"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=y}} */&lt;br /&gt;
.hatnote {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */&lt;br /&gt;
div.hatnote {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding-right: 1.6em;&lt;br /&gt;
	margin-bottom: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote i {&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The templatestyles element inserts a link element before hatnotes.&lt;br /&gt;
 * TODO: Remove link if/when WMF resolves T200206 */&lt;br /&gt;
.hatnote + link + .hatnote {&lt;br /&gt;
	margin-top: -0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
	body.ns-0 .hatnote {&lt;br /&gt;
		display: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Hatnote&amp;diff=908</id>
		<title>وحدة:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Hatnote&amp;diff=908"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:TableTools&amp;diff=906</id>
		<title>وحدة:TableTools</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:TableTools&amp;diff=906"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;------------------------------------------------------------------------------------&lt;br /&gt;
--                                   TableTools                                   --&lt;br /&gt;
--                                                                                --&lt;br /&gt;
-- This module includes a number of functions for dealing with Lua tables.        --&lt;br /&gt;
-- It is a meta-module, meant to be called from other Lua modules, and should not --&lt;br /&gt;
-- be called directly from #invoke.                                               --&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Define often-used variables and functions.&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local infinity = math.huge&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isPositiveInteger&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given value is a positive integer, and false&lt;br /&gt;
-- if not. Although it doesn&#039;t operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a given table key is in the array part or the&lt;br /&gt;
-- hash part of a table.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.isPositiveInteger(v)&lt;br /&gt;
	return type(v) == &#039;number&#039; and v &amp;gt;= 1 and floor(v) == v and v &amp;lt; infinity&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isNan&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given number is a NaN value, and false if&lt;br /&gt;
-- not. Although it doesn&#039;t operate on tables, it is included here as it is useful&lt;br /&gt;
-- for determining whether a value can be a valid table key. Lua will generate an&lt;br /&gt;
-- error if a NaN is used as a table key.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.isNan(v)&lt;br /&gt;
	return type(v) == &#039;number&#039; and v ~= v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- shallowClone&lt;br /&gt;
--&lt;br /&gt;
-- This returns a clone of a table. The value returned is a new table, but all&lt;br /&gt;
-- subtables and functions are shared. Metamethods are respected, but the returned&lt;br /&gt;
-- table will have no metatable of its own.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.shallowClone(t)&lt;br /&gt;
	checkType(&#039;shallowClone&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		ret[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- removeDuplicates&lt;br /&gt;
--&lt;br /&gt;
-- This removes duplicate values from an array. Non-positive-integer keys are&lt;br /&gt;
-- ignored. The earliest value is kept, and all subsequent duplicate values are&lt;br /&gt;
-- removed, but otherwise the array order is unchanged.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.removeDuplicates(arr)&lt;br /&gt;
	checkType(&#039;removeDuplicates&#039;, 1, arr, &#039;table&#039;)&lt;br /&gt;
	local isNan = p.isNan&lt;br /&gt;
	local ret, exists = {}, {}&lt;br /&gt;
	for _, v in ipairs(arr) do&lt;br /&gt;
		if isNan(v) then&lt;br /&gt;
			-- NaNs can&#039;t be table keys, and they are also unique, so we don&#039;t need to check existence.&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
		elseif not exists[v] then&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
			exists[v] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numKeys&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of any numerical&lt;br /&gt;
-- keys that have non-nil values, sorted in numerical order.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.numKeys(t)&lt;br /&gt;
	checkType(&#039;numKeys&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local isPositiveInteger = p.isPositiveInteger&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k in pairs(t) do&lt;br /&gt;
		if isPositiveInteger(k) then&lt;br /&gt;
			nums[#nums + 1] = k&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;
-- affixNums&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of keys with the&lt;br /&gt;
-- specified prefix and suffix. For example, for the table&lt;br /&gt;
-- {a1 = &#039;foo&#039;, a3 = &#039;bar&#039;, a6 = &#039;baz&#039;} and the prefix &amp;quot;a&amp;quot;, affixNums will return&lt;br /&gt;
-- {1, 3, 6}.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.affixNums(t, prefix, suffix)&lt;br /&gt;
	checkType(&#039;affixNums&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;affixNums&#039;, 2, prefix, &#039;string&#039;, true)&lt;br /&gt;
	checkType(&#039;affixNums&#039;, 3, suffix, &#039;string&#039;, true)&lt;br /&gt;
&lt;br /&gt;
	local function cleanPattern(s)&lt;br /&gt;
		-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.&lt;br /&gt;
		return s:gsub(&#039;([%(%)%%%.%[%]%*%+%-%?%^%$])&#039;, &#039;%%%1&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	prefix = prefix or &#039;&#039;&lt;br /&gt;
	suffix = suffix or &#039;&#039;&lt;br /&gt;
	prefix = cleanPattern(prefix)&lt;br /&gt;
	suffix = cleanPattern(suffix)&lt;br /&gt;
	local pattern = &#039;^&#039; .. prefix .. &#039;([1-9]%d*)&#039; .. suffix .. &#039;$&#039;&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k in pairs(t) do&lt;br /&gt;
		if type(k) == &#039;string&#039; then&lt;br /&gt;
			local num = mw.ustring.match(k, pattern)&lt;br /&gt;
			if num then&lt;br /&gt;
				nums[#nums + 1] = tonumber(num)&lt;br /&gt;
			end&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;
-- numData&lt;br /&gt;
--&lt;br /&gt;
-- Given a table with keys like {&amp;quot;foo1&amp;quot;, &amp;quot;bar1&amp;quot;, &amp;quot;foo2&amp;quot;, &amp;quot;baz2&amp;quot;}, returns a table&lt;br /&gt;
-- of subtables in the format&lt;br /&gt;
-- {[1] = {foo = &#039;text&#039;, bar = &#039;text&#039;}, [2] = {foo = &#039;text&#039;, baz = &#039;text&#039;}}.&lt;br /&gt;
-- Keys that don&#039;t end with an integer are stored in a subtable named &amp;quot;other&amp;quot;. The&lt;br /&gt;
-- compress option compresses the table so that it can be iterated over with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.numData(t, compress)&lt;br /&gt;
	checkType(&#039;numData&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;numData&#039;, 2, compress, &#039;boolean&#039;, true)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		local prefix, num = mw.ustring.match(tostring(k), &#039;^([^0-9]*)([1-9][0-9]*)$&#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			num = tonumber(num)&lt;br /&gt;
			local subtable = ret[num] or {}&lt;br /&gt;
			if prefix == &#039;&#039; then&lt;br /&gt;
				-- Positional parameters match the blank string; put them at the start of the subtable instead.&lt;br /&gt;
				prefix = 1&lt;br /&gt;
			end&lt;br /&gt;
			subtable[prefix] = v&lt;br /&gt;
			ret[num] = subtable&lt;br /&gt;
		else&lt;br /&gt;
			local subtable = ret.other or {}&lt;br /&gt;
			subtable[k] = v&lt;br /&gt;
			ret.other = subtable&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if compress then&lt;br /&gt;
		local other = ret.other&lt;br /&gt;
		ret = p.compressSparseArray(ret)&lt;br /&gt;
		ret.other = other&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- compressSparseArray&lt;br /&gt;
--&lt;br /&gt;
-- This takes an array with one or more nil values, and removes the nil values&lt;br /&gt;
-- while preserving the order, so that the array can be safely traversed with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.compressSparseArray(t)&lt;br /&gt;
	checkType(&#039;compressSparseArray&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = t[num]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- sparseIpairs&lt;br /&gt;
--&lt;br /&gt;
-- This is an iterator for sparse arrays. It can be used like ipairs, but can&lt;br /&gt;
-- handle nil values.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.sparseIpairs(t)&lt;br /&gt;
	checkType(&#039;sparseIpairs&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	local lim = #nums&lt;br /&gt;
	return function ()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if i &amp;lt;= lim then&lt;br /&gt;
			local key = nums[i]&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- size&lt;br /&gt;
--&lt;br /&gt;
-- This returns the size of a key/value pair table. It will also work on arrays,&lt;br /&gt;
-- but for arrays it is more efficient to use the # operator.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.size(t)&lt;br /&gt;
	checkType(&#039;size&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for _ in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function defaultKeySort(item1, item2)&lt;br /&gt;
	-- &amp;quot;number&amp;quot; &amp;lt; &amp;quot;string&amp;quot;, so numbers will be sorted before strings.&lt;br /&gt;
	local type1, type2 = type(item1), type(item2)&lt;br /&gt;
	if type1 ~= type2 then&lt;br /&gt;
		return type1 &amp;lt; type2&lt;br /&gt;
	elseif type1 == &#039;table&#039; or type1 == &#039;boolean&#039; or type1 == &#039;function&#039; then&lt;br /&gt;
		return tostring(item1) &amp;lt; tostring(item2)&lt;br /&gt;
	else&lt;br /&gt;
		return item1 &amp;lt; item2&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- keysToList&lt;br /&gt;
--&lt;br /&gt;
-- Returns an array of the keys in a table, sorted using either a default&lt;br /&gt;
-- comparison function or a custom keySort function.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.keysToList(t, keySort, checked)&lt;br /&gt;
	if not checked then&lt;br /&gt;
		checkType(&#039;keysToList&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
		checkTypeMulti(&#039;keysToList&#039;, 2, keySort, {&#039;function&#039;, &#039;boolean&#039;, &#039;nil&#039;})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local arr = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	for k in pairs(t) do&lt;br /&gt;
		arr[index] = k&lt;br /&gt;
		index = index + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if keySort ~= false then&lt;br /&gt;
		keySort = type(keySort) == &#039;function&#039; and keySort or defaultKeySort&lt;br /&gt;
		table.sort(arr, keySort)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return arr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- sortedPairs&lt;br /&gt;
--&lt;br /&gt;
-- Iterates through a table, with the keys sorted using the keysToList function.&lt;br /&gt;
-- If there are only numerical keys, sparseIpairs is probably more efficient.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.sortedPairs(t, keySort)&lt;br /&gt;
	checkType(&#039;sortedPairs&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;sortedPairs&#039;, 2, keySort, &#039;function&#039;, true)&lt;br /&gt;
&lt;br /&gt;
	local arr = p.keysToList(t, keySort, true)&lt;br /&gt;
&lt;br /&gt;
	local i = 0&lt;br /&gt;
	return function ()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local key = arr[i]&lt;br /&gt;
		if key ~= nil then&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isArray&lt;br /&gt;
--&lt;br /&gt;
-- Returns true if the given value is a table and all keys are consecutive&lt;br /&gt;
-- integers starting at 1.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.isArray(v)&lt;br /&gt;
	if type(v) ~= &#039;table&#039; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for _ in pairs(v) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if v[i] == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isArrayLike&lt;br /&gt;
--&lt;br /&gt;
-- Returns true if the given value is iterable and all keys are consecutive&lt;br /&gt;
-- integers starting at 1.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.isArrayLike(v)&lt;br /&gt;
	if not pcall(pairs, v) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for _ in pairs(v) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if v[i] == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- invert&lt;br /&gt;
--&lt;br /&gt;
-- Transposes the keys and values in an array. For example, {&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;} -&amp;gt;&lt;br /&gt;
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to&lt;br /&gt;
-- the index of the last duplicate) and NaN values are ignored.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.invert(arr)&lt;br /&gt;
	checkType(&amp;quot;invert&amp;quot;, 1, arr, &amp;quot;table&amp;quot;)&lt;br /&gt;
	local isNan = p.isNan&lt;br /&gt;
	local map = {}&lt;br /&gt;
	for i, v in ipairs(arr) do&lt;br /&gt;
		if not isNan(v) then&lt;br /&gt;
			map[v] = i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return map&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- listToSet&lt;br /&gt;
--&lt;br /&gt;
-- Creates a set from the array part of the table. Indexing the set by any of the&lt;br /&gt;
-- values of the array returns true. For example, {&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;} -&amp;gt;&lt;br /&gt;
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them&lt;br /&gt;
-- never equal to any value (including other NaNs or even themselves).&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.listToSet(arr)&lt;br /&gt;
	checkType(&amp;quot;listToSet&amp;quot;, 1, arr, &amp;quot;table&amp;quot;)&lt;br /&gt;
	local isNan = p.isNan&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, v in ipairs(arr) do&lt;br /&gt;
		if not isNan(v) then&lt;br /&gt;
			set[v] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return set&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- deepCopy&lt;br /&gt;
--&lt;br /&gt;
-- Recursive deep copy function. Preserves identities of subtables.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
local function _deepCopy(orig, includeMetatable, already_seen)&lt;br /&gt;
	if type(orig) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		return orig&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- already_seen stores copies of tables indexed by the original table.&lt;br /&gt;
	local copy = already_seen[orig]&lt;br /&gt;
	if copy ~= nil then&lt;br /&gt;
		return copy&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	copy = {}&lt;br /&gt;
	already_seen[orig] = copy -- memoize before any recursion, to avoid infinite loops&lt;br /&gt;
	&lt;br /&gt;
	for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
		copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if includeMetatable then&lt;br /&gt;
		local mt = getmetatable(orig)&lt;br /&gt;
		if mt ~= nil then&lt;br /&gt;
			setmetatable(copy, _deepCopy(mt, true, already_seen))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.deepCopy(orig, noMetatable, already_seen)&lt;br /&gt;
	checkType(&amp;quot;deepCopy&amp;quot;, 3, already_seen, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	return _deepCopy(orig, not noMetatable, already_seen or {})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- sparseConcat&lt;br /&gt;
--&lt;br /&gt;
-- Concatenates all values in the table that are indexed by a number, in order.&lt;br /&gt;
-- sparseConcat{a, nil, c, d}  =&amp;gt;  &amp;quot;acd&amp;quot;&lt;br /&gt;
-- sparseConcat{nil, b, c, d}  =&amp;gt;  &amp;quot;bcd&amp;quot;&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.sparseConcat(t, sep, i, j)&lt;br /&gt;
	local arr = {}&lt;br /&gt;
&lt;br /&gt;
	local arr_i = 0&lt;br /&gt;
	for _, v in p.sparseIpairs(t) do&lt;br /&gt;
		arr_i = arr_i + 1&lt;br /&gt;
		arr[arr_i] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(arr, sep, i, j)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- length&lt;br /&gt;
--&lt;br /&gt;
-- Finds the length of an array, or of a quasi-array with keys such as &amp;quot;data1&amp;quot;,&lt;br /&gt;
-- &amp;quot;data2&amp;quot;, etc., using an exponential search algorithm. It is similar to the&lt;br /&gt;
-- operator #, but may return a different value when there are gaps in the array&lt;br /&gt;
-- portion of the table. Intended to be used on data loaded with mw.loadData. For&lt;br /&gt;
-- other tables, use #.&lt;br /&gt;
-- Note: #frame.args in frame object always be set to 0, regardless of  the number&lt;br /&gt;
-- of unnamed template parameters, so use this function for frame.args.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.length(t, prefix)&lt;br /&gt;
	-- requiring module inline so that [[Module:Exponential search]] which is&lt;br /&gt;
	-- only needed by this one function doesn&#039;t get millions of transclusions&lt;br /&gt;
	local expSearch = require(&amp;quot;Module:Exponential search&amp;quot;)&lt;br /&gt;
	checkType(&#039;length&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;length&#039;, 2, prefix, &#039;string&#039;, true)&lt;br /&gt;
	return expSearch(function (i)&lt;br /&gt;
		local key&lt;br /&gt;
		if prefix then&lt;br /&gt;
			key = prefix .. tostring(i)&lt;br /&gt;
		else&lt;br /&gt;
			key = i&lt;br /&gt;
		end&lt;br /&gt;
		return t[key] ~= nil&lt;br /&gt;
	end) or 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- inArray&lt;br /&gt;
--&lt;br /&gt;
-- Returns true if searchElement is a member of the array, and false otherwise.&lt;br /&gt;
-- Equivalent to JavaScript array.includes(searchElement) or&lt;br /&gt;
-- array.includes(searchElement, fromIndex), except fromIndex is 1 indexed&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.inArray(array, searchElement, fromIndex)&lt;br /&gt;
	checkType(&amp;quot;inArray&amp;quot;, 1, array, &amp;quot;table&amp;quot;)&lt;br /&gt;
	-- if searchElement is nil, error?&lt;br /&gt;
&lt;br /&gt;
	fromIndex = tonumber(fromIndex)&lt;br /&gt;
	if fromIndex then&lt;br /&gt;
		if (fromIndex &amp;lt; 0) then&lt;br /&gt;
			fromIndex = #array + fromIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
		if fromIndex &amp;lt; 1 then fromIndex = 1 end&lt;br /&gt;
		for _, v in ipairs({unpack(array, fromIndex)}) do&lt;br /&gt;
			if v == searchElement then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for _, v in pairs(array) do&lt;br /&gt;
			if v == searchElement 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;
------------------------------------------------------------------------------------&lt;br /&gt;
-- merge&lt;br /&gt;
--&lt;br /&gt;
-- Given the arrays, returns an array containing the elements of each input array&lt;br /&gt;
-- in sequence.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.merge(...)&lt;br /&gt;
	local arrays = {...}&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, arr in ipairs(arrays) do&lt;br /&gt;
		checkType(&#039;merge&#039;, i, arr, &#039;table&#039;)&lt;br /&gt;
		for _, v in ipairs(arr) do&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- extend&lt;br /&gt;
--&lt;br /&gt;
-- Extends the first array in place by appending all elements from the second&lt;br /&gt;
-- array.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
function p.extend(arr1, arr2)&lt;br /&gt;
	checkType(&#039;extend&#039;, 1, arr1, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;extend&#039;, 2, arr2, &#039;table&#039;)&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(arr2) do&lt;br /&gt;
		arr1[#arr1 + 1] = v&lt;br /&gt;
	end&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:List&amp;diff=904</id>
		<title>وحدة:List</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:List&amp;diff=904"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local libUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libUtil.checkType&lt;br /&gt;
local mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local listTypes = {&lt;br /&gt;
	[&#039;bulleted&#039;] = true,&lt;br /&gt;
	[&#039;unbulleted&#039;] = true,&lt;br /&gt;
	[&#039;horizontal&#039;] = true,&lt;br /&gt;
	[&#039;ordered&#039;] = true,&lt;br /&gt;
	[&#039;horizontal_ordered&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.makeListData(listType, args)&lt;br /&gt;
	-- Constructs a data table to be passed to p.renderList.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Classes and TemplateStyles&lt;br /&gt;
	data.classes = {}&lt;br /&gt;
	data.templatestyles = &#039;&#039;&lt;br /&gt;
	if listType == &#039;horizontal&#039; or listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		table.insert(data.classes, &#039;hlist&#039;)&lt;br /&gt;
		data.templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = &#039;Hlist/styles.css&#039; }&lt;br /&gt;
		}&lt;br /&gt;
	elseif listType == &#039;unbulleted&#039; then&lt;br /&gt;
		table.insert(data.classes, &#039;plainlist&#039;)&lt;br /&gt;
		data.templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = &#039;Plainlist/styles.css&#039; }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(data.classes, args.class)&lt;br /&gt;
&lt;br /&gt;
	-- Main div style&lt;br /&gt;
	data.style = args.style&lt;br /&gt;
&lt;br /&gt;
	-- Indent for horizontal lists&lt;br /&gt;
	if listType == &#039;horizontal&#039; or listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		local indent = tonumber(args.indent)&lt;br /&gt;
		indent = indent and indent * 1.6 or 0&lt;br /&gt;
		if indent &amp;gt; 0 then&lt;br /&gt;
			data.marginLeft = indent .. &#039;em&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List style types for ordered lists&lt;br /&gt;
	-- This could be &amp;quot;1, 2, 3&amp;quot;, &amp;quot;a, b, c&amp;quot;, or a number of others. The list style&lt;br /&gt;
	-- type is either set by the &amp;quot;type&amp;quot; attribute or the &amp;quot;list-style-type&amp;quot; CSS&lt;br /&gt;
	-- property.&lt;br /&gt;
	if listType == &#039;ordered&#039; or listType == &#039;horizontal_ordered&#039; then &lt;br /&gt;
		data.listStyleType = args.list_style_type or args[&#039;list-style-type&#039;]&lt;br /&gt;
		data.type = args[&#039;type&#039;]&lt;br /&gt;
&lt;br /&gt;
		-- Detect invalid type attributes and attempt to convert them to&lt;br /&gt;
		-- list-style-type CSS properties.&lt;br /&gt;
		if data.type &lt;br /&gt;
			and not data.listStyleType&lt;br /&gt;
			and not tostring(data.type):find(&#039;^%s*[1AaIi]%s*$&#039;)&lt;br /&gt;
		then&lt;br /&gt;
			data.listStyleType = data.type&lt;br /&gt;
			data.type = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List tag type&lt;br /&gt;
	if listType == &#039;ordered&#039; or listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		data.listTag = &#039;ol&#039;&lt;br /&gt;
	else&lt;br /&gt;
		data.listTag = &#039;ul&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Start number for ordered lists&lt;br /&gt;
	data.start = args.start&lt;br /&gt;
	if listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		-- Apply fix to get start numbers working with horizontal ordered lists.&lt;br /&gt;
		local startNum = tonumber(data.start)&lt;br /&gt;
		if startNum then&lt;br /&gt;
			data.counterReset = &#039;listitem &#039; .. tostring(startNum - 1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- List style&lt;br /&gt;
	 -- ul_style and ol_style are included for backwards compatibility. No&lt;br /&gt;
	 -- distinction is made for ordered or unordered lists.&lt;br /&gt;
	data.listStyle = args.list_style&lt;br /&gt;
&lt;br /&gt;
	-- List items&lt;br /&gt;
	-- li_style is included for backwards compatibility. item_style was included&lt;br /&gt;
	-- to be easier to understand for non-coders.&lt;br /&gt;
	data.itemStyle = args.item_style or args.li_style&lt;br /&gt;
	data.items = {}&lt;br /&gt;
	for _, num in ipairs(mTableTools.numKeys(args)) do&lt;br /&gt;
		local item = {}&lt;br /&gt;
		item.content = args[num]&lt;br /&gt;
		item.style = args[&#039;item&#039; .. tostring(num) .. &#039;_style&#039;]&lt;br /&gt;
			or args[&#039;item_style&#039; .. tostring(num)]&lt;br /&gt;
		item.value = args[&#039;item&#039; .. tostring(num) .. &#039;_value&#039;]&lt;br /&gt;
			or args[&#039;item_value&#039; .. tostring(num)]&lt;br /&gt;
		table.insert(data.items, item)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderList(data)&lt;br /&gt;
	-- Renders the list HTML.&lt;br /&gt;
	&lt;br /&gt;
	-- Return the blank string if there are no list items.&lt;br /&gt;
	if type(data.items) ~= &#039;table&#039; or #data.items &amp;lt; 1 then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Render the main div tag.&lt;br /&gt;
	local root = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	for _, class in ipairs(data.classes or {}) do&lt;br /&gt;
		root:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	root:css{[&#039;margin-left&#039;] = data.marginLeft}&lt;br /&gt;
	if data.style then&lt;br /&gt;
		root:cssText(data.style)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list tag.&lt;br /&gt;
	local list = root:tag(data.listTag or &#039;ul&#039;)&lt;br /&gt;
	list&lt;br /&gt;
		:attr{start = data.start, type = data.type}&lt;br /&gt;
		:css{&lt;br /&gt;
			[&#039;counter-reset&#039;] = data.counterReset,&lt;br /&gt;
			[&#039;list-style-type&#039;] = data.listStyleType&lt;br /&gt;
		}&lt;br /&gt;
	if data.listStyle then&lt;br /&gt;
		list:cssText(data.listStyle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list items&lt;br /&gt;
	for _, t in ipairs(data.items or {}) do&lt;br /&gt;
		local item = list:tag(&#039;li&#039;)&lt;br /&gt;
		if data.itemStyle then&lt;br /&gt;
			item:cssText(data.itemStyle)&lt;br /&gt;
		end&lt;br /&gt;
		if t.style then&lt;br /&gt;
			item:cssText(t.style)&lt;br /&gt;
		end&lt;br /&gt;
		item&lt;br /&gt;
			:attr{value = t.value}&lt;br /&gt;
			:wikitext(t.content)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return data.templatestyles .. tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args)&lt;br /&gt;
	local isDeprecated = false -- Tracks deprecated parameters.&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		if k:find(&#039;^item_style%d+$&#039;) or k:find(&#039;^item_value%d+$&#039;) then&lt;br /&gt;
			isDeprecated = true&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local ret = &#039;&#039;&lt;br /&gt;
	if isDeprecated then&lt;br /&gt;
		ret = ret .. &#039;[[Category:Pages using module:list with deprecated parameters]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeList(listType, args)&lt;br /&gt;
	if not listType or not listTypes[listType] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;bad argument #1 to &#039;makeList&#039; (&#039;%s&#039; is not a valid list type)&amp;quot;,&lt;br /&gt;
			tostring(listType)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	checkType(&#039;makeList&#039;, 2, args, &#039;table&#039;)&lt;br /&gt;
	local data = p.makeListData(listType, args)&lt;br /&gt;
	local list = p.renderList(data)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args)&lt;br /&gt;
	return list .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for listType in pairs(listTypes) do&lt;br /&gt;
	p[listType] = function (frame)&lt;br /&gt;
		local mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
		local origArgs = mArguments.getArgs(frame, {&lt;br /&gt;
			frameOnly = ((frame and frame.args and frame.args.frameonly or &#039;&#039;) ~= &#039;&#039;),&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
			if not value or not mw.ustring.find(value, &#039;%S&#039;) then return nil end&lt;br /&gt;
			if mw.ustring.find(value, &#039;^%s*[%*#;:]&#039;) then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return value:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		})&lt;br /&gt;
		-- Copy all the arguments to a new table, for faster indexing.&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, v in pairs(origArgs) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return p.makeList(listType, args)&lt;br /&gt;
	end&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Lua_banner&amp;diff=902</id>
		<title>وحدة:Lua banner</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Lua_banner&amp;diff=902"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements the {{lua}} template.&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local mList = require(&#039;Module:List&#039;)&lt;br /&gt;
local mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
local mMessageBox = require(&#039;Module:Message box&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		v = v:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local modules = mTableTools.compressSparseArray(args)&lt;br /&gt;
	local box = p.renderBox(modules)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args, modules)&lt;br /&gt;
	return box .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderBox(modules)&lt;br /&gt;
	local boxArgs = {}&lt;br /&gt;
	if #modules &amp;lt; 1 then&lt;br /&gt;
		boxArgs.text = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: no modules specified&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		local moduleLinks = {}&lt;br /&gt;
		for i, module in ipairs(modules) do&lt;br /&gt;
			moduleLinks[i] = string.format(&#039;[[:%s]]&#039;, module)&lt;br /&gt;
			local maybeSandbox = mw.title.new(module .. &#039;/sandbox&#039;)&lt;br /&gt;
			if maybeSandbox and maybeSandbox.exists then&lt;br /&gt;
				moduleLinks[i] = moduleLinks[i] .. string.format(&#039; ([[:%s|sandbox]])&#039;, maybeSandbox.fullText)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local moduleList = mList.makeList(&#039;bulleted&#039;, moduleLinks)&lt;br /&gt;
		local title = mw.title.getCurrentTitle()&lt;br /&gt;
		if title.subpageText == &amp;quot;doc&amp;quot; then&lt;br /&gt;
			title = title.basePageTitle&lt;br /&gt;
		end&lt;br /&gt;
		if title.contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
			boxArgs.text = &#039;This module depends on the following other modules:&#039; .. moduleList&lt;br /&gt;
		else&lt;br /&gt;
			boxArgs.text = &#039;This template  uses [[Wikipedia:Lua|Lua]]:\n&#039; .. moduleList&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	boxArgs.type = &#039;notice&#039;&lt;br /&gt;
	boxArgs.small = true&lt;br /&gt;
	boxArgs.image = &#039;[[File:Lua-Logo.svg|30px|alt=|link=]]&#039;&lt;br /&gt;
	return mMessageBox.main(&#039;mbox&#039;, boxArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args, modules, titleObj)&lt;br /&gt;
	if yesno(args.nocat) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cats = {}&lt;br /&gt;
&lt;br /&gt;
	-- Error category&lt;br /&gt;
	if #modules &amp;lt; 1 then&lt;br /&gt;
		cats[#cats + 1] = &#039;Lua templates with errors&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Lua templates category&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	local subpageBlacklist = {&lt;br /&gt;
		doc = true,&lt;br /&gt;
		sandbox = true,&lt;br /&gt;
		sandbox2 = true,&lt;br /&gt;
		testcases = true&lt;br /&gt;
	}&lt;br /&gt;
	if not subpageBlacklist[titleObj.subpageText] then&lt;br /&gt;
		local protCatName&lt;br /&gt;
		if titleObj.namespace == 10 then&lt;br /&gt;
			local category = args.category&lt;br /&gt;
			if not category then&lt;br /&gt;
				local categories = {&lt;br /&gt;
					[&#039;Module:String&#039;] = &#039;Templates based on the String Lua module&#039;,&lt;br /&gt;
					[&#039;Module:Math&#039;] = &#039;Templates based on the Math Lua module&#039;,&lt;br /&gt;
					[&#039;Module:BaseConvert&#039;] = &#039;Templates based on the BaseConvert Lua module&#039;,&lt;br /&gt;
					[&#039;Module:Citation/CS1&#039;] = &#039;Templates based on the Citation/CS1 Lua module&#039;&lt;br /&gt;
				}&lt;br /&gt;
				category = modules[1] and categories[modules[1]]&lt;br /&gt;
				category = category or &#039;Lua-based templates&#039;&lt;br /&gt;
			end	&lt;br /&gt;
			cats[#cats + 1] = category&lt;br /&gt;
			protCatName = &amp;quot;Templates using under-protected Lua modules&amp;quot;&lt;br /&gt;
		elseif titleObj.namespace == 828 then&lt;br /&gt;
			protCatName = &amp;quot;Modules depending on under-protected modules&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if not args.noprotcat and protCatName then&lt;br /&gt;
			local protLevels = {&lt;br /&gt;
				autoconfirmed = 1,&lt;br /&gt;
				extendedconfirmed = 2,&lt;br /&gt;
				templateeditor = 3,&lt;br /&gt;
				sysop = 4&lt;br /&gt;
			}&lt;br /&gt;
			local currentProt&lt;br /&gt;
			if titleObj.id ~= 0 then&lt;br /&gt;
				-- id is 0 (page does not exist) if am previewing before creating a template.&lt;br /&gt;
				currentProt = titleObj.protectionLevels[&amp;quot;edit&amp;quot;][1]&lt;br /&gt;
			end&lt;br /&gt;
			if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end&lt;br /&gt;
			for i, module in ipairs(modules) do&lt;br /&gt;
				if module ~= &amp;quot;WP:libraryUtil&amp;quot; then&lt;br /&gt;
					local moduleTitle = mw.title.new(module)&lt;br /&gt;
					local moduleProt = moduleTitle and moduleTitle.protectionLevels[&amp;quot;edit&amp;quot;][1]&lt;br /&gt;
					if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end&lt;br /&gt;
					if moduleProt &amp;lt; currentProt then&lt;br /&gt;
						cats[#cats + 1] = protCatName&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for i, cat in ipairs(cats) do&lt;br /&gt;
		cats[i] = string.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(cats)&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Arguments_with_aliases&amp;diff=900</id>
		<title>وحدة:Arguments with aliases</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Arguments_with_aliases&amp;diff=900"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module is forked from [[:en:Module:Arguments]] to support aliases&lt;br /&gt;
-- main idea of aliases is from [[:en:Citaion/CS1]]&lt;br /&gt;
&lt;br /&gt;
-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = mw.ustring.match(val, &#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return mw.ustring.match(val, &#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if mw.ustring.find(val, &#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tableClone(t)&lt;br /&gt;
	checkType(&#039;tableClone&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	if getmetatable(t) and getmetatable(t).mw_loadData then&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		for k, v in pairs(t) do&lt;br /&gt;
			ret[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	else&lt;br /&gt;
		return t&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local aliases = options.aliases and tableClone(options.aliases) or {}&lt;br /&gt;
	local numbered_aliases = options.numbered_aliases and tableClone(options.numbered_aliases) or nil&lt;br /&gt;
	local backtranslate = options.backtranslate and tableClone(options.backtranslate) or nil&lt;br /&gt;
	local numbered_backtranslate = options.numbered_backtranslate and tableClone(options.numbered_backtranslate) or nil&lt;br /&gt;
	local origin = {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	local translate_mt = { __index = function(t, k)&lt;br /&gt;
			local order_num = mw.ustring.match(k,&#039;%d+&#039;)&lt;br /&gt;
			if order_num and numbered_aliases then&lt;br /&gt;
				local plist =  numbered_aliases[mw.ustring.gsub(k,order_num,&amp;quot;#&amp;quot;)]&lt;br /&gt;
				if plist then&lt;br /&gt;
					local ret&lt;br /&gt;
					if type(plist) == &#039;table&#039; then&lt;br /&gt;
						ret = {}&lt;br /&gt;
						for _,v in ipairs(plist) do&lt;br /&gt;
							local numarg = mw.ustring.gsub(v, &#039;#&#039;, order_num )&lt;br /&gt;
							table.insert(ret, numarg)&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						ret= mw.ustring.gsub(plist, &#039;#&#039;, order_num )&lt;br /&gt;
					end&lt;br /&gt;
					return ret&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return k&lt;br /&gt;
		end&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if getmetatable(aliases) == nil then&lt;br /&gt;
		setmetatable(aliases, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if backtranslate == nil then&lt;br /&gt;
		backtranslate = {}&lt;br /&gt;
		for k, list in pairs(aliases) do&lt;br /&gt;
			if type(list) == &#039;table&#039; then&lt;br /&gt;
				for _, v in pairs(list) do&lt;br /&gt;
					backtranslate[v] = k&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				backtranslate[list] = k&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if numbered_aliases and numbered_backtranslate == nil then&lt;br /&gt;
		numbered_backtranslate = {}&lt;br /&gt;
		for k, list in pairs(numbered_aliases) do&lt;br /&gt;
			if type(list) == &#039;table&#039; then&lt;br /&gt;
				for _, v in pairs(list) do&lt;br /&gt;
					numbered_backtranslate[v] = k&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				numbered_backtranslate[list] = k&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if backtranslate and getmetatable(backtranslate) == nil then&lt;br /&gt;
		setmetatable(backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				local order_num = mw.ustring.match(k,&#039;%d+&#039;)&lt;br /&gt;
				if order_num and numbered_backtranslate then&lt;br /&gt;
					local plist =  numbered_backtranslate[mw.ustring.gsub(k,order_num,&amp;quot;#&amp;quot;)]&lt;br /&gt;
					if plist then&lt;br /&gt;
						return mw.ustring.gsub(plist, &#039;#&#039;, order_num )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				return k&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = mw.ustring.gsub(mw.ustring.gsub(parent:getTitle(), &#039;/sandbox$&#039;, &#039;&#039;), &#039;/ملعب$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for akey, val in pairs(t) do&lt;br /&gt;
				local key = backtranslate[akey]&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
						origin[key] = akey&lt;br /&gt;
					end&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;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif  metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local list = (type(key) == &amp;quot;number&amp;quot;) and key or aliases[key];&lt;br /&gt;
		for _,argTable in ipairs(argTables) do&lt;br /&gt;
			if type( list ) == &#039;table&#039; then&lt;br /&gt;
				for _, alias_key in pairs( list ) do&lt;br /&gt;
					local argTableVal = tidyVal(key, argTable[alias_key])&lt;br /&gt;
					if argTableVal ~= nil then&lt;br /&gt;
						metaArgs[key] = argTableVal&lt;br /&gt;
						origin[key] = alias_key&lt;br /&gt;
						return argTableVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif list ~= nil then&lt;br /&gt;
				local argTableVal = tidyVal(key, argTable[list])&lt;br /&gt;
				if argTableVal ~= nil then&lt;br /&gt;
					metaArgs[key] = argTableVal&lt;br /&gt;
					origin[key] = list&lt;br /&gt;
					return argTableVal&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if argTable[key] then&lt;br /&gt;
				local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
				if argTableVal ~= nil then&lt;br /&gt;
					metaArgs[key] = argTableVal&lt;br /&gt;
					origin[key] = key&lt;br /&gt;
					return argTableVal&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args._ORIGIN = function ( self, k )&lt;br /&gt;
		-- تعطي الوسيط الأصلي الذي كتبه المستخدم مهمة في رسائل الخطأ&lt;br /&gt;
		local dummy = self[k];												-- force the variable to be loaded.&lt;br /&gt;
		return origin[k];&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif k == &#039;_ORIGIN&#039; then&lt;br /&gt;
			return translatenext(invariant)&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local k_backtranslate = backtranslate[k]&lt;br /&gt;
			if k_backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return k_backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Message_box/ombox.css&amp;diff=898</id>
		<title>وحدة:Message box/ombox.css</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Message_box/ombox.css&amp;diff=898"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=y}} */&lt;br /&gt;
.ombox {&lt;br /&gt;
	margin: 4px 0;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border: 1px solid #a2a9b1;    /* Default &amp;quot;notice&amp;quot; gray */&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	color: var(--color-base, #202122);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* For the &amp;quot;small=yes&amp;quot; option. */&lt;br /&gt;
.ombox.mbox-small {&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox-speedy {&lt;br /&gt;
	border: 2px solid #b32424;    /* Red */&lt;br /&gt;
	background-color: #fee7e6;    /* Pink */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox-delete {&lt;br /&gt;
	border: 2px solid #b32424;    /* Red */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox-content {&lt;br /&gt;
	border: 1px solid #f28500;    /* Orange */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox-style {&lt;br /&gt;
	border: 1px solid #fc3;       /* Yellow */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox-move {&lt;br /&gt;
	border: 1px solid #9932cc;    /* Purple */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox-protection {&lt;br /&gt;
	border: 2px solid #a2a9b1;    /* Gray-gold */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox .mbox-text {&lt;br /&gt;
	border: none;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding: 0.25em 0.9em;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox .mbox-image {&lt;br /&gt;
	border: none;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding: 2px 0.9em 2px 0;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox .mbox-imageright {&lt;br /&gt;
	border: none;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding: 2px 0 2px 0.9em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* An empty narrow cell */&lt;br /&gt;
.ombox .mbox-empty-cell {&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	width: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.ombox .mbox-invalid-type {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (min-width: 720px) {&lt;br /&gt;
	.ombox {&lt;br /&gt;
		margin: 4px 10%;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.ombox.mbox-small {&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		clear: left;&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		float: left;&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		margin: 4px 1em 4px 0;&lt;br /&gt;
		width: 238px;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
    html.skin-theme-clientpref-night .ombox-speedy {&lt;br /&gt;
		background-color: #310402;    /* Dark red, same hue/saturation as light */&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 .ombox-speedy {&lt;br /&gt;
		background-color: #310402; /* Dark red, same hue/saturation as light */&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Message_box/configuration&amp;diff=896</id>
		<title>وحدة:Message box/configuration</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Message_box/configuration&amp;diff=896"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Message box configuration                         --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module contains configuration data for [[Module:Message box]].        --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;ambox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;ambox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;ambox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;ambox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;ambox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;ambox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;ambox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default                     = &#039;notice&#039;,&lt;br /&gt;
		allowBlankParams            = {&#039;talk&#039;, &#039;sect&#039;, &#039;date&#039;, &#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;, &#039;hidden&#039;},&lt;br /&gt;
		allowSmall                  = true,&lt;br /&gt;
		smallParam                  = &#039;left&#039;,&lt;br /&gt;
		smallClass                  = &#039;mbox-small-left&#039;,&lt;br /&gt;
		substCheck                  = true,&lt;br /&gt;
		classes                     = {&#039;metadata&#039;, &#039;ambox&#039;},&lt;br /&gt;
		imageEmptyCell              = true,&lt;br /&gt;
		imageCheckBlank             = true,&lt;br /&gt;
		imageSmallSize              = &#039;20x20px&#039;,&lt;br /&gt;
		imageCellDiv                = true,&lt;br /&gt;
		useCollapsibleTextFields    = true,&lt;br /&gt;
		imageRightNone              = true,&lt;br /&gt;
		sectionDefault              = &#039;article&#039;,&lt;br /&gt;
		allowMainspaceCategories    = true,&lt;br /&gt;
		templateCategory            = &#039;Article message templates&#039;,&lt;br /&gt;
	        templateCategoryRequireName = true,&lt;br /&gt;
		templateErrorCategory       = &#039;Article message templates with missing parameters&#039;,&lt;br /&gt;
		templateErrorParamsToCheck  = {&#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;},&lt;br /&gt;
		removalNotice               = &#039;&amp;lt;small&amp;gt;[[Help:Maintenance template removal|Learn how and when to remove this message]]&amp;lt;/small&amp;gt;&#039;,&lt;br /&gt;
		templatestyles              = &#039;Module:Message box/ambox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	cmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;cmbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;cmbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;cmbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;cmbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;cmbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;cmbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;cmbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;cmbox&#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/cmbox.css&#039;,&lt;br /&gt;
		div_structure        = true,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	fmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			warning = {&lt;br /&gt;
				class = &#039;fmbox-warning&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			editnotice = {&lt;br /&gt;
				class = &#039;fmbox-editnotice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			system = {&lt;br /&gt;
				class = &#039;fmbox-system&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;system&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;fmbox&#039;},&lt;br /&gt;
		imageEmptyCell       = false,&lt;br /&gt;
		imageRightNone       = false,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/fmbox.css&#039;,&lt;br /&gt;
		div_structure        = true,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	imbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;imbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;imbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;imbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;imbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;imbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;imbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			license = {&lt;br /&gt;
				class = &#039;imbox-license licensetpl&#039;,&lt;br /&gt;
				image = &#039;Imbox-license.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;license-related&amp;quot;] = {&lt;br /&gt;
				class = &#039;imbox-license&#039;,&lt;br /&gt;
				image = &#039;Imbox-license.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			featured = {&lt;br /&gt;
				class = &#039;imbox-featured&#039;,&lt;br /&gt;
				image = &#039;Cscr-featured.svg&#039;,&lt;br /&gt;
				imageNeedsLink = true&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;imbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;imbox&#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		below                = true,&lt;br /&gt;
		templateCategory     = &#039;File message boxes&#039;,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/imbox.css&#039;,&lt;br /&gt;
		div_structure        = true,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ombox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;ombox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;ombox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;ombox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;ombox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;ombox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;ombox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;ombox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;ombox&#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/ombox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	tmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;tmbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;tmbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;tmbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;tmbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;tmbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;tmbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;tmbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;tmbox&#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		templateCategory     = &#039;Talk message boxes&#039;,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/tmbox.css&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Transclusion_count/data/%D9%85&amp;diff=894</id>
		<title>وحدة:Transclusion count/data/م</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Transclusion_count/data/%D9%85&amp;diff=894"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;م&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;مؤشر_لوني&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;متر&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;محاذاة&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;محافظات_اليمن&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;محتوى&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;مخفي&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;مخفي_آخر&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;مخفي_أول&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;مداخل_على_سطور&amp;quot;] = 751000,&lt;br /&gt;
[&amp;quot;مدخلات_مفصولة_بفاصلة&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;مدرب_تشكيلة_فريق_كرة_قدم&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;مراجع&amp;quot;] = 1190000,&lt;br /&gt;
[&amp;quot;مراجع/styles.css&amp;quot;] = 1190000,&lt;br /&gt;
[&amp;quot;مرتب_مخفي&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;مرجع_سبورتس_رفرنس&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;مرجع_ويب&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;مرفوض&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;مركز_في_مسابقة/عضو&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;مركز_في_مسابقة/لون_مركز&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;مس&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;مسار&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;مسار1&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;مستخدم_ar&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;مستخدم_عربي&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;مستخدم_مسلم&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;مستخدم_ن&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أسماك&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أسماك/الصنف&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أعلام&amp;quot;] = 894000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أعلام/الصنف&amp;quot;] = 894000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أعلام/فحص&amp;quot;] = 894000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أفغانستان&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أفغانستان/الأهمية&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أفغانستان/الصنف&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ألعاب_أولمبية&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ألعاب_أولمبية/الصنف&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ألعاب_الفيديو&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ألعاب_الفيديو/الصنف&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أوروبا&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_أوروبا/الصنف&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إسرائيل&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إسرائيل/الأهمية&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إسرائيل/الصنف&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إنترنت&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إنترنت/الصنف&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إيران&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إيران/الأهمية&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إيران/الصنف&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إيطاليا&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إيطاليا/الأهمية&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_إيطاليا/الصنف&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الأردن&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الأردن/الأهمية&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الأردن/الصنف&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الأنمي_والمانغا&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الأنمي_والمانغا/الأهمية&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الأنمي_والمانغا/الصنف&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الإسلام&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الإسلام/الأهمية&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الإسلام/الصنف&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_البحرين&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_البحرين/الأهمية&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_البحرين/الصنف&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الجزائر&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الجزائر/الصنف&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الدولة_العثمانية&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الدولة_العثمانية/الأهمية&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الدولة_العثمانية/الصنف&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السعودية&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السعودية/الأهمية&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السعودية/الصنف&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السعودية/فحص&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السودان&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السودان/الأهمية&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_السودان/الصنف&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الصين&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_العراق&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_العراق/الصنف&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_القوائم&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_القوائم/الصنف&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الكويت&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الكويت/الصنف&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_اللغة_العربية&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_اللغة_العربية/الأهمية&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_اللغة_العربية/الصنف&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المرأة&amp;quot;] = 109000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المرأة/الأهمية&amp;quot;] = 109000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المرأة/الصنف&amp;quot;] = 109000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المسيحية&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المسيحية/الصنف&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المغرب&amp;quot;] = 62000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المغرب/الأهمية&amp;quot;] = 62000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_المغرب/الصنف&amp;quot;] = 62000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الهند&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الهند/الصنف&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الوطن_العربي&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الوطن_العربي/الصنف&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الولايات_المتحدة&amp;quot;] = 376000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_الولايات_المتحدة/الصنف&amp;quot;] = 376000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_اليمن&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_اليمن/الأهمية&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_اليمن/الصنف&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_برمجيات&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_برمجيات/الصنف&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_بيئة&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تاريخ&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تربية_وتعليم&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تربية_وتعليم/الأهمية&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تربية_وتعليم/الصنف&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تركيا&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تشريح&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تشريح/الصنف&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تقنية&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تقنية/الصنف&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تلفاز&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تلفاز/الصنف&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تونس&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تونس/الأهمية&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_تونس/الصنف&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ثدييات&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ثدييات/الصنف&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_جغرافيا&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_جغرافيا/الأهمية&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_جغرافيا/الصنف&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_حوسبة&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_حوسبة/الصنف&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ركوب_الدراجات&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_ركوب_الدراجات/الصنف&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_روسيا&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_روسيا/الصنف&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_رياضة&amp;quot;] = 237000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_رياضة/الصنف&amp;quot;] = 237000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_رياضيات&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_رياضيات/الصنف&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_زواحف_وبرمائيات&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_زواحف_وبرمائيات/الصنف&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سوريا&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سوريا/الصنف&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سياسة&amp;quot;] = 108000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سياسة/الأهمية&amp;quot;] = 108000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سياسة/الصنف&amp;quot;] = 108000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سينما&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_سينما/الصنف&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_صيدلة&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_صيدلة/الصنف&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_طب&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_طب/الصنف&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_طيور&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_طيور/الصنف&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علم_الأحياء&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علم_الأحياء/الأهمية&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علم_الأحياء/الصنف&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علم_الأحياء_القديمة&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علم_الأحياء_القديمة/الصنف&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علم_الحاسوب&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علوم&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_علوم/الصنف&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_عمارة&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلسطين&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلسطين/الأهمية&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلسطين/الصنف&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلسفة&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلسفة/الصنف&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلك&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فلك/الصنف&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فيزياء&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_فيزياء/الصنف&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_قطر&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_قطر/الأهمية&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_قطر/الصنف&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كرة_السلة&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كرة_السلة/الصنف&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كرة_القدم&amp;quot;] = 228000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كرة_القدم/الصنف&amp;quot;] = 228000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كرة_المضرب&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كندا&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كندا/الصنف&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كوريا_الجنوبية&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كوريا_الجنوبية/الصنف&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كيمياء&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كيمياء/الأهمية&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_كيمياء/الصنف&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_لبنان&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_لبنان/الصنف&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_مأكولات_ومشروبات&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_مسيحية&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_مصر&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_مصر/الصنف&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_موسيقى&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_موسيقى/الصنف&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;مشروع_ويكي_نقل&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;مصادر_أكثر&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;مصادر_طبية&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;مصدر&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;مصر&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;مصنف&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;مض&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;مع&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;معرفات_الأصنوفة&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;معرفات_مركب_كيميائي&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;معلومات&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;معلومات/styles.css&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;معلومات_تشريح&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;معلومات_تشريح/لون&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;معلومات_تلفاز&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;معلومات_خاصية_ويكي_بيانات&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;معلومات_رافع_الملف&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;معلومات_رياضي/ميداليات&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;معلومات_شخصية_عسكرية&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;معلومات_شخصية_كرة_مضرب_2&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;معلومات_صاحب_منصب&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;معلومات_عالم&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;معلومات_علاقات_ثنائية&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;معلومات_عن_دوري&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;معلومات_فرقة/لون&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;معلومات_كوكب&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;معلومات_كوكب/تصنيف&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;معلومات_كيمياء&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;معلومات_كيمياء_-_خواص&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;معلومات_كيمياء_-_مخاطر&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;معلومات_كيمياء_-_معرفات&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;معلومات_كيمياء_-_ملحق&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;معلومات_لاعب_كرة_يد&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;معلومات_لعبة_فيديو&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;معلومات_مدينة&amp;quot;] = 86000,&lt;br /&gt;
[&amp;quot;معلومات_مدينة/احداثيات&amp;quot;] = 177000,&lt;br /&gt;
[&amp;quot;معلومات_مرض&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;معلومات_مغن&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;معلومات_ملاكم&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;معلومات_ممثل&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;معلومات_نزاع_عسكري&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;معلومات_نزاع_عسكري/قسم&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;مفصلة&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;مقالة_تصنيف&amp;quot;] = 115000,&lt;br /&gt;
[&amp;quot;مقالة_غير_مراجعة&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مقالة_غير_مراجعة/تصنيف_حسب_النوع_من_ويكي_بيانات&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;مقالة_للحذف/حذف&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;مقالة_للحذف/ذيل_التصويت&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;مقالة_للحذف/رأس_التصويت&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;مقالة_مسابقة&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;مقبول&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;ملا&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;ملاحظات&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;ملاحظة_علوية&amp;quot;] = 124000,&lt;br /&gt;
[&amp;quot;ملاحظة_لوصلة&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;ملصق&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;ملصق_غير_حر&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;ملعب_آخر&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;ملعب_أخر&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;ملعب_مستخدم&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;ملف_آخر&amp;quot;] = 55000,&lt;br /&gt;
[&amp;quot;ملون&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;منذ&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;منطقة_يمنية&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;منطقة_يمنية/تتبع&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;منطقة_يمنية/نوع&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;مواضيع_إيطاليا&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;مواضيع_بلد&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;مواقع_التواصل_الاجتماعي&amp;quot;] = 55000,&lt;br /&gt;
[&amp;quot;موضوع_في_قرن&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;موقع_رسمي&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;مونو&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;مونو/styles.css&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;ميدالية_بلد&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;ميدالية_مسابقة&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;ميديا_حرة&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;ميز&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Module:مدة&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Module:مصنف&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Module:ملعب/Mr._Ibrahem/f&amp;quot;] = 106000,&lt;br /&gt;
[&amp;quot;Module:مواقع_التواصل_الاجتماعي&amp;quot;] = 55000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Yesno&amp;diff=892</id>
		<title>وحدة:Yesno</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Yesno&amp;diff=892"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to the template {{yesno}}.&lt;br /&gt;
&lt;br /&gt;
return function (val, default)&lt;br /&gt;
	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you&lt;br /&gt;
	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the&lt;br /&gt;
	-- following line.&lt;br /&gt;
	val = type(val) == &#039;string&#039; and val:lower() or val&lt;br /&gt;
	if val == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif val == true &lt;br /&gt;
		or val == &#039;yes&#039;&lt;br /&gt;
		or val == &#039;y&#039;&lt;br /&gt;
		or val == &#039;true&#039;&lt;br /&gt;
		or val == &#039;t&#039;&lt;br /&gt;
		or val == &#039;on&#039;&lt;br /&gt;
		or tonumber(val) == 1&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	elseif val == false&lt;br /&gt;
		or val == &#039;no&#039;&lt;br /&gt;
		or val == &#039;n&#039;&lt;br /&gt;
		or val == &#039;false&#039;&lt;br /&gt;
		or val == &#039;f&#039;&lt;br /&gt;
		or val == &#039;off&#039;&lt;br /&gt;
		or tonumber(val) == 0&lt;br /&gt;
	then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Transclusion_count/%D9%85%D9%84%D8%B9%D8%A8&amp;diff=890</id>
		<title>وحدة:Transclusion count/ملعب</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Transclusion_count/%D9%85%D9%84%D8%B9%D8%A8&amp;diff=890"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._fetch(args)&lt;br /&gt;
	local template = nil&lt;br /&gt;
	local return_value = nil&lt;br /&gt;
&lt;br /&gt;
	-- Use demo parameter if it exists, otherwise use current template name&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	if args[&amp;quot;demo&amp;quot;] and args[&amp;quot;demo&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		template = mw.ustring.gsub(args[&amp;quot;demo&amp;quot;],&amp;quot;^[Tt]emplate:&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
	elseif namespace == 10 then -- Template namespace&lt;br /&gt;
		template = mw.title.getCurrentTitle().text&lt;br /&gt;
	elseif namespace == 828 then -- Module namespace&lt;br /&gt;
		template = (mw.site.namespaces[828].name .. &amp;quot;:&amp;quot; .. mw.title.getCurrentTitle().text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If in template or module namespace, look up count in /data&lt;br /&gt;
	if template ~= nil then&lt;br /&gt;
		namespace = mw.title.new(template, &amp;quot;Template&amp;quot;).namespace&lt;br /&gt;
		if namespace == 10 or namespace == 828 then&lt;br /&gt;
			template =  mw.ustring.gsub(template, &amp;quot;/doc$&amp;quot;, &amp;quot;&amp;quot;) -- strip /doc from end&lt;br /&gt;
			template =  mw.ustring.gsub(template, &amp;quot;/sandbox$&amp;quot;, &amp;quot;&amp;quot;) -- strip /sandbox from end&lt;br /&gt;
			local index = mw.ustring.sub(mw.title.new(template).text,1,1)&lt;br /&gt;
			local status, data = pcall(function ()&lt;br /&gt;
				return(mw.loadData(&#039;Module:Transclusion_count/data/&#039; .. (mw.ustring.find(index, &amp;quot;%a&amp;quot;) and index or &amp;quot;other&amp;quot;)))&lt;br /&gt;
			end)&lt;br /&gt;
			if status then&lt;br /&gt;
				return_value = tonumber(data[mw.ustring.gsub(template, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- If database value doesn&#039;t exist, use value passed to template&lt;br /&gt;
	if return_value == nil and args[1] ~= nil then&lt;br /&gt;
		local arg1=mw.ustring.match(args[1], &#039;[%d,]+&#039;)&lt;br /&gt;
		if arg1 and arg1 ~= &#039;&#039; then&lt;br /&gt;
			return_value = tonumber(mw.getCurrentFrame():callParserFunction(&#039;formatnum&#039;, arg1, &#039;R&#039;))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return return_value	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.fetch(frame)&lt;br /&gt;
	return p._fetch(frame.args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tabulate this data for [[ويكيبيديا:تقارير قاعدة البيانات/القوالب المضمنة في معظم الصفحات]]&lt;br /&gt;
function p.tabulate()&lt;br /&gt;
	local list = {}&lt;br /&gt;
	for i = 65, 91 do&lt;br /&gt;
		local data = mw.loadData(&#039;Module:Transclusion count/data/&#039; .. ((i == 91) and &#039;other&#039; or string.char(i)))&lt;br /&gt;
		for name, count in pairs(data) do&lt;br /&gt;
			table.insert(list, {mw.title.new(name, &amp;quot;Template&amp;quot;).fullText, count})	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(list, function(a, b)&lt;br /&gt;
		return (a[2] == b[2]) and (a[1] &amp;lt; b[1]) or (a[2] &amp;gt; b[2])&lt;br /&gt;
	end)&lt;br /&gt;
	local lang = mw.getContentLanguage();&lt;br /&gt;
	for i = 1, #list do&lt;br /&gt;
		list[i] = (&#039;|-\n| %d || [[%s]] || %s\n&#039;):format(i, list[i][1]:gsub(&#039;_&#039;, &#039; &#039;), lang:formatNum(list[i][2]))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(list)&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:High-use&amp;diff=888</id>
		<title>وحدة:High-use</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:High-use&amp;diff=888"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local _fetch = require(&#039;Module:Transclusion_count&#039;)._fetch -- _fetch looks at the &#039;demo&#039; argument&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
local lang_obj = mw.getContentLanguage() -- this here because the language object is used multiple places in the module&lt;br /&gt;
local large_count_cutoff = 100000&lt;br /&gt;
local approx_num_total_pages = 65700000&lt;br /&gt;
&lt;br /&gt;
local user_subpage_info_page = &#039;Wikipedia:User pages#SUB&#039;&lt;br /&gt;
local sandbox_module_page = &#039;Module:Sandbox&#039;&lt;br /&gt;
local system_messages_cat = &#039;Pages used in system messages needing protection&#039;&lt;br /&gt;
local sandbox_word = &#039;sandbox&#039;&lt;br /&gt;
local testcases_word = &#039;testcases&#039;&lt;br /&gt;
local doc_word = &#039;doc&#039;&lt;br /&gt;
&lt;br /&gt;
local function count_from_args(args)&lt;br /&gt;
	if tonumber(args.count) then -- check if function has already been used&lt;br /&gt;
		return tonumber(args.count) -- early exit if so&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local count&lt;br /&gt;
	&lt;br /&gt;
	if yesno(args[&#039;fetch&#039;]) ~= false then&lt;br /&gt;
		count = _fetch(args) -- fetch transclusion count&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- use explicitly-provided count when fetch fails&lt;br /&gt;
	if count == nil and args[1] ~= nil and args[1] ~= &#039;&#039; then&lt;br /&gt;
		-- convert local language number string to a number understandable by Lua&lt;br /&gt;
		count = mw.ustring.gsub(args[1], &#039;+$&#039;, &#039;&#039;)&lt;br /&gt;
		count = lang_obj:parseFormattedNumber(args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- in case someone writes a non-positive number&lt;br /&gt;
	if count and count &amp;gt; 0 then&lt;br /&gt;
		return count&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Actions if there is a large (greater than or equal to 100,000) transclusion count&lt;br /&gt;
local function risk_boolean(args)&lt;br /&gt;
	if args.risk == true or args.risk == false then&lt;br /&gt;
		return args.risk&lt;br /&gt;
	elseif args[1]  == &#039;risk&#039; then&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		local count = count_from_args(args)&lt;br /&gt;
		if count and count &amp;gt;= large_count_cutoff 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;
-- function retained for backwards compatibility&lt;br /&gt;
function p._risk(args)&lt;br /&gt;
	return risk_boolean(args) and &#039;risk&#039; or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- function retained for backwards compatibility&lt;br /&gt;
function p.risk(frame)&lt;br /&gt;
	return p._risk(getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- count and no_percent arguments retained for backwards compatibility&lt;br /&gt;
function p._num(args, count, no_percent)&lt;br /&gt;
	if count == nil then&lt;br /&gt;
		count = count_from_args(args)&lt;br /&gt;
	end&lt;br /&gt;
	args.count = count&lt;br /&gt;
	args.risk = risk_boolean(args)&lt;br /&gt;
	&lt;br /&gt;
	-- Build output string&lt;br /&gt;
	local return_value = &#039;&#039;&lt;br /&gt;
	if args.count == nil and args.risk then&lt;br /&gt;
		return &#039;a very large number of&#039;&lt;br /&gt;
	elseif args.count == nil then&lt;br /&gt;
		return &#039;many&#039;&lt;br /&gt;
	else&lt;br /&gt;
		-- Use 2 significant figures for smaller numbers and 3 for larger ones&lt;br /&gt;
		local sigfig = 2&lt;br /&gt;
		if args.count &amp;gt;= large_count_cutoff then&lt;br /&gt;
			sigfig = 3&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Prepare to round to appropriate number of sigfigs&lt;br /&gt;
		local f = math.floor(math.log10(args.count)) - sigfig + 1&lt;br /&gt;
		&lt;br /&gt;
		-- Round and insert &#039;approximately&#039; or &#039;+&#039; when appropriate&lt;br /&gt;
		if yesno(args[2]) == true or (type(args[1]) == &#039;string&#039; and (mw.ustring.sub(args[1], -1) == &#039;+&#039;)) then&lt;br /&gt;
			-- Round down&lt;br /&gt;
			return_value = string.format(&#039;%s+&#039;, lang_obj:formatNum(math.floor( (args.count / 10^(f)) ) * (10^(f))) )&lt;br /&gt;
		else&lt;br /&gt;
			-- Round to nearest&lt;br /&gt;
			return_value = string.format(&#039;approximately&amp;amp;#x20;%s&#039;, lang_obj:formatNum(math.floor( (args.count / 10^(f)) + 0.5) * (10^(f))) )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Insert percentage of pages if that is likely to be &amp;gt;= 1% and when |no-percent= not set to yes&lt;br /&gt;
		no_percent = yesno(no_percent or args[&#039;no-percent&#039;])&lt;br /&gt;
		if args.count and args.count &amp;gt;= approx_num_total_pages/100 and not no_percent then&lt;br /&gt;
			local num_total_pages = mw.getCurrentFrame():callParserFunction(&#039;NUMBEROFPAGES&#039;, &#039;R&#039;)&lt;br /&gt;
			local total_percent = math.floor( ( ( args.count/num_total_pages ) * 100) + 0.5)&lt;br /&gt;
			&lt;br /&gt;
			if total_percent &amp;gt;= 1 then&lt;br /&gt;
				return_value = string.format(&#039;%s&amp;amp;#x20;pages, or roughly %s%% of all&#039;, return_value, total_percent)&lt;br /&gt;
			end&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return return_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used by [[Template:Stub documentation]] and other pages&lt;br /&gt;
-- count argument retained for backwards compatibility&lt;br /&gt;
function p.num(frame, count)&lt;br /&gt;
	return p._num(getArgs(frame), count)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- count argument retained for backwards compatibility&lt;br /&gt;
function p._text(args, count)&lt;br /&gt;
	--[=[&lt;br /&gt;
		Only show the information about how this template gets updated&lt;br /&gt;
		if someone is actually editing the page and maybe trying to update the count.&lt;br /&gt;
	]=]&lt;br /&gt;
	local bot_text = (mw.getCurrentFrame():preprocess(&#039;{{REVISIONID}}&#039;) == &#039;&#039;) and (&amp;quot;\n\n----\n&#039;&#039;&#039;Preview message&#039;&#039;&#039;:&amp;quot; .. &#039; Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]]).&#039;) or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	if count == nil then&lt;br /&gt;
		count = count_from_args(args)&lt;br /&gt;
	end&lt;br /&gt;
	args.count = count&lt;br /&gt;
	args.risk = risk_boolean(args)&lt;br /&gt;
	&lt;br /&gt;
	-- trim /doc, /sandbox and /testcases&lt;br /&gt;
	local title = args.title or (args.demo and args.demo ~= &#039;&#039; and mw.title.new(args.demo, &#039;Template&#039;)) or mw.title.getCurrentTitle()&lt;br /&gt;
	if title.subpageText == doc_word or title.subpageText == sandbox_word or title.subpageText == testcases_word then&lt;br /&gt;
		title = title.basePageTitle&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- use /testcases of base template&lt;br /&gt;
	local testcases_page = mw.title.new(title.prefixedText .. &#039;/&#039; .. testcases_word)&lt;br /&gt;
	-- exists is expensive&lt;br /&gt;
	while testcases_page.basePageTitle.isSubpage and not testcases_page.exists do&lt;br /&gt;
		testcases_page = mw.title.new(testcases_page.basePageTitle.basePageTitle.prefixedText .. &#039;/&#039; .. testcases_word)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local systemMessages = (args[&#039;system&#039;] or &#039;&#039;) ~= &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- This retrieves the project URL automatically to simplify localization.&lt;br /&gt;
	local templateCount = (&#039;on [https://linkcount.toolforge.org/?project=%s&amp;amp;page=%s#transclusions %s pages]&#039;):format(&lt;br /&gt;
		title:fullUrl():gsub(&#039;//(.-)/.*&#039;, &#039;%1&#039;),&lt;br /&gt;
		mw.uri.encode(title.fullText), p._num(args))&lt;br /&gt;
	local used_on_text = &amp;quot;&#039;&#039;&#039;This &amp;quot; .. (title:inNamespace(&#039;Module&#039;) and &#039;Lua module&#039; or &#039;template&#039;) .. &#039; is used &#039;&lt;br /&gt;
	if systemMessages then&lt;br /&gt;
		used_on_text = used_on_text .. args[&#039;system&#039;] ..&lt;br /&gt;
			((args.count and args.count &amp;gt; 2000) and (&amp;quot;&#039;&#039;&#039;, and &amp;quot; .. templateCount) or (&amp;quot;&#039;&#039;&#039;&amp;quot;))&lt;br /&gt;
	else&lt;br /&gt;
		used_on_text = used_on_text .. templateCount .. &amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local sandbox_text = (&#039;%s\&#039;s [[%s/sandbox|/sandbox]] or [[%s|/testcases]] subpages, or in your own [[%s]]. &#039;):format(&lt;br /&gt;
		title:inNamespace(&#039;Module&#039;) and &#039;module&#039; or &#039;template&#039;,&lt;br /&gt;
		title.fullText,&lt;br /&gt;
		testcases_page.fullText,&lt;br /&gt;
		title:inNamespace(&#039;Module&#039;) and (sandbox_module_page .. &#039;|module sandbox&#039;) or (user_subpage_info_page .. &#039;|user subpage&#039;)&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	local infoArg = args[&#039;info&#039;] ~= &#039;&#039; and args[&#039;info&#039;]&lt;br /&gt;
	if (systemMessages or args.risk) then&lt;br /&gt;
		local info = &#039;.&#039;&lt;br /&gt;
		if systemMessages then&lt;br /&gt;
			info = info .. &#039;&amp;lt;br /&amp;gt;Changes to it can cause immediate changes to the &#039; .. mw.site.namespaces.Project.name .. &#039; user interface.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if infoArg then&lt;br /&gt;
			info = info .. &#039;&amp;lt;br /&amp;gt;&#039; .. infoArg&lt;br /&gt;
		end&lt;br /&gt;
		sandbox_text = info .. &#039;&amp;lt;br /&amp;gt; To avoid major disruption&#039; ..&lt;br /&gt;
			(args.count and args.count &amp;gt;= large_count_cutoff and &#039; and server load&#039; or &#039;&#039;) .. -- should this use args.risk?&lt;br /&gt;
			&#039;, any changes should be tested in the &#039; .. sandbox_text ..&lt;br /&gt;
			&#039;The tested changes can be added to this page in a single edit. &#039;&lt;br /&gt;
	else&lt;br /&gt;
		sandbox_text = (infoArg and (&#039;.&amp;lt;br /&amp;gt;&#039; .. infoArg .. &#039; C&#039;) or &#039; and c&#039;) ..&lt;br /&gt;
			&#039;hanges may be widely noticed. Test changes in the &#039; .. sandbox_text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local discussion_text = systemMessages and &#039;Please discuss changes &#039; or &#039;Consider discussing changes &#039;&lt;br /&gt;
	if args[2] ~= nil and args[2] ~= &#039;&#039; and yesno(args[2]) == nil then&lt;br /&gt;
		discussion_text = string.format(&#039;%sat [[%s]]&#039;, discussion_text, args[2])&lt;br /&gt;
	else&lt;br /&gt;
		discussion_text = string.format(&#039;%son the [[%s|talk page]]&#039;, discussion_text, title.talkPageTitle.fullText)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return used_on_text .. sandbox_text .. discussion_text .. &#039; before implementing them.&#039; .. bot_text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used by [[Template:R from high-use template]]&lt;br /&gt;
-- count argument retained for backwards compatibility&lt;br /&gt;
function p.text(frame, count)&lt;br /&gt;
	return p._text(getArgs(frame), count)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- nocat argument retained for backwards compatibility&lt;br /&gt;
function p._main(args, nocat)&lt;br /&gt;
	args.count = count_from_args(args)&lt;br /&gt;
	args.risk = risk_boolean(args)&lt;br /&gt;
	args.title = (args.demo and args.demo ~= &#039;&#039; and mw.title.new(args.demo, &#039;Template&#039;)) or mw.title.getCurrentTitle()&lt;br /&gt;
	&lt;br /&gt;
	local image = &#039;Ambox warning yellow.svg&#039;&lt;br /&gt;
	local type_param = &#039;style&#039;&lt;br /&gt;
	local epilogue = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	if args[&#039;system&#039;] and args[&#039;system&#039;] ~= &#039;&#039; then&lt;br /&gt;
		image = &#039;Ambox important.svg&#039;&lt;br /&gt;
		type_param = &#039;content&#039;&lt;br /&gt;
		if yesno(nocat or args[&#039;nocat&#039;]) ~= true and not args.title.isRedirect then&lt;br /&gt;
			local protection_action = (args.title:inNamespace(&#039;File&#039;) and &#039;upload&#039;) or &#039;edit&#039;&lt;br /&gt;
			local protection_level = require(&#039;Module:Effective protection level&#039;)._main(protection_action, args.title.fullText)&lt;br /&gt;
			&lt;br /&gt;
			if protection_level ~= &#039;sysop&#039; and protection_level ~= &#039;templateeditor&#039; and protection_level ~= &#039;interfaceadmin&#039; then&lt;br /&gt;
				epilogue = mw.getCurrentFrame():expandTemplate {&lt;br /&gt;
					title = &#039;sandbox other&#039;,&lt;br /&gt;
					args = {&lt;br /&gt;
						[2] = &#039;[[Category:&#039; .. system_messages_cat .. &#039;]]&#039;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif args.risk then&lt;br /&gt;
		image = &#039;Ambox warning orange.svg&#039;&lt;br /&gt;
		type_param = &#039;content&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	image = &#039;[[File:&#039; .. image .. &#039;|40px|alt=Warning|link=]]&#039;&lt;br /&gt;
	if args[&#039;form&#039;] == &#039;editnotice&#039; then&lt;br /&gt;
		return mw.getCurrentFrame():expandTemplate{&lt;br /&gt;
				title = &#039;editnotice&#039;,&lt;br /&gt;
				args = {&lt;br /&gt;
						[&#039;image&#039;] = image,&lt;br /&gt;
						[&#039;text&#039;] = p._text(args),&lt;br /&gt;
						[&#039;expiry&#039;] = (args[&#039;expiry&#039;] or &#039;&#039;)&lt;br /&gt;
				}&lt;br /&gt;
		} .. epilogue&lt;br /&gt;
	else&lt;br /&gt;
		return require(&#039;Module:Message box&#039;).main(&#039;ombox&#039;, {&lt;br /&gt;
			type = type_param,&lt;br /&gt;
			image = image,&lt;br /&gt;
			text = p._text(args),&lt;br /&gt;
			expiry = (args[&#039;expiry&#039;] or &#039;&#039;)&lt;br /&gt;
		}) .. epilogue&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	return p._main(getArgs(frame))&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://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%AA%D9%88%D8%AB%D9%8A%D9%82/%D8%B6%D8%A8%D8%B7&amp;diff=886</id>
		<title>وحدة:توثيق/ضبط</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%AA%D9%88%D8%AB%D9%8A%D9%82/%D8%B6%D8%A8%D8%B7&amp;diff=886"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----------------------------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                               Configuration for Module:Documentation&lt;br /&gt;
--&lt;br /&gt;
-- Here you can set the values of the parameters and messages used in Module:Documentation to&lt;br /&gt;
-- localise it to your wiki and your language. Unless specified otherwise, values given here&lt;br /&gt;
-- should be string values.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Do not edit this line.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Protection template configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;protection-reason-edit&#039;]&lt;br /&gt;
-- The protection reason for edit-protected templates to pass to&lt;br /&gt;
-- [[Module:Protection banner]].&lt;br /&gt;
cfg[&#039;protection-reason-edit&#039;] = &#039;قالب&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox notice configuration&lt;br /&gt;
--&lt;br /&gt;
-- On sandbox pages the module can display a template notifying users that the current page is a&lt;br /&gt;
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a&lt;br /&gt;
-- sandbox or not based on the value of cfg[&#039;sandbox-subpage&#039;]. The following settings configure the&lt;br /&gt;
-- messages that the notices contains.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-notice-image&#039;]&lt;br /&gt;
-- The image displayed in the sandbox notice.&lt;br /&gt;
cfg[&#039;sandbox-notice-image&#039;] = &#039;[[ملف:Sandbox.svg|50px|alt=|link=]]&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-template&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-module&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-other&#039;]&lt;br /&gt;
-- The page type of the sandbox page. The message that is displayed depends on the current subject&lt;br /&gt;
-- namespace. This message is used in either cfg[&#039;sandbox-notice-blurb&#039;] or&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-blurb&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-template&#039;] = &#039;صفحة [[ويكيبيديا:ملاعب القوالب ومختبراتها|ملعب القالب]]&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-module&#039;] = &#039;صفحة ملعب الوحدة&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-other&#039;] = &#039;صفحة ملعب&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-display&#039;]&lt;br /&gt;
-- Either cfg[&#039;sandbox-notice-blurb&#039;] or cfg[&#039;sandbox-notice-diff-blurb&#039;] is the opening sentence&lt;br /&gt;
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page&lt;br /&gt;
-- type, which is either cfg[&#039;sandbox-notice-pagetype-template&#039;],&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-module&#039;] or cfg[&#039;sandbox-notice-pagetype-other&#039;] depending what&lt;br /&gt;
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between&lt;br /&gt;
-- the sandbox and the main template. The display value of the diff link is set by &lt;br /&gt;
-- cfg[&#039;sandbox-notice-compare-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-blurb&#039;] = &#039;هذه $1 لصفحة $2.&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-diff-blurb&#039;] = &#039;هذه $1 لصفحة $2 ($3).&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-compare-link-display&#039;] = &#039;فرق&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-link-display&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-link-display&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-blurb&#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-link-display&#039;] is the display value for that link.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-blurb&#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test&lt;br /&gt;
-- cases page, and $2 is a link to the page to run it.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-link-display&#039;] is the display value for the link to run the test&lt;br /&gt;
-- cases.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-blurb&#039;] = &#039;انظر أيضاً الصفحات الفرعية لـ $1.&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-link-display&#039;] = &#039;مختبر&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-run-blurb&#039;] = &#039;انظر أيضاً الصفحات الفرعية لـ $1 ($2).&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-run-link-display&#039;] = &#039;تشغيل&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-category&#039;]&lt;br /&gt;
-- A category to add to all template sandboxes.&lt;br /&gt;
cfg[&#039;sandbox-category&#039;] = &#039;ملاعب قوالب&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Start box configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;documentation-icon-wikitext&#039;]&lt;br /&gt;
-- The wikitext for the icon shown at the top of the template.&lt;br /&gt;
cfg[&#039;documentation-icon-wikitext&#039;] = &#039;[[ملف:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the template namespace.&lt;br /&gt;
cfg[&#039;template-namespace-heading&#039;] = &#039;توثيق القالب&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the module namespace.&lt;br /&gt;
cfg[&#039;module-namespace-heading&#039;] = &#039;توثيق الوحدة&#039; .. &amp;quot; [[تصنيف:جميع وحدات ويكيبيديا]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;file-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the file namespace.&lt;br /&gt;
cfg[&#039;file-namespace-heading&#039;] = &#039;ملخص&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;other-namespaces-heading&#039;]&lt;br /&gt;
-- The heading shown in other namespaces.&lt;br /&gt;
cfg[&#039;other-namespaces-heading&#039;] = &#039;توثيق&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;view-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;view&amp;quot; links.&lt;br /&gt;
cfg[&#039;view-link-display&#039;] = &#039;عرض&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;edit-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;edit-link-display&#039;] = &#039;عدّل&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;history-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;history&amp;quot; links.&lt;br /&gt;
cfg[&#039;history-link-display&#039;] = &#039;تاريخ&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;purge-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;purge&amp;quot; links.&lt;br /&gt;
cfg[&#039;purge-link-display&#039;] = &#039;محو الاختزان&#039;&lt;br /&gt;
cfg[&#039;usage-link-display&#039;] = &#039;استخدامات&#039;&lt;br /&gt;
cfg[&#039;template-usage&#039;] = &#039;قوالب&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;create-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;create-link-display&#039;] = &#039;أنشئ&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Link box (end box) configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;transcluded-from-blurb&#039;]&lt;br /&gt;
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.&lt;br /&gt;
cfg[&#039;transcluded-from-blurb&#039;] = &#039;[[ويكيبيديا:توثيق قالب|التوثيق]] في الأعلى [[ويكيبيديا:تضمين|مضمن]] من $1.&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;create-module-doc-blurb&#039;]&lt;br /&gt;
-- Notice displayed in the module namespace when the documentation subpage does not exist.&lt;br /&gt;
-- $1 is a link to create the documentation page with the preload cfg[&#039;module-preload&#039;] and the&lt;br /&gt;
-- display cfg[&#039;create-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;create-module-doc-blurb&#039;] = &#039;يمكنك أن تنشئ صفحة توثيق لهذه [[ويكيبيديا:لوا|الوحدة]] ($1).&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Experiment blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;experiment-blurb-template&#039;]&lt;br /&gt;
-- cfg[&#039;experiment-blurb-module&#039;]&lt;br /&gt;
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.&lt;br /&gt;
-- It is only shown in the template and module namespaces. With the default English settings, it&lt;br /&gt;
-- might look like this:&lt;br /&gt;
--&lt;br /&gt;
-- Editors can experiment in this template&#039;s sandbox (edit | diff) and testcases (edit) pages.&lt;br /&gt;
--&lt;br /&gt;
-- In this example, &amp;quot;sandbox&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;diff&amp;quot;, &amp;quot;testcases&amp;quot;, and &amp;quot;edit&amp;quot; would all be links.&lt;br /&gt;
--&lt;br /&gt;
-- There are two versions, cfg[&#039;experiment-blurb-template&#039;] and cfg[&#039;experiment-blurb-module&#039;], depending&lt;br /&gt;
-- on what namespace we are in.&lt;br /&gt;
-- &lt;br /&gt;
-- Parameters:&lt;br /&gt;
--&lt;br /&gt;
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;sandbox-link-display&#039;] (cfg[&#039;sandbox-edit-link-display&#039;] | cfg[&#039;compare-link-display&#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- If the sandbox doesn&#039;t exist, it is in the format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;sandbox-link-display&#039;] (cfg[&#039;sandbox-create-link-display&#039;] | cfg[&#039;mirror-link-display&#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- The link for cfg[&#039;sandbox-create-link-display&#039;] link preloads the page with cfg[&#039;template-sandbox-preload&#039;]&lt;br /&gt;
-- or cfg[&#039;module-sandbox-preload&#039;], depending on the current namespace. The link for cfg[&#039;mirror-link-display&#039;]&lt;br /&gt;
-- loads a default edit summary of cfg[&#039;mirror-edit-summary&#039;].&lt;br /&gt;
--&lt;br /&gt;
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;testcases-link-display&#039;] (cfg[&#039;testcases-edit-link-display&#039;] | cfg[&#039;testcases-run-link-display&#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&#039;t exist, it is in the format:&lt;br /&gt;
-- &lt;br /&gt;
--     cfg[&#039;testcases-link-display&#039;] (cfg[&#039;testcases-create-link-display&#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&#039;t exist, the link for cfg[&#039;testcases-create-link-display&#039;] preloads the&lt;br /&gt;
-- page with cfg[&#039;template-testcases-preload&#039;] or cfg[&#039;module-testcases-preload&#039;], depending on the current&lt;br /&gt;
-- namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;experiment-blurb-template&#039;] = &amp;quot;يمكن للمحررين تجريب تعديلاتهم على القالب في صفحات $1 و$2.&amp;quot;&lt;br /&gt;
cfg[&#039;experiment-blurb-module&#039;] = &amp;quot;يمكن للمحررين تجريب تعديلاتهم على الوحدة في صفحات $1 و$2.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage typically used for sandboxes.&lt;br /&gt;
cfg[&#039;sandbox-subpage&#039;] = &#039;ملعب&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-sandbox-preload&#039;]&lt;br /&gt;
-- Preload file for template sandbox pages.&lt;br /&gt;
cfg[&#039;template-sandbox-preload&#039;] = &#039;قالب:توثيق/مسبق-ملعب&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-sandbox-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module sandbox pages.&lt;br /&gt;
cfg[&#039;module-sandbox-preload&#039;] = &#039;قالب:توثيق/مسبق-ملعب وحدة&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;sandbox&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-link-display&#039;] = &#039;ملعب&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-edit-link-display&#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-edit-link-display&#039;] = &#039;عدّل&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-create-link-display&#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-create-link-display&#039;] = &#039;أنشئ&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;compare-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;compare&amp;quot; links.&lt;br /&gt;
cfg[&#039;compare-link-display&#039;] = &#039;فرق&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-edit-summary&#039;]&lt;br /&gt;
-- The default edit summary to use when a user clicks the &amp;quot;mirror&amp;quot; link. $1 is a wikilink to the&lt;br /&gt;
-- template page.&lt;br /&gt;
cfg[&#039;mirror-edit-summary&#039;] = &#039;إنشاء نسخة ملعب لـ $1&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;mirror&amp;quot; links.&lt;br /&gt;
cfg[&#039;mirror-link-display&#039;] = &#039;مرآة&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-link-preload&#039;]&lt;br /&gt;
-- The page to preload when a user clicks the &amp;quot;mirror&amp;quot; link.&lt;br /&gt;
cfg[&#039;mirror-link-preload&#039;] = &#039;قالب:توثيق/مرآة&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Test cases link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage typically used for test cases.&lt;br /&gt;
cfg[&#039;testcases-subpage&#039;] = &#039;مختبر&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-testcases-preload&#039;]&lt;br /&gt;
-- Preload file for template test cases pages.&lt;br /&gt;
cfg[&#039;template-testcases-preload&#039;] = &#039;قالب:توثيق/مسبق-مختبر&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-testcases-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module test cases pages.&lt;br /&gt;
cfg[&#039;module-testcases-preload&#039;] = &#039;قالب:توثيق/مسبق/مختبر وحدة&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;testcases&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-link-display&#039;] = &#039;مختبر&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-edit-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-edit-link-display&#039;] = &#039;عدل&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-run-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;run&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-run-link-display&#039;] = &#039;run&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-create-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-create-link-display&#039;] = &#039;أنشئ&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Add categories blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;add-categories-blurb&#039;]&lt;br /&gt;
-- Text to direct users to add categories to the /doc subpage. Not used if the &amp;quot;content&amp;quot; or&lt;br /&gt;
-- &amp;quot;docname fed&amp;quot; arguments are set, as then it is not clear where to add the categories. $1 is a&lt;br /&gt;
-- link to the /doc subpage with a display value of cfg[&#039;doc-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;add-categories-blurb&#039;] = &#039;من فضلك أضف التصنيفات في الصفحة الفرعية للقالب $1.&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;doc-link-display&#039;]&lt;br /&gt;
-- The text to display when linking to the /doc subpage.&lt;br /&gt;
cfg[&#039;doc-link-display&#039;] = &#039;/شرح&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Subpages link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;subpages-blurb&#039;]&lt;br /&gt;
-- The &amp;quot;Subpages of this template&amp;quot; blurb. $1 is a link to the main template&#039;s subpages with a&lt;br /&gt;
-- display value of cfg[&#039;subpages-link-display&#039;]. In the English version this blurb is simply&lt;br /&gt;
-- the link followed by a period, and the link display provides the actual text.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;subpages-blurb&#039;] = &#039;$1.&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;subpages-link-display&#039;]&lt;br /&gt;
-- The text to display for the &amp;quot;subpages of this page&amp;quot; link. $1 is cfg[&#039;template-pagetype&#039;],&lt;br /&gt;
-- cfg[&#039;module-pagetype&#039;] or cfg[&#039;default-pagetype&#039;], depending on whether the current page is in&lt;br /&gt;
-- the template namespace, the module namespace, or another namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;subpages-link-display&#039;] = &#039;الصفحات الفرعية لـ $1&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for template pages.&lt;br /&gt;
cfg[&#039;template-pagetype&#039;] = &#039;قالب&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for Lua module pages.&lt;br /&gt;
cfg[&#039;module-pagetype&#039;] = &#039;وحدة&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;default-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for pages other than templates or Lua modules.&lt;br /&gt;
cfg[&#039;default-pagetype&#039;] = &#039;صفحة&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Doc link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;doc-subpage&#039;]&lt;br /&gt;
-- The name of the subpage typically used for documentation pages.&lt;br /&gt;
cfg[&#039;doc-subpage&#039;] = &#039;شرح&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;docpage-preload&#039;]&lt;br /&gt;
-- Preload file for template documentation pages in all namespaces.&lt;br /&gt;
cfg[&#039;docpage-preload&#039;] = &#039;قالب:توثيق/مسبق&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module documentation pages.&lt;br /&gt;
cfg[&#039;module-preload&#039;] = &#039;قالب:توثيق/مسبق-وحدة-شرح&#039;&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- HTML and CSS configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;templatestyles&#039;]&lt;br /&gt;
-- The name of the TemplateStyles page where CSS is kept.&lt;br /&gt;
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.&lt;br /&gt;
cfg[&#039;templatestyles&#039;] = &#039;Module:توثيق/styles.css&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;container&#039;]&lt;br /&gt;
-- Class which can be used to set flex or grid CSS on the&lt;br /&gt;
-- two child divs documentation and documentation-metadata&lt;br /&gt;
cfg[&#039;container&#039;] = &#039;documentation-container&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;main-div-classes&#039;]&lt;br /&gt;
-- Classes added to the main HTML &amp;quot;div&amp;quot; tag.&lt;br /&gt;
cfg[&#039;main-div-classes&#039;] = &#039;documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;main-div-heading-class&#039;]&lt;br /&gt;
-- Class for the main heading for templates and modules and assoc. talk spaces&lt;br /&gt;
cfg[&#039;main-div-heading-class&#039;] = &#039;documentation-heading&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;start-box-class&#039;]&lt;br /&gt;
-- Class for the start box&lt;br /&gt;
cfg[&#039;start-box-class&#039;] = &#039;documentation-startbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;start-box-link-classes&#039;]&lt;br /&gt;
-- Classes used for the [view][edit][history] or [create] links in the start box.&lt;br /&gt;
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]&lt;br /&gt;
cfg[&#039;start-box-link-classes&#039;] = &#039;mw-editsection-like plainlinks&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;end-box-class&#039;]&lt;br /&gt;
-- Class for the end box.&lt;br /&gt;
cfg[&#039;end-box-class&#039;] = &#039;documentation-metadata&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;end-box-plainlinks&#039;]&lt;br /&gt;
-- Plainlinks&lt;br /&gt;
cfg[&#039;end-box-plainlinks&#039;] = &#039;plainlinks&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;toolbar-class&#039;]&lt;br /&gt;
-- Class added for toolbar links.&lt;br /&gt;
cfg[&#039;toolbar-class&#039;] = &#039;documentation-toolbar&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;clear&#039;]&lt;br /&gt;
-- Just used to clear things.&lt;br /&gt;
cfg[&#039;clear&#039;] = &#039;documentation-clear&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking category configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;display-strange-usage-category&#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&#039;strange-usage-category&#039;] if the module is used on a /doc subpage&lt;br /&gt;
-- or a /testcases subpage. This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&#039;display-strange-usage-category&#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;strange-usage-category&#039;]&lt;br /&gt;
-- Category to output if cfg[&#039;display-strange-usage-category&#039;] is set to true and the module is used on a&lt;br /&gt;
-- /doc subpage or a /testcases subpage.&lt;br /&gt;
cfg[&#039;strange-usage-category&#039;] = &#039;Wikipedia pages with strange ((documentation)) usage&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--&lt;br /&gt;
-- Don&#039;t edit anything below this line.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
return cfg&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Arguments&amp;diff=884</id>
		<title>وحدة:Arguments</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Arguments&amp;diff=884"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&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;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%AA%D9%88%D8%AB%D9%8A%D9%82&amp;diff=882</id>
		<title>وحدة:توثيق</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:%D8%AA%D9%88%D8%AB%D9%8A%D9%82&amp;diff=882"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&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;وحدة:توثيق/ضبط&#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;مختبر&#039; then&lt;br /&gt;
		return frame:expandTemplate{title = &#039;ملاحظة مختبر الوحدة&#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;) 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;[[ملف: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;
	--]=]&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 [[قالب:Foo]] (diff).&amp;quot;&lt;br /&gt;
	local text = &#039;&#039;&lt;br /&gt;
	local pagetype&lt;br /&gt;
	if subjectSpace == 10 then&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-template&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-module&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-other&#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 [[قالب: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;
	-- Add the sandbox to the sandbox category.&lt;br /&gt;
	omargs.text = text .. makeCategoryLink(message(&#039;sandbox-category&#039;))&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;
		--#Added 2 lines&lt;br /&gt;
		usageLinkDisplay = message(&#039;usage-link-display&#039;),&lt;br /&gt;
		TemplateUsage = message(&#039;template-usage&#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;
	-- #Added block:This block added by Mr.Ibrahim to view [استخدامات] link&lt;br /&gt;
	local ret&lt;br /&gt;
	local title = data.title&lt;br /&gt;
	local usageUrl = &amp;quot;https://templatecount.toolforge.org/index.php?lang=ar&amp;amp;namespace=&amp;quot; .. title.namespace .. &amp;quot;&amp;amp;name=&amp;quot; .. mw.uri.encode( title.text , &#039;PATH&#039;)&lt;br /&gt;
	local usageLink = makeUrlLink(usageUrl , data.usageLinkDisplay)&lt;br /&gt;
	local templates_use_module = &amp;quot;//ar.wikipedia.org/w/index.php?title=خاص:بحث&amp;amp;fulltext=Search&amp;amp;ns10=1&amp;amp;ns8=1&amp;amp;search=insource%3A%2F(invoke%7Cاستدعاء)%3A+%2A&amp;quot; .. mw.uri.encode( title.text , &#039;PATH&#039;) .. &amp;quot;%5C%7C%2F&amp;quot;&lt;br /&gt;
	local templates_use_moduleLink = makeUrlLink(templates_use_module , data.TemplateUsage)&lt;br /&gt;
	&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;
		-- #Edited line&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;amp;#91;&amp;quot; .. usageLink .. &amp;quot;&amp;amp;#93;&amp;quot; .. (title.namespace == 828 and (&amp;quot; &amp;amp;#91;&amp;quot; .. templates_use_moduleLink .. &amp;quot;&amp;amp;#93;&amp;quot;) or &#039;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		local createLink = makeUrlLink(docTitle:canonicalUrl{action = &#039;edit&#039;, preload = data.preload}, data.createLinkDisplay)&lt;br /&gt;
		-- #Edited line&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;amp;#91;&amp;quot; .. usageLink .. &amp;quot;&amp;amp;#93;&amp;quot; .. (title.namespace == 828 and (&amp;quot; &amp;amp;#91;&amp;quot; .. templates_use_moduleLink .. &amp;quot;&amp;amp;#93;&amp;quot;) or &#039;&#039;)&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;[[ملف: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 or args[&amp;quot;محتوى&amp;quot;]&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 [[قالب: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 [[مساعدة: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;
	local ret&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;
		ret = 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;
		ret = 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;
	return ret&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;
	local ret = &#039;&#039;&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;
		ret = ret .. makeCategoryLink(message(&#039;strange-usage-category&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	return ret&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://ar.wikighadir.com/index.php?title=%D9%82%D8%A7%D9%84%D8%A8:%D9%85%D9%84%D8%B9%D8%A8_%D8%A2%D8%AE%D8%B1&amp;diff=880</id>
		<title>قالب:ملعب آخر</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%82%D8%A7%D9%84%D8%A8:%D9%85%D9%84%D8%B9%D8%A8_%D8%A2%D8%AE%D8%B1&amp;diff=880"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:{{SUBPAGENAME}}|ملعب|sandbox={{{1|}}}|#default={{{2|}}}}}&amp;lt;!----&amp;gt;&amp;lt;noinclude&amp;gt;{{توثيق}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
	<entry>
		<id>https://ar.wikighadir.com/index.php?title=%D9%82%D8%A7%D9%84%D8%A8:Hlist/styles.css&amp;diff=878</id>
		<title>قالب:Hlist/styles.css</title>
		<link rel="alternate" type="text/html" href="https://ar.wikighadir.com/index.php?title=%D9%82%D8%A7%D9%84%D8%A8:Hlist/styles.css&amp;diff=878"/>
		<updated>2026-08-19T16:55:33Z</updated>

		<summary type="html">&lt;p&gt;Nazarzadeh: مراجعة واحدة&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template}} */&lt;br /&gt;
/* &lt;br /&gt;
 * hlist styles are defined in core and Minerva and differ in Minerva. The&lt;br /&gt;
 * current definitions here (2023-01-01) are sufficient to override Minerva&lt;br /&gt;
 * without use of the hlist-separated class. The most problematic styles were&lt;br /&gt;
 * related to margin, padding, and the bullet. Check files listed at&lt;br /&gt;
 * [[MediaWiki talk:Common.css/to do#hlist-separated]]&lt;br /&gt;
 */&lt;br /&gt;
/*&lt;br /&gt;
 * TODO: When the majority of readership supports it (or some beautiful world&lt;br /&gt;
 * in which grade C support is above the minimum threshold), use :is()&lt;br /&gt;
 */&lt;br /&gt;
.hlist dl,&lt;br /&gt;
.hlist ol,&lt;br /&gt;
.hlist ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Display list items inline */&lt;br /&gt;
.hlist dd,&lt;br /&gt;
.hlist dt,&lt;br /&gt;
.hlist li {&lt;br /&gt;
	/*&lt;br /&gt;
	 * don&#039;t trust the note that says margin doesn&#039;t work with inline&lt;br /&gt;
	 * removing margin: 0 makes dds have margins again&lt;br /&gt;
	 * We also want to reset margin-right in Minerva&lt;br /&gt;
	 */&lt;br /&gt;
	margin: 0; &lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Display requested top-level lists inline */&lt;br /&gt;
.hlist.inline,&lt;br /&gt;
.hlist.inline dl,&lt;br /&gt;
.hlist.inline ol,&lt;br /&gt;
.hlist.inline ul,&lt;br /&gt;
/* Display nested lists inline */&lt;br /&gt;
.hlist dl dl,&lt;br /&gt;
.hlist dl ol,&lt;br /&gt;
.hlist dl ul,&lt;br /&gt;
.hlist ol dl,&lt;br /&gt;
.hlist ol ol,&lt;br /&gt;
.hlist ol ul,&lt;br /&gt;
.hlist ul dl,&lt;br /&gt;
.hlist ul ol,&lt;br /&gt;
.hlist ul ul {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide empty list items */&lt;br /&gt;
.hlist .mw-empty-li {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO: :not() can maybe be used here to remove the later rule. naive test&lt;br /&gt;
 * seems to work. more testing needed. like so:&lt;br /&gt;
 *.hlist dt:not(:last-child)::after {&lt;br /&gt;
 *	content: &amp;quot;: &amp;quot;;&lt;br /&gt;
 *}&lt;br /&gt;
 *.hlist dd:not(:last-child)::after,&lt;br /&gt;
 *.hlist li:not(:last-child)::after {&lt;br /&gt;
 *	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
 *	font-weight: bold;&lt;br /&gt;
 *}&lt;br /&gt;
 */&lt;br /&gt;
/* Generate interpuncts */&lt;br /&gt;
.hlist dt::after {&lt;br /&gt;
	content: &amp;quot;: &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd::after,&lt;br /&gt;
.hlist li::after {&lt;br /&gt;
	content: &amp;quot;\a0· &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd:last-child::after,&lt;br /&gt;
.hlist dt:last-child::after,&lt;br /&gt;
.hlist li:last-child::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Add parentheses around nested lists */&lt;br /&gt;
.hlist dd dd:first-child::before,&lt;br /&gt;
.hlist dd dt:first-child::before,&lt;br /&gt;
.hlist dd li:first-child::before,&lt;br /&gt;
.hlist dt dd:first-child::before,&lt;br /&gt;
.hlist dt dt:first-child::before,&lt;br /&gt;
.hlist dt li:first-child::before,&lt;br /&gt;
.hlist li dd:first-child::before,&lt;br /&gt;
.hlist li dt:first-child::before,&lt;br /&gt;
.hlist li li:first-child::before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd dd:last-child::after,&lt;br /&gt;
.hlist dd dt:last-child::after,&lt;br /&gt;
.hlist dd li:last-child::after,&lt;br /&gt;
.hlist dt dd:last-child::after,&lt;br /&gt;
.hlist dt dt:last-child::after,&lt;br /&gt;
.hlist dt li:last-child::after,&lt;br /&gt;
.hlist li dd:last-child::after,&lt;br /&gt;
.hlist li dt:last-child::after,&lt;br /&gt;
.hlist li li:last-child::after {&lt;br /&gt;
	content: &amp;quot;)&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Put ordinals in front of ordered list items */&lt;br /&gt;
.hlist ol {&lt;br /&gt;
	counter-reset: listitem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist ol &amp;gt; li {&lt;br /&gt;
	counter-increment: listitem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist ol &amp;gt; li::before {&lt;br /&gt;
	content: &amp;quot; &amp;quot; counter(listitem) &amp;quot;\a0&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd ol &amp;gt; li:first-child::before,&lt;br /&gt;
.hlist dt ol &amp;gt; li:first-child::before,&lt;br /&gt;
.hlist li ol &amp;gt; li:first-child::before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot; counter(listitem) &amp;quot;\a0&amp;quot;;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nazarzadeh</name></author>
	</entry>
</feed>