<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://fr.prole.wiki/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Forte</id>
	<title>ProleWiki - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://fr.prole.wiki/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Forte"/>
	<link rel="alternate" type="text/html" href="https://fr.prole.wiki/wiki/Sp%C3%A9cial:Contributions/Forte"/>
	<updated>2026-10-31T01:18:58Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb&amp;diff=5467</id>
		<title>Modèle:Infobox siteweb</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb&amp;diff=5467"/>
		<updated>2025-06-14T02:50:00Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox siteweb/base&lt;br /&gt;
| name              = {{{nom|}}}&lt;br /&gt;
| _subheader        = {{{sous_titre|}}}&lt;br /&gt;
| logo              = {{{logo|}}}&lt;br /&gt;
| logo_size         = {{{logo_taille|}}}&lt;br /&gt;
| logo_alt          = {{{texte_alternatif_logo|}}}&lt;br /&gt;
| logo_caption      = {{{logo_légende|}}}&lt;br /&gt;
| screenshot        = {{{capture_d’écran|}}}&lt;br /&gt;
| screenshot_size   = {{{capture_taille|}}}&lt;br /&gt;
| screenshot_alt    = {{{texte_alternatif_capture|}}}&lt;br /&gt;
| screenshot_caption= {{{capture_légende|}}}&lt;br /&gt;
| type              = {{{type|}}}&lt;br /&gt;
| language_count    = {{{nombre_langues|}}}&lt;br /&gt;
| language          = {{{langues|}}}&lt;br /&gt;
| founding_name     = {{{nom_création|}}}&lt;br /&gt;
| founding_date     = {{{date_création|}}}&lt;br /&gt;
| founding_website  = {{{site_création|}}}&lt;br /&gt;
| founder           = {{{fondateur|}}}&lt;br /&gt;
| key_people        = {{{dirigeants|}}}&lt;br /&gt;
| num_users         = {{{utilisateurs|}}}&lt;br /&gt;
| url               = {{{url|}}}&lt;br /&gt;
| after_header      = {{{après_en-tête|}}}&lt;br /&gt;
| after_data        = {{{après_données|}}}&lt;br /&gt;
| footnotes         = {{{notes|}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb&amp;diff=5466</id>
		<title>Modèle:Infobox siteweb</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb&amp;diff=5466"/>
		<updated>2025-06-14T02:49:01Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox siteweb/base&lt;br /&gt;
| name              = {{{nom|}}}&lt;br /&gt;
| _subheader        = {{{sous_titre|}}}&lt;br /&gt;
| logo              = {{{logo|}}}&lt;br /&gt;
| logo_size         = {{{logo_taille|}}}&lt;br /&gt;
| logo_alt          = {{{texte_alternatif_logo|}}}&lt;br /&gt;
| logo_caption      = {{{légende_logo|}}}&lt;br /&gt;
| screenshot        = {{{capture_d’écran|}}}&lt;br /&gt;
| screenshot_size   = {{{capture_taille|}}}&lt;br /&gt;
| screenshot_alt    = {{{texte_alternatif_capture|}}}&lt;br /&gt;
| screenshot_caption= {{{capture_légende|}}}&lt;br /&gt;
| type              = {{{type|}}}&lt;br /&gt;
| language_count    = {{{nombre_langues|}}}&lt;br /&gt;
| language          = {{{langues|}}}&lt;br /&gt;
| founding_name     = {{{nom_création|}}}&lt;br /&gt;
| founding_date     = {{{date_création|}}}&lt;br /&gt;
| founding_website  = {{{site_création|}}}&lt;br /&gt;
| founder           = {{{fondateur|}}}&lt;br /&gt;
| key_people        = {{{dirigeants|}}}&lt;br /&gt;
| num_users         = {{{utilisateurs|}}}&lt;br /&gt;
| url               = {{{url|}}}&lt;br /&gt;
| after_header      = {{{après_en-tête|}}}&lt;br /&gt;
| after_data        = {{{après_données|}}}&lt;br /&gt;
| footnotes         = {{{notes|}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb&amp;diff=5465</id>
		<title>Modèle:Infobox siteweb</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb&amp;diff=5465"/>
		<updated>2025-06-14T02:44:46Z</updated>

		<summary type="html">&lt;p&gt;Forte : translation model for french&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox siteweb/base&lt;br /&gt;
| name              = {{{nom|}}}&lt;br /&gt;
| _subheader        = {{{sous_titre|}}}&lt;br /&gt;
| logo              = {{{logo|}}}&lt;br /&gt;
| logo_size         = {{{taille_logo|}}}&lt;br /&gt;
| logo_alt          = {{{texte_alternatif_logo|}}}&lt;br /&gt;
| logo_caption      = {{{légende_logo|}}}&lt;br /&gt;
| screenshot        = {{{capture_d’écran|}}}&lt;br /&gt;
| screenshot_size   = {{{taille_capture|}}}&lt;br /&gt;
| screenshot_alt    = {{{texte_alternatif_capture|}}}&lt;br /&gt;
| screenshot_caption= {{{capture_légende|}}}&lt;br /&gt;
| type              = {{{type|}}}&lt;br /&gt;
| language_count    = {{{nombre_langues|}}}&lt;br /&gt;
| language          = {{{langues|}}}&lt;br /&gt;
| founding_name     = {{{nom_création|}}}&lt;br /&gt;
| founding_date     = {{{date_création|}}}&lt;br /&gt;
| founding_website  = {{{site_création|}}}&lt;br /&gt;
| founder           = {{{fondateur|}}}&lt;br /&gt;
| key_people        = {{{dirigeants|}}}&lt;br /&gt;
| num_users         = {{{utilisateurs|}}}&lt;br /&gt;
| url               = {{{url|}}}&lt;br /&gt;
| after_header      = {{{après_en-tête|}}}&lt;br /&gt;
| after_data        = {{{après_données|}}}&lt;br /&gt;
| footnotes         = {{{notes|}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:PAGENAMEBASE&amp;diff=5464</id>
		<title>Modèle:PAGENAMEBASE</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:PAGENAMEBASE&amp;diff=5464"/>
		<updated>2025-06-14T02:34:28Z</updated>

		<summary type="html">&lt;p&gt;Forte : Page créée avec « {{{{{|safesubst:}}}#Invoke:String|replace|{{{1|{{{{{|safesubst:}}}PAGENAME}}}}}|%s+%b()$||1|false}} »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{|safesubst:}}}#Invoke:String|replace|{{{1|{{{{{|safesubst:}}}PAGENAME}}}}}|%s+%b()$||1|false}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Module:String&amp;diff=5463</id>
		<title>Module:String</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Module:String&amp;diff=5463"/>
		<updated>2025-06-14T02:34:17Z</updated>

		<summary type="html">&lt;p&gt;Forte : Page créée avec « --[[  This module is intended to provide access to basic string functions.  Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace.  Global options     ignore_errors: If set to &amp;#039;true&amp;#039; or 1, any... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module is intended to provide access to basic string functions.&lt;br /&gt;
&lt;br /&gt;
Most of the functions provided here can be invoked with named parameters,&lt;br /&gt;
unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will&lt;br /&gt;
automatically remove any leading or trailing whitespace from the parameter.&lt;br /&gt;
Depending on the intended use, it may be advantageous to either preserve or&lt;br /&gt;
remove such whitespace.&lt;br /&gt;
&lt;br /&gt;
Global options&lt;br /&gt;
    ignore_errors: If set to &#039;true&#039; or 1, any error condition will result in&lt;br /&gt;
        an empty string being returned rather than an error message.&lt;br /&gt;
&lt;br /&gt;
    error_category: If an error occurs, specifies the name of a category to&lt;br /&gt;
        include with the error message.  The default category is&lt;br /&gt;
        [Category:Errors reported by Module String].&lt;br /&gt;
&lt;br /&gt;
    no_category: If set to &#039;true&#039; or 1, no category will be added if an error&lt;br /&gt;
        is generated.&lt;br /&gt;
&lt;br /&gt;
Unit tests for this module are available at Module:String/tests.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local str = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
len&lt;br /&gt;
&lt;br /&gt;
This function returns the length of the target string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|len|target_string|}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|len|s=target_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string whose length to report&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.&lt;br /&gt;
]]&lt;br /&gt;
function str.len( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;s&#039;} )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	return mw.ustring.len( s )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sub&lt;br /&gt;
&lt;br /&gt;
This function returns a substring of the target string at specified indices.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|sub|target_string|start_index|end_index}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to return a subset of&lt;br /&gt;
    i: The fist index of the substring to return, defaults to 1.&lt;br /&gt;
    j: The last index of the string to return, defaults to the last character.&lt;br /&gt;
&lt;br /&gt;
The first character of the string is assigned an index of 1.  If either i or j&lt;br /&gt;
is a negative value, it is interpreted the same as selecting a character by&lt;br /&gt;
counting from the end of the string.  Hence, a value of -1 is the same as&lt;br /&gt;
selecting the last character of the string.&lt;br /&gt;
&lt;br /&gt;
If the requested indices are out of range for the given string, an error is&lt;br /&gt;
reported.&lt;br /&gt;
]]&lt;br /&gt;
function str.sub( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, { &#039;s&#039;, &#039;i&#039;, &#039;j&#039; } )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	local i = tonumber( new_args[&#039;i&#039;] ) or 1&lt;br /&gt;
	local j = tonumber( new_args[&#039;j&#039;] ) or -1&lt;br /&gt;
&lt;br /&gt;
	local len = mw.ustring.len( s )&lt;br /&gt;
&lt;br /&gt;
	-- Convert negatives for range checking&lt;br /&gt;
	if i &amp;lt; 0 then&lt;br /&gt;
		i = len + i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; 0 then&lt;br /&gt;
		j = len + j + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if i &amp;gt; len or j &amp;gt; len or i &amp;lt; 1 or j &amp;lt; 1 then&lt;br /&gt;
		return str._error( &#039;String subset index out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; i then&lt;br /&gt;
		return str._error( &#039;String subset indices out of order&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( s, i, j )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
This function implements that features of {{str sub old}} and is kept in order&lt;br /&gt;
to maintain these older templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.sublength( frame )&lt;br /&gt;
	local i = tonumber( frame.args.i ) or 0&lt;br /&gt;
	local len = tonumber( frame.args.len )&lt;br /&gt;
	return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
_match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern. It is exported for use in other modules&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
strmatch = require(&amp;quot;Module:String&amp;quot;)._match&lt;br /&gt;
sresult = strmatch( s, pattern, start, match, plain, nomatch )&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This sub-routine is exported for use in other modules&lt;br /&gt;
function str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
	if s == &#039;&#039; then&lt;br /&gt;
		return str._error( &#039;Target string is empty&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if pattern == &#039;&#039; then&lt;br /&gt;
		return str._error( &#039;Pattern string is empty&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	start = tonumber(start) or 1&lt;br /&gt;
	if math.abs(start) &amp;lt; 1 or math.abs(start) &amp;gt; mw.ustring.len( s ) then&lt;br /&gt;
		return str._error( &#039;Requested start is out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if match_index == 0 then&lt;br /&gt;
		return str._error( &#039;Match index is out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if plain_flag then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
	if match_index == 1 then&lt;br /&gt;
		-- Find first match is simple case&lt;br /&gt;
		result = mw.ustring.match( s, pattern, start )&lt;br /&gt;
	else&lt;br /&gt;
		if start &amp;gt; 1 then&lt;br /&gt;
			s = mw.ustring.sub( s, start )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local iterator = mw.ustring.gmatch(s, pattern)&lt;br /&gt;
		if match_index &amp;gt; 0 then&lt;br /&gt;
			-- Forward search&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				match_index = match_index - 1&lt;br /&gt;
				if match_index == 0 then&lt;br /&gt;
					result = w&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Reverse search&lt;br /&gt;
			local result_table = {}&lt;br /&gt;
			local count = 1&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				result_table[count] = w&lt;br /&gt;
				count = count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			result = result_table[ count + match_index ]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		if nomatch == nil then&lt;br /&gt;
			return str._error( &#039;Match not found&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			return nomatch&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index&lt;br /&gt;
    |match=match_number|plain=plain_flag|nomatch=nomatch_output}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from each string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
If the match_number or start_index are out of range for the string being queried, then&lt;br /&gt;
this function generates an error.  An error is also generated if no match is found.&lt;br /&gt;
If one adds the parameter ignore_errors=true, then the error will be suppressed and&lt;br /&gt;
an empty string will be returned on any failure.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This is the entry point for #invoke:String|match&lt;br /&gt;
function str.match( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;s&#039;, &#039;pattern&#039;, &#039;start&#039;, &#039;match&#039;, &#039;plain&#039;, &#039;nomatch&#039;} )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	local start = tonumber( new_args[&#039;start&#039;] ) or 1&lt;br /&gt;
	local plain_flag = str._getBoolean( new_args[&#039;plain&#039;] or false )&lt;br /&gt;
	local pattern = new_args[&#039;pattern&#039;] or &#039;&#039;&lt;br /&gt;
	local match_index = math.floor( tonumber(new_args[&#039;match&#039;]) or 1 )&lt;br /&gt;
	local nomatch = new_args[&#039;nomatch&#039;]&lt;br /&gt;
&lt;br /&gt;
	return str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
pos&lt;br /&gt;
&lt;br /&gt;
This function returns a single character from the target string at position pos.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|pos|target_string|index_value}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|pos|target=target_string|pos=index_value}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    target: The string to search&lt;br /&gt;
    pos: The index for the character to return&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
The first character has an index value of 1.&lt;br /&gt;
&lt;br /&gt;
If one requests a negative value, this function will select a character by counting backwards&lt;br /&gt;
from the end of the string.  In other words pos = -1 is the same as asking for the last character.&lt;br /&gt;
&lt;br /&gt;
A requested value of zero, or a value greater than the length of the string returns an error.&lt;br /&gt;
]]&lt;br /&gt;
function str.pos( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;target&#039;, &#039;pos&#039;} )&lt;br /&gt;
	local target_str = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
	local pos = tonumber( new_args[&#039;pos&#039;] ) or 0&lt;br /&gt;
&lt;br /&gt;
	if pos == 0 or math.abs(pos) &amp;gt; mw.ustring.len( target_str ) then&lt;br /&gt;
		return str._error( &#039;String index out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( target_str, pos, pos )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
str_find&lt;br /&gt;
&lt;br /&gt;
This function duplicates the behavior of {{str_find}}, including all of its quirks.&lt;br /&gt;
This is provided in order to support existing templates, but is NOT RECOMMENDED for&lt;br /&gt;
new code and templates.  New code is recommended to use the &amp;quot;find&amp;quot; function instead.&lt;br /&gt;
&lt;br /&gt;
Returns the first index in &amp;quot;source&amp;quot; that is a match to &amp;quot;target&amp;quot;.  Indexing is 1-based,&lt;br /&gt;
and the function returns -1 if the &amp;quot;target&amp;quot; string is not present in &amp;quot;source&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Important Note: If the &amp;quot;target&amp;quot; string is empty / missing, this function returns a&lt;br /&gt;
value of &amp;quot;1&amp;quot;, which is generally unexpected behavior, and must be accounted for&lt;br /&gt;
separatetly.&lt;br /&gt;
]]&lt;br /&gt;
function str.str_find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;target&#039;} )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local target_str = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	if target_str == &#039;&#039; then&lt;br /&gt;
		return 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, target_str, 1, true )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
find&lt;br /&gt;
&lt;br /&gt;
This function allows one to search for a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    target: The string or pattern to find within source&lt;br /&gt;
    start: The index within the source string to start the search, defaults to 1&lt;br /&gt;
    plain: Boolean flag indicating that target should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the parameter.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
This function returns the first index &amp;gt;= &amp;quot;start&amp;quot; where &amp;quot;target&amp;quot; can be found&lt;br /&gt;
within &amp;quot;source&amp;quot;.  Indices are 1-based.  If &amp;quot;target&amp;quot; is not found, then this&lt;br /&gt;
function returns 0.  If either &amp;quot;source&amp;quot; or &amp;quot;target&amp;quot; are missing / empty, this&lt;br /&gt;
function also returns 0.&lt;br /&gt;
&lt;br /&gt;
This function should be safe for UTF-8 strings.&lt;br /&gt;
]]&lt;br /&gt;
function str.find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;target&#039;, &#039;start&#039;, &#039;plain&#039; } )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local pattern = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
	local start_pos = tonumber(new_args[&#039;start&#039;]) or 1&lt;br /&gt;
	local plain = new_args[&#039;plain&#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &#039;&#039; or pattern == &#039;&#039; then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, pattern, start_pos, plain )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
replace&lt;br /&gt;
&lt;br /&gt;
This function allows one to replace a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|&lt;br /&gt;
   count=replacement_count|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    pattern: The string or pattern to find within source&lt;br /&gt;
    replace: The replacement text&lt;br /&gt;
    count: The number of occurences to replace, defaults to all.&lt;br /&gt;
    plain: Boolean flag indicating that pattern should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
]]&lt;br /&gt;
function str.replace( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;pattern&#039;, &#039;replace&#039;, &#039;count&#039;, &#039;plain&#039; } )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local pattern = new_args[&#039;pattern&#039;] or &#039;&#039;&lt;br /&gt;
	local replace = new_args[&#039;replace&#039;] or &#039;&#039;&lt;br /&gt;
	local count = tonumber( new_args[&#039;count&#039;] )&lt;br /&gt;
	local plain = new_args[&#039;plain&#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &#039;&#039; or pattern == &#039;&#039; then&lt;br /&gt;
		return source_str&lt;br /&gt;
	end&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
		replace = mw.ustring.gsub( replace, &amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot; ) --Only need to escape replacement sequences.&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
&lt;br /&gt;
	if count ~= nil then&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace, count )&lt;br /&gt;
	else&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    simple function to pipe string.rep to templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.rep( frame )&lt;br /&gt;
	local repetitions = tonumber( frame.args[2] )&lt;br /&gt;
	if not repetitions then&lt;br /&gt;
		return str._error( &#039;function rep expects a number as second parameter, received &amp;quot;&#039; .. ( frame.args[2] or &#039;&#039; ) .. &#039;&amp;quot;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return string.rep( frame.args[1] or &#039;&#039;, repetitions )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
escapePattern&lt;br /&gt;
&lt;br /&gt;
This function escapes special characters from a Lua string pattern. See [1]&lt;br /&gt;
for details on how patterns work.&lt;br /&gt;
&lt;br /&gt;
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|escapePattern|pattern_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    pattern_string: The pattern string to escape.&lt;br /&gt;
]]&lt;br /&gt;
function str.escapePattern( frame )&lt;br /&gt;
	local pattern_str = frame.args[1]&lt;br /&gt;
	if not pattern_str then&lt;br /&gt;
		return str._error( &#039;No pattern string specified&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local result = str._escapePattern( pattern_str )&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
count&lt;br /&gt;
This function counts the number of occurrences of one string in another.&lt;br /&gt;
]]&lt;br /&gt;
function str.count(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&#039;source&#039;, &#039;pattern&#039;, &#039;plain&#039;})&lt;br /&gt;
	local source = args.source or &#039;&#039;&lt;br /&gt;
	local pattern = args.pattern or &#039;&#039;&lt;br /&gt;
	local plain = str._getBoolean(args.plain or true)&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern(pattern)&lt;br /&gt;
	end&lt;br /&gt;
	local _, count = mw.ustring.gsub(source, pattern, &#039;&#039;)&lt;br /&gt;
	return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
endswith&lt;br /&gt;
This function determines whether a string ends with another string.&lt;br /&gt;
]]&lt;br /&gt;
function str.endswith(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&#039;source&#039;, &#039;pattern&#039;})&lt;br /&gt;
	local source = args.source or &#039;&#039;&lt;br /&gt;
	local pattern = args.pattern or &#039;&#039;&lt;br /&gt;
	if pattern == &#039;&#039; then&lt;br /&gt;
		-- All strings end with the empty string.&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
join&lt;br /&gt;
&lt;br /&gt;
Join all non empty arguments together; the first argument is the separator.&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|join|sep|one|two|three}}&lt;br /&gt;
]]&lt;br /&gt;
function str.join(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local sep&lt;br /&gt;
	for _, v in ipairs( frame.args ) do&lt;br /&gt;
		if sep then&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				table.insert(args, v)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			sep = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( args, sep or &#039;&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that populates the argument list given that user may need to use a mix of&lt;br /&gt;
named and unnamed parameters.  This is relevant because named parameters are not&lt;br /&gt;
identical to unnamed parameters due to string trimming, and when dealing with strings&lt;br /&gt;
we sometimes want to either preserve or remove that whitespace depending on the application.&lt;br /&gt;
]]&lt;br /&gt;
function str._getParameters( frame_args, arg_list )&lt;br /&gt;
	local new_args = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	local value&lt;br /&gt;
&lt;br /&gt;
	for _, arg in ipairs( arg_list ) do&lt;br /&gt;
		value = frame_args[arg]&lt;br /&gt;
		if value == nil then&lt;br /&gt;
			value = frame_args[index]&lt;br /&gt;
			index = index + 1&lt;br /&gt;
		end&lt;br /&gt;
		new_args[arg] = value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return new_args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function to handle error messages.&lt;br /&gt;
]]&lt;br /&gt;
function str._error( error_str )&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local error_category = frame.args.error_category or &#039;Errors reported by Module String&#039;&lt;br /&gt;
	local ignore_errors = frame.args.ignore_errors or false&lt;br /&gt;
	local no_category = frame.args.no_category or false&lt;br /&gt;
&lt;br /&gt;
	if str._getBoolean(ignore_errors) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local error_str = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: &#039; .. error_str .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	if error_category ~= &#039;&#039; and not str._getBoolean( no_category ) then&lt;br /&gt;
		error_str = &#039;[[Category:&#039; .. error_category .. &#039;]]&#039; .. error_str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return error_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper Function to interpret boolean strings&lt;br /&gt;
]]&lt;br /&gt;
function str._getBoolean( boolean_str )&lt;br /&gt;
	local boolean_value&lt;br /&gt;
&lt;br /&gt;
	if type( boolean_str ) == &#039;string&#039; then&lt;br /&gt;
		boolean_str = boolean_str:lower()&lt;br /&gt;
		if boolean_str == &#039;false&#039; or boolean_str == &#039;no&#039; or boolean_str == &#039;0&#039;&lt;br /&gt;
				or boolean_str == &#039;&#039; then&lt;br /&gt;
			boolean_value = false&lt;br /&gt;
		else&lt;br /&gt;
			boolean_value = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( boolean_str ) == &#039;boolean&#039; then&lt;br /&gt;
		boolean_value = boolean_str&lt;br /&gt;
	else&lt;br /&gt;
		error( &#039;No boolean value found&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return boolean_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that escapes all pattern characters so that they will be treated&lt;br /&gt;
as plain text.&lt;br /&gt;
]]&lt;br /&gt;
function str._escapePattern( pattern_str )&lt;br /&gt;
	return mw.ustring.gsub( pattern_str, &amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return str&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb/base&amp;diff=5462</id>
		<title>Modèle:Infobox siteweb/base</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Infobox_siteweb/base&amp;diff=5462"/>
		<updated>2025-06-14T02:33:27Z</updated>

		<summary type="html">&lt;p&gt;Forte : Page créée avec « {{Infobox | bodyclass = vcard  | abovestyle = font-size: 100%; | above      = &amp;lt;div style=&amp;quot;display:inline; font-size:130%;&amp;quot; class=&amp;quot;fn org&amp;quot;&amp;gt;{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}&amp;lt;/div&amp;gt;  | subheader = {{{_subheader|}}}  | image    = {{#invoke:InfoboxImage|InfoboxImage|image={{if empty|{{{logo|}}}}}|size={{{logo_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{logo_alt|}}}}} | caption1 = {{{logo_caption|}}} | image2   = {{#invoke:InfoboxImage|In... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
| bodyclass = vcard&lt;br /&gt;
&lt;br /&gt;
| abovestyle = font-size: 100%;&lt;br /&gt;
| above      = &amp;lt;div style=&amp;quot;display:inline; font-size:130%;&amp;quot; class=&amp;quot;fn org&amp;quot;&amp;gt;{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| subheader = {{{_subheader|}}}&lt;br /&gt;
&lt;br /&gt;
| image    = {{#invoke:InfoboxImage|InfoboxImage|image={{if empty|{{{logo|}}}}}|size={{{logo_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{logo_alt|}}}}}&lt;br /&gt;
| caption1 = {{{logo_caption|}}}&lt;br /&gt;
| image2   = {{#invoke:InfoboxImage|InfoboxImage|image={{{screenshot|}}}|size={{{screenshot_size|}}}|sizedefault=300px|alt={{{screenshot_alt|}}}}}&lt;br /&gt;
| caption2 = {{{screenshot_caption|}}}&lt;br /&gt;
&lt;br /&gt;
| headerstyle = line-height: 0.8em; padding-top:0.5em; padding-bottom:0;&lt;br /&gt;
| labelstyle = line-height:1.3em;&lt;br /&gt;
| datastyle = line-height:1.3em;&lt;br /&gt;
&lt;br /&gt;
| label1 = Type&lt;br /&gt;
| data1 = {{{type|}}}&lt;br /&gt;
 &lt;br /&gt;
| label2 = Available in&lt;br /&gt;
| data2 = {{#if:{{{language_count|}}}|{{{language_count}}} languages|{{{language|}}}}}&lt;br /&gt;
&lt;br /&gt;
| label3 = Founded&lt;br /&gt;
| data3 = {{br separated entries&lt;br /&gt;
 |1 = {{#if:{{{founding_name|}}}|&amp;lt;div style=&amp;quot;display:inline&amp;quot; class=&amp;quot;nickname&amp;quot;&amp;gt;{{{founding_name|}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
 |2 = {{{founding_date|}}}&lt;br /&gt;
 |3 = {{{founding_website|}}}&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
| label4 = Founder&lt;br /&gt;
| data4  = {{{founder|}}}&lt;br /&gt;
&lt;br /&gt;
| label5 = Key people&lt;br /&gt;
|  data5 = {{{key_people|}}}&lt;br /&gt;
&lt;br /&gt;
| label6 = Users&lt;br /&gt;
| data6 = {{{num_users|}}}&lt;br /&gt;
&lt;br /&gt;
| label7 = URL&lt;br /&gt;
| data7 = {{{url|}}}&lt;br /&gt;
&lt;br /&gt;
| header80 = {{{after_header|}}}&lt;br /&gt;
|  data81 = {{{after_data|}}}&lt;br /&gt;
&lt;br /&gt;
| belowstyle = padding-top:0;&lt;br /&gt;
| below = {{#if:{{{footnotes|}}} |&amp;lt;hr/&amp;gt;{{{footnotes}}} }}&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Prolewiki&amp;diff=5461</id>
		<title>Prolewiki</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Prolewiki&amp;diff=5461"/>
		<updated>2025-06-14T02:16:27Z</updated>

		<summary type="html">&lt;p&gt;Forte : Forte a déplacé la page Prolewiki vers ProleWiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECTION [[ProleWiki]]&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki&amp;diff=5460</id>
		<title>ProleWiki</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki&amp;diff=5460"/>
		<updated>2025-06-14T02:16:27Z</updated>

		<summary type="html">&lt;p&gt;Forte : Forte a déplacé la page Prolewiki vers ProleWiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote&amp;gt;{{Infobox siteweb|logo_taille=200px|logo_légende=Le logo de ProleWiki, un globe avec une étoile et un symbole d&#039;épi de blé, symboles historiquement communistes.|capture_taille=200px|capture_légende=Page principale du ProleWiki anglais|type=Encyclopédie en ligne|nombre_langues=9|date_fondation=30 septembre 2020|fondateur=[[Comrade:Forte|Comrade Forte]]|personnes_clés=[[Comrade:CriticalResist|CriticalResist]], [[Comrade:MxAsh|MxAsh]]|nombre_utilisateurs=23 [[Special:ActiveUsers|utilisateurs actifs]]&amp;lt;br&amp;gt;{{NUMBEROFUSERS}} utilisateurs inscrits|url=prolewiki.org|logo=File:Prolewiki logo 2022.png|capture_d’écran=File:ProleWiki Screenshot 2022-10-09.png|name=⠀}}&lt;br /&gt;
Cet article concerne l&#039;histoire et les événements notables qui se sont produits sur ProleWiki. Pour une description du wiki, voir la page À propos.&amp;lt;/blockquote&amp;gt;ProleWiki est une encyclopédie collaborative marxiste-léniniste gratuite, fondée en septembre 2020. Elle vise à constituer une collection en ligne prolétarienne et anti-impérialiste de pages et d’essais sur l’histoire, l’actualité, les partis communistes à travers le monde et les États, et à héberger une bibliothèque de textes essentiels pour le mouvement prolétarien international. Proposée à l’origine sur Lemmygrad, ProleWiki est disponible en neuf langues et comptait, en avril 2024, plus de 3 000 articles et près de 7 millions de consultations de pages.&lt;br /&gt;
&lt;br /&gt;
Un des objectifs initiaux était de rendre ProleWiki autonome le plus rapidement possible. L’arrivée massive de contributeurs fin 2022 a conduit à des réformes démocratiques : les éditeurs votent désormais pour l’acceptation des demandes de création de compte. L’administration a évolué vers un rôle de mentor, guidant l’équipe éditoriale dans le respect des principes fondateurs et apportant aide et ressources pour la conduite de projets internes.&lt;br /&gt;
&lt;br /&gt;
== Étymologie ==&lt;br /&gt;
Le nom ProleWiki s’inspire du terme « prolétariat », dont la racine « prole » se retrouve dans plusieurs langues occidentales (proletariado, prolétariat, proletariato, proletariaat, etc.), reflétant la vocation internationaliste de l’encyclopédie.&lt;br /&gt;
&lt;br /&gt;
== Histoire ==&lt;br /&gt;
&lt;br /&gt;
=== Fondation ===&lt;br /&gt;
ProleWiki a été créé le 30 septembre 2020 par l’administrateur connu sous le pseudonyme Forte. Il a géré le projet seul pendant plusieurs mois, aidé techniquement notamment par MxAsh pour l’organisation de la base de données, la maintenance du serveur, les sauvegardes régulières et la gestion de l’infrastructure.&lt;br /&gt;
&lt;br /&gt;
Le 1er novembre 2020, Jucheguevara a rejoint ProleWiki et est devenu administrateur pour une période allant jusqu’en septembre 2022. Cette même période a vu un afflux massif de créations de comptes et de spams, ce qui a motivé la mise en place d’un système de demandes de compte. Le 16 novembre 2020, CriticalResist est également devenu administrateur.&lt;br /&gt;
&lt;br /&gt;
Pour réduire la centralisation des responsabilités, plusieurs autres éditeurs ont été nommés administrateurs entre novembre 2020 et février 2021, mais le groupe s’est rapidement réduit. Les administrateurs actifs sont alors restés Jucheguevara, Forte et CriticalResist. Le 29 décembre 2021, l’éditeur Ledlecreeper27 a renforcé le projet par ses contributions de grande qualité et demeure, début 2024, l’un des plus prolifiques.&lt;br /&gt;
&lt;br /&gt;
=== Purge des socialistes patriotiques ===&lt;br /&gt;
En septembre 2022, Jucheguevara a tenté, en lien avec la communauté Infrared, d’infiltrer ProleWiki au profit de communistes favorables au mouvement MAGA et de socialistes patriotiques. Il a été banni le 27 septembre 2022. Après l’éviction de deux autres socialistes patriotiques, il a lancé InfraWiki le 13 octobre pour promouvoir le colonialisme de peuplement et le conservatisme social. Le 22 octobre 2022, ProleWiki a officiellement inscrit dans ses principes l’opposition à la xénophobie et au socialisme patriote, réaffirmant son refus de toute compromission avec ces idéologies.&lt;br /&gt;
&lt;br /&gt;
=== Tentative de subversion ultra-gauche ===&lt;br /&gt;
En juin 2022, Wisconcom, se déclarant hoxhaïste, a rejoint ProleWiki et s’est rapidement classé parmi les principaux contributeurs. Malgré des tensions personnelles et idéologiques sur le serveur Discord, il a maintenu un niveau de contribution élevé. En août 2022, il a publiquement contesté les principes de ProleWiki dans la page de discussion consacrée à l’économie de marché socialiste, proférant des insultes et provoquant son bannissement de Lemmygrad. Il a ensuite créé un espace de propagande anti-Chine, fermé pour bannissement définitif.&lt;br /&gt;
&lt;br /&gt;
Sur ProleWiki, il a multiplié interventions de mauvaise foi, modifications unilatérales sans concertation et mensonges. Après une séance de critique collective le 17 octobre 2022, il a réclamé des pouvoirs accrus pour protéger les « anti-révisionnistes » et a finalement été banni le 21 octobre. Il a alors vandalisé plusieurs articles sur l’instance germanophone en accusant la Chine de fascisme, de génocide et en comparant son économie à celle de l’Allemagne nazie, dénonçant ProleWiki comme porteur d’une « idéologie révisionniste dengiste ».&lt;br /&gt;
&lt;br /&gt;
==== Tentatives d’infiltration ====&lt;br /&gt;
Wisconcom a ensuite utilisé son compte sur RationalWiki pour poursuivre sa campagne anti-Chine et critiquer ProleWiki comme « campiste », « pro-PCC » et complice du « blanchiment de l’impérialisme chinois ». Après de multiples tentatives d’usurpation, il a menacé, en janvier 2022, de « passer à l’arme nucléaire » contre ProleWiki via son subreddit, puis formé un « comité » sur Discord pour renverser l’administration. En réponse, les administrateurs ont formalisé le 15 février 2023 un groupe de sécurité interne, composé d’éditeurs de confiance chargés d’auditer les membres, de surveiller la réputation du projet et de résoudre les conflits. Depuis mai 2023, Wisconcom a largement effacé sa présence en ligne et a cessé ses attaques.&lt;br /&gt;
&lt;br /&gt;
=== Réformes démocratiques ===&lt;br /&gt;
Dès ses débuts, ProleWiki a mis en place des sauvegardes régulières et envisagé leur diffusion pour garantir la pérennité du site. À l’automne 2022, un programme de groupes de travail a été lancé pour déléguer certaines tâches non rédactionnelles aux éditeurs, notamment la création d’un groupe d’agitprop pour les réseaux sociaux. Depuis juin 2023, tous les éditeurs « de confiance » y sont automatiquement intégrés. Cette structure permet à chacun de proposer et de mener à bien des projets autonomes avec l’appui de l’administration.&lt;br /&gt;
&lt;br /&gt;
La validation des comptes a été démocratisée : les réponses des candidats sont soumises à l’ensemble des éditeurs sur Discord, qui votent pour ou contre, et l’administration applique le résultat. Cette évolution a été rendue possible par l’essor de la communauté en 2022, qui a relancé l’activité du serveur Discord.&lt;br /&gt;
&lt;br /&gt;
Début 2023, ProleWiki a renforcé son principe de centralisme démocratique en formant CriticalResist à la gestion complète de la plateforme MediaWiki, assurant ainsi que le projet ne dépende plus d’une seule personne. À la même période, l’éditeur RedCustodian a lancé un club de lecture autogéré, où les membres choisissent collectivement les ouvrages.&lt;br /&gt;
&lt;br /&gt;
=== Collecte de fonds de 2023 ===&lt;br /&gt;
En février 2023, ProleWiki a organisé sa première collecte de fonds pour passer d’un stockage de 40 à 80 Go et financer deux ans d’hébergement, pour un montant visé de 528 USD. La transparence sur l’usage des fonds a été totale, et un vote des contributeurs déciderait de l’affectation de toute somme excédentaire. Grâce à un don initial de 200 USD, l’objectif d’un an d’hébergement a été atteint en moins de 24 heures, et le montant total a été réuni en cinq jours notamment grâce aux communautés Lemmygrad et Hexbear.&lt;br /&gt;
&lt;br /&gt;
=== Développements ultérieurs ===&lt;br /&gt;
En juillet 2023, ProleWiki a adopté une nouvelle bibliothèque illustrée ; l’ancienne reste consultable en archive mais n’est plus mise à jour. En janvier 2024, une possibilité de compte spécifique à la bibliothèque a été créée, permettant à tout utilisateur sans compte complet de soumettre des modifications dans cet espace.&lt;br /&gt;
&lt;br /&gt;
En février 2024, un serveur Matrix a été lancé avant d’être temporairement suspendu pour maintenance. En mars 2024, une version grecque de ProleWiki a été ouverte, suivie en avril 2024 d’une instance en persan. Toujours en avril 2024, un formulaire anonyme de critique a été mis en place sur Lemmygrad, recueillant des suggestions telles que faciliter la création de compte ou autoriser les contributions sans compte. Depuis juin 2024, les utilisateurs non inscrits peuvent proposer des modifications, et 21 demandes sur 28 ont été approuvées dès la première semaine.&lt;br /&gt;
&lt;br /&gt;
En juin 2024, un pilote d’édition anonyme sur certaines pages a obtenu plus de 80 % de taux d’approbation et a été adopté définitivement. Le 18 juillet 2024, Ulaan et General-KJ ont été élus à l’unanimité troisième et quatrième administrateurs de ProleWiki.&lt;br /&gt;
&lt;br /&gt;
=== Changement d’hébergeur ===&lt;br /&gt;
Début 2025, ProleWiki a migré vers un nouvel hébergeur et acquis un plan de stockage supplémentaire, ajustant légèrement ses coûts tout en maintenant l’équilibre financier. Cette évolution a amélioré les performances globales du site, le rendant plus rapide pour la consultation comme pour l’édition.&lt;br /&gt;
&lt;br /&gt;
En janvier 2023, le site théorique Red Sails a republié une contribution issue de ProleWiki. En juin 2024, le journal Red Clarion a mentionné ProleWiki dans l’un de ses articles.&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Common.css&amp;diff=5326</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Common.css&amp;diff=5326"/>
		<updated>2024-03-06T14:10:36Z</updated>

		<summary type="html">&lt;p&gt;Forte : Using French names for the main page so it hides ProleWiki:Accueil and the sub heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
/*************************/&lt;br /&gt;
&lt;br /&gt;
#editpage-copywarn {&lt;br /&gt;
	line-height: 1em;&lt;br /&gt;
	margin-top: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.test01 {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wiki theming */&lt;br /&gt;
#siteSub {							/* Size of text &amp;quot;From ProleWiki, the proletarian encyclopedia&amp;quot; below the title of the article. */&lt;br /&gt;
		display: block;&lt;br /&gt;
		font-size: 85% !important;	/* Attaching !important because a new update did some shit it wasn&#039;t supposed to do */&lt;br /&gt;
} &lt;br /&gt;
.mw-body {&lt;br /&gt;
    box-shadow: 0 0.25em 0.6em -0.15em rgba(0,0,0,0.15);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.page-ProleWiki_Accueil .firstHeading, &lt;br /&gt;
.page-ProleWiki_Accueil #siteSub { &lt;br /&gt;
	display: none; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*Site notice configuration*/&lt;br /&gt;
/* Removing messy CSS code from DismissableSiteNotice extension */&lt;br /&gt;
.mw-dismissable-notice-close {&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-dismissable-notice-body {&lt;br /&gt;
	margin:auto !important;&lt;br /&gt;
	text-align:left;&lt;br /&gt;
}&lt;br /&gt;
/*Adding the box and items CSS*/&lt;br /&gt;
.sitenotice-box {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	padding: 20px;&lt;br /&gt;
	width: 80%;&lt;br /&gt;
	background: #efefef;&lt;br /&gt;
	border-radius: 12px;&lt;br /&gt;
	margin: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content sub,&lt;br /&gt;
.mw-body-content sup,&lt;br /&gt;
.reference {&lt;br /&gt;
	font-size: 80%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.page-Library_Theses_on_Feuerbach .mw-body-content h3&lt;br /&gt;
	{ text-align: center; }&lt;br /&gt;
&lt;br /&gt;
/* Announcement style */&lt;br /&gt;
&lt;br /&gt;
.announcement {&lt;br /&gt;
   border:1px solid #aaaaaa;&lt;br /&gt;
   background-color:#f9f9f9;&lt;br /&gt;
   padding:5px;&lt;br /&gt;
   font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Standard Navigationsleisten, aka box hiding thingy&lt;br /&gt;
   from .de.  Documentation at [[Wikipedia:NavFrame]]. */&lt;br /&gt;
div.NavFrame {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 4px;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame + div.NavFrame {&lt;br /&gt;
	border-top-style: none;&lt;br /&gt;
	border-top-style: hidden;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame div.NavHead {&lt;br /&gt;
	line-height: 1.6em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	background-color: #ccf;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame p,&lt;br /&gt;
div.NavFrame div.NavContent,&lt;br /&gt;
div.NavFrame div.NavContent p {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
a.NavToggle {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	right: 3px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Default style for navigation boxes */&lt;br /&gt;
.navbox {                     /* Navbox container style */&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;
.navbox .navbox {&lt;br /&gt;
	margin-top: 0;            /* No top margin for nested navboxes */&lt;br /&gt;
}&lt;br /&gt;
.navbox + .navbox {&lt;br /&gt;
	margin-top: -1px;         /* Single pixel border between adjacent navboxes */&lt;br /&gt;
}&lt;br /&gt;
.navbox-inner,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	width: 100%;&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;      /* Title, group and above/below styles */&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
th.navbox-group {             /* Group style */&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
.navbox,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	background-color: #fdfdfd; /* Background color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-list {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	border-color: #fdfdfd;    /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
/* cell spacing for navbox cells */&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 {    /* Borders above 2nd, 3rd, etc. rows */&lt;br /&gt;
	border-top: 2px solid #fdfdfd; /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
.navbox th,&lt;br /&gt;
.navbox-title {&lt;br /&gt;
	background-color: #ccccff;      /* Level 1 color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-abovebelow,&lt;br /&gt;
th.navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-title {&lt;br /&gt;
	background-color: #ddddff;      /* Level 2 color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-subgroup .navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-abovebelow {&lt;br /&gt;
	background-color: #e6e6ff;      /* Level 3 color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-even {&lt;br /&gt;
	background-color: #f7f7f7;      /* Even row striping */&lt;br /&gt;
}&lt;br /&gt;
.navbox-odd {&lt;br /&gt;
	background-color: transparent;  /* Odd row striping */&lt;br /&gt;
}&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;       /* Adjust hlist padding in navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reduce page jumps by hiding collapsed/dismissed content */&lt;br /&gt;
.client-js .mw-special-Watchlist #watchlist-message,&lt;br /&gt;
.client-js .NavFrame.collapsed .NavContent,&lt;br /&gt;
.client-js .collapsible:not( .mw-made-collapsible).collapsed &amp;gt; tbody &amp;gt; tr:not(:first-child) {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style for horizontal lists (separator following item).&lt;br /&gt;
   @source mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
   @revision 8 (2016-05-21)&lt;br /&gt;
   @author [[User:Edokter]]&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;
/* Display list items inline */&lt;br /&gt;
.hlist dd,&lt;br /&gt;
.hlist dt,&lt;br /&gt;
.hlist li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
/* Display nested 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;
.hlist dl dl, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .hlist ul ul {&lt;br /&gt;
	display: inline;&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;
/* 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;
 * Note hlist style usage differd in&lt;br /&gt;
 * the Minerva skin. Remember .hlist is a class defined in core as well! Please check Minerva desktop (and Minerva.css) when changing&lt;br /&gt;
 * See https://phabricator.wikimedia.org/T213239&lt;br /&gt;
 */&lt;br /&gt;
.hlist dd:after,&lt;br /&gt;
.hlist li:after {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&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;
/* Add parentheses around nested lists */&lt;br /&gt;
.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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;
.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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;
/* 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;
.hlist ol &amp;gt; li {&lt;br /&gt;
	counter-increment: listitem;&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;
.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;br /&gt;
&lt;br /&gt;
/*CREATE ACCOUNT AND USER LOGIN CSS*/&lt;br /&gt;
&lt;br /&gt;
.page-Special_CreateAccount .firstHeading {&lt;br /&gt;
        width: 32rem;&lt;br /&gt;
        margin: 1.5em auto .4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.page-Special_UserLogin .firstHeading {&lt;br /&gt;
        width: 32rem;&lt;br /&gt;
        margin: 1.5em auto .4em;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_UserLogin .mw-ui-container {&lt;br /&gt;
        width: 32rem;&lt;br /&gt;
        margin: 3em auto;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_UserLogin .mw-ui-container #userloginForm {&lt;br /&gt;
            float: unset;&lt;br /&gt;
            margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_UserLogin .mw-ui-vform {&lt;br /&gt;
            margin: 2.5em auto 0;&lt;br /&gt;
            width: 22rem;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_CreateAccount .firstHeading {&lt;br /&gt;
        width: 32rem;&lt;br /&gt;
        margin: 1.5em auto .4em;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_CreateAccount .mw-ui-container {&lt;br /&gt;
        width: 32rem;&lt;br /&gt;
        margin: 3em auto;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_CreateAccount .mw-ui-container #userloginForm {&lt;br /&gt;
            float: unset;&lt;br /&gt;
            margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_CreateAccount .mw-ui-vform {&lt;br /&gt;
            margin: 2.5em auto 0;&lt;br /&gt;
            width: 22rem;&lt;br /&gt;
}&lt;br /&gt;
.page-Special_CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
  display: none&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5325</id>
		<title>ProleWiki:Accueil/Contenu</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5325"/>
		<updated>2023-12-10T09:02:00Z</updated>

		<summary type="html">&lt;p&gt;Forte : Révocation des modifications de CommissarMar (discussion) vers la dernière version créée par CriticalResist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css/&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
                 MAIN HEADER&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-body&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;mainpage-banner&amp;quot; class=&amp;quot;mainpage-headerimage&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-header&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;header-intro&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;h1&amp;gt;Bienvenue sur ProleWiki !&amp;lt;/h1&amp;gt;&lt;br /&gt;
   &amp;lt;p&amp;gt;Nous sommes [[ProleWiki:Au sujet|ProleWiki]], un projet [[Communisme|communiste]] ([[Marxisme-Léninisme|marxiste-léniniste]]) fondé en septembre 2020. Notre objectif est de construire une encyclopédie collaborative [[Anti-impérialisme|anti-impérialiste]] et [[Prolétariat|prolétaire]], avec des informations sur les événements actuels, les [[Parti communiste|partis communistes]] du monde entier, les pays, et plus encore. Nous hébergeons également une [[ProleWiki:Bibliothèque|bibliothèque de textes]] importants pour le mouvement prolétaire international, de [[Karl Marx|Marx]] et [[Friedrich Engels|Engels]] à [[Vladimir Lénine|Lénine]] et [[Joseph Staline|Staline]].&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;header-stats&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre total d&#039;articles: &#039;&#039;&#039;{{NUMBEROFARTICLES}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de fichiers téléchargés: &#039;&#039;&#039;{{NUMBEROFFILES}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de camarades: &#039;&#039;&#039;{{NUMBERINGROUP:comrade}} &#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de modifications: &#039;&#039;&#039;{{NUMBEROFEDITS}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
        Featured, News and Contribute&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Article en vedette&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/En vedette}}&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-header&amp;quot; style=&amp;quot;margin:2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Contribuez !&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/Contribuez}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;separator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Nouvelles&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/Nouvelles}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Essai:Pr%C3%A9sentation_de_ProleWiki&amp;diff=5324</id>
		<title>Essai:Présentation de ProleWiki</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Essai:Pr%C3%A9sentation_de_ProleWiki&amp;diff=5324"/>
		<updated>2023-12-10T09:01:06Z</updated>

		<summary type="html">&lt;p&gt;Forte : Révocation des modifications de CommissarMar (discussion) vers la dernière version créée par CriticalResist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox essay|title=Présentation de ProleWiki|author=CriticalResist|date=2023-09-23|excerpt=Bienvenue sur ProleWiki !&lt;br /&gt;
&lt;br /&gt;
Je m&#039;appelle CriticalResist et je suis le co-administrateur global de notre encyclopédie prolétaire.&lt;br /&gt;
&lt;br /&gt;
Originellement établi en septembre 2020, ProleWiki a beaucoup grandi en seulement 3 ans, mais vous ne le sauriez pas en regardant uniquement l&#039;instance française. En effet, nous sommes majoritairement actifs sur l&#039;instance anglophone.&lt;br /&gt;
&lt;br /&gt;
Toutefois, l&#039;instance française existe et est prête à accueillir du contenu !|image=ProleWiki_SEO_FR.png}}&lt;br /&gt;
&lt;br /&gt;
Bienvenue sur ProleWiki !&lt;br /&gt;
&lt;br /&gt;
Je m&#039;appelle CriticalResist et je suis le co-administrateur global de notre encyclopédie prolétaire.&lt;br /&gt;
&lt;br /&gt;
Originellement établi en septembre 2020, ProleWiki a beaucoup grandi en seulement 3 ans, mais vous ne le sauriez pas en regardant uniquement l&#039;instance française. En effet, nous sommes majoritairement actifs sur [https://en.prolewiki.org l&#039;instance anglophone].&lt;br /&gt;
&lt;br /&gt;
Toutefois, l&#039;instance française existe et est prête à accueillir du contenu !&lt;br /&gt;
&lt;br /&gt;
Si vous êtes vous aussi marxiste-léniniste et avez envie de nous aider à construire cette instance francophone (ou toute autre instance !), alors pourquoi ne pas [[Spécial:Demander un compte|demander un compte]] ?&lt;br /&gt;
&lt;br /&gt;
Au-delà des pages du wiki, nous proposons aussi une [[ProleWiki:Bibliothèque|Bibliothèque]] ainsi qu&#039;un espace blog pour nos [[ProleWiki:Essais|essais]].&lt;br /&gt;
&lt;br /&gt;
Mais avant ça, laissez-moi vous parler un peu plus de qui sont nos éditeurs.&lt;br /&gt;
&lt;br /&gt;
== Pourquoi devenir éditeur ? ==&lt;br /&gt;
Tous les membres de ProleWiki sont 100% bénévoles. Depuis le début 2023, nous comptons plus de 20 éditeurs actifs quotidiennement sur l&#039;instance anglaise ainsi que sur notre [https://discord.gg/ZQTBNRU9v5 serveur Discord], qui nous permet de communiquer plus efficacement.&lt;br /&gt;
&lt;br /&gt;
Nous ne demandons pas à nos éditeurs de remplir des quotas, car nous sommes bien conscients que ProleWiki, en tant que projet bénévole, reste un hobby. Chacun.e est libre de participer selon ses moyens. Vous pouvez donc éditer (c&#039;est-à-dire modifier les pages du wiki) quand bon vous semble et vous impliquer autant que vous le désirez.&lt;br /&gt;
&lt;br /&gt;
Nous promouvons autant que possible le centralisme démocratique au sein du projet. Nos éditeurs votent par exemple sur l&#039;utilisation de nos fonds excédentaires (100% de notre financement provient de dons privés) ainsi que sur les demandes de compte qui arrivent. Notamment, nous encourageons les éditeurs -- même celles et ceux qui viennent de rejoindre le projet -- à proposer et réaliser leurs idées d&#039;amélioration. Notre philosophie est celle d&#039;une &#039;&#039;&#039;amélioration constante&#039;&#039;&#039;, et nous faisons tout pour que nos éditeurs puissent tester leurs idées sur ProleWiki.&lt;br /&gt;
&lt;br /&gt;
En tant qu&#039;administrateur du projet depuis ses débuts, je peux dire sans hésiter qu&#039;il y a beaucoup à faire sur ProleWiki. Nous sommes à la recherche de personnes qui veulent remplir notre encyclopédie, bien sûr, mais nous aimerions aussi beaucoup avoir des développeurs.es web, des designers UX, des graphistes, etc.&lt;br /&gt;
&lt;br /&gt;
Si vous êtes à l&#039;aise sur les réseaux sociaux par exemple, vous pourrez demander à gérer le compte Twitter de ProleWiki FR. Si vous savez monter des vidéos, vous pourrez gérer le compte Youtube, etc.&lt;br /&gt;
[[Catégorie:Essais]]&lt;br /&gt;
[[Catégorie:Essais de CriticalResist]]&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5323</id>
		<title>ProleWiki:Accueil</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5323"/>
		<updated>2023-12-10T09:00:37Z</updated>

		<summary type="html">&lt;p&gt;Forte : Révocation des modifications de CommissarMar (discussion) vers la dernière version créée par Forte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Contenu}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|type 			= website&lt;br /&gt;
|title 			= ProleWiki&lt;br /&gt;
|keywords		= wiki,marxisme-léninisme,encyclopédie,prolétaire,politique,révolutionnaire,lenin,stalin,cccp,cpsu,mao zedong,ho chi minh,kim il-sung,fidel castro,che guevara&lt;br /&gt;
|description	= ProleWiki: L&#039;encyclopédie prolétarienne marxiste-léniniste construite par le travail collectif&lt;br /&gt;
|site_name		= ProleWiki&lt;br /&gt;
|locale			= fr&lt;br /&gt;
|image			= ProleWiki_SEO_FR.png&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Module:Abc&amp;diff=5240</id>
		<title>Module:Abc</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Module:Abc&amp;diff=5240"/>
		<updated>2023-07-31T17:09:23Z</updated>

		<summary type="html">&lt;p&gt;Forte : Page créée avec « local p = {} return p »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5237</id>
		<title>ProleWiki:Accueil</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5237"/>
		<updated>2023-07-13T20:00:32Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Contenu}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|type 			= website&lt;br /&gt;
|title 			= ProleWiki&lt;br /&gt;
|keywords		= wiki,marxisme-léninisme,encyclopédie,prolétaire,politique,révolutionnaire,lenin,stalin,cccp,cpsu,mao zedong,ho chi minh,kim il-sung,fidel castro,che guevara&lt;br /&gt;
|description	= ProleWiki: L&#039;encyclopédie prolétarienne marxiste-léniniste construite par le travail collectif&lt;br /&gt;
|site_name		= ProleWiki&lt;br /&gt;
|locale			= fr&lt;br /&gt;
|image			= ProleWiki_SEO_FR.png&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.js&amp;diff=5198</id>
		<title>MediaWiki:Gadget-recentChanges.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.js&amp;diff=5198"/>
		<updated>2023-06-24T14:06:44Z</updated>

		<summary type="html">&lt;p&gt;Forte : French ProleWiki has different id name for container where Recent Changes will appear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 *		Recent changes sidebar gadget for both Vector and Citizen skin&lt;br /&gt;
 *		Originally created by @author JaydenKieran from RunescapeWiki&lt;br /&gt;
**/&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    var $prependTo;&lt;br /&gt;
    var $rcContainer;&lt;br /&gt;
    var recentChanges;&lt;br /&gt;
    var $recentChangesDOM;&lt;br /&gt;
    var $final;&lt;br /&gt;
    &lt;br /&gt;
    var citizen = mw.config.get(&#039;skin&#039;) == &#039;citizen&#039;;&lt;br /&gt;
    var vector = mw.config.get(&#039;skin&#039;) == &#039;vector&#039;;&lt;br /&gt;
&lt;br /&gt;
    function init() {&lt;br /&gt;
        $prependTo = $(&#039;#p-navigation&#039;);&lt;br /&gt;
        var api = new mw.Api();&lt;br /&gt;
        &lt;br /&gt;
        //Adopting different structures for different skins&lt;br /&gt;
        if (citizen) {&lt;br /&gt;
        	$final = $(&#039;&amp;lt;ul&amp;gt;&#039;).after($rcContainer);&lt;br /&gt;
	&lt;br /&gt;
	        var $rcLabelSpan = $(&#039;&amp;lt;span&amp;gt;&#039;).text(&#039;Recent changes&#039;)&lt;br /&gt;
	        	.addClass(&#039;citizen-menu__heading-label&#039;);&lt;br /&gt;
	        var $rcLabel = $(&#039;&amp;lt;label&amp;gt;&#039;)&lt;br /&gt;
				.addClass(&#039;citizen-menu__heading&#039;)&lt;br /&gt;
				.attr(&#039;id&#039;, &#039;p-RecentChanges-label&#039;)&lt;br /&gt;
				.append($rcLabelSpan);&lt;br /&gt;
	        $rcContainer = $(&#039;&amp;lt;nav&amp;gt;&#039;)&lt;br /&gt;
				.addClass(&#039;mw-portlet mw-portlet-RecentChanges&#039;)&lt;br /&gt;
				.attr(&#039;id&#039;, &#039;p-RecentChanges&#039;)&lt;br /&gt;
				.append($rcLabel)&lt;br /&gt;
				.append($final);&lt;br /&gt;
        } else if (vector) {&lt;br /&gt;
        	$rcContainer = $(&#039;&amp;lt;nav&amp;gt;&#039;)&lt;br /&gt;
            .addClass(&#039;vector-menu vector-menu-portal portal&#039;)&lt;br /&gt;
            .attr(&#039;id&#039;, &#039;p-RecentChanges&#039;)&lt;br /&gt;
            .append(&lt;br /&gt;
                $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;Recent changes&#039;)&lt;br /&gt;
                	.addClass(&#039;vector-menu-heading&#039;)&lt;br /&gt;
                	.attr(&#039;id&#039;, &#039;p-RecentChanges-label&#039;)&lt;br /&gt;
            )&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Add the container to the sidebar&lt;br /&gt;
        $prependTo.after($rcContainer)&lt;br /&gt;
&lt;br /&gt;
        api.get({&lt;br /&gt;
                action: &amp;quot;query&amp;quot;,&lt;br /&gt;
                list: &amp;quot;recentchanges&amp;quot;,&lt;br /&gt;
                rcprop: &amp;quot;title|timestamp|sizes|user&amp;quot;,&lt;br /&gt;
                rcnamespace: &amp;quot;0|3000&amp;quot;,&lt;br /&gt;
                rclimit: &amp;quot;5&amp;quot;,&lt;br /&gt;
                rctype: &amp;quot;edit|new&amp;quot;,&lt;br /&gt;
                rcshow: &amp;quot;!bot|!redirect&amp;quot;,&lt;br /&gt;
                rctoponly: 1,&lt;br /&gt;
                format: &amp;quot;json&amp;quot;&lt;br /&gt;
            })&lt;br /&gt;
            .done(function(data) {&lt;br /&gt;
                if (data.query &amp;amp;&amp;amp; data.query.recentchanges) {&lt;br /&gt;
                    recentChanges = data.query.recentchanges&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (recentChanges.length &amp;gt; 0) {&lt;br /&gt;
                    var Time = 1;&lt;br /&gt;
                    $recentChangesDOM = recentChanges.map(function(rc) {&lt;br /&gt;
                        const timeMatch = rc.timestamp.match(/([0-9]+)-([0-9]+)-([0-9]+)T([0-9]+):([0-9]+):([0-9]+)Z/);&lt;br /&gt;
                    	var editYear = timeMatch[1];&lt;br /&gt;
                    	var editMonth = timeMatch[2];&lt;br /&gt;
                    	var editDay = timeMatch[3];&lt;br /&gt;
                    	var editHour = timeMatch[4];&lt;br /&gt;
                    	var editMinute = timeMatch[5];&lt;br /&gt;
                    	var editSecond = timeMatch[6];&lt;br /&gt;
                    	&lt;br /&gt;
                    	var editDate = new Date(editYear, (editMonth-1), editDay, editHour, editMinute, editSecond);&lt;br /&gt;
						var currentDate = new Date();&lt;br /&gt;
						currentDate = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000)&lt;br /&gt;
						var diffDate = currentDate - editDate;&lt;br /&gt;
						var diffDays = Math.floor(diffDate/(1000*60*60*24));&lt;br /&gt;
						var diffHours = Math.floor(diffDate/(1000*60*60));&lt;br /&gt;
						var diffMinutes = Math.floor(diffDate/(1000*60));&lt;br /&gt;
						var diffSeconds = Math.floor(diffDate/(1000));&lt;br /&gt;
						&lt;br /&gt;
						if (diffDays &amp;gt; 0) {&lt;br /&gt;
							Time = diffDays + &#039;d ago – &#039;;&lt;br /&gt;
						} else if (diffHours &amp;gt; 0) {&lt;br /&gt;
							Time = diffHours + &#039;h ago – &#039;;&lt;br /&gt;
						} else if (diffMinutes &amp;gt; 0) {&lt;br /&gt;
							Time = diffMinutes + &#039;m ago – &#039;;&lt;br /&gt;
						} else if (diffSeconds &amp;gt; 0) {&lt;br /&gt;
							Time = diffSeconds + &#039;s ago – &#039;;&lt;br /&gt;
						} else {&lt;br /&gt;
							Time = 1 + Math.floor(Math.random() * 10) + &#039;m ago – &#039;;&lt;br /&gt;
						}&lt;br /&gt;
						if (citizen) {&lt;br /&gt;
	                        return $(&#039;&amp;lt;li&amp;gt;&#039;).addClass(&#039;mw-list-item&#039;).append(&lt;br /&gt;
	                            $(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
	                            .css(&#039;white-space&#039;, &#039;normal&#039;)&lt;br /&gt;
	                            .addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
	                            .text(&#039; &#039; + rc.title)&lt;br /&gt;
	                            .attr(&#039;href&#039;, new mw.Title(rc.title).getUrl()),&lt;br /&gt;
	                            $(&#039;&amp;lt;p&amp;gt;&#039;)&lt;br /&gt;
	                            .css({&lt;br /&gt;
	                            	&#039;text-align&#039;: &#039;right&#039;,&lt;br /&gt;
	                            	&#039;margin-right&#039;: &#039;2.5em&#039;&lt;br /&gt;
	                            	})&lt;br /&gt;
	                            .addClass(&#039;rc-sidebar-user&#039;)&lt;br /&gt;
	                            .text(Time)&lt;br /&gt;
	                            .append(&lt;br /&gt;
	                                $(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
	                                .css({&lt;br /&gt;
	                            	&#039;display&#039; : &#039;-webkit-inline-box&#039;,&lt;br /&gt;
	                            	&#039;padding&#039; : &#039;0px&#039;&lt;br /&gt;
	                                })&lt;br /&gt;
	                                .text(rc.user)&lt;br /&gt;
	                                .attr(&#039;href&#039;, new mw.Title(rc.user, 2).getUrl())&lt;br /&gt;
	                            )&lt;br /&gt;
	                        )&lt;br /&gt;
                        } else if (vector) {&lt;br /&gt;
                        	return $(&#039;&amp;lt;div&amp;gt;&#039;).addClass(&#039;rc-sidebar-item&#039;).append(&lt;br /&gt;
                            	$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                            		.addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
                            		.text(&#039; &#039; + rc.title)&lt;br /&gt;
                            		.attr(&#039;href&#039;, new mw.Title(rc.title).getUrl()),&lt;br /&gt;
                            	$(&#039;&amp;lt;p&amp;gt;&#039;)&lt;br /&gt;
                            		.addClass(&#039;rc-sidebar-user&#039;)&lt;br /&gt;
                            		.text(Time)&lt;br /&gt;
                            		.append(&lt;br /&gt;
                            			$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                                			.text(rc.user)&lt;br /&gt;
                                			.attr(&#039;href&#039;, new mw.Title(rc.user, 2).getUrl())&lt;br /&gt;
                            		)&lt;br /&gt;
                            )&lt;br /&gt;
                        }&lt;br /&gt;
                    })&lt;br /&gt;
                } else {&lt;br /&gt;
                    $recentChangesDOM = $(&#039;&amp;lt;p&amp;gt;&#039;).text(&#039;No recent changes.&#039;)&lt;br /&gt;
                }&lt;br /&gt;
                if (vector) {&lt;br /&gt;
                	$final = $rcContainer;&lt;br /&gt;
                }&lt;br /&gt;
                $final.append($recentChangesDOM)&lt;br /&gt;
                var $showMore&lt;br /&gt;
				$showMore = $(&#039;&amp;lt;div&amp;gt;&#039;)&lt;br /&gt;
                	.addClass(&#039;rc-sidebar-item rc-sidebar-more&#039;)&lt;br /&gt;
                	.append(&lt;br /&gt;
                		$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                		.addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
                		.text(&#039;See more...&#039;)&lt;br /&gt;
                		.attr(&#039;href&#039;, &#039;/wiki/Special:RecentChanges&#039;)&lt;br /&gt;
                )&lt;br /&gt;
                $final.append($showMore)&lt;br /&gt;
            })&lt;br /&gt;
            .fail(function(_, data) {&lt;br /&gt;
                alert(data.error.info)&lt;br /&gt;
            });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using([&#039;mediawiki.util&#039;, &#039;mediawiki.api&#039;], function() {&lt;br /&gt;
        $(init)&lt;br /&gt;
    })&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.css&amp;diff=5197</id>
		<title>MediaWiki:Gadget-recentChanges.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.css&amp;diff=5197"/>
		<updated>2023-06-24T14:05:42Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* &amp;lt;pre&amp;gt; */&lt;br /&gt;
/* *****************&lt;br /&gt;
   rc sidebar widget&lt;br /&gt;
   ***************** */&lt;br /&gt;
&lt;br /&gt;
#p-RecentChanges {&lt;br /&gt;
	min-height: 11.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes blink {&lt;br /&gt;
  50% {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-RecentChanges h3::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	left: .5em;&lt;br /&gt;
&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	background-color: #56b30a;&lt;br /&gt;
	width: 6px;&lt;br /&gt;
	height: 6px;&lt;br /&gt;
	border-radius: 100%;&lt;br /&gt;
	&lt;br /&gt;
	animation: blink 5s linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-item {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	margin: .5em .25em 0 .66em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-item::before {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -0.75em;&lt;br /&gt;
	top: .5em;&lt;br /&gt;
&lt;br /&gt;
	/* content: &#039;&#039;; */&lt;br /&gt;
	background-color: #327ba7;&lt;br /&gt;
	width: 4px;&lt;br /&gt;
	height: 4px;&lt;br /&gt;
	border-radius: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-page {&lt;br /&gt;
	display: block;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	text-overflow: ellipsis;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	max-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-user {&lt;br /&gt;
    color: #555;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
	text-overflow: ellipsis;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-user a {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
#p-RecentChanges .rc-sidebar-more {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-RecentChanges .rc-sidebar-more .rc-sidebar-page {&lt;br /&gt;
	display:inline-block;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.js&amp;diff=5195</id>
		<title>MediaWiki:Gadget-recentChanges.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.js&amp;diff=5195"/>
		<updated>2023-06-24T14:05:42Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 *		Recent changes sidebar gadget for both Vector and Citizen skin&lt;br /&gt;
 *		Originally created by @author JaydenKieran from RunescapeWiki&lt;br /&gt;
**/&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    var $prependTo;&lt;br /&gt;
    var $rcContainer;&lt;br /&gt;
    var recentChanges;&lt;br /&gt;
    var $recentChangesDOM;&lt;br /&gt;
    var $final;&lt;br /&gt;
    &lt;br /&gt;
    var citizen = mw.config.get(&#039;skin&#039;) == &#039;citizen&#039;;&lt;br /&gt;
    var vector = mw.config.get(&#039;skin&#039;) == &#039;vector&#039;;&lt;br /&gt;
&lt;br /&gt;
    function init() {&lt;br /&gt;
        $prependTo = $(&#039;#p-Navigation&#039;);&lt;br /&gt;
        var api = new mw.Api();&lt;br /&gt;
        &lt;br /&gt;
        //Adopting different structures for different skins&lt;br /&gt;
        if (citizen) {&lt;br /&gt;
        	$final = $(&#039;&amp;lt;ul&amp;gt;&#039;).after($rcContainer);&lt;br /&gt;
	&lt;br /&gt;
	        var $rcLabelSpan = $(&#039;&amp;lt;span&amp;gt;&#039;).text(&#039;Recent changes&#039;)&lt;br /&gt;
	        	.addClass(&#039;citizen-menu__heading-label&#039;);&lt;br /&gt;
	        var $rcLabel = $(&#039;&amp;lt;label&amp;gt;&#039;)&lt;br /&gt;
				.addClass(&#039;citizen-menu__heading&#039;)&lt;br /&gt;
				.attr(&#039;id&#039;, &#039;p-RecentChanges-label&#039;)&lt;br /&gt;
				.append($rcLabelSpan);&lt;br /&gt;
	        $rcContainer = $(&#039;&amp;lt;nav&amp;gt;&#039;)&lt;br /&gt;
				.addClass(&#039;mw-portlet mw-portlet-RecentChanges&#039;)&lt;br /&gt;
				.attr(&#039;id&#039;, &#039;p-RecentChanges&#039;)&lt;br /&gt;
				.append($rcLabel)&lt;br /&gt;
				.append($final);&lt;br /&gt;
        } else if (vector) {&lt;br /&gt;
        	$rcContainer = $(&#039;&amp;lt;nav&amp;gt;&#039;)&lt;br /&gt;
            .addClass(&#039;vector-menu vector-menu-portal portal&#039;)&lt;br /&gt;
            .attr(&#039;id&#039;, &#039;p-RecentChanges&#039;)&lt;br /&gt;
            .append(&lt;br /&gt;
                $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;Recent changes&#039;)&lt;br /&gt;
                	.addClass(&#039;vector-menu-heading&#039;)&lt;br /&gt;
                	.attr(&#039;id&#039;, &#039;p-RecentChanges-label&#039;)&lt;br /&gt;
            )&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Add the container to the sidebar&lt;br /&gt;
        $prependTo.after($rcContainer)&lt;br /&gt;
&lt;br /&gt;
        api.get({&lt;br /&gt;
                action: &amp;quot;query&amp;quot;,&lt;br /&gt;
                list: &amp;quot;recentchanges&amp;quot;,&lt;br /&gt;
                rcprop: &amp;quot;title|timestamp|sizes|user&amp;quot;,&lt;br /&gt;
                rcnamespace: &amp;quot;0|3000&amp;quot;,&lt;br /&gt;
                rclimit: &amp;quot;5&amp;quot;,&lt;br /&gt;
                rctype: &amp;quot;edit|new&amp;quot;,&lt;br /&gt;
                rcshow: &amp;quot;!bot|!redirect&amp;quot;,&lt;br /&gt;
                rctoponly: 1,&lt;br /&gt;
                format: &amp;quot;json&amp;quot;&lt;br /&gt;
            })&lt;br /&gt;
            .done(function(data) {&lt;br /&gt;
                if (data.query &amp;amp;&amp;amp; data.query.recentchanges) {&lt;br /&gt;
                    recentChanges = data.query.recentchanges&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (recentChanges.length &amp;gt; 0) {&lt;br /&gt;
                    var Time = 1;&lt;br /&gt;
                    $recentChangesDOM = recentChanges.map(function(rc) {&lt;br /&gt;
                        const timeMatch = rc.timestamp.match(/([0-9]+)-([0-9]+)-([0-9]+)T([0-9]+):([0-9]+):([0-9]+)Z/);&lt;br /&gt;
                    	var editYear = timeMatch[1];&lt;br /&gt;
                    	var editMonth = timeMatch[2];&lt;br /&gt;
                    	var editDay = timeMatch[3];&lt;br /&gt;
                    	var editHour = timeMatch[4];&lt;br /&gt;
                    	var editMinute = timeMatch[5];&lt;br /&gt;
                    	var editSecond = timeMatch[6];&lt;br /&gt;
                    	&lt;br /&gt;
                    	var editDate = new Date(editYear, (editMonth-1), editDay, editHour, editMinute, editSecond);&lt;br /&gt;
						var currentDate = new Date();&lt;br /&gt;
						currentDate = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000)&lt;br /&gt;
						var diffDate = currentDate - editDate;&lt;br /&gt;
						var diffDays = Math.floor(diffDate/(1000*60*60*24));&lt;br /&gt;
						var diffHours = Math.floor(diffDate/(1000*60*60));&lt;br /&gt;
						var diffMinutes = Math.floor(diffDate/(1000*60));&lt;br /&gt;
						var diffSeconds = Math.floor(diffDate/(1000));&lt;br /&gt;
						&lt;br /&gt;
						if (diffDays &amp;gt; 0) {&lt;br /&gt;
							Time = diffDays + &#039;d ago – &#039;;&lt;br /&gt;
						} else if (diffHours &amp;gt; 0) {&lt;br /&gt;
							Time = diffHours + &#039;h ago – &#039;;&lt;br /&gt;
						} else if (diffMinutes &amp;gt; 0) {&lt;br /&gt;
							Time = diffMinutes + &#039;m ago – &#039;;&lt;br /&gt;
						} else if (diffSeconds &amp;gt; 0) {&lt;br /&gt;
							Time = diffSeconds + &#039;s ago – &#039;;&lt;br /&gt;
						} else {&lt;br /&gt;
							Time = 1 + Math.floor(Math.random() * 10) + &#039;m ago – &#039;;&lt;br /&gt;
						}&lt;br /&gt;
						if (citizen) {&lt;br /&gt;
	                        return $(&#039;&amp;lt;li&amp;gt;&#039;).addClass(&#039;mw-list-item&#039;).append(&lt;br /&gt;
	                            $(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
	                            .css(&#039;white-space&#039;, &#039;normal&#039;)&lt;br /&gt;
	                            .addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
	                            .text(&#039; &#039; + rc.title)&lt;br /&gt;
	                            .attr(&#039;href&#039;, new mw.Title(rc.title).getUrl()),&lt;br /&gt;
	                            $(&#039;&amp;lt;p&amp;gt;&#039;)&lt;br /&gt;
	                            .css({&lt;br /&gt;
	                            	&#039;text-align&#039;: &#039;right&#039;,&lt;br /&gt;
	                            	&#039;margin-right&#039;: &#039;2.5em&#039;&lt;br /&gt;
	                            	})&lt;br /&gt;
	                            .addClass(&#039;rc-sidebar-user&#039;)&lt;br /&gt;
	                            .text(Time)&lt;br /&gt;
	                            .append(&lt;br /&gt;
	                                $(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
	                                .css({&lt;br /&gt;
	                            	&#039;display&#039; : &#039;-webkit-inline-box&#039;,&lt;br /&gt;
	                            	&#039;padding&#039; : &#039;0px&#039;&lt;br /&gt;
	                                })&lt;br /&gt;
	                                .text(rc.user)&lt;br /&gt;
	                                .attr(&#039;href&#039;, new mw.Title(rc.user, 2).getUrl())&lt;br /&gt;
	                            )&lt;br /&gt;
	                        )&lt;br /&gt;
                        } else if (vector) {&lt;br /&gt;
                        	return $(&#039;&amp;lt;div&amp;gt;&#039;).addClass(&#039;rc-sidebar-item&#039;).append(&lt;br /&gt;
                            	$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                            		.addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
                            		.text(&#039; &#039; + rc.title)&lt;br /&gt;
                            		.attr(&#039;href&#039;, new mw.Title(rc.title).getUrl()),&lt;br /&gt;
                            	$(&#039;&amp;lt;p&amp;gt;&#039;)&lt;br /&gt;
                            		.addClass(&#039;rc-sidebar-user&#039;)&lt;br /&gt;
                            		.text(Time)&lt;br /&gt;
                            		.append(&lt;br /&gt;
                            			$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                                			.text(rc.user)&lt;br /&gt;
                                			.attr(&#039;href&#039;, new mw.Title(rc.user, 2).getUrl())&lt;br /&gt;
                            		)&lt;br /&gt;
                            )&lt;br /&gt;
                        }&lt;br /&gt;
                    })&lt;br /&gt;
                } else {&lt;br /&gt;
                    $recentChangesDOM = $(&#039;&amp;lt;p&amp;gt;&#039;).text(&#039;No recent changes.&#039;)&lt;br /&gt;
                }&lt;br /&gt;
                if (vector) {&lt;br /&gt;
                	$final = $rcContainer;&lt;br /&gt;
                }&lt;br /&gt;
                $final.append($recentChangesDOM)&lt;br /&gt;
                var $showMore&lt;br /&gt;
				$showMore = $(&#039;&amp;lt;div&amp;gt;&#039;)&lt;br /&gt;
                	.addClass(&#039;rc-sidebar-item rc-sidebar-more&#039;)&lt;br /&gt;
                	.append(&lt;br /&gt;
                		$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                		.addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
                		.text(&#039;See more...&#039;)&lt;br /&gt;
                		.attr(&#039;href&#039;, &#039;/wiki/Special:RecentChanges&#039;)&lt;br /&gt;
                )&lt;br /&gt;
                $final.append($showMore)&lt;br /&gt;
            })&lt;br /&gt;
            .fail(function(_, data) {&lt;br /&gt;
                alert(data.error.info)&lt;br /&gt;
            });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using([&#039;mediawiki.util&#039;, &#039;mediawiki.api&#039;], function() {&lt;br /&gt;
        $(init)&lt;br /&gt;
    })&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-gadgetLinks.js&amp;diff=5193</id>
		<title>MediaWiki:Gadget-gadgetLinks.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-gadgetLinks.js&amp;diff=5193"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(function() {&lt;br /&gt;
	function gadgetLink(page) {&lt;br /&gt;
	    return &#039;&amp;lt;a href=&amp;quot;/wiki/MediaWiki:Gadget-&#039;+page+&#039;&amp;quot; title=&amp;quot;MediaWiki:Gadget-&#039;+page+&#039;&amp;quot;&amp;gt;&#039;+page+&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	$(&#039;.page-MediaWiki_Gadgets-definition #bodyContent ul li&#039;).not(&#039;#toc li&#039;).each(function() {&lt;br /&gt;
	    var txt = this.innerHTML;&lt;br /&gt;
	    var links = txt.replace(/([a-zA-Z0-9-]+)(\[[^\]]+\]\|)(.*)/, function(match, name, options, filelist) {&lt;br /&gt;
	        var files = filelist.split(&#039;|&#039;);&lt;br /&gt;
	        files = files.map(function(file) { return gadgetLink(file); });&lt;br /&gt;
	        return gadgetLink(name) + options + files.join(&#039;|&#039;);&lt;br /&gt;
	    });&lt;br /&gt;
	    $(this).html(links);&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-RefreshTab.js&amp;diff=5191</id>
		<title>MediaWiki:Gadget-RefreshTab.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-RefreshTab.js&amp;diff=5191"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Gadget to add tools to the toolbar for purging pages&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function ( $, mw ) {&lt;br /&gt;
&lt;br /&gt;
	$( function () {&lt;br /&gt;
&lt;br /&gt;
		var link,&lt;br /&gt;
&lt;br /&gt;
			strings = {&lt;br /&gt;
				long: {&lt;br /&gt;
					purge: &#039;Soft cache refresh&#039;,&lt;br /&gt;
					hpurge: &#039;Hard cache refresh&#039;,&lt;br /&gt;
					nulled: &#039;Null edit&#039;&lt;br /&gt;
				},&lt;br /&gt;
				short: {&lt;br /&gt;
					purge: &#039;Soft refresh&#039;,&lt;br /&gt;
					hpurge: &#039;Hard refresh&#039;,&lt;br /&gt;
					nulled: &#039;Null edit&#039;&lt;br /&gt;
				},&lt;br /&gt;
				help: {&lt;br /&gt;
					purge: &#039;Purge cache for this page&#039;,&lt;br /&gt;
					hpurge: &#039;Purge cache for this page everywhere it appears&#039;,&lt;br /&gt;
					nulled: &#039;Perform a null edit on this page&#039;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			stringType = ( mw.user.options.get( &#039;skin&#039; ) === &#039;vector&#039; ) ? &#039;long&#039; : &#039;short&#039;,&lt;br /&gt;
&lt;br /&gt;
			errorLog = function ( msg ) {&lt;br /&gt;
				/* eslint-disable-next-line no-console */&lt;br /&gt;
				console.error( msg );&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			afterPurgeFunction = function () {&lt;br /&gt;
				location.reload();&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			httpErrorHandler = function ( code, details ) {&lt;br /&gt;
				var mesg;&lt;br /&gt;
				switch ( code ) {&lt;br /&gt;
					case &#039;http&#039;:&lt;br /&gt;
						mesg = &#039;HTTP error: &#039; + details.xhr.statusText;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ok-but-empty&#039;:&lt;br /&gt;
						mesg = &#039;Received empty response.&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					default:&lt;br /&gt;
						mesg = details.error.info;&lt;br /&gt;
				}&lt;br /&gt;
				mw.util.jsMessage( &#039;&amp;lt;b&amp;gt;Hard purge failed&amp;lt;/b&amp;gt;: &#039; + mesg );&lt;br /&gt;
				errorLog( arguments );&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			doPurge = function ( hard ) {&lt;br /&gt;
				mw.loader.using( &#039;mediawiki.api&#039; ).done( function () {&lt;br /&gt;
					var params = {&lt;br /&gt;
						action: &#039;purge&#039;,&lt;br /&gt;
						pageids: mw.config.get( &#039;wgArticleId&#039; )&lt;br /&gt;
					};&lt;br /&gt;
					if ( hard ) {&lt;br /&gt;
						params.forcerecursivelinkupdate = 1;&lt;br /&gt;
						params.redirects = 1;&lt;br /&gt;
					}&lt;br /&gt;
					new mw.Api()&lt;br /&gt;
						.post( params )&lt;br /&gt;
						.then( afterPurgeFunction, httpErrorHandler );&lt;br /&gt;
				} );&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			doNullEdit = function () {&lt;br /&gt;
				mw.loader.using( &#039;mediawiki.api&#039; ).done( function () {&lt;br /&gt;
					new mw.Api().post( {&lt;br /&gt;
						action: &#039;edit&#039;,&lt;br /&gt;
						pageid: mw.config.get( &#039;wgArticleId&#039; ),&lt;br /&gt;
						appendtext: &#039;&#039;,&lt;br /&gt;
						watchlist: &#039;nochange&#039;,&lt;br /&gt;
						nocreate: &#039;1&#039;,&lt;br /&gt;
						token: mw.user.tokens.get( &#039;csrfToken&#039; )&lt;br /&gt;
					} )&lt;br /&gt;
						.then( afterPurgeFunction, httpErrorHandler );&lt;br /&gt;
				} );&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
		if ( !mw.config.get( &#039;wgArticleId&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		link = mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-cactions&#039;, &#039;#&#039;, strings[ stringType ].purge,&lt;br /&gt;
			&#039;ca-purge&#039;, strings.help.purge, &#039;*&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		link.addEventListener( &#039;click&#039;, function ( ev ) {&lt;br /&gt;
			doPurge( false );&lt;br /&gt;
			ev.preventDefault();&lt;br /&gt;
		}, false );&lt;br /&gt;
&lt;br /&gt;
		link = mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-cactions&#039;, &#039;#&#039;, strings[ stringType ].hpurge,&lt;br /&gt;
			&#039;ca-purge-forcerecursivelinkupdate&#039;, strings.help.hpurge, &#039;,&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		link.addEventListener( &#039;click&#039;, function ( ev ) {&lt;br /&gt;
			doPurge( true );&lt;br /&gt;
			ev.preventDefault();&lt;br /&gt;
		}, false );&lt;br /&gt;
&lt;br /&gt;
		link = mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-cactions&#039;, &#039;#&#039;, strings[ stringType ].nulled,&lt;br /&gt;
			&#039;ca-nulledit&#039;, strings.help.nulled, &#039;0&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		link.addEventListener( &#039;click&#039;, function ( ev ) {&lt;br /&gt;
			doNullEdit();&lt;br /&gt;
			ev.preventDefault();&lt;br /&gt;
		}, false );&lt;br /&gt;
&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
/* eslint-disable-next-line no-undef */&lt;br /&gt;
}( jQuery, mediaWiki ) );&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-ReferenceTooltips.css&amp;diff=5189</id>
		<title>MediaWiki:Gadget-ReferenceTooltips.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-ReferenceTooltips.css&amp;diff=5189"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* See [[mw:Reference Tooltips]] */&lt;br /&gt;
&lt;br /&gt;
.rt-tooltip {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	z-index: 100;&lt;br /&gt;
	max-width: 350px;&lt;br /&gt;
	background: #fff;&lt;br /&gt;
	color: #222;&lt;br /&gt;
	font-size: 13px;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	border: 1px solid #c8ccd1;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	box-shadow: 0 15px 45px -10px rgba(0, 0, 0, 0.3);&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltip.rt-tooltip-insideWindow {&lt;br /&gt;
	z-index: 110;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltipContent {&lt;br /&gt;
	padding: 8px 11px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltip-above .rt-tooltipContent {&lt;br /&gt;
	margin-bottom: -8px;&lt;br /&gt;
	padding-bottom: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltip-below .rt-tooltipContent {&lt;br /&gt;
	margin-top: -10px;&lt;br /&gt;
	padding-top: 18px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltipTail,&lt;br /&gt;
.rt-tooltipTail:after {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	width: 12px;&lt;br /&gt;
	height: 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltipTail {&lt;br /&gt;
	background: #c8ccd1;&lt;br /&gt;
	background: -webkit-linear-gradient(bottom left, #c8ccd1 50%, rgba(0, 0, 0, 0) 50%);&lt;br /&gt;
	background: linear-gradient(to top right, #c8ccd1 50%, rgba(0, 0, 0, 0) 50%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltipTail:after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	background: #fff;&lt;br /&gt;
	bottom: 1px;&lt;br /&gt;
	left: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltip-above .rt-tooltipTail {&lt;br /&gt;
	-webkit-transform: rotate(-45deg);&lt;br /&gt;
	transform: rotate(-45deg);&lt;br /&gt;
	-webkit-transform-origin: 100% 100%;&lt;br /&gt;
	transform-origin: 100% 100%;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	left: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltip-below .rt-tooltipTail {&lt;br /&gt;
	-webkit-transform: rotate(135deg);&lt;br /&gt;
	transform: rotate(135deg);&lt;br /&gt;
	-webkit-transform-origin: 0 0;&lt;br /&gt;
	transform-origin: 0 0;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 27px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-settingsLink {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%0D%0A%20%20%20%20%3Cpath%20fill%3D%22%23555%22%20d%3D%22M20%2014.5v-2.9l-1.8-.3c-.1-.4-.3-.8-.6-1.4l1.1-1.5-2.1-2.1-1.5%201.1c-.5-.3-1-.5-1.4-.6L13.5%205h-2.9l-.3%201.8c-.5.1-.9.3-1.4.6L7.4%206.3%205.3%208.4l1%201.5c-.3.5-.4.9-.6%201.4l-1.7.2v2.9l1.8.3c.1.5.3.9.6%201.4l-1%201.5%202.1%202.1%201.5-1c.4.2.9.4%201.4.6l.3%201.8h3l.3-1.8c.5-.1.9-.3%201.4-.6l1.5%201.1%202.1-2.1-1.1-1.5c.3-.5.5-1%20.6-1.4l1.5-.3zM12%2016c-1.7%200-3-1.3-3-3s1.3-3%203-3%203%201.3%203%203-1.3%203-3%203z%22%2F%3E%0D%0A%3C%2Fsvg%3E);&lt;br /&gt;
	float: right;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	margin: -4px -4px 0 8px;&lt;br /&gt;
	height: 24px;&lt;br /&gt;
	width: 24px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	background-position: center center;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-size: 24px 24px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-settingsLink:hover {&lt;br /&gt;
	background-color: #eee;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-target {&lt;br /&gt;
	background-color: #def;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-enableSelect {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-settingsFormSeparator {&lt;br /&gt;
	margin: 0.85714286em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-numberInput.rt-numberInput {&lt;br /&gt;
	width: 150px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-tooltipsForCommentsField.rt-tooltipsForCommentsField.rt-tooltipsForCommentsField {&lt;br /&gt;
	margin-top: 1.64285714em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-disabledHelp {&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-disabledHelp td {&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-disabledNote.rt-disabledNote {&lt;br /&gt;
	vertical-align: bottom;&lt;br /&gt;
	padding-left: 0.36em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-webkit-keyframes rt-fade-in-up {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, 20px);&lt;br /&gt;
		-moz-transform: translate(0, 20px);&lt;br /&gt;
		transform: translate(0, 20px)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-moz-keyframes rt-fade-in-up {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, 20px);&lt;br /&gt;
		-moz-transform: translate(0, 20px);&lt;br /&gt;
		transform: translate(0, 20px)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes rt-fade-in-up {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, 20px);&lt;br /&gt;
		-moz-transform: translate(0, 20px);&lt;br /&gt;
		transform: translate(0, 20px)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-webkit-keyframes rt-fade-in-down {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, -20px);&lt;br /&gt;
		-moz-transform: translate(0, -20px);&lt;br /&gt;
		transform: translate(0, -20px)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-moz-keyframes rt-fade-in-down {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, -20px);&lt;br /&gt;
		-moz-transform: translate(0, -20px);&lt;br /&gt;
		transform: translate(0, -20px)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes rt-fade-in-down {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, -20px);&lt;br /&gt;
		-moz-transform: translate(0, -20px);&lt;br /&gt;
		transform: translate(0, -20px)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-webkit-keyframes rt-fade-out-down {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, 20px);&lt;br /&gt;
		-moz-transform: translate(0, 20px);&lt;br /&gt;
		transform: translate(0, 20px)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-moz-keyframes rt-fade-out-down {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, 20px);&lt;br /&gt;
		-moz-transform: translate(0, 20px);&lt;br /&gt;
		transform: translate(0, 20px)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes rt-fade-out-down {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, 20px);&lt;br /&gt;
		-moz-transform: translate(0, 20px);&lt;br /&gt;
		transform: translate(0, 20px)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-webkit-keyframes rt-fade-out-up {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, -20px);&lt;br /&gt;
		-moz-transform: translate(0, -20px);&lt;br /&gt;
		transform: translate(0, -20px)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@-moz-keyframes rt-fade-out-up {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, -20px);&lt;br /&gt;
		-moz-transform: translate(0, -20px);&lt;br /&gt;
		transform: translate(0, -20px)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes rt-fade-out-up {&lt;br /&gt;
	0% {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		-webkit-transform: translate(0, 0);&lt;br /&gt;
		-moz-transform: translate(0, 0);&lt;br /&gt;
		transform: translate(0, 0)&lt;br /&gt;
	}&lt;br /&gt;
	100% {&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		-webkit-transform: translate(0, -20px);&lt;br /&gt;
		-moz-transform: translate(0, -20px);&lt;br /&gt;
		transform: translate(0, -20px)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-fade-in-up {&lt;br /&gt;
	-webkit-animation: rt-fade-in-up 0.2s ease forwards;&lt;br /&gt;
	-moz-animation: rt-fade-in-up 0.2s ease forwards;&lt;br /&gt;
	animation: rt-fade-in-up 0.2s ease forwards&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-fade-in-down {&lt;br /&gt;
	-webkit-animation: rt-fade-in-down 0.2s ease forwards;&lt;br /&gt;
	-moz-animation: rt-fade-in-down 0.2s ease forwards;&lt;br /&gt;
	animation: rt-fade-in-down 0.2s ease forwards&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-fade-out-down {&lt;br /&gt;
	-webkit-animation: rt-fade-out-down 0.2s ease forwards;&lt;br /&gt;
	-moz-animation: rt-fade-out-down 0.2s ease forwards;&lt;br /&gt;
	animation: rt-fade-out-down 0.2s ease forwards&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rt-fade-out-up {&lt;br /&gt;
	-webkit-animation: rt-fade-out-up 0.2s ease forwards;&lt;br /&gt;
	-moz-animation: rt-fade-out-up 0.2s ease forwards;&lt;br /&gt;
	animation: rt-fade-out-up 0.2s ease forwards&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-ReferenceTooltips.js&amp;diff=5187</id>
		<title>MediaWiki:Gadget-ReferenceTooltips.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-ReferenceTooltips.js&amp;diff=5187"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// See [[mw:Reference Tooltips]]&lt;br /&gt;
// Source https://en.wikipedia.org/wiki/MediaWiki:Gadget-ReferenceTooltips.js&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
&lt;br /&gt;
// enwiki settings&lt;br /&gt;
var REF_LINK_SELECTOR = &#039;.reference, a[href^=&amp;quot;#CITEREF&amp;quot;]&#039;,&lt;br /&gt;
	COMMENTED_TEXT_CLASS = &#039;rt-commentedText&#039;,&lt;br /&gt;
	COMMENTED_TEXT_SELECTOR = ( COMMENTED_TEXT_CLASS ? &#039;.&#039; + COMMENTED_TEXT_CLASS + &#039;, &#039; : &#039;&#039;) +&lt;br /&gt;
		&#039;abbr[title]&#039;;&lt;br /&gt;
&lt;br /&gt;
mw.messages.set( {&lt;br /&gt;
	&#039;rt-settings&#039;: &#039;Reference Tooltips settings&#039;,&lt;br /&gt;
	&#039;rt-enable-footer&#039;: &#039;Enable Reference Tooltips&#039;,&lt;br /&gt;
	&#039;rt-settings-title&#039;: &#039;Reference Tooltips&#039;,&lt;br /&gt;
	&#039;rt-save&#039;: &#039;Save&#039;,&lt;br /&gt;
	&#039;rt-cancel&#039;: &#039;Cancel&#039;,&lt;br /&gt;
	&#039;rt-enable&#039;: &#039;Enable&#039;,&lt;br /&gt;
	&#039;rt-disable&#039;: &#039;Disable&#039;,&lt;br /&gt;
	&#039;rt-activationMethod&#039;: &#039;Tooltip appears when&#039;,&lt;br /&gt;
	&#039;rt-hovering&#039;: &#039;hovering&#039;,&lt;br /&gt;
	&#039;rt-clicking&#039;: &#039;clicking&#039;,&lt;br /&gt;
	&#039;rt-delay&#039;: &#039;Delay before the tooltip appears (in milliseconds)&#039;,&lt;br /&gt;
	&#039;rt-tooltipsForComments&#039;: &#039;Show tooltips over &amp;lt;span title=&amp;quot;Tooltip example&amp;quot; class=&amp;quot;&#039; + ( COMMENTED_TEXT_CLASS || &#039;rt-commentedText&#039; ) + &#039;&amp;quot; style=&amp;quot;border-bottom: 1px dotted; cursor: help;&amp;quot;&amp;gt;text with a dotted underline&amp;lt;/span&amp;gt; in Reference Tooltips style (allows to see such tooltips on devices with no mouse support)&#039;,&lt;br /&gt;
	&#039;rt-disabledNote&#039;: &#039;You can re-enable Reference Tooltips using a link in the footer of the page.&#039;,&lt;br /&gt;
	&#039;rt-done&#039;: &#039;Done&#039;,&lt;br /&gt;
	&#039;rt-enabled&#039;: &#039;Reference Tooltips are enabled&#039;&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
// &amp;quot;Global&amp;quot; variables&lt;br /&gt;
var SECONDS_IN_A_DAY = 60 * 60 * 24,&lt;br /&gt;
	CLASSES = {&lt;br /&gt;
		FADE_IN_DOWN: &#039;rt-fade-in-down&#039;,&lt;br /&gt;
		FADE_IN_UP: &#039;rt-fade-in-up&#039;,&lt;br /&gt;
		FADE_OUT_DOWN: &#039;rt-fade-out-down&#039;,&lt;br /&gt;
		FADE_OUT_UP: &#039;rt-fade-out-up&#039;&lt;br /&gt;
	},&lt;br /&gt;
	IS_TOUCHSCREEN = &#039;ontouchstart&#039; in document.documentElement,&lt;br /&gt;
	// Quite a rough check for mobile browsers, a mix of what is advised at&lt;br /&gt;
	// https://stackoverflow.com/a/24600597 (sends to&lt;br /&gt;
	// https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent)&lt;br /&gt;
	// and https://stackoverflow.com/a/14301832&lt;br /&gt;
	IS_MOBILE = /Mobi|Android/i.test( navigator.userAgent ) ||&lt;br /&gt;
		typeof window.orientation !== &#039;undefined&#039;,&lt;br /&gt;
	CLIENT_NAME = $.client.profile().name,&lt;br /&gt;
	settingsString, settings, enabled, delay, activatedByClick, tooltipsForComments, cursorWaitCss,&lt;br /&gt;
	windowManager,&lt;br /&gt;
	$body = $( document.body ),&lt;br /&gt;
	$window = $( window );&lt;br /&gt;
&lt;br /&gt;
function rt( $content ) {&lt;br /&gt;
	// Popups gadget&lt;br /&gt;
	if ( window.pg ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var teSelector,&lt;br /&gt;
		settingsDialogOpening = false;&lt;br /&gt;
&lt;br /&gt;
	function setSettingsCookie() {&lt;br /&gt;
		mw.cookie.set(&lt;br /&gt;
			&#039;RTsettings&#039;,&lt;br /&gt;
			Number( enabled ) + &#039;|&#039; + delay + &#039;|&#039; + Number( activatedByClick ) + &#039;|&#039; +&lt;br /&gt;
				Number( tooltipsForComments ),&lt;br /&gt;
			{ path: &#039;/&#039;, expires: 90 * SECONDS_IN_A_DAY, prefix: &#039;&#039; }&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function enableRt() {&lt;br /&gt;
		enabled = true;&lt;br /&gt;
		setSettingsCookie();&lt;br /&gt;
		$( &#039;.rt-enableItem&#039; ).remove();&lt;br /&gt;
		rt( $content );&lt;br /&gt;
		mw.notify( mw.msg( &#039;rt-enabled&#039; ) );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function disableRt() {&lt;br /&gt;
		$content.find( teSelector ).removeClass( &#039;rt-commentedText&#039; ).off( &#039;.rt&#039; );&lt;br /&gt;
		$body.off( &#039;.rt&#039; );&lt;br /&gt;
		$window.off( &#039;.rt&#039; );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function addEnableLink() {&lt;br /&gt;
		// #footer-places – Vector&lt;br /&gt;
		// #f-list – Timeless, Monobook, Modern&lt;br /&gt;
		// parent of #footer li – Cologne Blue&lt;br /&gt;
		var $footer = $( &#039;#footer-places, #f-list&#039; );&lt;br /&gt;
		if ( !$footer.length ) {&lt;br /&gt;
			$footer = $( &#039;#footer li&#039; ).parent();&lt;br /&gt;
		}&lt;br /&gt;
		$footer.append(&lt;br /&gt;
			$( &#039;&amp;lt;li&amp;gt;&#039; )&lt;br /&gt;
				.addClass( &#039;rt-enableItem&#039; )&lt;br /&gt;
				.append(&lt;br /&gt;
					$( &#039;&amp;lt;a&amp;gt;&#039; )&lt;br /&gt;
						.text( mw.msg( &#039;rt-enable-footer&#039; ) )&lt;br /&gt;
						.attr( &#039;href&#039;, &#039;javascript:&#039; )&lt;br /&gt;
						.click( function ( e ) {&lt;br /&gt;
							e.preventDefault();&lt;br /&gt;
							enableRt();&lt;br /&gt;
						} )&lt;br /&gt;
			)&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function TooltippedElement( $element ) {&lt;br /&gt;
		var tooltip,&lt;br /&gt;
			events,&lt;br /&gt;
			te = this;&lt;br /&gt;
&lt;br /&gt;
		function onStartEvent( e ) {&lt;br /&gt;
			var showRefArgs;&lt;br /&gt;
&lt;br /&gt;
			if ( activatedByClick &amp;amp;&amp;amp; te.type !== &#039;commentedText&#039; &amp;amp;&amp;amp; e.type !== &#039;contextmenu&#039; ) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
			}&lt;br /&gt;
			if ( !te.noRef ) {&lt;br /&gt;
				showRefArgs = [ $( this ) ];&lt;br /&gt;
				if ( te.type !== &#039;supRef&#039; ) {&lt;br /&gt;
					showRefArgs.push( e.pageX, e.pageY );&lt;br /&gt;
				}&lt;br /&gt;
				te.showRef.apply( te, showRefArgs );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function onEndEvent() {&lt;br /&gt;
			if ( !te.noRef ) {&lt;br /&gt;
				te.hideRef();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( !$element ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// TooltippedElement.$element and TooltippedElement.$originalElement will be different when&lt;br /&gt;
		// the first is changed after its cloned version is hovered in a tooltip&lt;br /&gt;
		this.$element = $element;&lt;br /&gt;
		this.$originalElement = $element;&lt;br /&gt;
		if ( this.$element.is( REF_LINK_SELECTOR ) ) {&lt;br /&gt;
			if ( this.$element.prop( &#039;tagName&#039; ) === &#039;SUP&#039; ) {&lt;br /&gt;
				this.type = &#039;supRef&#039;;&lt;br /&gt;
			} else {&lt;br /&gt;
				this.type = &#039;harvardRef&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			this.type = &#039;commentedText&#039;;&lt;br /&gt;
			this.comment = this.$element.attr( &#039;title&#039; );&lt;br /&gt;
			if ( !this.comment ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			this.$element.addClass(&#039;rt-commentedText&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ( activatedByClick ) {&lt;br /&gt;
			events = {&lt;br /&gt;
				&#039;click.rt&#039;: onStartEvent&lt;br /&gt;
			};&lt;br /&gt;
			// Adds an ability to see tooltips for links&lt;br /&gt;
			if ( this.type === &#039;commentedText&#039; &amp;amp;&amp;amp;&lt;br /&gt;
				( this.$element.closest( &#039;a&#039; ).length ||&lt;br /&gt;
					this.$element.has( &#039;a&#039; ).length&lt;br /&gt;
				)&lt;br /&gt;
			) {&lt;br /&gt;
				events[ &#039;contextmenu.rt&#039; ] = onStartEvent;&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			events = {&lt;br /&gt;
				&#039;mouseenter.rt&#039;: onStartEvent,&lt;br /&gt;
				&#039;mouseleave.rt&#039;: onEndEvent&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.$element.on( events );&lt;br /&gt;
&lt;br /&gt;
		this.hideRef = function ( immediately ) {&lt;br /&gt;
			clearTimeout( te.showTimer );&lt;br /&gt;
&lt;br /&gt;
			if ( this.type === &#039;commentedText&#039; ) {&lt;br /&gt;
				this.$element.attr( &#039;title&#039;, this.comment );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if ( this.tooltip &amp;amp;&amp;amp; this.tooltip.isPresent ) {&lt;br /&gt;
				if ( activatedByClick || immediately ) {&lt;br /&gt;
					this.tooltip.hide();&lt;br /&gt;
				} else {&lt;br /&gt;
					this.hideTimer = setTimeout( function () {&lt;br /&gt;
						te.tooltip.hide();&lt;br /&gt;
					}, 200 );&lt;br /&gt;
				}&lt;br /&gt;
			} else if ( this.$ref &amp;amp;&amp;amp; this.$ref.hasClass( &#039;rt-target&#039; ) ) {&lt;br /&gt;
				this.$ref.removeClass( &#039;rt-target&#039; );&lt;br /&gt;
				if ( activatedByClick ) {&lt;br /&gt;
					$body.off( &#039;click.rt touchstart.rt&#039;, this.onBodyClick );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		this.showRef = function ( $element, ePageX, ePageY ) {&lt;br /&gt;
			// Popups gadget&lt;br /&gt;
			if ( window.pg ) {&lt;br /&gt;
				disableRt();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if ( this.tooltip &amp;amp;&amp;amp; !this.tooltip.$content.length ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var tooltipInitiallyPresent = this.tooltip &amp;amp;&amp;amp; this.tooltip.isPresent;&lt;br /&gt;
&lt;br /&gt;
			function reallyShow() {&lt;br /&gt;
				var viewportTop, refOffsetTop, teHref;&lt;br /&gt;
&lt;br /&gt;
				if ( !te.$ref &amp;amp;&amp;amp; !te.comment ) {&lt;br /&gt;
					teHref = te.type === &#039;supRef&#039; ?&lt;br /&gt;
						te.$element.find( &#039;a&#039; ).attr( &#039;href&#039; ) :&lt;br /&gt;
						te.$element.attr( &#039;href&#039; ); // harvardRef&lt;br /&gt;
					te.$ref = teHref &amp;amp;&amp;amp;&lt;br /&gt;
						$( &#039;#&#039; + $.escapeSelector( teHref.slice( 1 ) ) );&lt;br /&gt;
					if ( !te.$ref || !te.$ref.length || !te.$ref.text() ) {&lt;br /&gt;
						te.noRef = true;&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ( !tooltipInitiallyPresent &amp;amp;&amp;amp; !te.comment ) {&lt;br /&gt;
					viewportTop = $window.scrollTop();&lt;br /&gt;
					refOffsetTop = te.$ref.offset().top;&lt;br /&gt;
					if ( !activatedByClick &amp;amp;&amp;amp;&lt;br /&gt;
						viewportTop &amp;lt; refOffsetTop &amp;amp;&amp;amp;&lt;br /&gt;
						viewportTop + $window.height() &amp;gt; refOffsetTop + te.$ref.height() &amp;amp;&amp;amp;&lt;br /&gt;
						// There can be gadgets/scripts that make references horizontally scrollable.&lt;br /&gt;
						$window.width() &amp;gt; te.$ref.offset().left + te.$ref.width()&lt;br /&gt;
					) {&lt;br /&gt;
						// Highlight the reference itself&lt;br /&gt;
						te.$ref.addClass( &#039;rt-target&#039; );&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ( !te.tooltip ) {&lt;br /&gt;
					te.tooltip = new Tooltip( te );&lt;br /&gt;
					if ( !te.tooltip.$content.length ) {&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// If this tooltip is called from inside another tooltip. We can&#039;t define it&lt;br /&gt;
				// in the constructor since a ref can be cloned but have the same Tooltip object;&lt;br /&gt;
				// so, Tooltip.parent is a floating value.&lt;br /&gt;
				te.tooltip.parent = te.$element.closest( &#039;.rt-tooltip&#039; ).data( &#039;tooltip&#039; );&lt;br /&gt;
				if ( te.tooltip.parent &amp;amp;&amp;amp; te.tooltip.parent.disappearing ) {&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				te.tooltip.show();&lt;br /&gt;
&lt;br /&gt;
				if ( tooltipInitiallyPresent ) {&lt;br /&gt;
					if ( te.tooltip.$element.hasClass( &#039;rt-tooltip-above&#039; ) ) {&lt;br /&gt;
						te.tooltip.$element.addClass( CLASSES.FADE_IN_DOWN );&lt;br /&gt;
					} else {&lt;br /&gt;
						te.tooltip.$element.addClass( CLASSES.FADE_IN_UP );&lt;br /&gt;
					}&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				te.tooltip.calculatePosition( ePageX, ePageY );&lt;br /&gt;
&lt;br /&gt;
				$window.on( &#039;resize.rt&#039;, te.onWindowResize );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// We redefine this.$element here because e.target can be a reference link inside&lt;br /&gt;
			// a reference tooltip, not a link that was initially assigned to this.$element&lt;br /&gt;
			this.$element = $element;&lt;br /&gt;
&lt;br /&gt;
			if ( this.type === &#039;commentedText&#039; ) {&lt;br /&gt;
				this.$element.attr( &#039;title&#039;, &#039;&#039; );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if ( activatedByClick ) {&lt;br /&gt;
				if ( tooltipInitiallyPresent ||&lt;br /&gt;
					( this.$ref &amp;amp;&amp;amp; this.$ref.hasClass( &#039;rt-target&#039; ) )&lt;br /&gt;
				) {&lt;br /&gt;
					return;&lt;br /&gt;
				} else {&lt;br /&gt;
					setTimeout( function () {&lt;br /&gt;
						$body.on( &#039;click.rt touchstart.rt&#039;, te.onBodyClick );&lt;br /&gt;
					}, 0 );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if ( activatedByClick || tooltipInitiallyPresent ) {&lt;br /&gt;
				reallyShow();&lt;br /&gt;
			} else {&lt;br /&gt;
				this.showTimer = setTimeout( reallyShow, delay );&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		this.onBodyClick = function ( e ) {&lt;br /&gt;
			if ( !te.tooltip &amp;amp;&amp;amp; !te.$ref.hasClass( &#039;rt-target&#039; ) ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var $current = $( e.target );&lt;br /&gt;
&lt;br /&gt;
			function contextMatchesParameter( parameter ) {&lt;br /&gt;
				return this === parameter;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// The last condition is used to determine cases when a clicked tooltip is the current&lt;br /&gt;
			// element&#039;s tooltip or one of its descendants&lt;br /&gt;
			while ( $current.length &amp;amp;&amp;amp;&lt;br /&gt;
				( !$current.hasClass( &#039;rt-tooltip&#039; ) ||&lt;br /&gt;
					!$current.data( &#039;tooltip&#039; ) ||&lt;br /&gt;
					!$current.data( &#039;tooltip&#039; ).upToTopParent(&lt;br /&gt;
						contextMatchesParameter, [ te.tooltip ],&lt;br /&gt;
						true&lt;br /&gt;
					)&lt;br /&gt;
				)&lt;br /&gt;
			) {&lt;br /&gt;
				$current = $current.parent();&lt;br /&gt;
			}&lt;br /&gt;
			if ( !$current.length ) {&lt;br /&gt;
				te.hideRef();&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		this.onWindowResize = function () {&lt;br /&gt;
			te.tooltip.calculatePosition();&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function Tooltip( te ) {&lt;br /&gt;
		function openSettingsDialog() {&lt;br /&gt;
			var settingsDialog, settingsWindow;&lt;br /&gt;
&lt;br /&gt;
			if ( cursorWaitCss ) {&lt;br /&gt;
				cursorWaitCss.disabled = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			function SettingsDialog() {&lt;br /&gt;
				SettingsDialog.parent.call( this );&lt;br /&gt;
			}&lt;br /&gt;
			OO.inheritClass( SettingsDialog, OO.ui.ProcessDialog );&lt;br /&gt;
&lt;br /&gt;
			SettingsDialog.static.name = &#039;settingsDialog&#039;;&lt;br /&gt;
			SettingsDialog.static.title = mw.msg( &#039;rt-settings-title&#039; );&lt;br /&gt;
			SettingsDialog.static.actions = [&lt;br /&gt;
				{&lt;br /&gt;
					modes: &#039;basic&#039;,&lt;br /&gt;
					action: &#039;save&#039;,&lt;br /&gt;
					label: mw.msg( &#039;rt-save&#039; ),&lt;br /&gt;
					flags: [ &#039;primary&#039;, &#039;progressive&#039; ]&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					modes: &#039;basic&#039;,&lt;br /&gt;
					label: mw.msg( &#039;rt-cancel&#039; ),&lt;br /&gt;
					flags: &#039;safe&#039;&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					modes: &#039;disabled&#039;,&lt;br /&gt;
					action: &#039;deactivated&#039;,&lt;br /&gt;
					label: mw.msg( &#039;rt-done&#039; ),&lt;br /&gt;
					flags: [ &#039;primary&#039;, &#039;progressive&#039; ]&lt;br /&gt;
				}&lt;br /&gt;
			];&lt;br /&gt;
&lt;br /&gt;
			SettingsDialog.prototype.initialize = function () {&lt;br /&gt;
				var dialog = this;&lt;br /&gt;
&lt;br /&gt;
				SettingsDialog.parent.prototype.initialize.apply( this, arguments );&lt;br /&gt;
&lt;br /&gt;
				this.enableOption = new OO.ui.RadioOptionWidget( {&lt;br /&gt;
					label: mw.msg( &#039;rt-enable&#039; )&lt;br /&gt;
				} );&lt;br /&gt;
				this.disableOption = new OO.ui.RadioOptionWidget( {&lt;br /&gt;
					label: mw.msg( &#039;rt-disable&#039; )&lt;br /&gt;
				} );&lt;br /&gt;
				this.enableSelect = new OO.ui.RadioSelectWidget( {&lt;br /&gt;
					items: [ this.enableOption, this.disableOption ],&lt;br /&gt;
					classes: [ &#039;rt-enableSelect&#039; ]&lt;br /&gt;
				} );&lt;br /&gt;
				this.enableSelect.selectItem( this.enableOption );&lt;br /&gt;
				this.enableSelect.on( &#039;choose&#039;, function ( item ) {&lt;br /&gt;
					if ( item === dialog.disableOption ) {&lt;br /&gt;
						dialog.activationMethodSelect.setDisabled( true );&lt;br /&gt;
						dialog.delayInput.setDisabled( true );&lt;br /&gt;
						dialog.tooltipsForCommentsCheckbox.setDisabled( true );&lt;br /&gt;
					} else {&lt;br /&gt;
						dialog.activationMethodSelect.setDisabled( false );&lt;br /&gt;
						dialog.delayInput.setDisabled( dialog.clickOption.isSelected() );&lt;br /&gt;
						dialog.tooltipsForCommentsCheckbox.setDisabled( false );&lt;br /&gt;
					}&lt;br /&gt;
				} );&lt;br /&gt;
&lt;br /&gt;
				this.hoverOption = new OO.ui.RadioOptionWidget( {&lt;br /&gt;
					label: mw.msg( &#039;rt-hovering&#039; )&lt;br /&gt;
				} );&lt;br /&gt;
				this.clickOption = new OO.ui.RadioOptionWidget( {&lt;br /&gt;
					label: mw.msg( &#039;rt-clicking&#039; )&lt;br /&gt;
				} );&lt;br /&gt;
				this.activationMethodSelect = new OO.ui.RadioSelectWidget( {&lt;br /&gt;
					items: [ this.hoverOption, this.clickOption ]&lt;br /&gt;
				} );&lt;br /&gt;
				this.activationMethodSelect.selectItem( activatedByClick ?&lt;br /&gt;
					this.clickOption :&lt;br /&gt;
					this.hoverOption&lt;br /&gt;
				);&lt;br /&gt;
				this.activationMethodSelect.on( &#039;choose&#039;, function ( item ) {&lt;br /&gt;
					if ( item === dialog.clickOption ) {&lt;br /&gt;
						dialog.delayInput.setDisabled( true );&lt;br /&gt;
					} else {&lt;br /&gt;
						dialog.delayInput.setDisabled( dialog.clickOption.isSelected() );&lt;br /&gt;
					}&lt;br /&gt;
				} );&lt;br /&gt;
				this.activationMethodField = new OO.ui.FieldLayout( this.activationMethodSelect, {&lt;br /&gt;
					label: mw.msg( &#039;rt-activationMethod&#039; ),&lt;br /&gt;
					align: &#039;top&#039;&lt;br /&gt;
				} );&lt;br /&gt;
&lt;br /&gt;
				this.delayInput = new OO.ui.NumberInputWidget( {&lt;br /&gt;
					input: { value: delay },&lt;br /&gt;
					step: 50,&lt;br /&gt;
					min: 0,&lt;br /&gt;
					max: 5000,&lt;br /&gt;
					disabled: activatedByClick,&lt;br /&gt;
					classes: [ &#039;rt-numberInput&#039; ]&lt;br /&gt;
				} );&lt;br /&gt;
				this.delayField = new OO.ui.FieldLayout( this.delayInput, {&lt;br /&gt;
					label: mw.msg( &#039;rt-delay&#039; ),&lt;br /&gt;
					align: &#039;top&#039;&lt;br /&gt;
				} );&lt;br /&gt;
&lt;br /&gt;
				this.tooltipsForCommentsCheckbox = new OO.ui.CheckboxInputWidget( {&lt;br /&gt;
					selected: tooltipsForComments&lt;br /&gt;
				} );&lt;br /&gt;
				this.tooltipsForCommentsField = new OO.ui.FieldLayout(&lt;br /&gt;
					this.tooltipsForCommentsCheckbox,&lt;br /&gt;
					{&lt;br /&gt;
						label: new OO.ui.HtmlSnippet( mw.msg( &#039;rt-tooltipsForComments&#039; ) ),&lt;br /&gt;
						align: &#039;inline&#039;,&lt;br /&gt;
						classes: [ &#039;rt-tooltipsForCommentsField&#039; ]&lt;br /&gt;
					}&lt;br /&gt;
				);&lt;br /&gt;
				new TooltippedElement(&lt;br /&gt;
					this.tooltipsForCommentsField.$element.find(&lt;br /&gt;
						&#039;.&#039; + ( COMMENTED_TEXT_CLASS || &#039;rt-commentedText&#039; )&lt;br /&gt;
					)&lt;br /&gt;
				);&lt;br /&gt;
&lt;br /&gt;
				this.fieldset = new OO.ui.FieldsetLayout();&lt;br /&gt;
				this.fieldset.addItems( [&lt;br /&gt;
					this.activationMethodField,&lt;br /&gt;
					this.delayField,&lt;br /&gt;
					this.tooltipsForCommentsField&lt;br /&gt;
				] );&lt;br /&gt;
&lt;br /&gt;
				this.panelSettings = new OO.ui.PanelLayout( {&lt;br /&gt;
					padded: true,&lt;br /&gt;
					expanded: false&lt;br /&gt;
				} );&lt;br /&gt;
				this.panelSettings.$element.append(&lt;br /&gt;
					this.enableSelect.$element,&lt;br /&gt;
					$( &#039;&amp;lt;hr&amp;gt;&#039; ).addClass( &#039;rt-settingsFormSeparator&#039; ),&lt;br /&gt;
					this.fieldset.$element&lt;br /&gt;
				);&lt;br /&gt;
&lt;br /&gt;
				this.panelDisabled = new OO.ui.PanelLayout( {&lt;br /&gt;
					padded: true,&lt;br /&gt;
					expanded: false&lt;br /&gt;
				} );&lt;br /&gt;
				this.panelDisabled.$element.append(&lt;br /&gt;
					$( &#039;&amp;lt;table&amp;gt;&#039; )&lt;br /&gt;
						.addClass( &#039;rt-disabledHelp&#039; )&lt;br /&gt;
						.append(&lt;br /&gt;
							$( &#039;&amp;lt;tr&amp;gt;&#039; ).append(&lt;br /&gt;
								$( &#039;&amp;lt;td&amp;gt;&#039; ).append(&lt;br /&gt;
									$( &#039;&amp;lt;img&amp;gt;&#039; ).attr( &#039;src&#039;, &#039;https://en.wikipedia.org/w/load.php?modules=ext.popups.images&amp;amp;image=footer&amp;amp;format=rasterized&amp;amp;lang=ru&amp;amp;skin=vector&amp;amp;version=0uotisb&#039; )&lt;br /&gt;
								),&lt;br /&gt;
								$( &#039;&amp;lt;td&amp;gt;&#039; )&lt;br /&gt;
									.addClass( &#039;rt-disabledNote&#039; )&lt;br /&gt;
									.text( mw.msg( &#039;rt-disabledNote&#039; ) )&lt;br /&gt;
							)&lt;br /&gt;
						)&lt;br /&gt;
				);&lt;br /&gt;
&lt;br /&gt;
				this.stackLayout = new OO.ui.StackLayout( {&lt;br /&gt;
					items: [ this.panelSettings, this.panelDisabled ]&lt;br /&gt;
				} );&lt;br /&gt;
&lt;br /&gt;
				this.$body.append( this.stackLayout.$element );&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			SettingsDialog.prototype.getSetupProcess = function ( data ) {&lt;br /&gt;
				return SettingsDialog.parent.prototype.getSetupProcess.call( this, data )&lt;br /&gt;
					.next( function () {&lt;br /&gt;
						this.stackLayout.setItem( this.panelSettings );&lt;br /&gt;
						this.actions.setMode( &#039;basic&#039; );&lt;br /&gt;
					}, this );&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			SettingsDialog.prototype.getActionProcess = function ( action ) {&lt;br /&gt;
				var dialog = this;&lt;br /&gt;
&lt;br /&gt;
				if ( action === &#039;save&#039; ) {&lt;br /&gt;
					return new OO.ui.Process( function () {&lt;br /&gt;
						var newDelay = Number( dialog.delayInput.getValue() );&lt;br /&gt;
&lt;br /&gt;
						enabled = dialog.enableOption.isSelected();&lt;br /&gt;
						if ( newDelay &amp;gt;= 0 &amp;amp;&amp;amp; newDelay &amp;lt;= 5000 ) {&lt;br /&gt;
							delay = newDelay;&lt;br /&gt;
						}&lt;br /&gt;
						activatedByClick = dialog.clickOption.isSelected();&lt;br /&gt;
						tooltipsForComments = dialog.tooltipsForCommentsCheckbox.isSelected();&lt;br /&gt;
&lt;br /&gt;
						setSettingsCookie();&lt;br /&gt;
&lt;br /&gt;
						if ( enabled ) {&lt;br /&gt;
							dialog.close();&lt;br /&gt;
							disableRt();&lt;br /&gt;
							rt( $content );&lt;br /&gt;
						} else {&lt;br /&gt;
							dialog.actions.setMode( &#039;disabled&#039; );&lt;br /&gt;
							dialog.stackLayout.setItem( dialog.panelDisabled );&lt;br /&gt;
							disableRt();&lt;br /&gt;
							addEnableLink();&lt;br /&gt;
						}&lt;br /&gt;
					} );&lt;br /&gt;
				} else if ( action === &#039;deactivated&#039; ) {&lt;br /&gt;
					dialog.close();&lt;br /&gt;
				}&lt;br /&gt;
				return SettingsDialog.parent.prototype.getActionProcess.call( this, action );&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			SettingsDialog.prototype.getBodyHeight = function () {&lt;br /&gt;
				return this.stackLayout.getCurrentItem().$element.outerHeight( true );&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			tooltip.upToTopParent( function adjustRightAndHide() {&lt;br /&gt;
				if ( this.isPresent ) {&lt;br /&gt;
					if ( this.$element[ 0 ].style.right ) {&lt;br /&gt;
						this.$element.css(&lt;br /&gt;
							&#039;right&#039;,&lt;br /&gt;
							&#039;+=&#039; + ( window.innerWidth - $window.width() )&lt;br /&gt;
						);&lt;br /&gt;
					}&lt;br /&gt;
					this.te.hideRef( true );&lt;br /&gt;
				}&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			if ( !windowManager ) {&lt;br /&gt;
				windowManager = new OO.ui.WindowManager();&lt;br /&gt;
				$body.append( windowManager.$element );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			settingsDialog = new SettingsDialog();&lt;br /&gt;
			windowManager.addWindows( [ settingsDialog ] );&lt;br /&gt;
			settingsWindow = windowManager.openWindow( settingsDialog );&lt;br /&gt;
			settingsWindow.opened.then( function () {&lt;br /&gt;
				settingsDialogOpening = false;&lt;br /&gt;
			} );&lt;br /&gt;
			settingsWindow.closed.then( function () {&lt;br /&gt;
				windowManager.clearWindows();&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var tooltip = this;&lt;br /&gt;
&lt;br /&gt;
		// This variable can change: one tooltip can be called from a harvard-style reference link&lt;br /&gt;
		// that is put into different tooltips&lt;br /&gt;
		this.te = te;&lt;br /&gt;
&lt;br /&gt;
		switch ( this.te.type ) {&lt;br /&gt;
			case &#039;supRef&#039;:&lt;br /&gt;
				this.id = &#039;rt-&#039; + this.te.$originalElement.attr( &#039;id&#039; );&lt;br /&gt;
				this.$content = this.te.$ref&lt;br /&gt;
					.contents()&lt;br /&gt;
					.filter( function ( i ) {&lt;br /&gt;
						var $this = $( this );&lt;br /&gt;
						return this.nodeType === Node.TEXT_NODE ||&lt;br /&gt;
							!( $this.is( &#039;.mw-cite-backlink&#039; ) ||&lt;br /&gt;
								( i === 0 &amp;amp;&amp;amp;&lt;br /&gt;
									// Template:Cnote, Template:Note&lt;br /&gt;
									( $this.is( &#039;b&#039; ) ||&lt;br /&gt;
										// Template:Note_label&lt;br /&gt;
										$this.is( &#039;a&#039; ) &amp;amp;&amp;amp;&lt;br /&gt;
										$this.attr( &#039;href&#039; ).indexOf( &#039;#ref&#039; ) === 0&lt;br /&gt;
									)&lt;br /&gt;
								)&lt;br /&gt;
							);&lt;br /&gt;
					} )&lt;br /&gt;
					.clone( true );&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;harvardRef&#039;:&lt;br /&gt;
				this.id = &#039;rt-&#039; + this.te.$originalElement.closest( &#039;li&#039; ).attr( &#039;id&#039; );&lt;br /&gt;
				this.$content = this.te.$ref&lt;br /&gt;
					.clone( true )&lt;br /&gt;
					.removeAttr( &#039;id&#039; );&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;commentedText&#039;:&lt;br /&gt;
				this.id = &#039;rt-&#039; + String( Math.random() ).slice( 2 );&lt;br /&gt;
				this.$content = $( document.createTextNode( this.te.comment ) );&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
		if ( !this.$content.length ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.insideWindow = Boolean( this.te.$element.closest( &#039;.oo-ui-window&#039; ).length );&lt;br /&gt;
&lt;br /&gt;
		this.$element = $( &#039;&amp;lt;div&amp;gt;&#039; )&lt;br /&gt;
			.addClass( &#039;rt-tooltip&#039; )&lt;br /&gt;
			.attr( &#039;id&#039;, this.id )&lt;br /&gt;
			.attr( &#039;role&#039;, &#039;tooltip&#039; )&lt;br /&gt;
			.data( &#039;tooltip&#039;, this );&lt;br /&gt;
		if ( this.insideWindow ) {&lt;br /&gt;
			this.$element.addClass( &#039;rt-tooltip-insideWindow&#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// We need the $content interlayer here in order for the settings icon to have correct&lt;br /&gt;
		// margins&lt;br /&gt;
		this.$content = this.$content&lt;br /&gt;
			.wrapAll( &#039;&amp;lt;div&amp;gt;&#039; )&lt;br /&gt;
			.parent()&lt;br /&gt;
			.addClass( &#039;rt-tooltipContent&#039; )&lt;br /&gt;
			.addClass( &#039;mw-parser-output&#039; )&lt;br /&gt;
			.appendTo( this.$element );&lt;br /&gt;
&lt;br /&gt;
		if ( !activatedByClick ) {&lt;br /&gt;
			this.$element&lt;br /&gt;
				.mouseenter( function () {&lt;br /&gt;
					if ( !tooltip.disappearing ) {&lt;br /&gt;
						tooltip.upToTopParent( function () {&lt;br /&gt;
							this.show();&lt;br /&gt;
						} );&lt;br /&gt;
					}&lt;br /&gt;
				} )&lt;br /&gt;
				.mouseleave( function ( e ) {&lt;br /&gt;
					// https://stackoverflow.com/q/47649442 workaround. Relying on relatedTarget&lt;br /&gt;
					// alone has pitfalls: when alt-tabbing, relatedTarget is empty too&lt;br /&gt;
					if ( CLIENT_NAME !== &#039;chrome&#039; ||&lt;br /&gt;
						( !e.originalEvent ||&lt;br /&gt;
							e.originalEvent.relatedTarget !== null ||&lt;br /&gt;
							!tooltip.clickedTime ||&lt;br /&gt;
							$.now() - tooltip.clickedTime &amp;gt; 50&lt;br /&gt;
						)&lt;br /&gt;
					) {&lt;br /&gt;
						tooltip.upToTopParent( function () {&lt;br /&gt;
							this.te.hideRef();&lt;br /&gt;
						} );&lt;br /&gt;
					}&lt;br /&gt;
				} )&lt;br /&gt;
				.click( function () {&lt;br /&gt;
					tooltip.clickedTime = $.now();&lt;br /&gt;
				} );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( !this.insideWindow ) {&lt;br /&gt;
			$( &#039;&amp;lt;div&amp;gt;&#039; )&lt;br /&gt;
				.addClass( &#039;rt-settingsLink&#039; )&lt;br /&gt;
				.attr( &#039;title&#039;, mw.msg( &#039;rt-settings&#039; ) )&lt;br /&gt;
				.click( function () {&lt;br /&gt;
					if ( settingsDialogOpening ) {&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
					settingsDialogOpening = true;&lt;br /&gt;
&lt;br /&gt;
					if ( mw.loader.getState( &#039;oojs-ui&#039; ) !== &#039;ready&#039; ) {&lt;br /&gt;
						if ( cursorWaitCss ) {&lt;br /&gt;
							cursorWaitCss.disabled = false;&lt;br /&gt;
						} else {&lt;br /&gt;
							cursorWaitCss = mw.util.addCSS( &#039;body { cursor: wait; }&#039; );&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					mw.loader.using( [ &#039;oojs&#039;, &#039;oojs-ui&#039; ], openSettingsDialog );&lt;br /&gt;
				} )&lt;br /&gt;
				.prependTo( this.$content );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Tooltip tail element is inside tooltip content element in order for the tooltip&lt;br /&gt;
		// not to disappear when the mouse is above the tail&lt;br /&gt;
		this.$tail = $( &#039;&amp;lt;div&amp;gt;&#039; )&lt;br /&gt;
			.addClass( &#039;rt-tooltipTail&#039; )&lt;br /&gt;
			.prependTo( this.$element );&lt;br /&gt;
&lt;br /&gt;
		this.disappearing = false;&lt;br /&gt;
&lt;br /&gt;
		this.show = function () {&lt;br /&gt;
			this.disappearing = false;&lt;br /&gt;
			clearTimeout( this.te.hideTimer );&lt;br /&gt;
			clearTimeout( this.te.removeTimer );&lt;br /&gt;
&lt;br /&gt;
			this.$element&lt;br /&gt;
				.removeClass( CLASSES.FADE_OUT_DOWN )&lt;br /&gt;
				.removeClass( CLASSES.FADE_OUT_UP );&lt;br /&gt;
&lt;br /&gt;
			if ( !this.isPresent ) {&lt;br /&gt;
				$body.append( this.$element );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.isPresent = true;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		this.hide = function () {&lt;br /&gt;
			var tooltip = this;&lt;br /&gt;
&lt;br /&gt;
			tooltip.disappearing = true;&lt;br /&gt;
&lt;br /&gt;
			if ( tooltip.$element.hasClass( &#039;rt-tooltip-above&#039; ) ) {&lt;br /&gt;
				tooltip.$element&lt;br /&gt;
					.removeClass( CLASSES.FADE_IN_DOWN )&lt;br /&gt;
					.addClass( CLASSES.FADE_OUT_UP );&lt;br /&gt;
			} else {&lt;br /&gt;
				tooltip.$element&lt;br /&gt;
					.removeClass( CLASSES.FADE_IN_UP )&lt;br /&gt;
					.addClass( CLASSES.FADE_OUT_DOWN );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			tooltip.te.removeTimer = setTimeout( function () {&lt;br /&gt;
				if ( tooltip.isPresent ) {&lt;br /&gt;
					tooltip.$element.detach();&lt;br /&gt;
					&lt;br /&gt;
					tooltip.$tail.css( &#039;left&#039;, &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
					if ( activatedByClick ) {&lt;br /&gt;
						$body.off( &#039;click.rt touchstart.rt&#039;, tooltip.te.onBodyClick );&lt;br /&gt;
					}&lt;br /&gt;
					$window.off( &#039;resize.rt&#039;, tooltip.te.onWindowResize );&lt;br /&gt;
&lt;br /&gt;
					tooltip.isPresent = false;&lt;br /&gt;
				}&lt;br /&gt;
			}, 200 );&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		this.calculatePosition = function ( ePageX, ePageY ) {&lt;br /&gt;
			var teElement, teOffsets, teOffset, tooltipTailOffsetX, tooltipTailLeft,&lt;br /&gt;
				offsetYCorrection = 0;&lt;br /&gt;
&lt;br /&gt;
			this.$tail.css( &#039;left&#039;, &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
			teElement = this.te.$element.get( 0 );&lt;br /&gt;
			if ( ePageX !== undefined ) {&lt;br /&gt;
				tooltipTailOffsetX = ePageX;&lt;br /&gt;
				teOffsets = teElement.getClientRects &amp;amp;&amp;amp;&lt;br /&gt;
					teElement.getClientRects() ||&lt;br /&gt;
					teElement.getBoundingClientRect();&lt;br /&gt;
				if ( teOffsets.length &amp;gt; 1 ) {&lt;br /&gt;
					for (var i = teOffsets.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
						if ( ePageY &amp;gt;= Math.round( $window.scrollTop() + teOffsets[i].top ) &amp;amp;&amp;amp;&lt;br /&gt;
							ePageY &amp;lt;= Math.round(&lt;br /&gt;
								$window.scrollTop() + teOffsets[i].top + teOffsets[i].height&lt;br /&gt;
							)&lt;br /&gt;
						) {&lt;br /&gt;
							teOffset = teOffsets[i];&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if ( !teOffset ) {&lt;br /&gt;
				teOffset = teElement.getClientRects &amp;amp;&amp;amp;&lt;br /&gt;
					teElement.getClientRects()[0] ||&lt;br /&gt;
					teElement.getBoundingClientRect();&lt;br /&gt;
			}&lt;br /&gt;
			teOffset = {&lt;br /&gt;
				top: $window.scrollTop() + teOffset.top,&lt;br /&gt;
				left: $window.scrollLeft() + teOffset.left,&lt;br /&gt;
				width: teOffset.width,&lt;br /&gt;
				height: teOffset.height&lt;br /&gt;
			};&lt;br /&gt;
			if ( !tooltipTailOffsetX ) {&lt;br /&gt;
				tooltipTailOffsetX = ( teOffset.left * 2 + teOffset.width ) / 2;&lt;br /&gt;
			}&lt;br /&gt;
			if ( CLIENT_NAME === &#039;msie&#039; &amp;amp;&amp;amp; this.te.type === &#039;supRef&#039; ) {&lt;br /&gt;
				offsetYCorrection = -Number(&lt;br /&gt;
					this.te.$element.parent().css( &#039;font-size&#039; ).replace( &#039;px&#039;, &#039;&#039; )&lt;br /&gt;
				) / 2;&lt;br /&gt;
			}&lt;br /&gt;
			this.$element.css( {&lt;br /&gt;
				top: teOffset.top - this.$element.outerHeight() - 7 + offsetYCorrection,&lt;br /&gt;
				left: tooltipTailOffsetX - 20,&lt;br /&gt;
				right: &#039;&#039;&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			// Is it squished against the right side of the page?&lt;br /&gt;
			if ( this.$element.offset().left + this.$element.outerWidth() &amp;gt; $window.width() - 1 ) {&lt;br /&gt;
				this.$element.css( {&lt;br /&gt;
					left: &#039;&#039;,&lt;br /&gt;
					right: 0&lt;br /&gt;
				} );&lt;br /&gt;
				tooltipTailLeft = tooltipTailOffsetX - this.$element.offset().left - 5;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Is a part of it above the top of the screen?&lt;br /&gt;
			if ( teOffset.top &amp;lt; this.$element.outerHeight() + $window.scrollTop() + 6 ) {&lt;br /&gt;
				this.$element&lt;br /&gt;
					.removeClass( &#039;rt-tooltip-above&#039; )&lt;br /&gt;
					.addClass( &#039;rt-tooltip-below&#039; )&lt;br /&gt;
					.addClass( CLASSES.FADE_IN_UP )&lt;br /&gt;
					.css( {&lt;br /&gt;
						top: teOffset.top + teOffset.height + 9 + offsetYCorrection&lt;br /&gt;
					} );&lt;br /&gt;
				if ( tooltipTailLeft ) {&lt;br /&gt;
					this.$tail.css( &#039;left&#039;, ( tooltipTailLeft + 12 ) + &#039;px&#039; );&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				this.$element&lt;br /&gt;
					.removeClass( &#039;rt-tooltip-below&#039; )&lt;br /&gt;
					.addClass( &#039;rt-tooltip-above&#039; )&lt;br /&gt;
					.addClass( CLASSES.FADE_IN_DOWN )&lt;br /&gt;
					// A fix for cases when a tooltip shown once is then wrongly positioned when it&lt;br /&gt;
					// is shown again after a window resize. We just repeat what is above.&lt;br /&gt;
					.css( {&lt;br /&gt;
						top: teOffset.top - this.$element.outerHeight() - 7 + offsetYCorrection&lt;br /&gt;
					} );&lt;br /&gt;
				if ( tooltipTailLeft ) {&lt;br /&gt;
					// 12 is the tail element width/height&lt;br /&gt;
					this.$tail.css( &#039;left&#039;, tooltipTailLeft + &#039;px&#039; );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// Run some function for all the tooltips up to the top one in a tree. Its context will be&lt;br /&gt;
		// the tooltip, while its parameters may be passed to Tooltip.upToTopParent as an array&lt;br /&gt;
		// in the second parameter. If the third parameter passed to ToolTip.upToTopParent is true,&lt;br /&gt;
		// the execution stops when the function in question returns true for the first time,&lt;br /&gt;
		// and ToolTip.upToTopParent returns true as well.&lt;br /&gt;
		this.upToTopParent = function ( func, parameters, stopAtTrue ) {&lt;br /&gt;
			var returnValue,&lt;br /&gt;
				currentTooltip = this;&lt;br /&gt;
&lt;br /&gt;
			do {&lt;br /&gt;
				returnValue = func.apply( currentTooltip, parameters );&lt;br /&gt;
				if ( stopAtTrue &amp;amp;&amp;amp; returnValue ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			} while ( currentTooltip = currentTooltip.parent );&lt;br /&gt;
&lt;br /&gt;
			if ( stopAtTrue ) {&lt;br /&gt;
				return returnValue;&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ( !enabled ) {&lt;br /&gt;
		addEnableLink();&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	teSelector = REF_LINK_SELECTOR;&lt;br /&gt;
	if ( tooltipsForComments ) {&lt;br /&gt;
		teSelector += &#039;, &#039; + COMMENTED_TEXT_SELECTOR;&lt;br /&gt;
	}&lt;br /&gt;
	$content.find( teSelector ).each( function () {&lt;br /&gt;
		new TooltippedElement( $( this ) );&lt;br /&gt;
	} );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
settingsString = mw.cookie.get( &#039;RTsettings&#039;, &#039;&#039; );&lt;br /&gt;
if ( settingsString ) {&lt;br /&gt;
	settings = settingsString.split( &#039;|&#039; );&lt;br /&gt;
	enabled = Boolean( Number( settings[ 0 ] ) );&lt;br /&gt;
	delay = Number( settings[ 1 ] );&lt;br /&gt;
	activatedByClick = Boolean( Number( settings[ 2 ] ) );&lt;br /&gt;
	// The forth value was added later, so we provide for a default value. See comments below&lt;br /&gt;
	// for why we use &amp;quot;IS_TOUCHSCREEN &amp;amp;&amp;amp; IS_MOBILE&amp;quot;.&lt;br /&gt;
	tooltipsForComments = settings[ 3 ] === undefined ?&lt;br /&gt;
		IS_TOUCHSCREEN &amp;amp;&amp;amp; IS_MOBILE :&lt;br /&gt;
		Boolean( Number( settings[ 3 ] ) );&lt;br /&gt;
} else {&lt;br /&gt;
	enabled = true;&lt;br /&gt;
	delay = 200;&lt;br /&gt;
	// Since the mobile browser check is error-prone, adding IS_MOBILE condition here would probably&lt;br /&gt;
	// leave cases where a user interacting with the browser using touches doesn&#039;t know how to call&lt;br /&gt;
	// a tooltip in order to switch to activation by click. Some touch-supporting laptop users&lt;br /&gt;
	// interacting by touch (though probably not the most popular use case) would not be happy too.&lt;br /&gt;
	activatedByClick = IS_TOUCHSCREEN;&lt;br /&gt;
	// Arguably we shouldn&#039;t convert native tooltips into gadget tooltips for devices that have&lt;br /&gt;
	// mouse support, even if they have touchscreens (there are laptops with touchscreens).&lt;br /&gt;
	// IS_TOUCHSCREEN check here is for reliability, since the mobile check is prone to false&lt;br /&gt;
	// positives.&lt;br /&gt;
	tooltipsForComments = IS_TOUCHSCREEN &amp;amp;&amp;amp; IS_MOBILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mw.hook( &#039;wikipage.content&#039; ).add( rt );&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=5185</id>
		<title>MediaWiki:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=5185"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== browsing ==&lt;br /&gt;
* ReferenceTooltips[ResourceLoader|default|type=general|dependencies=mediawiki.cookie,jquery.client]|ReferenceTooltips.js|ReferenceTooltips.css&lt;br /&gt;
&lt;br /&gt;
== editing ==&lt;br /&gt;
* RefreshTab[ResourceLoader|dependencies=mediawiki.util,mediawiki.api|default]|RefreshTab.js&lt;br /&gt;
&lt;br /&gt;
== appearance ==&lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* gadgetLinks[ResourceLoader|type=general|default]|gadgetLinks.js&lt;br /&gt;
* recentChanges[ResourceLoader|dependencies=mediawiki.util,mediawiki.api|default]|recentChanges.js|recentChanges.css&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.js&amp;diff=5183</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.js&amp;diff=5183"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All JavaScript here will be loaded for users of the Citizen skin */&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *		Adds icons for the Citizen skin toggle menu&lt;br /&gt;
 *	&lt;br /&gt;
**/&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
	var $ul = $(&#039;#p-Navigation&#039;).children()[1]; // This selects the &amp;lt;ul&amp;gt; list of elements&lt;br /&gt;
	for (var i=0;i&amp;lt;$ul.children.length;i++) {&lt;br /&gt;
		var $a = $ul.children[i].children[0];&lt;br /&gt;
		var $span = $(&#039;&amp;lt;span&amp;gt;&#039;).text(&amp;quot;&amp;quot;)&lt;br /&gt;
		.addClass(&#039;citizen-ui-icon&#039;)&lt;br /&gt;
		switch ($a.text) {&lt;br /&gt;
			case &amp;quot; Main page&amp;quot;:&lt;br /&gt;
				if (mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
					$ul.children[i].remove();&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Library&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-library&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Wanted pages&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-wanted&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Recruitment&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-recruitment&#039;);&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Special pages&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-special&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Upload file&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-upload&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
				&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *		Adds Sandbox icon for the Citizen skin preferences menu&lt;br /&gt;
 *	&lt;br /&gt;
**/&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
	var $a = $(&#039;#pt-sandbox&#039;).children()[0];&lt;br /&gt;
	var $span = $(&#039;&amp;lt;span&amp;gt;&#039;)&lt;br /&gt;
		.addClass(&#039;citizen-ui-icon&#039;)&lt;br /&gt;
		.addClass(&#039;prolewiki-ui-icon-sandbox&#039;);&lt;br /&gt;
	$a.prepend($span[0]);&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.css&amp;diff=5181</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.css&amp;diff=5181"/>
		<updated>2023-06-24T14:05:41Z</updated>

		<summary type="html">&lt;p&gt;Forte : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/***&lt;br /&gt;
****&lt;br /&gt;
****	CSS Variables&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
@media screen {&lt;br /&gt;
	:root {&lt;br /&gt;
		--border-color-1:#b0b0b0;&lt;br /&gt;
		--border-color-2:#c7c7c7;&lt;br /&gt;
		--color-surface-2:hsl(0,0%,97%);&lt;br /&gt;
		--color-surface-4:hsl(213,30%,85%);&lt;br /&gt;
		--color-surface-5:hsl(220,17%,93%);&lt;br /&gt;
		--color-surface-6:hsl(200,2%,60%);&lt;br /&gt;
		--color-surface-7:hsl(180,2%,40%);&lt;br /&gt;
		--color-surface-subtle-red:hsl(0, 100%, 97%);&lt;br /&gt;
		--color-success2:hsl(167,70%,31%);&lt;br /&gt;
		--color-codeeditor-select:#b5d5ff;&lt;br /&gt;
		--color-codeeditor-similar:#fafaff;&lt;br /&gt;
		--color-codeeditor-similar-border:#c8c8fa;&lt;br /&gt;
		--color-red-2:#900010;&lt;br /&gt;
		--color-red-3:#b50014;&lt;br /&gt;
		--color-red-light-3:#c33242;&lt;br /&gt;
		--color-base:#262e35;&lt;br /&gt;
		--color-base--subtle:#646464;&lt;br /&gt;
		--color-base--emphasized:#202020;&lt;br /&gt;
		--color-primary:#143fbf;&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-citizen-dark {&lt;br /&gt;
		--border-color-1:hsl(220, 28%, 23%);&lt;br /&gt;
		--border-color-2:hsl(220,25%,20%);&lt;br /&gt;
		--color-surface-5:hsl(220,25%,15%);&lt;br /&gt;
		--color-surface-6:hsl(220,12%,35%);&lt;br /&gt;
		--color-surface-7:hsl(220,12%,40%);&lt;br /&gt;
		--color-codeeditor-select:#485465;&lt;br /&gt;
		--color-codeeditor-similar:#394350;&lt;br /&gt;
		--color-codeeditor-similar-border:#4c5561;&lt;br /&gt;
		--color-red-2:#900010;&lt;br /&gt;
		--color-surface-subtle-red:hsl(0, 45%, 28%);&lt;br /&gt;
		--color-primary:#5c85d6;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Mobile Citizen CSS&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  table {&lt;br /&gt;
  	width:100% !important;&lt;br /&gt;
  	display: table;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/******&lt;br /&gt;
 ******	General theming&lt;br /&gt;
 ******	&lt;br /&gt;
*******/&lt;br /&gt;
/* Adds bottom border for Title and level 1 headers */&lt;br /&gt;
h1,h2 {&lt;br /&gt;
  border-bottom: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1 {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
/* Removes bottom border from sticky title heading */&lt;br /&gt;
.citizen-body-header--sticky h1 {&lt;br /&gt;
  border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for edit buttons&lt;br /&gt;
***/&lt;br /&gt;
#ca-edit &amp;gt; a:hover, #ca-ve-edit &amp;gt; a:hover {&lt;br /&gt;
  background-color: var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
#ca-edit &amp;gt; a, #ca-ve-edit &amp;gt; a {&lt;br /&gt;
  background-color: var(--color-red-3);&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
.citizen-ve-edit-merged#ca-edit {&lt;br /&gt;
	  border-left: 1px solid #a20012;&lt;br /&gt;
}&lt;br /&gt;
#citizen-languages__buttonCheckbox::after {&lt;br /&gt;
  background: var(--color-red-3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for article references&lt;br /&gt;
***/&lt;br /&gt;
.rt-tooltip {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  border:1px solid var(--border-color-1)&lt;br /&gt;
}&lt;br /&gt;
.rt-tooltipTail::after {&lt;br /&gt;
  background: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.rt-tooltipTail {&lt;br /&gt;
  background:linear-gradient(to top right,var(--border-color-1) 50%,rgba(0,0,0,0) 50%)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.toccolours {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
blockquote {&lt;br /&gt;
  font-family: inherit;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
  font-style: inherit;&lt;br /&gt;
  font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for input textboxes&lt;br /&gt;
***/&lt;br /&gt;
.mw-ui-input {&lt;br /&gt;
	border-color: var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for wikitables&lt;br /&gt;
***/&lt;br /&gt;
.wikitable th {&lt;br /&gt;
  border: 1px solid var(--border-color-2);&lt;br /&gt;
  background-color: var(--color-surface-3);&lt;br /&gt;
}&lt;br /&gt;
.wikitable td {&lt;br /&gt;
  background-color: var(--color-surface-2)&lt;br /&gt;
}&lt;br /&gt;
.wikitable {&lt;br /&gt;
  border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for Infoboxes&lt;br /&gt;
***/&lt;br /&gt;
.infobox {&lt;br /&gt;
	border: 1px solid var(--border-color-1) !important;&lt;br /&gt;
	background-color: var(--color-surface-2) !important;&lt;br /&gt;
	color: var(--color-base) !important;&lt;br /&gt;
	margin: 0.5em 0 0.5em 1em;&lt;br /&gt;
	border-spacing: 3px;&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	padding: 1em;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
.infobox td, .infobox th {&lt;br /&gt;
  vertical-align: top;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography {&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography td, .infobox.geography th {&lt;br /&gt;
	border-top: 1px solid var(--border-color-1);&lt;br /&gt;
	padding: 0.4em 1.5em 0.4em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography .mergedtoprow td, .infobox.geography .mergedtoprow th {&lt;br /&gt;
	border-top: 1px solid var(--border-color-1);&lt;br /&gt;
	padding: 0.4em 1.5em 0.2em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox.geography .mergedbottomrow td, .infobox.geography .mergedbottomrow th {&lt;br /&gt;
	border-top: 0;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color-1);&lt;br /&gt;
	padding: 0 1.5em 0.4em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography .mergedrow td, .infobox.geography .mergedrow th {&lt;br /&gt;
	border:0;&lt;br /&gt;
	padding: 0 1.5em 0.2em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox.geography .maptable td,&lt;br /&gt;
.infobox.geography .maptable th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for Navboxes&lt;br /&gt;
***/&lt;br /&gt;
.navbox th, .navbox-title {&lt;br /&gt;
	background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title {&lt;br /&gt;
	background-color: var(--color-surface-5);&lt;br /&gt;
}&lt;br /&gt;
.navbox {&lt;br /&gt;
	background-color: var(--color-surface-1);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.navbox-list {&lt;br /&gt;
	border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.navbox-even {&lt;br /&gt;
	background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
tr + tr &amp;gt; .navbox-abovebelow, tr + tr &amp;gt; .navbox-group, tr + tr &amp;gt; .navbox-image, tr + tr &amp;gt; .navbox-list {&lt;br /&gt;
	border-top: 2px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for Message boxes&lt;br /&gt;
***/&lt;br /&gt;
.mbox {&lt;br /&gt;
	border: 1px solid var(--border-color-1) !important;&lt;br /&gt;
	background-color: var(--color-surface-2) !important;&lt;br /&gt;
	border-left: 10px solid var(--color-red-3) !important;&lt;br /&gt;
}&lt;br /&gt;
/***&lt;br /&gt;
****	Sidebar CSS&lt;br /&gt;
***/&lt;br /&gt;
.skin-citizen .sidebar {&lt;br /&gt;
	background: var(--color-surface-2) !important;&lt;br /&gt;
	border: 1px solid var(--border-color-1) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *		StructuredDiscussions theming (discussion pages)&lt;br /&gt;
 *		&lt;br /&gt;
**/&lt;br /&gt;
.flow-post {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
}&lt;br /&gt;
.flow-topic-titlebar {&lt;br /&gt;
	background-color: var(--color-surface-3);&lt;br /&gt;
}&lt;br /&gt;
div &amp;gt; .flow-menu ul {&lt;br /&gt;
	background: var(--color-surface-2);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.flow-topic-moderatestate-lock .flow-topic-titlebar {&lt;br /&gt;
  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.flow-component.flow-board-page .flow-board-header {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.flow-ui-editorWidget-editor {&lt;br /&gt;
	border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media all and (min-width:1165px) {&lt;br /&gt;
	.flow-component.flow-board-page .flow-board-navigation,&lt;br /&gt;
	.flow-component.flow-board-page .flow-board {&lt;br /&gt;
		float:none;&lt;br /&gt;
 }&lt;br /&gt;
	.flow-component.flow-board-page .flow-board-header {&lt;br /&gt;
		min-height:0;&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;
 *		ConfirmAcccount theming&lt;br /&gt;
 *		&lt;br /&gt;
**/&lt;br /&gt;
.mw-confirmaccount-type-0 {&lt;br /&gt;
	  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.mw-confirmaccount-body-0 {&lt;br /&gt;
	background-color: var(--color-surface-5);&lt;br /&gt;
}&lt;br /&gt;
.wpNewBio {&lt;br /&gt;
	background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.mw-special-ConfirmAccounts fieldset {&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.mw-confirmaccount-bar {&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
input, select, textarea {&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  color: var(--color-base--emphasized);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Code editor interface&lt;br /&gt;
***/&lt;br /&gt;
.ace-tm .ace_gutter {&lt;br /&gt;
	background-color:var(--color-surface-2);&lt;br /&gt;
	border-right:1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace-tm .ace_marker-layer .ace_selection {&lt;br /&gt;
 background: var(--color-codeeditor-select);&lt;br /&gt;
}&lt;br /&gt;
.ace-tm .ace_marker-layer .ace_selected-word {&lt;br /&gt;
 background:var(--color-codeeditor-similar);&lt;br /&gt;
 border: 1px solid var(--color-codeeditor-similar-border);&lt;br /&gt;
}&lt;br /&gt;
.ace_search {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace_search_field {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  background-color: var(--color-surface-1);&lt;br /&gt;
  border-color: var(--border-color-2)&lt;br /&gt;
}&lt;br /&gt;
.ace_searchbtn {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace_searchbtn:hover {&lt;br /&gt;
  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.ace_searchbtn:last-child {&lt;br /&gt;
  border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace_button {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
}&lt;br /&gt;
.ace_button:hover {&lt;br /&gt;
  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
/*.ace-tm .ace_constant.ace_numeric {*/&lt;br /&gt;
/* color: rgb(200, 100, 200);*/&lt;br /&gt;
/*}*/&lt;br /&gt;
/*.ace-tm .ace_storage,*/&lt;br /&gt;
/*.ace-tm .ace_keyword {*/&lt;br /&gt;
/* color: rgb(0,150,200);*/&lt;br /&gt;
/*}*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Visual editor interface&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor::before {&lt;br /&gt;
	border-bottom-color: var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-tool-link {&lt;br /&gt;
	background-color: var(--color-red-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-tool-link:hover {&lt;br /&gt;
	background-color:var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background-color:var(--color-red-3);&lt;br /&gt;
	border-color: var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	border-color: var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-buttonElement-button:hover{&lt;br /&gt;
	background-color:var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Source editor interface&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.wikiEditor-ui-toolbar {&lt;br /&gt;
	padding: 0.25em;&lt;br /&gt;
	box-shadow: 0px 3px 5px rgba(0,0,0,0.1);&lt;br /&gt;
	background-color:var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-view {&lt;br /&gt;
	border:1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-top::before {&lt;br /&gt;
	backdrop-filter: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background-color:var(--color-surface-2);&lt;br /&gt;
	border-right:1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.skin-citizen .mw-editform .editOptions {&lt;br /&gt;
	background-color: var(--color-surface-5);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
	border-top: 0px;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonGroupWidget {&lt;br /&gt;
  border:1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background-color: var(--color-surface-0);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span {&lt;br /&gt;
	background-color: var(--color-surface-0);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Recent changes theming&lt;br /&gt;
***/&lt;br /&gt;
.rc-sidebar-user {&lt;br /&gt;
	color: var(--color-base--subtle);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Page view CSS&lt;br /&gt;
***/&lt;br /&gt;
&lt;br /&gt;
/* Image CSS */&lt;br /&gt;
.citizen-body a.image:hover:not(.lazy):not(.new) &amp;gt; img{&lt;br /&gt;
	transform: scale(1.03);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Table of Content styling */&lt;br /&gt;
.citizen-toc-level--1 &amp;gt; a{&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.citizen-toc-level--3 &amp;gt; a{&lt;br /&gt;
	font-weight:lighter;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.citizen-toc-level--4 &amp;gt; a{&lt;br /&gt;
	font-size:0.9em;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
	font-weight:lighter;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.citizen-toc-level--5 &amp;gt; a{&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Success message after publishing an edit&lt;br /&gt;
***/&lt;br /&gt;
.oo-ui-messageWidget.oo-ui-flaggedElement-success:not(.oo-ui-messageWidget-block) {&lt;br /&gt;
	color: var(--color-success2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Bug fixes&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog {&lt;br /&gt;
	z-index: 12;;&lt;br /&gt;
}&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Toggle menu icons&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.prolewiki-ui-icon-library::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-editing-citation&amp;amp;image=book&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-wanted::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-content&amp;amp;image=articleNotFound&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-recruitment::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-user&amp;amp;image=userGroup&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-special::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-content&amp;amp;image=specialPages&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-upload::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-content&amp;amp;image=upload&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-sandbox::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-editing-advanced&amp;amp;image=sandbox&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=5184</id>
		<title>MediaWiki:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadgets-definition&amp;diff=5184"/>
		<updated>2023-06-24T14:01:50Z</updated>

		<summary type="html">&lt;p&gt;Forte : Updated gadgets definition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== browsing ==&lt;br /&gt;
* ReferenceTooltips[ResourceLoader|default|type=general|dependencies=mediawiki.cookie,jquery.client]|ReferenceTooltips.js|ReferenceTooltips.css&lt;br /&gt;
&lt;br /&gt;
== editing ==&lt;br /&gt;
* RefreshTab[ResourceLoader|dependencies=mediawiki.util,mediawiki.api|default]|RefreshTab.js&lt;br /&gt;
&lt;br /&gt;
== appearance ==&lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* gadgetLinks[ResourceLoader|type=general|default]|gadgetLinks.js&lt;br /&gt;
* recentChanges[ResourceLoader|dependencies=mediawiki.util,mediawiki.api|default]|recentChanges.js|recentChanges.css&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.css&amp;diff=5180</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.css&amp;diff=5180"/>
		<updated>2023-06-20T04:32:34Z</updated>

		<summary type="html">&lt;p&gt;Forte : Removing bottom border from sticky title heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/***&lt;br /&gt;
****&lt;br /&gt;
****	CSS Variables&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
@media screen {&lt;br /&gt;
	:root {&lt;br /&gt;
		--border-color-1:#b0b0b0;&lt;br /&gt;
		--border-color-2:#c7c7c7;&lt;br /&gt;
		--color-surface-2:hsl(0,0%,97%);&lt;br /&gt;
		--color-surface-4:hsl(213,30%,85%);&lt;br /&gt;
		--color-surface-5:hsl(220,17%,93%);&lt;br /&gt;
		--color-surface-6:hsl(200,2%,60%);&lt;br /&gt;
		--color-surface-7:hsl(180,2%,40%);&lt;br /&gt;
		--color-surface-subtle-red:hsl(0, 100%, 97%);&lt;br /&gt;
		--color-success2:hsl(167,70%,31%);&lt;br /&gt;
		--color-codeeditor-select:#b5d5ff;&lt;br /&gt;
		--color-codeeditor-similar:#fafaff;&lt;br /&gt;
		--color-codeeditor-similar-border:#c8c8fa;&lt;br /&gt;
		--color-red-2:#900010;&lt;br /&gt;
		--color-red-3:#b50014;&lt;br /&gt;
		--color-red-light-3:#c33242;&lt;br /&gt;
		--color-base:#262e35;&lt;br /&gt;
		--color-base--subtle:#646464;&lt;br /&gt;
		--color-base--emphasized:#202020;&lt;br /&gt;
		--color-primary:#143fbf;&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-citizen-dark {&lt;br /&gt;
		--border-color-1:hsl(220, 28%, 23%);&lt;br /&gt;
		--border-color-2:hsl(220,25%,20%);&lt;br /&gt;
		--color-surface-5:hsl(220,25%,15%);&lt;br /&gt;
		--color-surface-6:hsl(220,12%,35%);&lt;br /&gt;
		--color-surface-7:hsl(220,12%,40%);&lt;br /&gt;
		--color-codeeditor-select:#485465;&lt;br /&gt;
		--color-codeeditor-similar:#394350;&lt;br /&gt;
		--color-codeeditor-similar-border:#4c5561;&lt;br /&gt;
		--color-red-2:#900010;&lt;br /&gt;
		--color-surface-subtle-red:hsl(0, 45%, 28%);&lt;br /&gt;
		--color-primary:#5c85d6;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Mobile Citizen CSS&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  table {&lt;br /&gt;
  	width:100% !important;&lt;br /&gt;
  	display: table;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/******&lt;br /&gt;
 ******	General theming&lt;br /&gt;
 ******	&lt;br /&gt;
*******/&lt;br /&gt;
/* Adds bottom border for Title and level 1 headers */&lt;br /&gt;
h1,h2 {&lt;br /&gt;
  border-bottom: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1 {&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
/* Removes bottom border from sticky title heading */&lt;br /&gt;
.citizen-body-header--sticky h1 {&lt;br /&gt;
  border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for edit buttons&lt;br /&gt;
***/&lt;br /&gt;
#ca-edit &amp;gt; a:hover, #ca-ve-edit &amp;gt; a:hover {&lt;br /&gt;
  background-color: var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
#ca-edit &amp;gt; a, #ca-ve-edit &amp;gt; a {&lt;br /&gt;
  background-color: var(--color-red-3);&lt;br /&gt;
  color: #fff;&lt;br /&gt;
}&lt;br /&gt;
.citizen-ve-edit-merged#ca-edit {&lt;br /&gt;
	  border-left: 1px solid #a20012;&lt;br /&gt;
}&lt;br /&gt;
#citizen-languages__buttonCheckbox::after {&lt;br /&gt;
  background: var(--color-red-3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for article references&lt;br /&gt;
***/&lt;br /&gt;
.rt-tooltip {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  border:1px solid var(--border-color-1)&lt;br /&gt;
}&lt;br /&gt;
.rt-tooltipTail::after {&lt;br /&gt;
  background: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.rt-tooltipTail {&lt;br /&gt;
  background:linear-gradient(to top right,var(--border-color-1) 50%,rgba(0,0,0,0) 50%)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.toccolours {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
blockquote {&lt;br /&gt;
  font-family: inherit;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
  font-style: inherit;&lt;br /&gt;
  font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for input textboxes&lt;br /&gt;
***/&lt;br /&gt;
.mw-ui-input {&lt;br /&gt;
	border-color: var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for wikitables&lt;br /&gt;
***/&lt;br /&gt;
.wikitable th {&lt;br /&gt;
  border: 1px solid var(--border-color-2);&lt;br /&gt;
  background-color: var(--color-surface-3);&lt;br /&gt;
}&lt;br /&gt;
.wikitable td {&lt;br /&gt;
  background-color: var(--color-surface-2)&lt;br /&gt;
}&lt;br /&gt;
.wikitable {&lt;br /&gt;
  border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for Infoboxes&lt;br /&gt;
***/&lt;br /&gt;
.infobox {&lt;br /&gt;
	border: 1px solid var(--border-color-1) !important;&lt;br /&gt;
	background-color: var(--color-surface-2) !important;&lt;br /&gt;
	color: var(--color-base) !important;&lt;br /&gt;
	margin: 0.5em 0 0.5em 1em;&lt;br /&gt;
	border-spacing: 3px;&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	padding: 1em;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
.infobox td, .infobox th {&lt;br /&gt;
  vertical-align: top;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography {&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography td, .infobox.geography th {&lt;br /&gt;
	border-top: 1px solid var(--border-color-1);&lt;br /&gt;
	padding: 0.4em 1.5em 0.4em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography .mergedtoprow td, .infobox.geography .mergedtoprow th {&lt;br /&gt;
	border-top: 1px solid var(--border-color-1);&lt;br /&gt;
	padding: 0.4em 1.5em 0.2em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox.geography .mergedbottomrow td, .infobox.geography .mergedbottomrow th {&lt;br /&gt;
	border-top: 0;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color-1);&lt;br /&gt;
	padding: 0 1.5em 0.4em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
.infobox.geography .mergedrow td, .infobox.geography .mergedrow th {&lt;br /&gt;
	border:0;&lt;br /&gt;
	padding: 0 1.5em 0.2em 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox.geography .maptable td,&lt;br /&gt;
.infobox.geography .maptable th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for Navboxes&lt;br /&gt;
***/&lt;br /&gt;
.navbox th, .navbox-title {&lt;br /&gt;
	background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title {&lt;br /&gt;
	background-color: var(--color-surface-5);&lt;br /&gt;
}&lt;br /&gt;
.navbox {&lt;br /&gt;
	background-color: var(--color-surface-1);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.navbox-list {&lt;br /&gt;
	border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.navbox-even {&lt;br /&gt;
	background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
tr + tr &amp;gt; .navbox-abovebelow, tr + tr &amp;gt; .navbox-group, tr + tr &amp;gt; .navbox-image, tr + tr &amp;gt; .navbox-list {&lt;br /&gt;
	border-top: 2px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	CSS for Message boxes&lt;br /&gt;
***/&lt;br /&gt;
.mbox {&lt;br /&gt;
	border: 1px solid var(--border-color-1) !important;&lt;br /&gt;
	background-color: var(--color-surface-2) !important;&lt;br /&gt;
	border-left: 10px solid var(--color-red-3) !important;&lt;br /&gt;
}&lt;br /&gt;
/***&lt;br /&gt;
****	Sidebar CSS&lt;br /&gt;
***/&lt;br /&gt;
.skin-citizen .sidebar {&lt;br /&gt;
	background: var(--color-surface-2) !important;&lt;br /&gt;
	border: 1px solid var(--border-color-1) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *		StructuredDiscussions theming (discussion pages)&lt;br /&gt;
 *		&lt;br /&gt;
**/&lt;br /&gt;
.flow-post {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
}&lt;br /&gt;
.flow-topic-titlebar {&lt;br /&gt;
	background-color: var(--color-surface-3);&lt;br /&gt;
}&lt;br /&gt;
div &amp;gt; .flow-menu ul {&lt;br /&gt;
	background: var(--color-surface-2);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.flow-topic-moderatestate-lock .flow-topic-titlebar {&lt;br /&gt;
  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.flow-component.flow-board-page .flow-board-header {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.flow-ui-editorWidget-editor {&lt;br /&gt;
	border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media all and (min-width:1165px) {&lt;br /&gt;
	.flow-component.flow-board-page .flow-board-navigation,&lt;br /&gt;
	.flow-component.flow-board-page .flow-board {&lt;br /&gt;
		float:none;&lt;br /&gt;
 }&lt;br /&gt;
	.flow-component.flow-board-page .flow-board-header {&lt;br /&gt;
		min-height:0;&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;
 *		ConfirmAcccount theming&lt;br /&gt;
 *		&lt;br /&gt;
**/&lt;br /&gt;
.mw-confirmaccount-type-0 {&lt;br /&gt;
	  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.mw-confirmaccount-body-0 {&lt;br /&gt;
	background-color: var(--color-surface-5);&lt;br /&gt;
}&lt;br /&gt;
.wpNewBio {&lt;br /&gt;
	background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.mw-special-ConfirmAccounts fieldset {&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.mw-confirmaccount-bar {&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
input, select, textarea {&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  color: var(--color-base--emphasized);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Code editor interface&lt;br /&gt;
***/&lt;br /&gt;
.ace-tm .ace_gutter {&lt;br /&gt;
	background-color:var(--color-surface-2);&lt;br /&gt;
	border-right:1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace-tm .ace_marker-layer .ace_selection {&lt;br /&gt;
 background: var(--color-codeeditor-select);&lt;br /&gt;
}&lt;br /&gt;
.ace-tm .ace_marker-layer .ace_selected-word {&lt;br /&gt;
 background:var(--color-codeeditor-similar);&lt;br /&gt;
 border: 1px solid var(--color-codeeditor-similar-border);&lt;br /&gt;
}&lt;br /&gt;
.ace_search {&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace_search_field {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  background-color: var(--color-surface-1);&lt;br /&gt;
  border-color: var(--border-color-2)&lt;br /&gt;
}&lt;br /&gt;
.ace_searchbtn {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
  background-color: var(--color-surface-2);&lt;br /&gt;
  border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace_searchbtn:hover {&lt;br /&gt;
  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
.ace_searchbtn:last-child {&lt;br /&gt;
  border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.ace_button {&lt;br /&gt;
  color: var(--color-base);&lt;br /&gt;
}&lt;br /&gt;
.ace_button:hover {&lt;br /&gt;
  background-color: var(--color-surface-4);&lt;br /&gt;
}&lt;br /&gt;
/*.ace-tm .ace_constant.ace_numeric {*/&lt;br /&gt;
/* color: rgb(200, 100, 200);*/&lt;br /&gt;
/*}*/&lt;br /&gt;
/*.ace-tm .ace_storage,*/&lt;br /&gt;
/*.ace-tm .ace_keyword {*/&lt;br /&gt;
/* color: rgb(0,150,200);*/&lt;br /&gt;
/*}*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Visual editor interface&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor::before {&lt;br /&gt;
	border-bottom-color: var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	border: 1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-tool-link {&lt;br /&gt;
	background-color: var(--color-red-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-tool-link:hover {&lt;br /&gt;
	background-color:var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background-color:var(--color-red-3);&lt;br /&gt;
	border-color: var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	border-color: var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive &amp;gt; .oo-ui-buttonElement-button:hover{&lt;br /&gt;
	background-color:var(--color-red-light-3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Source editor interface&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.wikiEditor-ui-toolbar {&lt;br /&gt;
	padding: 0.25em;&lt;br /&gt;
	box-shadow: 0px 3px 5px rgba(0,0,0,0.1);&lt;br /&gt;
	background-color:var(--color-surface-2);&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-view {&lt;br /&gt;
	border:1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-top::before {&lt;br /&gt;
	backdrop-filter: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background-color:var(--color-surface-2);&lt;br /&gt;
	border-right:1px solid var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
.skin-citizen .mw-editform .editOptions {&lt;br /&gt;
	background-color: var(--color-surface-5);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
	border-top: 0px;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonGroupWidget {&lt;br /&gt;
  border:1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background-color: var(--color-surface-0);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span {&lt;br /&gt;
	background-color: var(--color-surface-0);&lt;br /&gt;
	border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
  border: 1px solid var(--border-color-1);&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
border-color: var(--border-color-2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Recent changes theming&lt;br /&gt;
***/&lt;br /&gt;
.rc-sidebar-user {&lt;br /&gt;
	color: var(--color-base--subtle);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Page view CSS&lt;br /&gt;
***/&lt;br /&gt;
&lt;br /&gt;
/* Image CSS */&lt;br /&gt;
.citizen-body a.image:hover:not(.lazy):not(.new) &amp;gt; img{&lt;br /&gt;
	transform: scale(1.03);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Table of Content styling */&lt;br /&gt;
.citizen-toc-level--1 &amp;gt; a{&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.citizen-toc-level--3 &amp;gt; a{&lt;br /&gt;
	font-weight:lighter;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.citizen-toc-level--4 &amp;gt; a{&lt;br /&gt;
	font-size:0.9em;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
	font-weight:lighter;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.citizen-toc-level--5 &amp;gt; a{&lt;br /&gt;
	display:none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****	Success message after publishing an edit&lt;br /&gt;
***/&lt;br /&gt;
.oo-ui-messageWidget.oo-ui-flaggedElement-success:not(.oo-ui-messageWidget-block) {&lt;br /&gt;
	color: var(--color-success2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Bug fixes&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog {&lt;br /&gt;
	z-index: 12;;&lt;br /&gt;
}&lt;br /&gt;
/***&lt;br /&gt;
****&lt;br /&gt;
****	Toggle menu icons&lt;br /&gt;
****&lt;br /&gt;
***/&lt;br /&gt;
.prolewiki-ui-icon-library::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-editing-citation&amp;amp;image=book&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-wanted::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-content&amp;amp;image=articleNotFound&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-recruitment::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-user&amp;amp;image=userGroup&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-special::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-content&amp;amp;image=specialPages&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-upload::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-content&amp;amp;image=upload&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;br /&gt;
.prolewiki-ui-icon-sandbox::before {&lt;br /&gt;
	background-image: linear-gradient(transparent,transparent),url(/load.php?modules=oojs-ui.styles.icons-editing-advanced&amp;amp;image=sandbox&amp;amp;format=original&amp;amp;skin=citizen);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.js&amp;diff=5182</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Citizen.js&amp;diff=5182"/>
		<updated>2023-06-18T20:53:54Z</updated>

		<summary type="html">&lt;p&gt;Forte : Attempting code to inject sandbox icon into preferences menu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All JavaScript here will be loaded for users of the Citizen skin */&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *		Adds icons for the Citizen skin toggle menu&lt;br /&gt;
 *	&lt;br /&gt;
**/&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
	var $ul = $(&#039;#p-Navigation&#039;).children()[1]; // This selects the &amp;lt;ul&amp;gt; list of elements&lt;br /&gt;
	for (var i=0;i&amp;lt;$ul.children.length;i++) {&lt;br /&gt;
		var $a = $ul.children[i].children[0];&lt;br /&gt;
		var $span = $(&#039;&amp;lt;span&amp;gt;&#039;).text(&amp;quot;&amp;quot;)&lt;br /&gt;
		.addClass(&#039;citizen-ui-icon&#039;)&lt;br /&gt;
		switch ($a.text) {&lt;br /&gt;
			case &amp;quot; Main page&amp;quot;:&lt;br /&gt;
				if (mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
					$ul.children[i].remove();&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Library&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-library&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Wanted pages&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-wanted&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Recruitment&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-recruitment&#039;);&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Special pages&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-special&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;quot;Upload file&amp;quot;:&lt;br /&gt;
				$span.addClass(&#039;prolewiki-ui-icon-upload&#039;)&lt;br /&gt;
				$a.prepend($span[0]);&lt;br /&gt;
				break;&lt;br /&gt;
				&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *		Adds Sandbox icon for the Citizen skin preferences menu&lt;br /&gt;
 *	&lt;br /&gt;
**/&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
	var $a = $(&#039;#pt-sandbox&#039;).children()[0];&lt;br /&gt;
	var $span = $(&#039;&amp;lt;span&amp;gt;&#039;)&lt;br /&gt;
		.addClass(&#039;citizen-ui-icon&#039;)&lt;br /&gt;
		.addClass(&#039;prolewiki-ui-icon-sandbox&#039;);&lt;br /&gt;
	$a.prepend($span[0]);&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.js&amp;diff=5194</id>
		<title>MediaWiki:Gadget-recentChanges.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.js&amp;diff=5194"/>
		<updated>2023-06-17T20:29:37Z</updated>

		<summary type="html">&lt;p&gt;Forte : Using universal recentChanges to unclog Citizen.js&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 *		Recent changes sidebar gadget for both Vector and Citizen skin&lt;br /&gt;
 *		Originally created by @author JaydenKieran from RunescapeWiki&lt;br /&gt;
**/&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(function($, mw) {&lt;br /&gt;
    var $prependTo;&lt;br /&gt;
    var $rcContainer;&lt;br /&gt;
    var recentChanges;&lt;br /&gt;
    var $recentChangesDOM;&lt;br /&gt;
    var $final;&lt;br /&gt;
    &lt;br /&gt;
    var citizen = mw.config.get(&#039;skin&#039;) == &#039;citizen&#039;;&lt;br /&gt;
    var vector = mw.config.get(&#039;skin&#039;) == &#039;vector&#039;;&lt;br /&gt;
&lt;br /&gt;
    function init() {&lt;br /&gt;
        $prependTo = $(&#039;#p-Navigation&#039;);&lt;br /&gt;
        var api = new mw.Api();&lt;br /&gt;
        &lt;br /&gt;
        //Adopting different structures for different skins&lt;br /&gt;
        if (citizen) {&lt;br /&gt;
        	$final = $(&#039;&amp;lt;ul&amp;gt;&#039;).after($rcContainer);&lt;br /&gt;
	&lt;br /&gt;
	        var $rcLabelSpan = $(&#039;&amp;lt;span&amp;gt;&#039;).text(&#039;Recent changes&#039;)&lt;br /&gt;
	        	.addClass(&#039;citizen-menu__heading-label&#039;);&lt;br /&gt;
	        var $rcLabel = $(&#039;&amp;lt;label&amp;gt;&#039;)&lt;br /&gt;
				.addClass(&#039;citizen-menu__heading&#039;)&lt;br /&gt;
				.attr(&#039;id&#039;, &#039;p-RecentChanges-label&#039;)&lt;br /&gt;
				.append($rcLabelSpan);&lt;br /&gt;
	        $rcContainer = $(&#039;&amp;lt;nav&amp;gt;&#039;)&lt;br /&gt;
				.addClass(&#039;mw-portlet mw-portlet-RecentChanges&#039;)&lt;br /&gt;
				.attr(&#039;id&#039;, &#039;p-RecentChanges&#039;)&lt;br /&gt;
				.append($rcLabel)&lt;br /&gt;
				.append($final);&lt;br /&gt;
        } else if (vector) {&lt;br /&gt;
        	$rcContainer = $(&#039;&amp;lt;nav&amp;gt;&#039;)&lt;br /&gt;
            .addClass(&#039;vector-menu vector-menu-portal portal&#039;)&lt;br /&gt;
            .attr(&#039;id&#039;, &#039;p-RecentChanges&#039;)&lt;br /&gt;
            .append(&lt;br /&gt;
                $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;Recent changes&#039;)&lt;br /&gt;
                	.addClass(&#039;vector-menu-heading&#039;)&lt;br /&gt;
                	.attr(&#039;id&#039;, &#039;p-RecentChanges-label&#039;)&lt;br /&gt;
            )&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Add the container to the sidebar&lt;br /&gt;
        $prependTo.after($rcContainer)&lt;br /&gt;
&lt;br /&gt;
        api.get({&lt;br /&gt;
                action: &amp;quot;query&amp;quot;,&lt;br /&gt;
                list: &amp;quot;recentchanges&amp;quot;,&lt;br /&gt;
                rcprop: &amp;quot;title|timestamp|sizes|user&amp;quot;,&lt;br /&gt;
                rcnamespace: &amp;quot;0|3000&amp;quot;,&lt;br /&gt;
                rclimit: &amp;quot;5&amp;quot;,&lt;br /&gt;
                rctype: &amp;quot;edit|new&amp;quot;,&lt;br /&gt;
                rcshow: &amp;quot;!bot|!redirect&amp;quot;,&lt;br /&gt;
                rctoponly: 1,&lt;br /&gt;
                format: &amp;quot;json&amp;quot;&lt;br /&gt;
            })&lt;br /&gt;
            .done(function(data) {&lt;br /&gt;
                if (data.query &amp;amp;&amp;amp; data.query.recentchanges) {&lt;br /&gt;
                    recentChanges = data.query.recentchanges&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (recentChanges.length &amp;gt; 0) {&lt;br /&gt;
                    var Time = 1;&lt;br /&gt;
                    $recentChangesDOM = recentChanges.map(function(rc) {&lt;br /&gt;
                        const timeMatch = rc.timestamp.match(/([0-9]+)-([0-9]+)-([0-9]+)T([0-9]+):([0-9]+):([0-9]+)Z/);&lt;br /&gt;
                    	var editYear = timeMatch[1];&lt;br /&gt;
                    	var editMonth = timeMatch[2];&lt;br /&gt;
                    	var editDay = timeMatch[3];&lt;br /&gt;
                    	var editHour = timeMatch[4];&lt;br /&gt;
                    	var editMinute = timeMatch[5];&lt;br /&gt;
                    	var editSecond = timeMatch[6];&lt;br /&gt;
                    	&lt;br /&gt;
                    	var editDate = new Date(editYear, (editMonth-1), editDay, editHour, editMinute, editSecond);&lt;br /&gt;
						var currentDate = new Date();&lt;br /&gt;
						currentDate = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000)&lt;br /&gt;
						var diffDate = currentDate - editDate;&lt;br /&gt;
						var diffDays = Math.floor(diffDate/(1000*60*60*24));&lt;br /&gt;
						var diffHours = Math.floor(diffDate/(1000*60*60));&lt;br /&gt;
						var diffMinutes = Math.floor(diffDate/(1000*60));&lt;br /&gt;
						var diffSeconds = Math.floor(diffDate/(1000));&lt;br /&gt;
						&lt;br /&gt;
						if (diffDays &amp;gt; 0) {&lt;br /&gt;
							Time = diffDays + &#039;d ago – &#039;;&lt;br /&gt;
						} else if (diffHours &amp;gt; 0) {&lt;br /&gt;
							Time = diffHours + &#039;h ago – &#039;;&lt;br /&gt;
						} else if (diffMinutes &amp;gt; 0) {&lt;br /&gt;
							Time = diffMinutes + &#039;m ago – &#039;;&lt;br /&gt;
						} else if (diffSeconds &amp;gt; 0) {&lt;br /&gt;
							Time = diffSeconds + &#039;s ago – &#039;;&lt;br /&gt;
						} else {&lt;br /&gt;
							Time = 1 + Math.floor(Math.random() * 10) + &#039;m ago – &#039;;&lt;br /&gt;
						}&lt;br /&gt;
						if (citizen) {&lt;br /&gt;
	                        return $(&#039;&amp;lt;li&amp;gt;&#039;).addClass(&#039;mw-list-item&#039;).append(&lt;br /&gt;
	                            $(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
	                            .css(&#039;white-space&#039;, &#039;normal&#039;)&lt;br /&gt;
	                            .addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
	                            .text(&#039; &#039; + rc.title)&lt;br /&gt;
	                            .attr(&#039;href&#039;, new mw.Title(rc.title).getUrl()),&lt;br /&gt;
	                            $(&#039;&amp;lt;p&amp;gt;&#039;)&lt;br /&gt;
	                            .css({&lt;br /&gt;
	                            	&#039;text-align&#039;: &#039;right&#039;,&lt;br /&gt;
	                            	&#039;margin-right&#039;: &#039;2.5em&#039;&lt;br /&gt;
	                            	})&lt;br /&gt;
	                            .addClass(&#039;rc-sidebar-user&#039;)&lt;br /&gt;
	                            .text(Time)&lt;br /&gt;
	                            .append(&lt;br /&gt;
	                                $(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
	                                .css({&lt;br /&gt;
	                            	&#039;display&#039; : &#039;-webkit-inline-box&#039;,&lt;br /&gt;
	                            	&#039;padding&#039; : &#039;0px&#039;&lt;br /&gt;
	                                })&lt;br /&gt;
	                                .text(rc.user)&lt;br /&gt;
	                                .attr(&#039;href&#039;, new mw.Title(rc.user, 2).getUrl())&lt;br /&gt;
	                            )&lt;br /&gt;
	                        )&lt;br /&gt;
                        } else if (vector) {&lt;br /&gt;
                        	return $(&#039;&amp;lt;div&amp;gt;&#039;).addClass(&#039;rc-sidebar-item&#039;).append(&lt;br /&gt;
                            	$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                            		.addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
                            		.text(&#039; &#039; + rc.title)&lt;br /&gt;
                            		.attr(&#039;href&#039;, new mw.Title(rc.title).getUrl()),&lt;br /&gt;
                            	$(&#039;&amp;lt;p&amp;gt;&#039;)&lt;br /&gt;
                            		.addClass(&#039;rc-sidebar-user&#039;)&lt;br /&gt;
                            		.text(Time)&lt;br /&gt;
                            		.append(&lt;br /&gt;
                            			$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                                			.text(rc.user)&lt;br /&gt;
                                			.attr(&#039;href&#039;, new mw.Title(rc.user, 2).getUrl())&lt;br /&gt;
                            		)&lt;br /&gt;
                            )&lt;br /&gt;
                        }&lt;br /&gt;
                    })&lt;br /&gt;
                } else {&lt;br /&gt;
                    $recentChangesDOM = $(&#039;&amp;lt;p&amp;gt;&#039;).text(&#039;No recent changes.&#039;)&lt;br /&gt;
                }&lt;br /&gt;
                if (vector) {&lt;br /&gt;
                	$final = $rcContainer;&lt;br /&gt;
                }&lt;br /&gt;
                $final.append($recentChangesDOM)&lt;br /&gt;
                var $showMore&lt;br /&gt;
				$showMore = $(&#039;&amp;lt;div&amp;gt;&#039;)&lt;br /&gt;
                	.addClass(&#039;rc-sidebar-item rc-sidebar-more&#039;)&lt;br /&gt;
                	.append(&lt;br /&gt;
                		$(&#039;&amp;lt;a&amp;gt;&#039;)&lt;br /&gt;
                		.addClass(&#039;rc-sidebar-page&#039;)&lt;br /&gt;
                		.text(&#039;See more...&#039;)&lt;br /&gt;
                		.attr(&#039;href&#039;, &#039;/wiki/Special:RecentChanges&#039;)&lt;br /&gt;
                )&lt;br /&gt;
                $final.append($showMore)&lt;br /&gt;
            })&lt;br /&gt;
            .fail(function(_, data) {&lt;br /&gt;
                alert(data.error.info)&lt;br /&gt;
            });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using([&#039;mediawiki.util&#039;, &#039;mediawiki.api&#039;], function() {&lt;br /&gt;
        $(init)&lt;br /&gt;
    })&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-RefreshTab.js&amp;diff=5190</id>
		<title>MediaWiki:Gadget-RefreshTab.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-RefreshTab.js&amp;diff=5190"/>
		<updated>2023-06-16T14:12:26Z</updated>

		<summary type="html">&lt;p&gt;Forte : Fixing bug in display of refresh options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Gadget to add tools to the toolbar for purging pages&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function ( $, mw ) {&lt;br /&gt;
&lt;br /&gt;
	$( function () {&lt;br /&gt;
&lt;br /&gt;
		var link,&lt;br /&gt;
&lt;br /&gt;
			strings = {&lt;br /&gt;
				long: {&lt;br /&gt;
					purge: &#039;Soft cache refresh&#039;,&lt;br /&gt;
					hpurge: &#039;Hard cache refresh&#039;,&lt;br /&gt;
					nulled: &#039;Null edit&#039;&lt;br /&gt;
				},&lt;br /&gt;
				short: {&lt;br /&gt;
					purge: &#039;Soft refresh&#039;,&lt;br /&gt;
					hpurge: &#039;Hard refresh&#039;,&lt;br /&gt;
					nulled: &#039;Null edit&#039;&lt;br /&gt;
				},&lt;br /&gt;
				help: {&lt;br /&gt;
					purge: &#039;Purge cache for this page&#039;,&lt;br /&gt;
					hpurge: &#039;Purge cache for this page everywhere it appears&#039;,&lt;br /&gt;
					nulled: &#039;Perform a null edit on this page&#039;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			stringType = ( mw.user.options.get( &#039;skin&#039; ) === &#039;vector&#039; ) ? &#039;long&#039; : &#039;short&#039;,&lt;br /&gt;
&lt;br /&gt;
			errorLog = function ( msg ) {&lt;br /&gt;
				/* eslint-disable-next-line no-console */&lt;br /&gt;
				console.error( msg );&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			afterPurgeFunction = function () {&lt;br /&gt;
				location.reload();&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			httpErrorHandler = function ( code, details ) {&lt;br /&gt;
				var mesg;&lt;br /&gt;
				switch ( code ) {&lt;br /&gt;
					case &#039;http&#039;:&lt;br /&gt;
						mesg = &#039;HTTP error: &#039; + details.xhr.statusText;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ok-but-empty&#039;:&lt;br /&gt;
						mesg = &#039;Received empty response.&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					default:&lt;br /&gt;
						mesg = details.error.info;&lt;br /&gt;
				}&lt;br /&gt;
				mw.util.jsMessage( &#039;&amp;lt;b&amp;gt;Hard purge failed&amp;lt;/b&amp;gt;: &#039; + mesg );&lt;br /&gt;
				errorLog( arguments );&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			doPurge = function ( hard ) {&lt;br /&gt;
				mw.loader.using( &#039;mediawiki.api&#039; ).done( function () {&lt;br /&gt;
					var params = {&lt;br /&gt;
						action: &#039;purge&#039;,&lt;br /&gt;
						pageids: mw.config.get( &#039;wgArticleId&#039; )&lt;br /&gt;
					};&lt;br /&gt;
					if ( hard ) {&lt;br /&gt;
						params.forcerecursivelinkupdate = 1;&lt;br /&gt;
						params.redirects = 1;&lt;br /&gt;
					}&lt;br /&gt;
					new mw.Api()&lt;br /&gt;
						.post( params )&lt;br /&gt;
						.then( afterPurgeFunction, httpErrorHandler );&lt;br /&gt;
				} );&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			doNullEdit = function () {&lt;br /&gt;
				mw.loader.using( &#039;mediawiki.api&#039; ).done( function () {&lt;br /&gt;
					new mw.Api().post( {&lt;br /&gt;
						action: &#039;edit&#039;,&lt;br /&gt;
						pageid: mw.config.get( &#039;wgArticleId&#039; ),&lt;br /&gt;
						appendtext: &#039;&#039;,&lt;br /&gt;
						watchlist: &#039;nochange&#039;,&lt;br /&gt;
						nocreate: &#039;1&#039;,&lt;br /&gt;
						token: mw.user.tokens.get( &#039;csrfToken&#039; )&lt;br /&gt;
					} )&lt;br /&gt;
						.then( afterPurgeFunction, httpErrorHandler );&lt;br /&gt;
				} );&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
		if ( !mw.config.get( &#039;wgArticleId&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		link = mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-cactions&#039;, &#039;#&#039;, strings[ stringType ].purge,&lt;br /&gt;
			&#039;ca-purge&#039;, strings.help.purge, &#039;*&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		link.addEventListener( &#039;click&#039;, function ( ev ) {&lt;br /&gt;
			doPurge( false );&lt;br /&gt;
			ev.preventDefault();&lt;br /&gt;
		}, false );&lt;br /&gt;
&lt;br /&gt;
		link = mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-cactions&#039;, &#039;#&#039;, strings[ stringType ].hpurge,&lt;br /&gt;
			&#039;ca-purge-forcerecursivelinkupdate&#039;, strings.help.hpurge, &#039;,&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		link.addEventListener( &#039;click&#039;, function ( ev ) {&lt;br /&gt;
			doPurge( true );&lt;br /&gt;
			ev.preventDefault();&lt;br /&gt;
		}, false );&lt;br /&gt;
&lt;br /&gt;
		link = mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-cactions&#039;, &#039;#&#039;, strings[ stringType ].nulled,&lt;br /&gt;
			&#039;ca-nulledit&#039;, strings.help.nulled, &#039;0&#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		link.addEventListener( &#039;click&#039;, function ( ev ) {&lt;br /&gt;
			doNullEdit();&lt;br /&gt;
			ev.preventDefault();&lt;br /&gt;
		}, false );&lt;br /&gt;
&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
/* eslint-disable-next-line no-undef */&lt;br /&gt;
}( jQuery, mediaWiki ) );&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Copyrightwarning2&amp;diff=5165</id>
		<title>MediaWiki:Copyrightwarning2</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Copyrightwarning2&amp;diff=5165"/>
		<updated>2022-12-04T03:37:01Z</updated>

		<summary type="html">&lt;p&gt;Forte : Traduction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SITENAME}} défend l&#039;abolition de la propriété privée, y compris la propriété intellectuelle, alors n&#039;hésitez pas à publier n&#039;importe quelle œuvre à volonté.&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Copyrightwarning&amp;diff=5164</id>
		<title>MediaWiki:Copyrightwarning</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Copyrightwarning&amp;diff=5164"/>
		<updated>2022-12-04T03:36:52Z</updated>

		<summary type="html">&lt;p&gt;Forte : Traduction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SITENAME}} défend l&#039;abolition de la propriété privée, y compris la propriété intellectuelle, alors n&#039;hésitez pas à publier n&#039;importe quelle œuvre à volonté.&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Principes&amp;diff=5163</id>
		<title>ProleWiki:Principes</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Principes&amp;diff=5163"/>
		<updated>2022-12-04T03:35:07Z</updated>

		<summary type="html">&lt;p&gt;Forte : Mise à jour des principes à la version actuelle.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{titre|&#039;&#039;Principes de ProleWiki&#039;&#039;}}&lt;br /&gt;
Ce texte doit être un guide idéologique pour notre projet. Toute critique de ce texte est acceptée dans notre [[Discussion ProleWiki:Principes|page de discussion]].&lt;br /&gt;
&lt;br /&gt;
==Principes fondamentaux==&lt;br /&gt;
&lt;br /&gt;
=== Ligne politique ===&lt;br /&gt;
Nous sommes guidés par le [[marxisme-léninisme]], principalement les œuvres de [[Karl Marx]], [[Friedrich Engels]] et [[Vladimir Lénine]]. Sur cette base, ProleWiki soutient pleinement les [[Dictatures du prolétariat]] qui se développent actuellement en:&lt;br /&gt;
&lt;br /&gt;
*[[République de Cuba]]&lt;br /&gt;
*[[République populaire de Chine]]&lt;br /&gt;
*[[République populaire démocratique de Corée]]&lt;br /&gt;
*[[République socialiste du Viêt Nam]]&lt;br /&gt;
*[[République démocratique populaire Laos]]&lt;br /&gt;
&lt;br /&gt;
=== Anti-impérialisme ===&lt;br /&gt;
Bien que les États ci-dessous n&#039;épousent pas le marxisme-léninisme, nous soutenons les nations suivantes pour leur défi à l&#039;impérialisme de l&#039;OTAN, qui est la principale force impérialiste depuis la seconde moitié du 20e siècle:&lt;br /&gt;
&lt;br /&gt;
*[[Venezuela]]&lt;br /&gt;
*[[Russie]]&lt;br /&gt;
*[[Syrie]]&lt;br /&gt;
*[[Bolivie]]&lt;br /&gt;
*[[Nicaragua]]&lt;br /&gt;
*[[Palestine]]&lt;br /&gt;
*[[Iran]]&lt;br /&gt;
&lt;br /&gt;
=== Anti-oppression ===&lt;br /&gt;
Nous sommes contre toute forme d&#039;oppression ou de glorification de l&#039;oppression des groupes ethniques, des femmes et des LGBT. Le réductionnisme de classe est une position anti-marxiste. En tant que tel, cela inclut l&#039;opposition aux mouvements réactionnaires et sociaux-chauvins, tels que, mais sans s&#039;y limiter:&lt;br /&gt;
&lt;br /&gt;
* [[Fascisme]] et [[néo-fascisme]]&lt;br /&gt;
* [[Nazisme]] et [[néo-nazisme]]&lt;br /&gt;
* Strasserisme&lt;br /&gt;
* Quatrième théorie politique&lt;br /&gt;
* National-bolchevisme&lt;br /&gt;
* LaRoucheisme et [[socialisme patriotique]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
===ProleWiki s&#039;efforce d&#039;être gratuit pour les utilisateurs et d&#039;être régi par ses contributeurs===&lt;br /&gt;
La mission du ProleWiki est de fournir des informations et des travaux gratuits et accessibles, pertinents pour la compréhension du marxisme-léninisme.&lt;br /&gt;
&lt;br /&gt;
ProleWiki encourage la copie et la redistribution gratuites de tous les documents présents sur le site. Vous pouvez publier du matériel protégé par des droits d&#039;auteur, à condition qu&#039;il respecte nos  [[ProleWiki:Editorial conventions|conventions éditoriales]]. Chaque aspect de notre projet peut être établi démocratiquement. Cependant,notre projet &#039;&#039;ne doit jamais décider de sa propre dissolution&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki aspire à la propriété collective===&lt;br /&gt;
ProleWiki s&#039;efforce de ne jamais être la propriété d&#039;une personne individuelle, et de toujours promouvoir la propriété collective du site web.&lt;br /&gt;
&lt;br /&gt;
ProleWiki ne diffusera jamais de publicité ou de logiciel de suivi, et s&#039;efforcera toujours de préserver la sécurité de nos camarades.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki s&#039;efforce de favoriser la prise de décision démocratique===&lt;br /&gt;
Le principe organisationnel central de ProleWiki est la prise de décision démocratique. Aucun individu ne doit dicter aux autres. Il devrait cependant y avoir une dictature collective sur le contenu, guidée par le marxisme-léninisme.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki s&#039;efforce d&#039;être transparent===&lt;br /&gt;
Guidés par le marxisme-léninisme, nous adhérons à la libre critique de notre gouvernance. N&#039;hésitez pas à nous critiquer de l&#039;extérieur ou de l&#039;intérieur de notre commune Telegram.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki encourage la critique et l&#039;autocritique===&lt;br /&gt;
Rappelons-nous que la libre critique ne signifie pas l&#039;idée libérale-bourgeoise de la &amp;quot;liberté d&#039;expression&amp;quot;. Nous devons réprimer ouvertement:&lt;br /&gt;
*Un langage réactionnaire, ou un langage ayant l&#039;intention délibérée de promouvoir toute forme d&#039;oppression.&lt;br /&gt;
*Le chauvinisme, ou la promotion de l&#039;idée qu&#039;un groupe de personnes est meilleur qu&#039;un autre groupe de personnes.&lt;br /&gt;
&lt;br /&gt;
L&#039;autocritique est non seulement acceptée mais encouragée.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki devrait être guidé par la perspective philosophique du marxisme-léninisme===&lt;br /&gt;
Tous les efforts sont nécessaires pour parvenir à une société prolétarienne internationale. Que le marxisme-léninisme soit la lumière qui guide les prolétaires de toutes les nations!&lt;br /&gt;
&lt;br /&gt;
===La priorité de ProleWiki est de faire progresser la conscience de classe===&lt;br /&gt;
Nous allons unir nos efforts pour promouvoir le potentiel révolutionnaire auprès du peuple!&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Requestaccount-bio-text&amp;diff=5162</id>
		<title>MediaWiki:Requestaccount-bio-text</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Requestaccount-bio-text&amp;diff=5162"/>
		<updated>2022-12-04T03:27:02Z</updated>

		<summary type="html">&lt;p&gt;Forte : Adoption des questions de vérification d&amp;#039;autres instances de ProleWiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En raison de la nature de notre projet, nous posons ces questions afin d&#039;évaluer la cohérence idéologique de ceux qui souhaitent y entrer. Des réponses détaillées sont préférables. Les réponses très courtes peuvent nécessiter des questions supplémentaires de suivi, ce qui allongera encore votre processus de vérification.&lt;br /&gt;
&lt;br /&gt;
Nous ne rejetterons personne parce que nous ne sommes pas d&#039;accord avec ses opinions, ces questions servent uniquement à vous permettre de présenter votre compréhension. En plus des réponses, vous pouvez inclure des informations relatives à votre travail sur ProleWiki, comme les langues que vous parlez, votre expérience du logiciel MediaWiki, depuis combien de temps vous étudiez le marxisme-léninisme, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QUESTIONS DE VÉRIFICATION:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Où avez-vous trouvé ProleWiki?&lt;br /&gt;
&lt;br /&gt;
2. Quel courant de la pensée marxiste défendez-vous? Décrivez aussi minutieusement que nécessaire votre cheminement vers votre perspective politique actuelle.&lt;br /&gt;
&lt;br /&gt;
3. Avez-vous lu [[ProleWiki:Principes|nos principes]]? Commentez vos accords ou objections à nos principes&lt;br /&gt;
&lt;br /&gt;
4. Quelle est votre position sur la Chine? Pensez-vous que la Chine est un pays socialiste? Pourquoi oui, ou pourquoi non?&lt;br /&gt;
&lt;br /&gt;
5. Quelle est votre position sur Joseph Staline? Comment décririez-vous son rôle historique?&lt;br /&gt;
&lt;br /&gt;
6. Quelle est votre compréhension du genre? Les marxistes devraient-ils soutenir la communauté LGBT?&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5158</id>
		<title>ProleWiki:Accueil</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5158"/>
		<updated>2022-08-07T01:03:08Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Contenu}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|type 			= website&lt;br /&gt;
|title 			= ProleWiki&lt;br /&gt;
|keywords		= wiki,marxisme-léninisme,encyclopédie,prolétaire,politique,révolutionnaire,lenin,stalin,cccp,cpsu,mao zedong,ho chi minh,kim il-sung,fidel castro,che guevara&lt;br /&gt;
|description	= ProleWiki: L&#039;encyclopédie prolétarienne marxiste-léniniste construite par le travail collectif&lt;br /&gt;
|site_name		= ProleWiki&lt;br /&gt;
|locale			= fr&lt;br /&gt;
|image			= ProleWiki_SEO_FR.png&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Fichier:ProleWiki_SEO_FR.png&amp;diff=5157</id>
		<title>Fichier:ProleWiki SEO FR.png</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Fichier:ProleWiki_SEO_FR.png&amp;diff=5157"/>
		<updated>2022-08-07T01:02:52Z</updated>

		<summary type="html">&lt;p&gt;Forte : ProleWiki SEO image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
ProleWiki SEO image&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5156</id>
		<title>ProleWiki:Accueil/Contenu</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5156"/>
		<updated>2022-08-07T00:46:49Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css/&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
                 MAIN HEADER&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-body&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;mainpage-banner&amp;quot; class=&amp;quot;mainpage-headerimage&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-header&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;header-intro&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;h1&amp;gt;Bienvenue à ProleWiki!&amp;lt;/h1&amp;gt;&lt;br /&gt;
   &amp;lt;p&amp;gt;Nous sommes ProleWiki, un projet communiste (marxiste-léniniste) fondé en septembre 2020. Notre objectif est de construire une encyclopédie collaborative anti-impérialiste et prolétarienne, avec des informations sur les événements actuels, les partis communistes du monde entier, les pays, et plus encore. Nous hébergeons également une bibliothèque de textes importants pour le mouvement prolétarien international, de Marx et Engels à Lénine et Staline. Depuis nos débuts en 2020, nous avons actuellement {{NUMBEROFARTICLES}} articles et nous comptons.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;header-stats&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre total d&#039;articles: &#039;&#039;&#039;{{NUMBEROFARTICLES}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de fichiers téléchargés: &#039;&#039;&#039;{{NUMBEROFFILES}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de camarades: &#039;&#039;&#039;{{NUMBERINGROUP:comrade}} &#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de modifications: &#039;&#039;&#039;{{NUMBEROFEDITS}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
        Featured, News and Contribute&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Article en vedette&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/En vedette}}&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-header&amp;quot; style=&amp;quot;margin:2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Contribuez!&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/Contribuez}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;separator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Nouvelles&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/Nouvelles}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/styles.css&amp;diff=5155</id>
		<title>ProleWiki:Accueil/styles.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/styles.css&amp;diff=5155"/>
		<updated>2022-08-07T00:46:18Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.mainpage-body {&lt;br /&gt;
	margin:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mainpage-banner span&lt;br /&gt;
{&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	content: url(/resources/assets/mainpage/mainpageheader_fr.png);&lt;br /&gt;
	border-radius:12px;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
.mainpage-banner-overlay {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 65px;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-header {&lt;br /&gt;
    display: flex;&lt;br /&gt;
	margin: 2em 5em;&lt;br /&gt;
	align-items:baseline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.header-intro {&lt;br /&gt;
    flex: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.header-intro h1 {&lt;br /&gt;
    font-size: 2.5em;&lt;br /&gt;
    border: none;&lt;br /&gt;
    margin: 0 0 .15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.header-intro p {&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    line-height: 1.7em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.header-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    margin:auto;&lt;br /&gt;
}&lt;br /&gt;
.header-stats ul {&lt;br /&gt;
        list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 800px) {&lt;br /&gt;
	.mainpage-header {&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
		margin:2em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-frame {&lt;br /&gt;
	box-shadow: 0 0 .3em #999;&lt;br /&gt;
	border-radius: 1em;&lt;br /&gt;
	width:100%;&lt;br /&gt;
}&lt;br /&gt;
.mainpage-frame:after {&lt;br /&gt;
	display: block;&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	clear: both;&lt;br /&gt;
}&lt;br /&gt;
.separator {&lt;br /&gt;
	width:5%;&lt;br /&gt;
	margin:1em auto;&lt;br /&gt;
}&lt;br /&gt;
.frame-header {&lt;br /&gt;
	background-color:#b50014;&lt;br /&gt;
	border-radius: 1em 1em 0.25em 0.25em;&lt;br /&gt;
	color: #fff;&lt;br /&gt;
	padding: .4em .8em .5em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.frame-header:before {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	/* Add some content in order to get normal line height, then make it transparent */&lt;br /&gt;
	content: &amp;quot;x&amp;quot;;&lt;br /&gt;
	color: transparent;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	opacity: .7;&lt;br /&gt;
	/*[[File:Hamsickwhite.svg]]*/&lt;br /&gt;
	background-image: url(https://shared.prolewiki.org/uploads/3/3d/Hamsickwhite.svg);&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: left center;&lt;br /&gt;
}&lt;br /&gt;
.frame-body {&lt;br /&gt;
	padding: 1em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5154</id>
		<title>ProleWiki:Accueil/Contenu</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5154"/>
		<updated>2022-08-07T00:45:42Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css/&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
                 MAIN HEADER&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-body&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;mainpage-banner&amp;quot; class=&amp;quot;mainpage-headerimage&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-header&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;header-intro&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;h1&amp;gt;Bienvenue à ProleWiki!&amp;lt;/h1&amp;gt;&lt;br /&gt;
   &amp;lt;p&amp;gt;Nous sommes ProleWiki, un projet communiste (marxiste-léniniste) fondé en septembre 2020. Notre objectif est de construire une encyclopédie collaborative anti-impérialiste et prolétarienne, avec des informations sur les événements actuels, les partis communistes du monde entier, les pays, et plus encore. Nous hébergeons également une bibliothèque de textes importants pour le mouvement prolétarien international, de Marx et Engels à Lénine et Staline. Depuis nos débuts en 2020, nous avons actuellement {{NUMBEROFARTICLES}} articles et nous comptons.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;header-stats&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre total d&#039;articles: &#039;&#039;&#039;{{NUMBEROFARTICLES}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de fichiers téléchargés: &#039;&#039;&#039;{{NUMBEROFFILES}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de camarades: &#039;&#039;&#039;{{NUMBERINGROUP:comrade}} &#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Nombre de modifications: &#039;&#039;&#039;{{NUMBEROFEDITS}}&#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
        Featured, News and Contribute&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Article en vedette&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/En vedette}}&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;mainpage-header&amp;quot; style=&amp;quot;margin:2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Contribuez!&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/Contribuez}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;separator&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;mainpage-frame&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-header&amp;quot;&amp;gt;Nouvelles&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;frame-body&amp;quot;&amp;gt;{{ProleWiki:Accueil/Nouvelles}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5153</id>
		<title>ProleWiki:Accueil</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil&amp;diff=5153"/>
		<updated>2022-08-07T00:37:36Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;ProleWiki:Accueil/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Contenu}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|type 			= website&lt;br /&gt;
|title 			= ProleWiki&lt;br /&gt;
|keywords		= wiki,marxisme-léninisme,encyclopédie,prolétaire,politique,révolutionnaire,lenin,stalin,cccp,cpsu,mao zedong,ho chi minh,kim il-sung,fidel castro,che guevara&lt;br /&gt;
|description	= ProleWiki: L&#039;encyclopédie prolétarienne marxiste-léniniste construite par le travail collectif&lt;br /&gt;
|site_name		= ProleWiki&lt;br /&gt;
|locale			= fr&lt;br /&gt;
|image			= Prolewiki-logo-v4.2.png&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.css&amp;diff=5196</id>
		<title>MediaWiki:Gadget-recentChanges.css</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-recentChanges.css&amp;diff=5196"/>
		<updated>2022-07-01T21:55:01Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* &amp;lt;pre&amp;gt; */&lt;br /&gt;
/* *****************&lt;br /&gt;
   rc sidebar widget&lt;br /&gt;
   ***************** */&lt;br /&gt;
&lt;br /&gt;
#p-RecentChanges {&lt;br /&gt;
	min-height: 11.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes blink {&lt;br /&gt;
  50% {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-RecentChanges h3::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	left: .5em;&lt;br /&gt;
&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	background-color: #56b30a;&lt;br /&gt;
	width: 6px;&lt;br /&gt;
	height: 6px;&lt;br /&gt;
	border-radius: 100%;&lt;br /&gt;
	&lt;br /&gt;
	animation: blink 5s linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-item {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	margin: .5em .25em 0 .66em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-item::before {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -0.75em;&lt;br /&gt;
	top: .5em;&lt;br /&gt;
&lt;br /&gt;
	/* content: &#039;&#039;; */&lt;br /&gt;
	background-color: #327ba7;&lt;br /&gt;
	width: 4px;&lt;br /&gt;
	height: 4px;&lt;br /&gt;
	border-radius: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-page {&lt;br /&gt;
	display: block;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	text-overflow: ellipsis;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	max-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-user {&lt;br /&gt;
    color: #555;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
	text-overflow: ellipsis;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rc-sidebar-user a {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
#p-RecentChanges .rc-sidebar-more {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-RecentChanges .rc-sidebar-more .rc-sidebar-page {&lt;br /&gt;
	display:inline-block;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-gadgetLinks.js&amp;diff=5192</id>
		<title>MediaWiki:Gadget-gadgetLinks.js</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Gadget-gadgetLinks.js&amp;diff=5192"/>
		<updated>2022-07-01T16:37:33Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(function() {&lt;br /&gt;
	function gadgetLink(page) {&lt;br /&gt;
	    return &#039;&amp;lt;a href=&amp;quot;/wiki/MediaWiki:Gadget-&#039;+page+&#039;&amp;quot; title=&amp;quot;MediaWiki:Gadget-&#039;+page+&#039;&amp;quot;&amp;gt;&#039;+page+&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	$(&#039;.page-MediaWiki_Gadgets-definition #bodyContent ul li&#039;).not(&#039;#toc li&#039;).each(function() {&lt;br /&gt;
	    var txt = this.innerHTML;&lt;br /&gt;
	    var links = txt.replace(/([a-zA-Z0-9-]+)(\[[^\]]+\]\|)(.*)/, function(match, name, options, filelist) {&lt;br /&gt;
	        var files = filelist.split(&#039;|&#039;);&lt;br /&gt;
	        files = files.map(function(file) { return gadgetLink(file); });&lt;br /&gt;
	        return gadgetLink(name) + options + files.join(&#039;|&#039;);&lt;br /&gt;
	    });&lt;br /&gt;
	    $(this).html(links);&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Biblioth%C3%A8que&amp;diff=5120</id>
		<title>ProleWiki:Bibliothèque</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Biblioth%C3%A8que&amp;diff=5120"/>
		<updated>2021-02-04T20:40:56Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{titre|&#039;&#039;Bibliothèque de la ProleWiki&#039;&#039;}}&lt;br /&gt;
C&#039;est la page que nous utilisons pour héberger des textes, des articles et des livres afin d&#039;aider les camarades à référencer des extraits spécifiques de la littérature marxiste-léniniste dans nos principaux articles. Nous encourageons également la lecture de ces ouvrages.&lt;br /&gt;
&lt;br /&gt;
== Œuvres sélectionnées par Prolewiki ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:Les trois sources et les trois parties constitutives du marxisme|Les trois sources et les trois parties constitutives du marxisme]]&#039;&#039;. (Un bref aperçu de la philosophie marxiste, écrit par Lénine).&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:Le manifeste du Parti communiste |Le manifeste du Parti communiste]]&#039;&#039;(Une analyse de la lutte des classes à travers l&#039;histoire et un aperçu des principes communistes par Marx et Engels).&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:Les principes du communisme|Les principes du communisme]]&#039;&#039;. (Une série de questions sur les idéaux communistes auxquelles Engels a répondu).&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:De L&#039;autorité |De L&#039;autorité]]&#039;&#039; (Une réponse d&#039;Engels sur le rejet de l&#039;autorité sous un état socialiste.)&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:L&#039;état et la révolution|L&#039;état et la révolution]]&#039;&#039; (Une description de l&#039;état et de son rôle dans la société, et la nécessité d&#039;un mouvement révolutionnaire, de Lénine).&lt;br /&gt;
&lt;br /&gt;
== Principaux ouvrages ==&lt;br /&gt;
===Marx et Engels===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Critique de la philosophie du droit de Hegel|Critique de la philosophie du droit de Hegel]] (1843)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:La sainte famille]] (Février 1845) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Thèses sur Feuerbach|Thèses sur Feuerbach]] (1845)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:L&#039;idéologie allemande|L&#039;idéologie allemande]] (1846)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:La pauvreté de la philosophie|La pauvreté de la philosophie]] (1847)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les principes du communisme|Les principes du communisme]] (1847)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Manifeste du parti communiste|Manifeste du parti communiste]] (1848)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Le 18ème Brumaire de Louis Bonaparte|Le 18ème Brumaire de Louis Bonaparte]]. (1852)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Une contribution à la critique de l&#039;économie politique|Une contribution à la critique de l&#039;économie politique]] (1859)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Capital, vol. I|Capital, vol I]] (1867)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:La guerre civile en France|La guerre civile en France]] (1871)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur autorisation|Sur autorisation]] (1872)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Critique of the Gotha Program|Critique du programme Gotha]] (1875)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Anti-Dühring|Anti-Dühring]] (1878)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Socialisme : utopique et scientifique|Socialisme : utopique et scientifique]] (mars 1880) &amp;quot;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:L&#039;origine de la famille, la propriété privée et l&#039;Etat|L&#039;origine de la famille, la propriété privée et l&#039;Etat]] (1884)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Ludwig Feuerbach et la fin de la philosophie allemande classique|Ludwig Feuerbach et la fin de la philosophie allemande classique]](1886)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Lénine ===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Que faire?|Que faire ?]] (Février 1902)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Deux tactiques de la social-démocratie dans la révolution démocratique|Deux tactiques de la social-démocratie dans la révolution démocratique]] (juillet 1905) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Matérialisme et empiriocritique|Matérialisme et empiriocritique]] (Février 1908) &#039;&#039; .&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les trois sources et les trois composantes du marxisme|Les trois sources et les trois composantes du marxisme]] (1913)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Impérialisme, le plus haut niveau du capitalisme|Imperialism, the highest stage of capitalism]] (juin 1916) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque : L&#039;État et la révolution|L&#039;État et la révolution]] (Août 1917) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:The proletarian revolution and the renegade Kautsky|La révolution prolétarienne et le renégat Kautsky]] (novembre 1918) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque : Le communisme de &amp;quot;gauche&amp;quot;, un désordre infantile| Le communisme de &amp;quot;gauche&amp;quot;, un désordre infantile]] (mai 1920) &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Staline===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Anarchisme ou socialisme?|Anarchisme ou socialisme ?]] (Janvier 1907)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les fondements du léninisme|Les fondements du léninisme]] (avril 1924)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Trotskysme ou Léninisme?|Trotskysme ou Léninisme ?]] (19 novembre 1924)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Matérialisme dialectique et historique|Matérialisme dialectique et historique]] (septembre 1938)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Histoire du parti communiste de l&#039;Union soviétique|Histoire du parti communiste de l&#039;Union soviétique]] (1939)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Marxisme et problèmes de linguistique|Marxisme et problèmes de linguistique]] (2 juin 1950) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les problèmes économiques du socialisme en URSS|Les problèmes économiques du socialisme en URSS]]] (septembre 1952) &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Mao Zedong===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la guérilla|Sur la guérilla]] (1937)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la pratique|Sur la pratique]] (juillet 1937)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la contradiction|Sur la contradiction]] (Août 1937)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Combattre le libéralisme|Combattre le libéralisme]] (7 septembre 1937)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Ho Chi Minh===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la moralité révolutionnaire|Sur la moralité révolutionnaire ]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Kim Il-sung ===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Pour la création d&#039;un parti uni des masses laborieuses|Pour la création d&#039;un parti uni des masses laborieuses]] (1946)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur l&#039;élimination du dogmatisme et du formalisme et l&#039;établissement du Juche dans le travail idéologique|Sur l&#039;élimination du dogmatisme et du formalisme et l&#039;établissement du Juche dans le travail idéologique]] (1955)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Biblioth%C3%A8que&amp;diff=5119</id>
		<title>ProleWiki:Bibliothèque</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Biblioth%C3%A8que&amp;diff=5119"/>
		<updated>2021-02-04T20:40:49Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{titre|&#039;&#039;Bibliothèque de ProleWiki&#039;&#039;}}&lt;br /&gt;
C&#039;est la page que nous utilisons pour héberger des textes, des articles et des livres afin d&#039;aider les camarades à référencer des extraits spécifiques de la littérature marxiste-léniniste dans nos principaux articles. Nous encourageons également la lecture de ces ouvrages.&lt;br /&gt;
&lt;br /&gt;
== Œuvres sélectionnées par Prolewiki ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:Les trois sources et les trois parties constitutives du marxisme|Les trois sources et les trois parties constitutives du marxisme]]&#039;&#039;. (Un bref aperçu de la philosophie marxiste, écrit par Lénine).&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:Le manifeste du Parti communiste |Le manifeste du Parti communiste]]&#039;&#039;(Une analyse de la lutte des classes à travers l&#039;histoire et un aperçu des principes communistes par Marx et Engels).&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:Les principes du communisme|Les principes du communisme]]&#039;&#039;. (Une série de questions sur les idéaux communistes auxquelles Engels a répondu).&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:De L&#039;autorité |De L&#039;autorité]]&#039;&#039; (Une réponse d&#039;Engels sur le rejet de l&#039;autorité sous un état socialiste.)&lt;br /&gt;
# &#039;&#039;[[Bibliothèque:L&#039;état et la révolution|L&#039;état et la révolution]]&#039;&#039; (Une description de l&#039;état et de son rôle dans la société, et la nécessité d&#039;un mouvement révolutionnaire, de Lénine).&lt;br /&gt;
&lt;br /&gt;
== Principaux ouvrages ==&lt;br /&gt;
===Marx et Engels===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Critique de la philosophie du droit de Hegel|Critique de la philosophie du droit de Hegel]] (1843)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:La sainte famille]] (Février 1845) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Thèses sur Feuerbach|Thèses sur Feuerbach]] (1845)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:L&#039;idéologie allemande|L&#039;idéologie allemande]] (1846)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:La pauvreté de la philosophie|La pauvreté de la philosophie]] (1847)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les principes du communisme|Les principes du communisme]] (1847)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Manifeste du parti communiste|Manifeste du parti communiste]] (1848)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Le 18ème Brumaire de Louis Bonaparte|Le 18ème Brumaire de Louis Bonaparte]]. (1852)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Une contribution à la critique de l&#039;économie politique|Une contribution à la critique de l&#039;économie politique]] (1859)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Capital, vol. I|Capital, vol I]] (1867)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:La guerre civile en France|La guerre civile en France]] (1871)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur autorisation|Sur autorisation]] (1872)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Critique of the Gotha Program|Critique du programme Gotha]] (1875)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Anti-Dühring|Anti-Dühring]] (1878)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Socialisme : utopique et scientifique|Socialisme : utopique et scientifique]] (mars 1880) &amp;quot;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:L&#039;origine de la famille, la propriété privée et l&#039;Etat|L&#039;origine de la famille, la propriété privée et l&#039;Etat]] (1884)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Ludwig Feuerbach et la fin de la philosophie allemande classique|Ludwig Feuerbach et la fin de la philosophie allemande classique]](1886)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Lénine ===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Que faire?|Que faire ?]] (Février 1902)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Deux tactiques de la social-démocratie dans la révolution démocratique|Deux tactiques de la social-démocratie dans la révolution démocratique]] (juillet 1905) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Matérialisme et empiriocritique|Matérialisme et empiriocritique]] (Février 1908) &#039;&#039; .&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les trois sources et les trois composantes du marxisme|Les trois sources et les trois composantes du marxisme]] (1913)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Impérialisme, le plus haut niveau du capitalisme|Imperialism, the highest stage of capitalism]] (juin 1916) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque : L&#039;État et la révolution|L&#039;État et la révolution]] (Août 1917) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:The proletarian revolution and the renegade Kautsky|La révolution prolétarienne et le renégat Kautsky]] (novembre 1918) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque : Le communisme de &amp;quot;gauche&amp;quot;, un désordre infantile| Le communisme de &amp;quot;gauche&amp;quot;, un désordre infantile]] (mai 1920) &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Staline===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Anarchisme ou socialisme?|Anarchisme ou socialisme ?]] (Janvier 1907)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les fondements du léninisme|Les fondements du léninisme]] (avril 1924)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Trotskysme ou Léninisme?|Trotskysme ou Léninisme ?]] (19 novembre 1924)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Matérialisme dialectique et historique|Matérialisme dialectique et historique]] (septembre 1938)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Histoire du parti communiste de l&#039;Union soviétique|Histoire du parti communiste de l&#039;Union soviétique]] (1939)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Marxisme et problèmes de linguistique|Marxisme et problèmes de linguistique]] (2 juin 1950) &#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Les problèmes économiques du socialisme en URSS|Les problèmes économiques du socialisme en URSS]]] (septembre 1952) &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Mao Zedong===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la guérilla|Sur la guérilla]] (1937)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la pratique|Sur la pratique]] (juillet 1937)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la contradiction|Sur la contradiction]] (Août 1937)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Combattre le libéralisme|Combattre le libéralisme]] (7 septembre 1937)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Ho Chi Minh===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur la moralité révolutionnaire|Sur la moralité révolutionnaire ]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Kim Il-sung ===&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Pour la création d&#039;un parti uni des masses laborieuses|Pour la création d&#039;un parti uni des masses laborieuses]] (1946)&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[Bibliothèque:Sur l&#039;élimination du dogmatisme et du formalisme et l&#039;établissement du Juche dans le travail idéologique|Sur l&#039;élimination du dogmatisme et du formalisme et l&#039;établissement du Juche dans le travail idéologique]] (1955)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Principes&amp;diff=5107</id>
		<title>ProleWiki:Principes</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Principes&amp;diff=5107"/>
		<updated>2021-01-31T02:14:01Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{titre|&#039;&#039;Principes de la ProleWiki&#039;&#039;}}&lt;br /&gt;
Ce texte doit être un guide idéologique. Toute critique de ce texte est acceptée dans notre [https://t.me/joinchat/GTCZSBQzgjGTrg2TQhOE5w commune Telegram], ou dans la [[ProleWiki_talk:Principles|Page de discussion]].&lt;br /&gt;
&lt;br /&gt;
La majeure partie de ce texte a été &#039;&#039;collectivisée&#039;&#039; à partir de la M.I.A. &amp;lt;ref&amp;gt;[https://www.marxists.org/admin/legal/charter.htm#c1 Charter of the Marxists Internet Archive (M.I.A.)]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
==Principes fondamentaux==&lt;br /&gt;
&lt;br /&gt;
Nous sommes guidés par le [[marxisme-léninisme]], principalement les œuvres de [[Karl Marx]], [[Friedrich Engels]] et [[Vladimir Lénine]].&lt;br /&gt;
&lt;br /&gt;
Nous soutenons pleinement les [[Dictatures du prolétariat]] qui se développent actuellement en :&lt;br /&gt;
&lt;br /&gt;
*[[République de Cuba]]&lt;br /&gt;
*[[République populaire de Chine]]&lt;br /&gt;
*[[République populaire démocratique de Corée]]&lt;br /&gt;
*[[République socialiste du Viêt Nam]]&lt;br /&gt;
*[[République démocratique populaire Laos]]&lt;br /&gt;
&lt;br /&gt;
Nous critiquons la ligne politique de ces États, mais nous soutenons de manière critique ces nations pour leur opposition à l&#039;impérialisme de l&#039;OTAN :&lt;br /&gt;
&lt;br /&gt;
*[[Venezuela]]&lt;br /&gt;
*[[Russie]]&lt;br /&gt;
*[[Syrie]]&lt;br /&gt;
*[[Bolivie]]&lt;br /&gt;
*[[Nicaragua]]&lt;br /&gt;
*[[Palestine]]&lt;br /&gt;
*[[Iran]]&lt;br /&gt;
==Objectifs==&lt;br /&gt;
===ProleWiki s&#039;efforce d&#039;être gratuit pour les utilisateurs et d&#039;être régi par ses contributeurs===&lt;br /&gt;
La mission du ProleWiki est de fournir des informations et des travaux gratuits et accessibles, pertinents pour la compréhension du marxisme-léninisme.&lt;br /&gt;
&lt;br /&gt;
ProleWiki encourage la copie et la redistribution gratuites de tous les documents présents sur le site. Vous pouvez publier du matériel protégé par des droits d&#039;auteur, à condition qu&#039;il respecte nos  [[ProleWiki:Editorial conventions|conventions éditoriales]]. Chaque aspect de notre projet peut être établi démocratiquement. Cependant,notre projet &#039;&#039;ne doit jamais décider de sa propre dissolution&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki aspire à la propriété collective===&lt;br /&gt;
ProleWiki s&#039;efforce de ne jamais être la propriété d&#039;une personne individuelle, et de toujours promouvoir la propriété collective du site web.&lt;br /&gt;
&lt;br /&gt;
ProleWiki ne diffusera jamais de publicité ou de logiciel de suivi, et s&#039;efforcera toujours de préserver la sécurité de nos camarades.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki s&#039;efforce de favoriser la prise de décision démocratique===&lt;br /&gt;
Le principe organisationnel central de ProleWiki est la prise de décision démocratique. Aucun individu ne doit dicter aux autres. Il devrait cependant y avoir une dictature collective sur le contenu, guidée par le marxisme-léninisme.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki s&#039;efforce d&#039;être transparent===&lt;br /&gt;
Guidés par le marxisme-léninisme, nous adhérons à la libre critique de notre gouvernance. N&#039;hésitez pas à nous critiquer de l&#039;extérieur ou de l&#039;intérieur de notre commune Telegram.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki encourage la critique et l&#039;autocritique===&lt;br /&gt;
Rappelons-nous que la libre critique ne signifie pas l&#039;idée libérale-bourgeoise de la &amp;quot;liberté d&#039;expression&amp;quot;. Nous devons réprimer ouvertement :&lt;br /&gt;
*Un langage réactionnaire, ou un langage ayant l&#039;intention délibérée de promouvoir toute forme d&#039;oppression.&lt;br /&gt;
*Le chauvinisme, ou la promotion de l&#039;idée qu&#039;un groupe de personnes est meilleur qu&#039;un autre groupe de personnes.&lt;br /&gt;
&lt;br /&gt;
L&#039;autocritique est non seulement acceptée mais encouragée.&lt;br /&gt;
&lt;br /&gt;
===ProleWiki devrait être guidé par la perspective philosophique du marxisme-léninisme===&lt;br /&gt;
Tous les efforts sont nécessaires pour parvenir à une société prolétarienne internationale. Que le marxisme-léninisme soit la lumière qui guide les prolétaires de toutes les nations !&lt;br /&gt;
&lt;br /&gt;
===La priorité de ProleWiki est de faire progresser la conscience de classe===&lt;br /&gt;
Nous allons unir nos efforts pour promouvoir le potentiel révolutionnaire auprès du peuple !&lt;br /&gt;
&lt;br /&gt;
===Références===&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Titre&amp;diff=5106</id>
		<title>Modèle:Titre</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=Mod%C3%A8le:Titre&amp;diff=5106"/>
		<updated>2021-01-31T02:07:56Z</updated>

		<summary type="html">&lt;p&gt;Forte : Page créée avec « {{DISPLAYTITLE:{{{1}}}}} »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{{1}}}}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=MediaWiki:Sidebar&amp;diff=5102</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=MediaWiki:Sidebar&amp;diff=5102"/>
		<updated>2021-01-28T17:37:47Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** Special:WantedPages|wantedpages&lt;br /&gt;
** Special:AllPages|allpages&lt;br /&gt;
** Special:ConfirmAccounts|accrequest&lt;br /&gt;
* ProleWiki&lt;br /&gt;
** ProleWiki:À propos|proleabout&lt;br /&gt;
** ProleWiki:Comment contribuer|contribute&lt;br /&gt;
** ProleWiki:Principes|principles&lt;br /&gt;
** ProleWiki:Essais|essays&lt;br /&gt;
** ProleWiki:Bibliothèque|library&lt;br /&gt;
** ProleWiki:Gulag|gulag&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
	<entry>
		<id>https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5101</id>
		<title>ProleWiki:Accueil/Contenu</title>
		<link rel="alternate" type="text/html" href="https://fr.prole.wiki/w/index.php?title=ProleWiki:Accueil/Contenu&amp;diff=5101"/>
		<updated>2021-01-09T14:58:20Z</updated>

		<summary type="html">&lt;p&gt;Forte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--------------------------------------------&lt;br /&gt;
                 En-tête&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/En-tête&lt;br /&gt;
 | welcome = Bienvenue à ProleWiki&lt;br /&gt;
 | description = l&#039;encyclopédie collaborative prolétaire à laquelle [[ProleWiki:Comment contribuer|tout camarade peut contribuer]].&lt;br /&gt;
 | links = [[Spécial:Toutes les pages|Articles]] • [[ProleWiki:Bibliothèque|Bibliothèque]] • [[ProleWiki:Essais|Nos essais]] • [[ProleWiki:À propos|À propos de ProleWiki]]&lt;br /&gt;
 | subheader = Sans théorie révolutionnaire, il ne peut y avoir de mouvement révolutionnaire.&lt;br /&gt;
 | lang = fr&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
                 1ère colonne&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;prolewiki-mainpage-column&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;prolewiki-mainpage-column-first&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!----------------------&lt;br /&gt;
       Bienvenue&lt;br /&gt;
-----------------------&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Cadre&lt;br /&gt;
 | color      = 990000&lt;br /&gt;
 | title      = Bienvenue!&lt;br /&gt;
 | content    = {{ProleWiki:Accueil/Bienvenue}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!----------------------&lt;br /&gt;
       Contribuer&lt;br /&gt;
-----------------------&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Cadre&lt;br /&gt;
 | color      = 990000&lt;br /&gt;
 | title      = Contribuer!&lt;br /&gt;
 | content    = {{ProleWiki:Accueil/Contribuer}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------------------&lt;br /&gt;
                Seconde colonne&lt;br /&gt;
---------------------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;prolewiki-mainpage-column&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;prolewiki-mainpage-column-second&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------&lt;br /&gt;
            Nouvelles&lt;br /&gt;
---------------------------&amp;gt;&lt;br /&gt;
{{ProleWiki:Accueil/Cadre&lt;br /&gt;
 | color      = 990000 &lt;br /&gt;
 | title      = News&lt;br /&gt;
 | content    = &amp;lt;div&amp;gt;{{ProleWiki:Accueil/News}}&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Forte</name></author>
	</entry>
</feed>