User:Liverfull/wikificator.js

From the Portal Wiki
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* 

Wikificator for wiki.teamfortress.com and theportalwiki.com
Disclaimer: This code was edited with the assistance of AI

Credits:
Lozman
Sergey kudryavtsev
ChVA
Hoo man
Hinote
Vladis13
Morpheios Melas
LoKi
MaxSem
Ctac
Александр Сигачёв
CodeMonk
Maxim Razin
Не А
Paul Pogonyshev
Solon
Kalan
Alex Smotrov
Putnik
Infovarius
Dima st bk
Jack who built the house (Hercules63)
A particle for world to form
Iniquity
DZ
Ghuron
DonRumata
Serhio Magpie
Stjn
Shabe
Daniil
Liverfull

 * This code is dedicated to the public domain.
 *
 * The author(s) waive all copyright and related rights to this code
 * worldwide under copyright law, including all related and neighboring rights,
 * to the extent allowed by law.
 *
 * THIS CODE IS PROVIDED BY THE AUTHOR(S) "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS CODE, EVEN IF ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.
 
*/
  
// <nowiki>
mw.loader.using( 'jquery.client', function () {

var clientProfile = $.client.profile();
// Сочетания клавиш во всплывающей подсказке (tooltip): Ctrl+Alt+W на Windows, Ctrl+Shift+W на Mac'е
var hotkey = clientProfile.platform === 'mac' ? 'Ctrl+Shift+W' : 'Ctrl+Alt+W';
var strings = {
	name: 'Викификатор',
	tooltip: 'Викификатор — автоматический обработчик текста (' + hotkey + ')',
	summary: 'Викификатор',
	fullText: 'Викификатор обработает ВЕСЬ текст на этой странице. Продолжить?',
	talkPage: 'Викификатор не обрабатывает страницы обсуждения целиком.\n\nВыделите ваше сообщение — обработано будет только оно.'
};
window.wfPlugins = window.wfPlugins || [];
window.wfPluginsT = window.wfPluginsT || [];

// Function takes an input or text as an argument. If it is absent, it uses $( '#wpTextbox1' )
// as an input.
window.Wikify = function ( inputOrText ) {
	'use strict';

	// Функции

	function r( r1, r2 ) {
		txt = txt.replace( r1, r2 );
	}

	function hide( re ) {
		r( re, function ( s ) {
			return '\x01' + hidden.push( s ) + '\x02';
		} );
	}

	function hideTag ( tag ) {
		hide( new RegExp( '<' + tag + '( [^>]+)?>[\\s\\S]+?<\\/' + tag + '>', 'gi' ) );
	}

	function hideTemplates() {
		hide( /\{\{([^{]\{?)+?\}\}/g );
		var pos = 0,
			stack = [],
			tpl,
			left,
			right;
		while ( true ) {
			left = txt.indexOf( '{{', pos );
			right = txt.indexOf( '}}', pos );
			if ( left === -1 && right === -1 && !stack.length ) {
				break;
			}
			if ( left !== -1 && ( left < right || right === -1 ) ) {
				stack.push( left );
				pos = left + 2;
			} else {
				left = stack.pop();
				if ( typeof left === 'undefined' ) {
					if ( right === -1 ) {
						pos += 2;
						continue;
					} else {
						left = 0;
					}
				}
				if ( right === -1 ) {
					right = txt.length;
				}
				right += 2;
				tpl = txt.substring( left, right );
				txt = txt.substring( 0, left ) +
					'\x01' + hidden.push( tpl ) + '\x02' +
					txt.substr( right );
				pos = right - tpl.length;
			}
		}
	}
	
	function processLink( link, left, right ) {
		left = left.replace( /[ _\u00A0]+/g, ' ' ).trim();
		if ( left.match( /^(?:Категория|Файл) ?:/ ) ) {
			return '[[' + left + '|' + right + ']]';
		}
		right = right.replace( / {2,}/g, ' ' ).trim();
		var inLink = right.substr( 0, left.length );
		var afterLink = right.substr( left.length );
		var uniLeft = left.substr( 0, 1 ).toUpperCase() + left.substr( 1 );
		var uniRight = ( right.substr( 0, 1 ).toUpperCase() + right.substr( 1 ) )
			.replace( /[_\u00A0]/g, ' ' );
		if ( uniRight.indexOf( uniLeft ) === 0 && afterLink.match( /^[a-zа-яё]*$/ ) ) {
			return '[[' + inLink + ']]' + afterLink;
		} else {
			return '[[' + left + '|' + right + ']]';
		}
	}

	function processText() {
		var u = '\u00A0'; // неразрывный пробел
		if (
			// это страница обсуждения, т. е. чётное пространство
			mw.config.get( 'wgNamespaceNumber' ) % 2 ||
			mw.config.get( 'wgNamespaceNumber' ) === 4
		) {
			var sigs = txt.match( /\d\d:\d\d, \d\d? \S{3,8} 20\d\d \(UTC\)/g );
			if ( sigs && sigs.length > 1 ) {
				alert( strings.talkPage );
				return;
			}
		}
		
		hide( /<!--[\s\S]*?-->/g );
		hideTag( 'nowiki' );
		hideTag( 'pre' );
		hideTag( 'source' );
		hideTag( 'syntaxhighlight' );
		hideTag( 'templatedata' );

		hideTag( 'code' );
		hideTag( 'kbd' );
		hideTag( 'tt' );

		hideTag( 'graph' );
		hideTag( 'hiero' );
		hideTag( 'math' );
		hideTag( 'timeline' );
		hideTag( 'chem' );
		hideTag( 'score' );
		hideTag( 'categorytree' );
		hideTag( 'imagemap' );
		hideTag( 'inputbox' );
		hideTag( 'mapframe' );
		hideTag( 'maplink' );
		
		hideTag( 'ref' );
		hideTag( 'references' );
		hideTag( 'poem' );
		hideTag( 'section' );
		hideTag( 'indicator' );
		hideTag( 'includeonly' );
		hideTag( 'noinclude' );
		hideTag( 'onlyinclude' );
		hideTag( 'templatestyles' );
		hideTag( 'charinsert' );

		r( /[^\S\n\r]+(\n|\r)/g, '$1' ); // spaces at EOL
		r( /(^|[А-Яа-я])\u00eb([а-я]|$)/g, '$1ё$2' ); // некириллическая "ë" → кириллическая "ё"
		r( /(^|[А-Яа-я])\u00cb([а-я]|$)/g, '$1Ё$2' ); // некириллическая "Ë" → кириллическая "Ё"
		r( /\{\{\s*(?:шаблон|[шt]|template):([\s\S]+?)\}\}/gi, '{{$1}}' );
		r( /\{\{(?:подст:|subst:)?(?:[Уу]дар(?:ение)?|')\}\}/g, '\u0301' );
		r( /\s+\{\{([·•*])\}\}/g, '{{$1}}' ); // лишний пробел/строка до шаблона {{·/•/*}}
		r( /(\{\{\s*)(?:reflist|список примечаний)(\s*[\|\}])/ig, '$1примечания$2' );
		r( /(\{\{\s*)примечания(\s*\|\s*)[4-9](\s*[\|\}])/ig, '$1примечания$2узкие$3' );
		r( /(\{\{\s*)примечания\s*\|\s*height=[0-9]*(\s*[\|\}])/ig, '$1примечания$2' );
		r( /[\u00A0 ]+(\{\{\s*([Rr]ef-[a-z\-]+?|[Ee]n icon|[Cc]hecked|[Vv]|[Пп]роверено)\}\})/g, '$1' );
		r( /<[\/\\]?(hr|br)( [^\/\\>]+?)?? *[\/\\]?>/gi, '<$1$2>' );
		r(
			/(\| *Координаты[ _А-ЯЁа-яё]*= *)(\d+(?:[.,]\d+)?)[,/] ?(\d+(?:[.,]\d+)?(?=\s))/g,
			function ( s, m1, m2, m3 ) {
				return (
					m1 +
					( +parseFloat( m2.replace( ',', '.' ) ).toFixed( 4 )) +
					'/' +
					( +parseFloat( m3.replace( ',', '.' ) ).toFixed( 4 ) )
				);
			}
		);
		r( /<noinclude>\s*(\{\{[dD]ocpage\}\})\s*<\/noinclude>/g, '$1' );
		r( /(\| *(?:[сСcCsS]|pp?|страницы\d?|pages\d?|seite\d?|alleseiten|листы\d?|том|volume|band|выпуск|issue|heft|номер|столбцы\d?|columns\d?|kolonnen\d?|серия год) *= *)(\d+)[\u00A0 ]?(?:-{1,3}|—) ?(\d+)/g, '$1$2—$3' );
		r( /(\| *год *= *)(\d{4})[\u00A0 ]?(?:-{1,3}|—) ?(\d{4})/g, '$1$2—$3' );

		r( /(\[\[[^\{\]|\n]+){{!}}([^\{\]|\n]+\]\])/g, '$1|$2' );
		
		var i;
		for ( i in window.wfPluginsT ) {
			if ( window.wfPluginsT.hasOwnProperty( i ) ) {
				window.wfPluginsT[i]( txt, r );
			}
		}

		// Скрытие шаблонов
		hideTemplates();
		hide( /^[ \t].*/mg );
		hide( /((?:https?|ftp|news|nntp|telnet|irc|gopher):\/\/|mailto:)[^\s\[\]<>"]+ ?/gi );
		hide( /^#(redirect|перенапр(авление)?)/i );
		hideTag( 'gallery' );
        hide( /\[\[File:[^\]]+\]\]/gi );

		txt = '\n' + txt + '\n';

		hide( /^(\{\||\|\-).*/mg); // table/row def
		hide( /(^\||^!|!!|\|\|) *[a-z]+=[^|]+\|(?!\|)/mgi); // cell style
		hide( /\| +/g); // formatted cell

		r( /[ \t\u00A0]{2,}/g, ' ' ); // двойные пробелы

		// HTML-сущности и т. п. → символы Юникода. Отключено в шаблонах — 10-м пространстве:
		if ( mw.config.get( 'wgNamespaceNumber' ) !== 10 ) {
			r( /&(#x[0-9a-f]{2,4}|#[0-9]{3,4}|[0-9a-z]{2,8});/gi, function ( s ) {
				var t = document.createElement( 'textarea' );
				t.innerHTML = s;
				var c = t.value;
				// Не исправляются html-сущности ниже 128. Исключение — пробел
				if ( c.length === 1 && c.charCodeAt( 0 ) > 127 || s === '&#x20;' ) {
					return c;
				}
				return s;
			});
		}
		r( /\(tm\)/gi, '™' );
		r( /\.\.\./g, '…' ); // три точки → многоточие
		r( /(^|[^+])\+-(?!\+|-)/g, '$1±' );
		r( /~=/g, '≈' );
		r( /((?:^|[\s"])\d+(?:[\.,]\d+)?\s*)[xх](\s*\d+(?:[\.,]\d+)?)\s*([мm]{1,2}(?:[\s"\.,;?!]|$))/g, '$1×$2' + u + '$3' );
		r( /\s+×\s+/g, u + '×' + u );
		r( /№№/g, '№' );
		
		// Заголовки
		r( /^(=+)[ \t\f\v]*(.*?)[ \t\f\v]*=+$/gm, '$1 $2 $1' ); // add spaces inside
		r( /([^\r\n])(\r?\n==.+==\r?\n)/g, '$1\n$2' ); // add empty line before
		r( /(==.+==)[\r\n]{2,}(?!=)/g, '$1\n' ); // remove empty line after
		r( /^== (см(\.?|отр(и|ите|еть))|see) ?(также|ещ[её]|also|more) ==$/gmi, '== См. также ==' );
		r( /^== сноски ==$/gmi, '== Примечания ==' );
		r( /^== внешние\sссылки ==$/gmi, '== Ссылки ==' );
		r( /^== (?:(.+[^.])\.|(.+):) ==$/gm, '== $1$2 ==' );
		r( /^== '''(?!.*'''.*''')(.+)''' ==$/gm, '== $1 ==' );

		r( /[«»“”„]/g, '"' ); // временная замена на "

		// Hyphens and en dashes to pretty dashes
		r( /–/g, '-' ); // &ndash; -> hyphen
		r( /(\s)-{1,3} /g, '$1— ' ); // hyphen -> &mdash;
		r( /(\d)--(\d)/g, '$1—$2' ); // -> &mdash;
		r( /(\s)-(\d)/g, '$1−$2' ); // hyphen -> minus

		r(
			/(Boeing|Боинг(?:[ауеио][мвх]?и?))?(\(|\s)([12]?\d{3})[\u00A0 ]?(?:-{1,3}|—) ?([12]?\d{3})(?![\wА-ЯЁа-яё]|-[^ех]|-[ех][\wА-ЯЁа-яё])/g,
			function ( s, m1, m2, m3, m4 ) {
				// filter Boeing airplanes; see the list at https://pastebin.com/rgJv6R4z (no new items expected)
				if (
					( m3[ 0 ] === '7' && m3[ 2 ] === '7' ) &&
					(
						m1 ||
						m4 < m3 && ( m4[ 2 ] === '0' || m4 === '138' || m4 === '227' ) ||
						m3 === '707' && m4 === '820' ||
						m3 === '737' && m4 === '800' ||
						m3 === '737' && m4 === '900'
					)
				) {
					return s;
				}
				return ( m1 || '' ) + m2 + m3 + '—' + m4;
			}
		);

		// Диапазоны годов и веков
		r( /(\d{4})\s*(г\.|гг\.)/gi, '$1' + u + '$2' );
		r( /([12]?\d{3}) ?(гг?\.)/g, '$1' + u + '$2' );
		r( /(\(|\s)([IVX]{1,5})[\u00A0 ]?(-{1,3}|—) ?([IVX]{1,5})(?![\w\-])/g, '$1$2—$4' );
		r( /([IVX]{1,5}) ?(вв?\.)/g, '$1' + u + '$2' );

		// Сокращения
		r( /([тТ])\.\s?н\.(?:\s?а?з?\.?)?\b/g, '$1ак называемый' );
		r( /([тТ])\.\s?е\./g, '$1о есть' );
		r( /([тТ])\.\s?к\./g, '$1ак как' );
		r( /([вВ])\sт\.\s?ч\./g, '$1 том числе' );
		r( /([иИ])\sт\.\s?д\./g, '$1' + u + 'т.' + u + 'д.' );
		r( /([иИ])\sт\.\s?п\./g, '$1' + u + 'т.' + u + 'п.' );
		r( /([тТ])\.\s?н\./g, '$1.' + u + 'н.' );
		r( /([иИ])\.\s?о\./g, '$1.' + u + 'о.' );
		r( /с\.\s?ш\./g, 'с.' + u + 'ш.' );
		r( /ю\.\s?ш\./g, 'ю.' + u + 'ш.' );
		r( /в\.\s?д\./g, 'в.' + u + 'д.' );
		r( /з\.\s?д\./g, 'з.' + u + 'д.' );
		r( /л\.\s?с\./g, 'л.' + u + 'с.' );
		r( /а\.\s?е\.\s?м\./g, 'а.' + u + 'е.' + u + 'м.' );
		r( /а\.\s?е\./g, 'а.' + u + 'е.' );
		r( /мм\sрт\.\s?ст\./g, 'мм' + u + 'рт.' + u + 'ст.' );
		r( /н\.\s?э(\.|(?=\s))/g, 'н.' + u + 'э.' );
		r( /([дД])([о.])\s?н\.\s?э\./g, '$1о' + u + 'н.' + u + 'э.' );
		r( /(\d)[\u00A0 ]?(млн|млрд|трлн|[дсмнк]?м|мкм|[км]г)\.?(?=[,;.]| "?[а-яё\-]{2,}|\s*\|)/g, '$1' + u + '$2' );
		r( /(\d)[\u00A0 ](тыс)([^\.А-Яа-яЁё])/g, '$1' + u + '$2.$3' );
		r( /(\d)\s(тыс\.)/g, '$1' + u + '$2' );
		r( /ISBN:\s?(?=[\d\-]{8,17})/, 'ISBN ' );

		// Вставка/удаление пробелов
		r( /^([#*:]+)[\u00A0 \t\f\v]*(?!\{\|)([^\u00A0 \t\f\v*#:;])/gm, '$1 $2' ); // space after #*: unless before table
		r( /(\S)[\u00A0 \t](-{1,3}|—)[\u00A0 \t](\S)/g, '$1' + u + '— $3' );
		r( /(^|[^\wА-яЁё\.])([А-ЯЁ][а-яё]+) ([А-ЯЁ]\.) ?([А-ЯЁ]\.)(?! ?[А-ЯЁ][а-яё\.])/g,'$1$2' + u + '$3' + u + '$4' ); // инициалы "Петров А. В."
		r( /(^|[^\wА-яЁё\.])([А-ЯЁ]\.) ?([А-ЯЁ]\.) ?(?=[А-ЯЁ][а-яё]+)/g, '$1$2' + u + '$3' + u); // инициалы "А. В. Петров"
		r( /([а-яё]"?\)?[\.\?!:])((?:\x01\d+\x02\|)?(?:[A-QS-ZА-ЯЁ]|R(?!u\b)))/g, '$1 $2' ); // "word. Word"; don't change in cases like "Газета.Ru"
		r( /([)"a-zа-яё\]²³])\s*([,:])([\[(a-zа-яё])/g, '$1$2 $3' ); // "word, word", "word: word"; except ":"
		r( /([)a-zа-яё\]²³])\s*([,:])"/g, '$1$2 "' );
		r( /([)"a-zа-яё\]²³])[ \u00A0\t]([,;])\s([\[("a-zа-яё])/g, '$1$2 $3' );
		r( /([^%\/\wА-Яа-яЁё"]\d+?(?:[\.,]\d+?)?) ?([%‰])(?!-[А-Яа-яЁё])/g, '$1' + u + '$2' ); //5 %
		r( /(\d) ([%‰])(?=-[А-Яа-яЁё])/g, '$1$2' ); //5%-й
		r( /([№§])(\s*)(\d)/g, '$1' + u + '$3' );
		// внутри скобок ()
		r( /\( +/g, '(' );
		r( / +\)/g, ')' );

		// Температура
		r( /([\s\d=≈≠≤≥<>—("'|])([+±−\-]?\d+?(?:[.,]\d+?)?)(([ °\^*]| [°\^*])(C|F))(?=[\s"').,;!?|\x01])/gm, '$1$2' + u + '°$5' ); // '

		r( /(\s\d+)\.(\d+[\u00A0 ]*[%‰°×])/gi, '$1,$2' ); // замена точки в числах на запятую
		r( /(\d) (?=\d{3}\b)/g, '$1' + u ); // 1 000 000

		// Плагины
		for ( i in window.wfPlugins ) {
			if ( window.wfPlugins.hasOwnProperty( i ) ) {
				window.wfPlugins[i]( txt, r );
			}
		}

		// "" → «»
		for ( i = 1; i <= 2; i++ ) {
			r( /([\s\x02!|#'"\/([{;+\-])"([^"]*)([^\s"([{|])"([^a-zа-яё])/ig, '$1«$2$3»$4' ); // "
		}
		while ( /«[^»]*«/.test( txt ) ) {
			r( /«([^»]*)«([^»]*)»/g, '«$1„$2“' ); // «» внутри других «» → „“
		}
		
// Перемещение кавычек внутрь курсива/полужирного шрифта
    // Но для начала надо снять курсив с кавычек, чтобы избежать ошибок вроде ''»'' → »''''
    // Правило 0: снятие курсива с кавычек
	//	''«''некурсивная фраза''»'' → «некурсивная фраза» (кавычкам не нужно выделение, если текст не выделен)
	//	''первая курсивная фраза'' «''вторая курсивная фраза'' → ''первая курсивная фраза «вторая курсивная фраза'' (убирает лишнее прерывание выделения, сливая два выделения в одно)
    r( /('''''|'''|'')(\s)?([«»„“])(\s)?\1/g, '$2$3$4' );
		
    // Правило 1: если все кавычки вне выделения, то пусть запрыгнут в выделение
    r( /([«„])('''''|'''|'')([^'\n]*?)\2([»“])/g, '$2$1$3$4$2' );
		
    // Правило 2: если открывающие кавычки вне выделения
    r( /([«„])('''''|'''|'')([^'\n]*?)([»“])\2/g, '$2$1$3$4$2' );
    // Правило 3: если закрывающие кавычки вне выделения
    r( /('''''|'''|'')([«„])([^'\n]*?)\1([»“])/g, '$1$2$3$4$1' );

		// Возврат шаблонов
		function unhide( s, num ) {
			return hidden[ num - 1 ];
		}
		while ( txt.match( /\x01\d+\x02/ ) ) {
			r( /\x01(\d+)\x02/g, unhide );
		}

		txt = txt.substr( 1, txt.length - 2 ); // compensation for "txt = '\n' + txt + '\n';"
	}

	function processAllText() {
		txt = $input ? $input.textSelection( 'getContents' ) : text;
		processText();
		if ( $input ) {
			r( /^[\n\r]+/, '' );
			
			$input.textSelection( 'setContents', txt );
			if ( caretPosition ) {
				$input.textSelection( 'setSelection', {
					start: caretPosition[0] > txt.length ? txt.length : caretPosition[0]
				} );
			}
		} else {
			text = txt;
		}
		if (
			window.auto_comment &&
			window.insertSummary &&
			!document.editform.wpSection.value
		) {
			window.insertSummary( strings.summary );
		}
	}

/* Интегрированный модуль Орфографер */

window.wfPlugins = window.wfPlugins || [];
window.wfPlugins.push(function(txt,r){

r( /((?:^|\s)[аА])бб?р[ие]в[ие]а/g, '$1ббревиа' );
r( /((?:^|\s)[аА])бб?[ие]сс?ин/g, '$1биссин' );
r( /((?:^|\s)[аА])б[ао]н[еи]мент/g, '$1бонемент' );
r( /((?:^|\s)[аА])банент(а(?:ми?|х)?|[уеы]|о[вм]?)\b/g, '$1бонент$2' );
r( /((?:^|\s)[аА])банир/g, '$1бонир' );
r( /((?:^|\s)[аА])б[ао]р[еи]ген(а(?:ми?|х)?|[уеы]|о[вм]?)\b/g, '$1бориген$2' );
r( /((?:^|\s)[аА])бб?а?рак[оа]дабр(а(?:ми?|х)?|[уые]|ой)?\b/g, '$1бракадабр$2' );
r( /((?:^|\s)[аА])бсалют/g, '$1бсолют' );
r( /((?:^|\s)[аА])бстрогир/g, '$1бстрагир' );
r( /((?:^|\s)[аА])бс?ц([еи])сс?/g, '$1бсц$2сс' );
r( /((?:^|\s)[аА])в[оа]нт?гар[тд]/g, '$1вангард' );
r( /((?:^|\s)[аА])в[ие]нь?ю\b/g, '$1веню' );
r( /((?:^|\s)[аА])ви[ао]\-([А-ЯЁа-яё])/g, '$1виа$2' );
r( /((?:^|\s)[аА])в[аеи]цион/g, '$1виацион' );
r( /((?:^|\s)[аА])в[ао]кад[оа]\b/g, '$1вокадо' );
r( /((?:^|\s)[аА])вто\-([А-ЯЁа-яё])/g, '$1вто$2' );
r( /((?:^|\s)[аА])глют[еи]н/g, '$1гглютин' );
r( /((?:^|\s)[аА])гг?р[ие]сс?ив/g, '$1грессив' );
r( /((?:^|\s)[аА])гг?ресс?и/g, '$1гресси' );
r( /((?:^|\s)[аА])гг?ресс?оо?р/g, '$1грессор' );
r( /((?:^|\s)[аА])гро-([А-ЯЁа-яё])/g, '$1гро$2' );
r( /([аА])двакат/g, '$1двокат' );
r( /([аА])дэкват/g, '$1декват' );
r( /([аА])дэпт/g, '$1депт' );
r( /((?:^|\s)[аА])дд?р[ие]сс?([ауеы]|о[мв]|ами?|ах)?\b/g, '$1дрес$2' );
r( /((?:^|\s)[аА])дь?ютант([ауеы]|о[мв]|ами?|ах)?\b/g, '$1дъютант$2' );
r( /((?:^|\s)[аА])ж[ие][ао]таж([ау]|ем?)\b/g, '$1жиотаж$2' );
r( /((?:^|\s)[аА])з[еи]рб[ао]й?д?жан(ец|ц([уы]|е([мв])|а(ми?|х)?))\b/g, '$1зербайджан$2' );
r( /((?:^|\s)[аА])кк?(?:ил|л[ие])мат[ие]заци/g, '$1кклиматизаци' );
r( /((?:^|\s)[аА])кк?[ао]мп[ао]н[еи]мент(а(?:ми?|х)?|[уеы]|о[мв]?)\b/g, '$1ккомпанемент$2' );
r( /((?:^|\s)[аА])кк?[ао]рд[еи]он([ауеы]|о[мв]|ами?|ах)?\b/g, '$1ккордеон$2' );
r( /((?:^|\s)[аА])кк?[уоа]мулятор(а(?:ми?|х)?|[уеы]|о[мв]?)\b/g, '$1ккумулятор$2' );
r( /((?:^|\s)[аА])куратн(ы[еймх]|ого|ому?|ая|о[ейю]|ую|ыми)\b/g, '$1ккуратн$2' );
r( /((?:^|\s)[аА])ксеом(а(?:ми?)?|[уеы]|о[йю]|ах)?\b/g, '$1ксиом$2' );
r( /((?:^|\s)[аА])ккуст/g, '$1куст' );
r( /((?:^|\s)[аА])лл?[ие]гатор/g, '$1ллигатор' );
r( /((?:^|\s)[аА])ль?б[ао]трос/g, '$1льбатрос' );
r( /((?:^|\s)[аА])лл?юмин[ие]в/g, '$1люминиев' );
r( /((?:^|\s)[аА])мплетуд/g, '$1мплитуд' );
r( /((?:^|\s)[аА])глийск/g, '$1нглийск' );
r( /((?:^|\s)[аА])пп?[еи]лл?яци/g, '$1пелляци' );
r( /((?:^|\s)[аА])пп?[ао]рат/g, '$1ппарат' );
r( /((?:^|\s)[аА])пп?[ие]нд[еи]цит(а(?:ми?|х)?|[уеы]|о[мв]?)\b/g, '$1ппендицит$2' );
r( /([аА])реал([А-ЯЁа-яё]{0,3})\s(обита|распр?остране)ния/g, '$1реал$2' );
r( /([аА])ртифакт/g, '$1ртефакт' );
r( /([аА])ртеллери/g, '$1ртиллери' );
r( /([аА])рьегард/g, '$1рьергард' );
r( /([аА])ссимм?етри/g, '$1симметри' );
r( /([аА])ссимптот/g, '$1симптот' );
r( /((?:^|\s)[аА])сс?[еи]стент/g, '$1ссистент' );
r( /([,\.])\s*([аА])\sтак([\s-])же\b/g, '$1 $2 также' );
r( /((?:^|\s)[аА])тт?р[еи]бу([тц])/g, '$1трибу$2' );
r( /([бБ])арикад/g, '$1аррикад' );
r( /((?:^|\s)[бБ])езопастн/g, '$1езопасн' );
r( /((?:^|\s)[бБ])изнесс\b/g, '$1изнес' );
r( /((?:^|\s)[бБ])лаг[оа]доря\b/g, '$1лагодаря' );
r( /((?:^|\s)[бБ])лиз?жай?[шщ]/g, '$1лижайш' );
r( /((?:^|\s)[бБ])лизлежай?[шщ]/g, '$1лизлежащ' );
r( /((?:^|\s)[бБ])огодельн/g, '$1огадельн' );
r( /((?:^|\s)б)рэнд([ауеы]|о[мв]|ами?|ах|инг[А-ЯЁа-яё]{0,5})?\b/g, '$1ренд$2' );
r( /((?:^|\s)[бБ])ритпоп/g, '$1рит-поп' );
r( /((?:^|\s)[бБ])удую[шщ]/g, '$1удущ' );
r( /((?:^|\s)[бБ])ъеф/g, '$1ьеф' );
r( /((?:^|\s)[бБ])ывшы/g, '$1ывши' );
r( /((?:^|\s)[вВ])виде\b/g, '$1 виде' );
r( /((?:^|\s)[вВ])\-?оо?бщем\b/g, '$1 общем' );
r( /((?:^|\s)[вВ])\s?отличии\sот/g, '$1 отличие от' );
r( /((?:^|\s)[вВ])\sпредверии\b/g, '$1 преддверии' );
r( /((?:^|\s)[вВ])связи\b/g, '$1 связи' );
r( /([вВ])силу/g, '$1 силу' );
r( /((?:^|\s)[вВ])\s?течении\s(времени|секунды?|минуты?|часа|дня|суток|недели|месяца|года|десятилетия|период(а|ов))\b/g, '$1 течение $2' );
r( /((?:^|\s)[вВ])\s?тоже\s?время\b/g, '$1 то же время' );
r( /((?:^|\s)[вВ])целом\b/g, '$1 целом' );
r( /((?:^|\s)[вВ])эб/g, '$1еб' );
r( /((?:^|\s)[вВ])етренн/g, '$1етрен' );
r( /((?:^|\s)[вВ])зыма/g, '$1зима' );
r( /((?:^|\s)[вВ])\s?кратци?[еи]/g, '$1кратце' );
r( /((?:^|\s)[вВ])оенн?оначальник/g, '$1оеначальник' );
r( /((?:^|\s)[вВ])оенниз/g, '$1оениз' );
r( /((?:^|\s)[вВ])озрен/g, '$1оззрен' );
r( /([вВ])\sплоть\sдо/g, '$1плоть до' );
r( /((?:^|\s)[вВ])\sпол-?оборота/g, '$1полоборота' );
r( /((?:^|\s)[вВ])\s?последстви[еи]/g, '$1последствии' );
r( /((?:^|\s)[вВ])\sразрез(?=\sс)/g, '$1разрез' );
r( /((?:^|\s)[вВ])\s?ря[дт]\s?ли\b/g, '$1ряд ли' );
r( /((?:^|\s)[вВ])с[её]-же\b/g, '$1сё же' );
r( /((?:^|\s)[вВ])\sследствии\sчего\b/g, '$1следствие чего' );
r( /((?:^|\s)[вВ])следствии/g, '$1следствие' );
r( /((?:^|\s)[гГ])алл?[еи]ре/g, '$1алере' );
r( /((?:^|\s)[гГ])аупвахт/g, '$1ауптвахт' );
r( /([гГ])енеолог/g, '$1енеалог' );
r( /([гГ])ермити/g, '$1ермети' );
r( /((?:^|\s)[гГ])иганст?к/g, '$1игантск' );
r( /((?:^|\s)[гГ])остинниц/g, '$1остиниц' );
r( /([гГ])оссударств/g, '$1осударств' );
r( /([гГ])осударствен(?!е?н)/g, '$1осударственн' );
r( /((?:^|\s)[гГ])раммотн/g, '$1рамотн' );
r( /((?:^|\s)[дД])вояко[-\s]зубчат/g, '$1воякозубчат' );
r( /((?:^|\s)[дД])вухглав/g, '$1вуглав' );
r( /((?:^|\s)[дД])вухкратн/g, '$1вукратн' );
r( /((?:^|\s)[дД])вухличн/g, '$1вуличн' );
r( /((?:^|\s)[Нн]ед|[дД])вухсмысленн/g, '$1вусмысленн' );
r( /((?:^|\s)[дД])вухчлен/g, '$1вучлен' );
r( /((?:^|\s)[дД])вухъ?язычн/g, '$1вуязычн' );
r( /((?:^|\s)[дД])емо-запис/g, '$1емозапис' );
r( /((?:^|\s)[дД])еревян(ы[еймх]|ого|ому?|ая|о[ейю]|ую|ыми?)\b/g, '$1еревянн$2' );
r( /((?:^|\s)[дД])иаграм(а(?:ми?|х)?|[ыуе]|ой)?\b/g, '$1иаграмм$2' );
r( /((?:^|\s)[дД])и-дже/g, '$1идже' );
r( /((?:^|\s)[дД])илл?[еи]р/g, '$1илер' );
r( /((?:^|\s)[дД])[еи]скр[еи]д[еи]т/g, '$1искредит' );
r( /((?:^|\s)[дД])истрибьюц/g, '$1истрибуц' );
r( /((?:^|\s)[дД])обовл/g, '$1обавл' );
r( /((?:^|\s)[дД])остиженн/g, '$1остижен' );
r( /((?:^|\s)[еЕ])дениц(а(?:ми?|х)?|[уы]|ей?)?\b/g, '$1диниц$2' );
r( /ё́/g, 'ё' );
r( /((?:^|\s)[жЖ])[иы]хн/g, '$1изн' );
r( /((?:^|\s)(?:[сС]л|[зЗ]ав))еду[шщ]/g, '$1ледующ' );
r( /((?:^|\s)[зЗ])арегестр/g, '$1арегистр' );
r( /((?:^|\s)[зЗ])емл[еия]тр[еия]сени/g, '$1емлетрясени' );
r( /((?:^|\s)[иИ])йти\b/g, '$1дти' );
r( /((?:^|\s)[иИ])зготовлива([ею])т/g, '$1зготовля$2т' );
r( /((?:^|\s)[иИ]ме(ют?|е[тм]|л[аои]?|ющ[А-ЯЁа-яё]{2,3}|вш[А-ЯЁа-яё]{1,3}|[вя])(с[яь]?))\sввиду\b/g, '$1 в виду' );
r( /((?:^|\s)[иИ])мм?итац/g, '$1митац' );
r( /((?:^|\s)[иИ])мм?плантант([еыу]|а(?:ми?|х)?|о[мв]?)\b/g, '$1мплантат$2' );
r( /([иИ])нгридиент/g, '$1нгредиент' );
r( /((?:^|\s)[иИ])нжи?нер(а(?:ми?|х)?|[уеы]|о[вм]|н[А-ЯЁа-яё]{1,3})?\b/g, '$1нженер$2' );
r( /((?:^|\s)[иИ])нтер?(?:гр|рг)ац/g, '$1нтеграц' );
r( /((?:^|\s)[иИ])нт[еи]рест?/g, '$1нтерес' );
r( /([иИ])нфецирр?/g, '$1нфицир' );
r( /((?:^|\s)[иИ])нц[ие]н?дент([уеы]|а(?:ми?|х)?|о[мв]?)\b/g, '$1нцидент$2' );
r( /((?:^|\s)[иИ])сс?кусс?тв([уе]|а(?:ми?|х)?|ом?)?\b/g, '$1скусств$2' );
r( /((?:^|\s)[иИ])сполнен(ы[еймх]|ого|ому?|ая|о[ейю]|ую|ыми?)\b/g, '$1сполненн$2' );
r( /((?:^|\s)[иИ])следова/g, '$1сследова' );
r( /((?:^|\s)[кК])ак-будто\b/g, '$1ак будто' );
r( /((?:^|\s)[кК])[ао]т[оа]строф/g, '$1атастроф' );
r( /((?:^|\s)[кК])[ие]лл?[ао]грам(а(?:ми?|х)?|[уеы]|о[вм]?)\b/g, '$1илограмм$2' );
r( /((?:^|\s)[кК])илл?омм?етр/g, '$1илометр' );
r( /((?:^|\s)[Кк])ировобад/g, '$1ировабад' );
r( /((?:^|\s)[кК])липпер(?![ст])/g, '$1липер' );
r( /((?:^|\s)[кК])люч[её]м\b/g, '$1лючом' );
r( /((?:^|\s)[кК])[оа]лл?ич[ие][ст][тс]?вт?/g, '$1оличеств' );
r( /((?:^|\s)[кК])олеги/g, '$1оллеги' );
r( /((?:^|\s)[кК])олекци/g, '$1оллекци' );
r( /((?:^|\s)[кК])омманд(?!ос|о\b|ер|ит)/g, '$1оманд' );
r( /((?:^|\s)[оО]бщек|[кК])омм?анд(ы[еймх]|ого|ому?|ая|о[ейю]|ую|ыми?)\b/g, '$1оманд$2' );
r( /((?:^|\s)[кК])омм?иси/g, '$1омисси' );
r( /((?:^|\s)[кК])омм?[еи]нтари/g, '$1омментари' );
r( /((?:^|\s)[кК])онвеер/g, '$1онвейер' );
r( /([кК])орресподен/g, '$1орреспонден' );
r( /((?:^|\s)[кК])ороновирус/g, '$1оронавирус' );
r( /((?:^|\s)[кК])(?:тор|тоор|отр|оотр|отро)(ая|о[геймю]|[уы])/g, '$1отор$2' );
r( /((?:^|\s)[кК])офе-машин\b/g, '$1офемашин' );
r( /((?:^|\s)[лЛ])а[дн]{1,2}шафт/g, '$1андшафт' );
r( /([лЛ])егетимн/g, '$1егитимн' );
r( /((?:^|\s)[лЛ])ей?т[еий]нн?ат?н?т/g, '$1ейтенант' );
r( /((?:^|\s)[лЛ])ибретист/g, '$1ибреттист' );
r( /((?:^|\s)(?:([Нн]аи)?)([лЛ])у([дшщ][шщ]|чщ))/g, '$1$3учш' );
r( /((?:^|\s)[Мм])ал([А-ЯЁа-яё]{2,3}\s)Театр/g, '$1ал$2театр' );
r( /((?:^|\s)[Мм])орокк/g, '$1арокк' );
r( /((?:^|\s)[Мм])асс?ачусетт?с/g, '$1ассачусетс' );
r( /([мМ])еждку?/g, '$1ежду' );
r( /((?:^|\s)[мМ])еждун[ао]рож?(?:ндн?|дн)/g, '$1еждународн' );
r( /((?:^|\s)[мМ])эйнфр[эе]йм/g, '$1ейнфрейм' );
r( /((?:^|\s)[мМ])еллиора/g, '$1елиора' );
r( /((?:^|\s)[мМ])еридианал/g, '$1еридионал' );
r( /((?:^|\s)[мМ])есяцом\b/g, '$1есяцем' );
r( /((?:^|\s)[мМ])илион/g, '$1иллион' );
r( /((?:^|\s)[мМ])илиард/g, '$1иллиард' );
r( /((?:^|\s)[мМ])инестер/g, '$1инистер' );
r( /((?:^|\s)[мМ])одет\b/g, '$1ожет' );
r( /([мМ])олл?екулл?/g, '$1олекул' );
r( /((?:^|\s)[мМ])оностыр/g, '$1онастыр' );
r( /((?:^|\s)[мМ])ульфильм/g, '$1ультфильм' );
r( /((?:^|\s)[мМ])ученник/g, '$1ученик' );
r( /((?:^|\s)[нН])азванн([А-ЯЁа-яё]?)\b/g, '$1азван$2' );
r( /((?:^|\s)[нН])азвн?анн?и([еяюий]|[ея]ми?|ях)\b/g, '$1азвани$2' );
r( /((?:^|\s)[нН])аичаще/g, '$1аиболее часто' );
r( /((?:^|\s)[нН])а(пир|рпи)мер\b/g, '$1апример' );
r( /((?:^|\s)[нН])а\s?протяжение\b/g, '$1а протяжении' );
r( /((?:^|\s)[нН])а\sряду\sс/g, '$1аряду с' );
r( /([нН])астояш/g, '$1астоящ' );
r( /((?:^|\s)[нН])ачил/g, '$1ачал' );
r( /((?:^|\s)[нН])е(?:рв|вр)[оа]п[оа]толог/g, '$1европатолог' );
r( /((?:^|\s)[нН])[ие]ль?зя\b/g, '$1ельзя' );
r( /((?:^|\s)[нН])[еи]\sкогда\sне\b/g, '$1икогда не' );
r( /((?:^|\s)[нН])инзя\b/g, '$1индзя' );
r( /((?:^|\s)[нН])овелист/g, '$1овеллист' );
r( /((?:^|\s)[нН])ьюанс/g, '$1юанс' );
r( /((?:^|\s)[оО])листвен/g, '$1блиствен' );
r( /((?:^|\s)[оО])бмен[её]н(н|\b)/g, '$1бменян$2' );
r( /((?:^|\s)[оО])бого(щ|ти)/g, '$1бога$2' );
r( /([оО])братно-(ланцетн|яйцевидн)/g, '$1братно$2' );
r( /((?:^|\s)[оО])б[ьъ]ед[ие]нен/g, '$1бъединен' );
r( /((?:^|\s)[оО])бьеди/g, '$1бъеди' );
r( /((?:^|\s)[оО])бьект/g, '$1бъект' );
r( /((?:^|\s)[оО])обстаятельств(а(?:ми?|х)?|у|о[вм]|е)?\b/g, '$1бстоятельств$2' );
r( /((?:^|\s)[оО])данко\b/g, '$1днако' );
r( /((?:^|\s)[оО])канчател/g, '$1кончател' );
r( /((?:^|\s)[оО])кресност/g, '$1крестност' );
r( /((?:^|\s)[оО])ловян(?![нищ])/g, '$1ловянн' );
r( /((?:^|\s)[оО])рганизва/g, '$1рганизова' );
r( /((?:^|\s)[оО])рганизвц/g, '$1рганизац' );
r( /((?:^|\s)[оО])ргинал/g, '$1ригинал' );
r( /((?:^|\s)[оО])рент/g, '$1риент' );
r( /((?:^|\s)[оО])снованн([А-ЯЁа-яё]?)\b/g, '$1снован$2' );
r( /((?:^|\s)[оО])сновывет/g, '$1сновывает' );
r( /((?:^|\s)[оО])тсальн/g, '$1стальн' );
r( /((?:^|\s)[оО])о?(?:тс|ст)ров\b/g, '$1стров' );
r( /((?:^|\s)[оО])ффис/g, '$1фис' );
r( /((?:^|\s)[оО])ффицер/g, '$1фицер' );
r( /((?:^|\s)[оОаА])фф?[еи]ц[еи]?альн/g, '$1фициальн' );
r( /([пП])арано([яиею]|ей)\b/g, '$1араной$2' );
r( /([пП])арно[-\s]перист/g, '$1арноперист' );
r( /((?:^|\s)[пП])[оа]р[оа][шщ]ут(а(?:ми?|х)?|[еуы]|о[мв]?)\b/g, '$1арашют$2' );
r( /((?:^|\s)[Пп])елл?опп?онн?ес/g, '$1елопоннес' );
r( /((?:^|\s)[Пп])еннсиль?ван/g, '$1енсильван' );
r( /((?:^|\s)[пП])ерепес([ьи]|ью|ей|ями?|ях)\b/g, '$1ерепис$2' );
r( /((?:^|\s)[пП])ерефери/g, '$1ерифери' );
r( /([пП])[еи]т[еи]рбу[рг]ск/g, '$1етербургск' );
r( /([пП])ревоначаль/g, '$1ервоначаль' );
r( /((?:^|\s)[пП])[еи]реодическ/g, '$1ериодическ' );
r( /((?:^|\s)[пП])лей-лист/g, '$1лейлист' );
r( /((?:^|\s)[пП])о\sистечению/g, '$1о истечении' );
r( /((?:^|\s)[пП])о-умолчанию/g, '$1о умолчанию' );
r( /([пП])оддан([^сн])/g, '$1одданн$2' );
r( /((?:^|\s)[пП])о(хж|жз)е/g, '$1озже' );
r( /((?:^|\s)[пП])озноват/g, '$1ознават' );
r( /((?:^|\s)[пП])ол(у?)([-\s])года\b/g, '$1ол$2года' );
r( /((?:^|\s)[пП])[оа]мо[шщ]ник(а(?:ми?|х)?|[уеи]|о[мв]?)\b/g, '$1омощник$2' );
r( /((?:^|\s)[пП])[оа]рут?чч?ик/g, '$1оручик' );
r( /((?:^|\s)[пП])одскользн/g, '$1оскользн' );
r( /((?:^|\s)[пП])одчерк(?![ин])/g, '$1очерк' );
r( /((?:^|\s)[пП])очтампт/g, '$1очтамт' );
r( /((?:^|\s)[пП])рвао\b/g, '$1раво' );
r( /((?:^|\s)[пП])редпренимател/g, '$1редпринимател' );
r( /((?:^|\s)[пП])редставля([А-ЯЁа-яё]{1,7})\sиз\sсебя\b/g, '$1редставля$2 собой' );
r( /((?:^|\s)[пП])реди(дущ|стори)/g, '$1реды$2' );
r( /((?:^|\s)[пП])р[еи]з[еи]нтац/g, '$1резентац' );
r( /((?:^|\s)[пП])р[еи]з[еи]дент/g, '$1резидент' );
r( /((?:^|\s)[пП])р[еи][еий]му[шщ]еств/g, '$1реимуществ' );
r( /((?:^|\s)[пП])рислед/g, '$1реслед' );
r( /((?:^|\s)[пП])р[еи]ц[ие]н?дент([уеы]|а(?:ми?|х)?|о[мв]?)\b/g, '$1рецедент$2' );
r( /((?:^|\s)[пП])р[еи]бл[еи]([зж])/g, '$1рибли$2' );
r( /((?:^|\s)[пП])р[еи]в[еи]лег/g, '$1ривилег' );
r( /((?:^|\s)[пП])ревык/g, '$1ривык' );
r( /((?:^|\s)[пП])рийдя\b/g, '$1ридя' );
r( /((?:^|\s)[пП])р[еи]емлим/g, '$1риемлем' );
r( /((?:^|\s)[пП])ридти\b/g, '$1рийти' );
r( /((?:^|\s)[пП])ренадлеж/g, '$1ринадлеж' );
r( /((?:^|\s)[пП])рисваев/g, '$1рисваив' );
r( /((?:^|\s)[пП])рисва[еи]м/g, '$1рисваиваем' );
r( /([пП])рисут?ст?вт?в?/g, '$1рисутств' );
r( /((?:^|\s)[пП])робыва/g, '$1робова' );
r( /((?:^|\s)[пП])ровакац/g, '$1ровокац' );
r( /((?:^|\s)[пП])родюссер/g, '$1родюсер' );
r( /((?:^|\s)[пП])роис?шест?в/g, '$1роисшеств' );
r( /((?:^|\s)[пП])роэкт/g, '$1роект' );
r( /((?:^|\s)[пП])ромо-(акци|материал|менеджер|реклам|тур)/g, '$1ромо$2' );
r( /((?:^|\s)[пП])рофф?есс?ор([уеы]|а(?:ми?|х)?|о[мв]?)\b/g, '$1рофессор$2' );
r( /((?:^|\s)[пП])рофф?есс?оры\b/g, '$1рофессора' );
r( /((?:^|\s)[пП])сихиатор/g, '$1сихиатр' );
r( /((?:^|\s)[пП])ъесс?/g, '$1ьес' );
r( /((?:^|\s)[рР])азведов/g, '$1азведыв' );
r( /но{3,4}браз/g, 'нообраз' );
r( /([рР])а[ий]{1,2}сполком/g, '$1айисполком' );
r( /((?:^|\s)[рР])ассов(?![ае]т|ыв)/g, '$1асов' );
r( /([рР])асс?пал/g, '$1аспал' );
r( /([рР])аспознов/g, '$1аспознав' );
r( /([рР])асс?п[ао]л[ао]г/g, '$1асполаг' );
r( /([рР])асс?п[ао]ло([жг])/g, '$1асполо$2' );
r( /([рР])аспр?остран/g, '$1аспростран' );
r( /((?:^|\s)[рР])астоян/g, '$1асстоян' );
r( /((?:^|\s)[рР])ейтигн?/g, '$1ейтинг' );
r( /((?:^|\s)(?:([Пп]ерв|[Вв]тор|[Тт]рет|[Чч]етв[её]рт|[1-4]-?))[А-ЯЁа-яё]{1,4}\s)Р[еэ]йх/g, '$1рейх' );
r( /([рР])екомменд/g, '$1екоменд' );
r( /((?:^|\s)[рР])[еи]м[еэ]йк/g, '$1емейк' );
r( /((?:^|\s)[рР])енген/g, '$1ентген' );
r( /([рР])оссиийск/g, '$1оссийск' );
r( /((?:^|\s)[рР])[эе]ппер/g, '$1эпер' );
r( /((?:^|\s)[сС])аксафон/g, '$1аксофон' );
r( /((?:^|\s)[сС])аундпродюсер/g, '$1аунд-продюсер' );
r( /((?:^|\s)[сС])аунд-тр[еэ]к/g, '$1аундтрек' );
r( /((?:^|\s)[сС])аунд-чек/g, '$1аундчек' );
r( /((?:^|\s)[сС])(верх|низ)у-в(низ|верх)/g, '$1$2у в$3' );
r( /((?:^|\s)[сС])веого\b/g, '$1воего' );
r( /((?:^|\s)[сС])делан(ы[еймх]|ого|ому?|ая|о[ейю]|ую|ыми?)\b/g, '$1деланн$2' );
r( /((?:^|\s)[сС])[еи][гв]о(ндя|дян)\b/g, '$1егодня' );
r( /((?:^|\s)[сС])егодн[еи]шн/g, '$1егодняшн' );
r( /((?:^|\s)[сС])еребрянн(?!и)/g, '$1еребрян' );
r( /((?:^|\s)[сС])еридин/g, '$1ередин' );
r( /((?:^|\s)[сС])[еи]р[еи]ал([уеы]|а(?:ми?|х)?|о[вм]?)\b/g, '$1ериал$2' );
r( /((?:^|\s)[сС])етлист/g, '$1ет-лист' );
r( /((?:^|\s)[сС])каннер/g, '$1канер' );
r( /((?:^|\s)[сС])(ле|пра)в[ао][-\s]на(пра|ле)в[оа]/g, '$1$2ва на$3во' );
r( /((?:^|\s)[сС])лэнг/g, '$1ленг' );
r( /((?:^|\s)[сС])начало/g, '$1начала' );
r( /((?:^|\s)[сС])овавтор/g, '$1оавтор' );
r( /((?:^|\s)[сС])овмесн/g, '$1овместн' );
r( /((?:^|\s)[сС])оеден/g, '$1оедин' );
r( /((?:^|\s)[сС])ожеле/g, '$1ожале' );
r( /((?:^|\s)[сС])остов([ли])/g, '$1остав$2' );
r( /((?:^|\s)[сС])остовш/g, '$1остоявш' );
r( /((?:^|\s)[сС])очита/g, '$1очета' );
r( /((?:^|\s)[сС])пецефф?ект/g, '$1пецэффект' );
r( /((?:^|\s)[сС])пецеф/g, '$1пециф' );
r( /((?:^|\s)[сС])ссылк(ам?и?|ах|[еиу]|о[йк])\b/g, '$1сылк$2' );
r( /((?:^|\s)[сС])теклян(?![нк]|ист)/g, '$1теклянн' );
r( /([сС])териотип/g, '$1тереотип' );
r( /((?:^|\s)[сС])тоимоть/g, '$1тоимость' );
r( /((?:^|\s)[сС])триммер/g, '$1тример' );
r( /((?:^|\s)[сС])тудентческ/g, '$1туденческ' );
r( /((?:^|\s)[сС])ъэконом/g, '$1эконом' );
r( /((?:^|\s)[тТ])[ао][вф]т[ао]лог/g, '$1автолог' );
r( /((?:^|\s)[Тт])айланд\b/g, '$1аиланд' );
r( /((?:^|\s)[тТ])ем\sни\s?менее?\b/g, '$1ем не менее' );
r( /((?:^|\s)[тТ])ерракт/g, '$1еракт' );
r( /((?:^|\s)[тТ])ерасс/g, '$1еррас' );
r( /((?:^|\s)[тТ])ерр?[еи]тори/g, '$1ерритори' );
r( /((?:^|\s)[тТ])оплев/g, '$1оплив' );
r( /((?:^|\s)[тТ])ормазн/g, '$1ормозн' );
r( /((?:^|\s)[тТ])(о(?:т|го)|а|е(?:м[и]?|х)?)-?же\b/g, '$1$2 же' );
r( /((?:^|\s)[тТ])раффик/g, '$1рафик' );
r( /([тТ])ренеровк/g, '$1ренировк' );
r( /((?:^|\s)[тТ])ретьий\b/g, '$1ретий' );
r( /((?:^|\s)[тТ])рети([хм])\b/g, '$1ретьи$2' );
r( /((?:^|\s)[тТ])ретяя\b/g, '$1ретья' );
r( /((?:^|\s)[тТ])ретее\b/g, '$1ретье' );
r( /((?:^|\s)[тТ])рете(го|м)\b/g, '$1ретье$2' );
r( /([тТ])ройчато[-\s]рассеч/g, '$1ройчаторассеч' );
r( /((?:^|\s)[тТ])руженник/g, '$1руженик' );
r( /((?:^|\s)[тТ])ыс[ие]ч/g, '$1ысяч' );
r( /((?:^|\s)[тТ])ысячилети/g, '$1ысячелети' );
r( /((?:^|\s)[тТ])с?[чщ]?ательн/g, '$1щательн' );
r( /([уУ])зко[-\s](эллиптическ|ланцетн|яйцевидн|линейн|цилиндр|треугольн|ромбическ)/g, '$1зко$2' );
r( /((?:^|\s)[уУ])длинн/g, '$1длин' );
r( /([уУ])достоин/g, '$1достоен' );
r( /((?:^|\s)[уУ])чавств/g, '$1частв' );
r( /((?:^|\s)[уУ])чере/g, '$1чре' );
r( /((?:^|\s)[фФ])едирац/g, '$1едерац' );
r( /((?:^|\s)[фФ])ектова/g, '$1ехтова' );
r( /([Фф])илл?ипп?ин/g, '$1илиппин' );
r( /((?:^|\s)[фФ])илл?осс?ов/g, '$1илософ' );
r( /((?:^|\s)[фФ])иннск/g, '$1инск' );
r( /((?:^|\s)[фФ])рагмен([^т])/g, '$1рагмент$2' );
r( /((?:^|\s)[фФ])рагмет/g, '$1рагмент' );
r( /([фФ])у[нке]ци([яеийюо])/g, '$1ункци$2' );
r( /((?:^|\s)[хХ])эви-/g, '$1еви-' );
r( /([цЦ])ельно\-?крайни/g, '$1ельнокрайны' );
r( /([цЦ])ельно\-?крайне/g, '$1ельнокрайно' );
r( /([цЦ])ельно\-?крайняя/g, '$1ельнокрайная' );
r( /((?:^|\s)[цЦ])е[тн]р(?!ари|ил)/g, '$1ентр' );
r( /((?:^|\s)[цЦ])[еи]лл?индр/g, '$1илиндр' );
r( /((?:^|\s)[чЧ])ео?лвек/g, '$1еловек' );
r( /((?:^|\s)[чЧ])етыре?мя/g, '$1етырьмя' );
r( /((?:^|\s)[чЧ])ерезвычайн/g, '$1резвычайн' );
r( /((?:^|\s)[чЧ])то\sк[ао]саемо\b/g, '$1то касается' );
r( /([чЧ])уй?ств/g, '$1увств' );
r( /([шШ])ироко[\-\s](эллиптическ|обратно|ланцетн|яйцевидн|линейн|цилиндр|треугольн|ромбическ)/g, '$1ироко$2' );
r( /([Шш])туттгарт/g, '$1тутгарт' );
r( /((?:^|\s)[эЭ])ксп[еи]диц[иы]/g, '$1кспедици' );
r( /ксперемент/g, 'ксперимент' );
r( /((?:^|\s)[эЭ])кстримал/g, '$1кстремал' );
r( /((?:^|\s)[эЭ])лл[еи]гантн/g, '$1легантн' );
r( /([эЭ])лл?ектрофи?((?:ка)?ц[А-ЯЁа-яё]{1,10})\b/g, '$1лектрифи$2' );
r( /((?:^|\s)[эЭ])лектронник/g, '$1лектроник' );
r( /((?:^|\s)[эЭ])фект/g, '$1ффект' );
r( /((?:^|\s)[яЯ])кори\b/g, '$1коря' );
r( /([аА])(бба|ген|гна|двока|дъюнк|дъютан|кроба|мана|нахоре|ристокра|рхимандри|спиран)т?ст?в/g, '$1$2тств' );
r( /([бБ])(анкро|анкру|ароне|езграмо|езде|езотве|есносвя|еспамя|еспрепя|еспу|лагоприве|лагоприя|ога)т?ст?в/g, '$1$2тств' );
r( /([вВ])(ероотме|заимоотве|идеопира|иршеплё|иршепле|олоки|оспрепя|себра|сесвя|ьюни)т?ст?в/g, '$1$2тств' );
r( /([гГ])(оттенто)т?ст?в/g, '$1$2тств' );
r( /([дД])(вубра|екаден|епута|еся|илетан|иссиден|оброхо|олголе|онкихо|оцен)т?ст?в/g, '$1$2тств' );
r( /([жЖ])(ени|ивогло|изнепрису|мо)т?ст?в/g, '$1$2тств' );
r( /([зЗ])(апанибра|вездоче|лобы|лопамя)т?ст?в/g, '$1$2тств' );
r( /([иИ])(дио|езуи|ллюмина|мени|ндепенден|нститу|нтеллиген|нтендан|нформаген|покри|скарио)т?ст?в/g, '$1$2тств' );
r( /([кК])(андида|апитулян|астра|вартиран|верулян|огна|оке|омедиан|омендан|онтраген|ришнаи)т?ст?в/g, '$1$2тств' );
r( /([лЛ])(ауреа|ега|юбопы)т?ст?в/g, '$1$2тств' );
r( /([мМ])(агна|айора|алоле|аркиза|аркитан|ецена|ногобра|ноголе|огу|онофели|онофизи|онофиси)т?ст?в/g, '$1$2тств' );
r( /([нН])(аве|апу|еблагоприя|едоброхо|езлопамя|екру|елюбопы|енасы|епамя|епрепя|еприя|есоотве)т?ст?в/g, '$1$2тств' );
r( /([оО])(днобра|пря|тве|тсу|фи)т?ст?в/g, '$1$2тств' );
r( /([пП])(анибра|арази|асквилян|атрона|едан|ервобра|ервопрису|ира|лу|облагоприя|олубеспамя|олусиро|рактикан|резиден|рела|репя|ресвя|риве|рису|рия|розели|рокля|ролетариа|ротестан|устосвя|ы)т?ст?в/g, '$1$2тств' );
r( /([рР])(адиопира|аспу|ебя|еген|езиден|екру|енега|еформа|ецензен|ифмоплё|ифмопле|удозна)т?ст?в/g, '$1$2тств' );
r( /([сС])(амобра|амохо|вятота|ектан|ибари|иро|коробога|коробра|ледопы|обра|олда|оотве|опрису|опу|пекулян|рамо|тихоплё|тихопле|тропо|уббо|уесвя|уе)т?ст?в/g, '$1$2тств' );
r( /([тТ])(а|езоимени|рансаген|ураген)т?ст?в/g, '$1$2тств' );
r( /([уУ])(ниа|ю)т?ст?в/g, '$1$2тств' );
r( /([фФ])(а|лагеллан)т?ст?в/g, '$1$2тств' );
r( /([чЧ])(етверобра)т?ст?в/g, '$1$2тств' );
r( /([шШ])(алопу|ляхе)т?ст?в/g, '$1$2тств' );
r( /([эЭ])(мигран|сте)т?ст?в/g, '$1$2тств' );
r( /([юЮ])(но)т?ст?в/g, '$1$2тств' );
r( /((?:^|\s)(?:[сС]емь|[сС]тать|[сС]удь|[сС]камь|[зЗ]емл|[зЗ]ме|[сС]винь|[бБ]рон|[чЧ]ешу))ей\b/g, '$1ёй' );
r( /((?:^|\s)(?:[сС]во|[дД]н|[вВ]дво|[кК]он|[кК]опь|[жЖ]иль))ем\b/g, '$1ём' );
r( /((?:^|\s)(?:[рР]азреш|[зЗ]апре[щш]|[вВ]нес|[оО]тклон))ен(\b|н)/g, '$1ён$2' );
r( /((?:^|\s)[аА])ктер/g, '$1ктёр' );
r( /((?:^|\s)[бБ])ерез([ауеы]|ой|а[мх]|ами|ов[А-ЯЁа-яё]{2,3})?\b/g, '$1ерёз' );
r( /((?:^|\s)[бБ])ъ[её]т/g, '$1ьёт' );
r( /((?:^|\s)(?:[вВоО]|[нН]а|[пП]ри))\sнем\b/g, '$1 нём' );
r( /((?:^|\s)[вВ])арен(ая|о([ейю]|го|му?)|ы([ейх]|ми?)|ую)\b/g, '$1арён$2' );
r( /((?:^|\s)[вВ])ертолет/g, '$1ертолёт' );
r( /([вВ])люблен(?![аоыи])/g, '$1люблён' );
r( /([вВ])ооружен(?![иаоы])/g, '$1ооружён' );
r( /((?:^|\s)[вВ])перед\b/g, '$1перёд' );
r( /((?:^|\s)[вВ])ремен\b/g, '$1ремён' );
r( /((?:^|\s)[вВ])се\sбольш([ие][йю]|ая|е[гме])/g, '$1сё больш$2' );
r( /((?:^|\s)[вВ])с[её]-?\s*таки\b/g, '$1сё-таки' );
r( /((?:^|\s)[гГ])осподарём\b/g, '$1осподарем' );
r( /((?:^|\s)[нН]е)?([дД])алек(и[ймех]|ого|ому?|ая|о[йе]|ую|ими)\b/g, '$1$2алёк$3' );
r( /((?:^|\s)[дД])ешев(ы[еймх]|ого|ому?|ая|о[ейю]|ую|ыми?|к[аие])\b/g, '$1ешёв$2' );
r( /((?:^|\s)[дД])ешев([оы]?)\b/g, '$1ёшев$2' );
r( /((?:^|\s)[дД])[еи]р[еи]ж[еёо]р/g, '$1ирижёр' );
r( /((?:^|\s)[нН]?)([еЕ])е\b/g, '$1$2ё' );
r( /((?:^|\s)[еЕ])[шщ]е\b/g, '$1щё' );
r( /((?:^|\s)[жЖ])еребен/g, '$1еребён' );
r( /((?:^|\s)[жЖ])[ое]лт((ая|о[ейюм]|го|ы[ейхм]|ую)\b|о-)/g, '$1ёлт$2' );
r( /([жЖ])[ое]стк(и[еймх]|ая|о[еймю]?|ому|ую|ого|ими|ости|остью?|остей|остями?|остях)\b/g, '$1ёстк$2' );
r( /((?:^|\s)[зЗ])асч[её]т\b/g, '$1а счёт' );
r( /креплен(\b|н)/g, 'креплён$1' );
r( /((?:^|\s)[зЗ])елен((ая|о[еймю]|ого|ы[ейхм]|ую)\b|о-)/g, '$1елён$2' );
r( /((?:^|\s)(?:[пП]о|[зЗ]а))чет(?!т)/g, '$1чёт' );
r( /((?:^|\s)[иИ])зм[еи]нен(\b|н)/g, '$1зменён$2' );
r( /((?:^|\s)(?:[иИ]м|[эЭ]кс))портер/g, '$1портёр' );
r( /((?:^|\s)[кК])азнен(?![аоы])/g, '$1азнён' );
r( /((?:^|\s)[Кк])ишинев/g, '$1ишинёв' );
r( /((?:^|\s)[Нн]ел|[лЛ])егк(и[еймх]|ая|о[еймю]|ому|ую|ого|ими)\b/g, '$1ёгк$2' );
r( /((?:^|\s)[мМ])аневр(?![ио])/g, '$1анёвр' );
r( /((?:^|\s)[мМ])ертв(ы[ейхм]|ого|ому?|ая|о[ейю]|ую|ыми)\b/g, '$1ёртв$2' );
r( /((?:^|\s)[мМ])иномет/g, '$1иномёт' );
r( /((?:^|\s)[Мм])огилев(?![сце])/g, '$1огилёв' );
r( /((?:^|\s)[мМ])олодеж/g, '$1олодёж' );
r( /((?:^|\s)(?:[нН]а\s|[пП]ри))чем\b/g, '$1чём' );
r( /гражден(?![иаоы])/g, 'граждён' );
r( /([нН])адеж(?![ди])/g, '$1адёж' );
r( /((?:^|\s)[нН])амек(?!а[етюляв]|н)/g, '$1амёк' );
r( /((?:^|\s)[нН])аселенн(?![яюі])/g, '$1аселённ' );
r( /((?:^|\s)[оО]т|[пП]ри|[зЗнН]а|[уУ]|[пП]ере|[сС]|[дД]о)([нН])ес(\b|ш)/g, '$1$2ёс$3' );
r( /((?:^|\s)[нН])[ие]\s?при\s?ч[её]м/g, '$1и при чём' );
r( /ночевк/g, 'ночёвк' );
r( /((?:^|\s)[оО])б[ьъ]ед[ие]ненн/g, '$1бъединённ' );
r( /((?:^|\s)[оО])б[ъь]?[её]м(а(?:ми?|х)?|[уеын]|о[вм]?)\b/g, '$1бъём$2' );
r( /((?:^|\s)[оО])дноименн/g, '$1дноимённ' );
r( /([оО])сведомлен(?![аоыи])/g, '$1сведомлён' );
r( /((?:^|\s)[оО])(т?)стает(ся)?\b/g, '$1$2стаёт$3' );
r( /([сС])оединенн/g, '$1оединённ' );
r( /((?:^|\s)[оО])зер(\b|а[мх]и?)/g, '$1зёр$2' );
r( /((?:^|\s)[оО])ленек\b/g, '$1ленёк' );
r( /([оО])пределен(\b|н)/g, '$1пределён$2' );
r( /((?:^|\s)(?:[уУ]|[оО]т))чет(?!вер)/g, '$1чёт' );
r( /бежден(?![аоыи])/g, 'беждён' );
r( /((?:^|\s)[пП])овлек(\b|ш)/g, '$1овлёк$2' );
r( /твержден(?![аоыи])/g, 'тверждён' );
r( /((?:^|\s)[пП])од[ъь]?[её]м(а(?:ми?|х)?|[уеын]|о[вм]?)\b/g, '$1одъём$2' );
r( /([пП]ри|[пП]ровоз)глашен(?![аоыи])/g, '$1глашён' );
r( /((?:^|\s)[пП]ри|[оО]т|[вВ]ы|[пП]ере|[пП]од|[оО]б|[рР]аз|[сС]|[сС]оз|[нН]ад|[нН]едо)?([дД])ает(ся)?\b/g, '$1$2аёт$3' );
r( /((?:^|\s)[пП])р[еи]зер(а(?:ми?|х)?|[уеы]|о[мв]?)\b/g, '$1ризёр$2' );
r( /((?:^|\s)[пП])ролет(ах?|[еуы]|о[мв]|ами?)?\b/g, '$1ролёт$2' );
r( /((?:^|\s)[пП])улемет/g, '$1улемёт' );
r( /((?:^|\s)[рР])азветл([её])н/g, '$1азветвл$2н' );
r( /((?:^|\s)[рР])азвернут(?!ь)/g, '$1азвёрнут' );
r( /((?:^|\s)[рР])аспр?остерт/g, '$1аспростёрт' );
r( /([рР])аспр?остранен(?![иаоы])/g, '$1аспространён' );
r( /([рР])ассеченн/g, '$1ассечённ' );
r( /((?:^|\s)[рР])ебен([ок])/g, '$1ебён$2' );
r( /([рР])[ие]ж[ие]сс?[её]р/g, '$1ежиссёр' );
r( /((?:^|\s)[рР])ешетк/g, '$1ешётк' );
r( /([рР])ожденн(?!и)/g, '$1ождённ' );
r( /((?:^|\s)[рР])укоположен(?![иаоы])/g, '$1укоположён' );
r( /((?:^|\s)[сС])амолет/g, '$1амолёт' );
r( /((?:^|\s)[сС])вое\b/g, '$1воё' );
r( /([сС])[еи]р[ьъ]езн/g, '$1ерьёзн' );
r( /((?:^|\s)[сС])естер\b/g, '$1естёр' );
r( /([сС])к[ур][ру]пул[её]зн/g, '$1крупулёзн' );
r( /([сС])[ьъ]ем(о?)([кнчщ])/g, '$1ъём$2$3' );
r( /([сС])чет\b/g, '$1чёт' );
r( /((?:^|\s)[тТ])аежн/g, '$1аёжн' );
r( /((?:^|\s)[тТ])верд(ы[ейх]|ая|о[ейм]|ому|ую|ого|ыми?)/g, '$1вёрд$2' );
r( /((?:^|\s)[тТ])емн((ы[ейхм]|ая|о[ейюм]|ого|ую)\b|о-)/g, '$1ёмн$2' );
r( /((?:^|\s)(?:т|[чЧ]еты))ре([хм])(?![яи]|о[лр]|ат|арн)/g, '$1рё$2' );
r( /([тТ])яж[ое]л(ы[ейх]|ая|о[ейм]|ому|ую|ого|ыми?)\b/g, '$1яжёл$2' );
r( /даленн/g, 'далённ' );
r( /((?:^|\s)[уУ])празднен(\b|н)/g, '$1празднён$2' );
r( /((?:^|\s)[уУ])чеб([аеуы]|ой)\b/g, '$1чёб$2' );
r( /((?:^|\s)[уУ])чен(ы[йемх]|ого|ому?|ая|о[йе]|ую|ыми)/g, '$1чён$2' );
r( /((?:^|\s)[чЧ])етверт(ая|о[гейм]|ы[еймх])/g, '$1етвёрт$2' );
r( /((?:^|\s)[нН]е)?([чЧ])етк/g, '$1$2ётк' );
r( /([шШ])епот(?!н[яюеиё]|ок|ко|ат)/g, '$1ёпот' );
r( /([пП]р[ио]|[нНзЗ]а|[уУ]|[вВдД]о|[оО]то)шел(ся)?\b/g, '$1шёл$2' );
r( /((?:^|\s)[шШ])офер([уеы]|о[мв]|ами?|ах)/g, '$1офёр' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))([бБ])рошур(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1рошюр' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))\b([бБ])[юие]лл?[еюи]тен(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1юллетен' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))([ау])([ею])ться(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1$2тся' );
r( /(?<=(?:[^іІўЎґҐ]{30}))([дД])аку?мент(?=(?:[^іІўЎґҐ]{30}))/g, '$1окумент' );
r( /(?<=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))\b([кК])омм?унн?(?!\b|аль\b|ан|ар[ди]|ерос|и[гд]|икас)(?=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1оммун' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))([кК])ореспон?ден(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1орреспонден' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))\b([мМ])олюск(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1оллюск' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))([оО])бласнт?(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1бластн' );
r( /(?<=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))\b([оО])куп(ир|ац)(?=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1ккуп$2' );
r( /(?<=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))\b([оО])позиц(?=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1ппозиц' );
r( /(?<=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))([пП])аралл?елл?(?=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1араллел' );
r( /(?<=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))\b(?!Партнершип)([пП])артнер(?=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1артнёр' );
r( /(?<=(?:[^ђЂjЈљЉњЊЋћџЏ]{30}\b))([пП])реправ(?=(?:[^ђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1ереправ' );
r( /(?<=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))\b([пП])роцес(?!с)(?=(?:[^іїєґІЇЄҐukђЂjЈљЉњЊЋћџЏ]{30}))/g, '$1роцесс' );
r( /(?<=(?:[^іІўЎґҐ]{30}))([рР])аён(?=(?:[^іІўЎґҐ]{30}))/g, '$1айон' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))\b([пП]ерво)?([Сс])вященик(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1$2вященник' );
r( /(?<=(?:[^іїєґІЇЄҐuk]{30}))\b([уУ])часник(?=(?:[^іїєґІЇЄҐuk]{30}))/g, '$1частник' );
r( /(?<=(?:[^іІўЎґҐ]{30}))([фФ])ранцус?[зс]к(?=(?:[^іІўЎґҐ]{30}))/g, '$1ранцузск' );
r( /(?<=(?:[^әӘғҒқҚңҢөӨұҰүҮҺһіІ]{30}))([шШ])ахтер(?=(?:[^әӘғҒқҚңҢөӨұҰүҮҺһіІ]{30}))/g, '$1ахтёр' );

});

	// Запуск скрипта. Уведомления
	// Check what's in the first parameter
	var text;
	var isInput;
	var $input;
	if ( typeof inputOrText === 'string' ) {
		text = inputOrText;
	} else {
		isInput = (
			inputOrText &&
			(
				( inputOrText.nodeType && inputOrText.value !== undefined ) || // node
				( inputOrText.prop && inputOrText.prop( 'nodeType' ) ) // объект jQuery
			)
		);
		$input = $( isInput ? inputOrText : '#wpTextbox1' );
	}

	var txt = '';
	var hidden = [];
	var winScroll = document.documentElement.scrollTop;
	var caretPosition;
	if ( $input ) {
		$input.focus();
		
		caretPosition = $input.textSelection( 'getCaretPosition', { startAndEnd: true } );
		if ( caretPosition ) {
            var $cm = $( '#wpTextbox1' ).next( '.CodeMirror' );
            var $CodeMirrorVscrollbar = $cm.length ? $cm.find( '.CodeMirror-vscrollbar' ) : $( [] );
			var textScroll = ( $CodeMirrorVscrollbar.length ? $CodeMirrorVscrollbar : $input )
				.scrollTop();
				
			// Чтобы создать уведомление, изменился ли текст после нажатия кнопки,
			// 1) нужно проанализировать текст до и после. Получаем текст до обработки:
			var textBeforeWf = $input.textSelection( 'getContents' );
				
			if ( caretPosition[0] === caretPosition[1] ) {
				processAllText();
			} else {
				txt = $input.textSelection( 'getSelection' );
				processText();
				// replaceSelection doesn't work with MediaWiki 1.30 in case this gadget is loaded
				// from other wiki
				$input.textSelection( 'encapsulateSelection', {
					replace: true,
					peri: txt
				} );
				// In CodeMirror, the selection isn't preserved, so we do it explicitly
				$input.textSelection( 'setSelection', {
					start: caretPosition[0],
					end: caretPosition[0] + txt.length
				} );
			}
			
			// 2) получить текст после нажатия кнопки Викификатора:
			var textAfterWf = $input.textSelection( 'getContents' );
			
			// 3) сравнить до и после. Уведомить
			if ( textBeforeWf === textAfterWf ) {
				mw.notify( '✕ Викификатор не внёс изменений.', {
					type: 'warn', // жёлтое
					tag: 'wf-no-change-notification' // Тег для отключения уведомления в CSS при желании.
				} );
			} else {
				// Логирование изменений
console.groupCollapsed( 'Викификатор внёс изменения' ); 
console.log( 'Было:', textBeforeWf );
console.log( 'Стало:', textAfterWf );
console.groupEnd();
				mw.notify( '✓ Викификатор внёс изменения.', {
					type: 'success', // зелёное
					tag: 'wf-some-change-notification' // Тег для отключения уведомления в CSS при желании.
				} );
			}
			// Конец кода для уведомлений
			
			( $CodeMirrorVscrollbar.length ? $CodeMirrorVscrollbar : $input )
				.scrollTop( textScroll );
		// If something went wrong
		} else if ( confirm( strings.fullText ) ) {
			processAllText();
		}
	} else {
		processAllText();
		return text;
	}

	// scroll back, for 2017 wikitext editor, IE, Opera
	document.documentElement.scrollTop = winScroll;
};

// Кнопка на панели инструментов
// Примечание: Если после изменения скрипта кнопка не появилась, дело не в самой кнопке. См. историю правок для выявления конфликта
function registerWikificatorTool() {
	registerTool( {
		name: 'wikificator',
		position: 100,
		title: strings.name,
		label: strings.tooltip,
		callback: Wikify,
		classic: {
			icon: '//wiki.teamfortress.com/w/images/6/60/User_Liverfull_sig.png',
		},
		visual: {
			icon: '//wiki.teamfortress.com/w/images/6/60/User_Liverfull_sig.png',
			modes: [ 'source' ],
			addRightAway: true,
		},
	} );
}

if ( mw.config.get( 'wgServerName' ) === 'ru.wikipedia.org' ) {
	registerWikificatorTool();
} else {
	$.when(
		mw.loader.using( [ 'mediawiki.util', 'user.options' ] ),
		$.getScript( 'https://ru.wikipedia.org/w/index.php?title=MediaWiki:Gadget-registerTool.js&action=raw&ctype=text/javascript' )
	).done( registerWikificatorTool );
}

// Ctrl+Alt+W на Windows, Ctrl+Shift+W на Mac
$( '#editform' ).on( 'keydown', function ( e ) {
	if (
		e.ctrlKey &&
		!e.metaKey && // не клавиша ⊞ и не ⌘
		(clientProfile.platform === 'mac' ? e.shiftKey && !e.altKey : !e.shiftKey && e.altKey) &&
		e.keyCode === 87 // клавиша W
	) {
		Wikify();
	}
} );

}() );
$(document).ready(function() {
	$(".WikifyDontWork").hide(); $(".WikifyWorks").show(); // Проверка статуса работоспособности Викификатора. Используется для юзербокса
});
// </nowiki>