lotin-kirill 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +1 -1
- package/pkg/LICENSE +21 -0
- package/pkg/dist-node/index.js +42 -12
- package/pkg/dist-node/index.js.map +1 -1
- package/pkg/dist-src/exceptionalsCollection.js +24 -11
- package/pkg/dist-src/index.js +5 -1
- package/pkg/dist-src/utils.js +18 -3
- package/pkg/dist-types/exceptionalsCollection.d.ts +1 -1
- package/pkg/dist-types/utils.d.ts +3 -0
- package/pkg/dist-umd/index.min.js +1 -1
- package/pkg/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Diyorbek Sadullaev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lotin-kirill",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Transform Uzbek latin characters into Uzbek-cyrillic characters or vice versa. O'zbekcha so'zlarni lotin alifbosidan kirill alifbosiga (yoki aksincha) o'girish.",
|
|
5
5
|
"author": "Diyorbek Sadullaev <diyorbek3377@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
package/pkg/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Diyorbek Sadullaev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/pkg/dist-node/index.js
CHANGED
|
@@ -146,6 +146,10 @@ const CYRILLIC_CHARACTERS = {
|
|
|
146
146
|
['ъ']: APOSTROPHE
|
|
147
147
|
};
|
|
148
148
|
|
|
149
|
+
const TURNED_COMMA_MATCHER = /[og][ʻʼ’'`‘´]/gi;
|
|
150
|
+
const APOSTROPHE_MATCHER = /[ʻʼ’'`‘´]/gi;
|
|
151
|
+
const REGEXP_ESC_MATCHER = /[-\/\\^$*+?.()|[\]{}]/g;
|
|
152
|
+
const ROMAN_NUMBER_MATCHER = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/;
|
|
149
153
|
function isLowerCase(char) {
|
|
150
154
|
return char.toLowerCase() === char;
|
|
151
155
|
}
|
|
@@ -167,13 +171,22 @@ function isURL(word) {
|
|
|
167
171
|
return anchorme.list(word).length > 0;
|
|
168
172
|
}
|
|
169
173
|
function escapeRegex(expString) {
|
|
170
|
-
return expString.replace(
|
|
174
|
+
return expString.replace(REGEXP_ESC_MATCHER, '\\$&');
|
|
171
175
|
}
|
|
172
176
|
function endsWithSoftSign(word) {
|
|
173
177
|
return /ь$/i.test(word);
|
|
174
178
|
}
|
|
179
|
+
function dropEndSoftSign(word) {
|
|
180
|
+
return word.replace(/ь$/i, '');
|
|
181
|
+
}
|
|
175
182
|
function isRomanNumber(word) {
|
|
176
|
-
return
|
|
183
|
+
return ROMAN_NUMBER_MATCHER.test(word);
|
|
184
|
+
}
|
|
185
|
+
function normalizeTurnedComma(word) {
|
|
186
|
+
return word.replace(TURNED_COMMA_MATCHER, matched => matched.charAt(0) + TURNED_COMMA);
|
|
187
|
+
}
|
|
188
|
+
function normalizeApostrophe(word) {
|
|
189
|
+
return word.replace(APOSTROPHE_MATCHER, APOSTROPHE);
|
|
177
190
|
}
|
|
178
191
|
|
|
179
192
|
const CH_MATCHER = /Ч/gi;
|
|
@@ -292,7 +305,10 @@ class ExceptionalsCollection {
|
|
|
292
305
|
// TODO: Optimize for duplicates
|
|
293
306
|
exceptions.forEach(pair => {
|
|
294
307
|
if (pair && pair[0] && pair[1]) {
|
|
295
|
-
this.
|
|
308
|
+
const normalizedPair = this.normalizeCharactersForLatin(pair);
|
|
309
|
+
this.collection.push(...this.generateWordCasingVariants(normalizedPair));
|
|
310
|
+
} else {
|
|
311
|
+
throw new Error(`Invalid exceptional pair ${pair}`);
|
|
296
312
|
}
|
|
297
313
|
});
|
|
298
314
|
}
|
|
@@ -301,6 +317,11 @@ class ExceptionalsCollection {
|
|
|
301
317
|
this.collection = [];
|
|
302
318
|
}
|
|
303
319
|
|
|
320
|
+
normalizeCharactersForLatin([latin, cyrillic]) {
|
|
321
|
+
const normalizedLatin = normalizeTurnedComma(normalizeApostrophe(latin));
|
|
322
|
+
return [normalizedLatin, cyrillic];
|
|
323
|
+
}
|
|
324
|
+
|
|
304
325
|
generateWordCasingVariants([latin, cyrillic]) {
|
|
305
326
|
return [[latin.toLowerCase(), cyrillic.toLowerCase()], [latin.toUpperCase(), cyrillic.toUpperCase()], [capitalize(latin), capitalize(cyrillic)]];
|
|
306
327
|
}
|
|
@@ -314,13 +335,6 @@ class ExceptionalsCollection {
|
|
|
314
335
|
};
|
|
315
336
|
}
|
|
316
337
|
|
|
317
|
-
normalizeEndSoftSign(exceptional) {
|
|
318
|
-
const {
|
|
319
|
-
replacement
|
|
320
|
-
} = exceptional;
|
|
321
|
-
exceptional.replacement = replacement.substring(0, replacement.length - 1);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
338
|
findInCollection(word, source) {
|
|
325
339
|
let exceptional;
|
|
326
340
|
let alternative; // If the word is typed with wrong letter-casing, default to lower-case or capitalize
|
|
@@ -338,12 +352,24 @@ class ExceptionalsCollection {
|
|
|
338
352
|
exceptional = {
|
|
339
353
|
exceptionalWord,
|
|
340
354
|
replacement
|
|
341
|
-
};
|
|
355
|
+
}; // Drop soft sign of exceptional if the source word is latin and has suffix
|
|
342
356
|
|
|
343
357
|
if (source === 'latin' && endsWithSoftSign(replacement) && word.length !== exceptionalWord.length) {
|
|
344
|
-
|
|
358
|
+
exceptional.replacement = dropEndSoftSign(replacement);
|
|
345
359
|
}
|
|
346
360
|
|
|
361
|
+
return {
|
|
362
|
+
exceptional
|
|
363
|
+
};
|
|
364
|
+
} // Check for exceptional case where the source word is cyrillic with suffix
|
|
365
|
+
// and its soft sign is dropped
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
if (source === 'cyrillic' && endsWithSoftSign(exceptionalWord) && word.length !== exceptionalWord.length && word.startsWith(dropEndSoftSign(exceptionalWord))) {
|
|
369
|
+
exceptional = {
|
|
370
|
+
exceptionalWord: dropEndSoftSign(exceptionalWord),
|
|
371
|
+
replacement
|
|
372
|
+
};
|
|
347
373
|
return {
|
|
348
374
|
exceptional
|
|
349
375
|
};
|
|
@@ -491,6 +517,10 @@ class Transliterator {
|
|
|
491
517
|
}
|
|
492
518
|
|
|
493
519
|
handleExceptional(word, source) {
|
|
520
|
+
if (source === 'latin') {
|
|
521
|
+
word = normalizeTurnedComma(normalizeApostrophe(word));
|
|
522
|
+
}
|
|
523
|
+
|
|
494
524
|
const exceptional = this.exceptionalsCollection.findCase(word, source);
|
|
495
525
|
|
|
496
526
|
if (exceptional) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../dist-src/characters.js","../dist-src/utils.js","../dist-src/cyrillic.js","../dist-src/exceptionalsCollection.js","../dist-src/latin.js","../dist-src/index.js"],"sourcesContent":["export const APOSTROPHE = '\\u02bc';\nexport const TURNED_COMMA = '\\u2018';\nexport const LATIN_CHARACTERS = {\n ['A']: 'А',\n ['a']: 'а',\n ['B']: 'Б',\n ['b']: 'б',\n ['D']: 'Д',\n ['d']: 'д',\n ['E']: 'Е',\n ['e']: 'е',\n ['F']: 'Ф',\n ['f']: 'ф',\n ['G']: 'Г',\n ['g']: 'г',\n ['H']: 'Ҳ',\n ['h']: 'ҳ',\n ['I']: 'И',\n ['i']: 'и',\n ['J']: 'Ж',\n ['j']: 'ж',\n ['K']: 'К',\n ['k']: 'к',\n ['L']: 'Л',\n ['l']: 'л',\n ['M']: 'М',\n ['m']: 'м',\n ['N']: 'Н',\n ['n']: 'н',\n ['O']: 'О',\n ['o']: 'о',\n ['P']: 'П',\n ['p']: 'п',\n ['Q']: 'Қ',\n ['q']: 'қ',\n ['R']: 'Р',\n ['r']: 'р',\n ['S']: 'С',\n ['s']: 'с',\n ['T']: 'Т',\n ['t']: 'т',\n ['U']: 'У',\n ['u']: 'у',\n ['V']: 'В',\n ['v']: 'в',\n ['X']: 'Х',\n ['x']: 'х',\n ['Y']: 'Й',\n ['y']: 'й',\n ['Z']: 'З',\n ['z']: 'з'\n};\nexport const CYRILLIC_CHARACTERS = {\n ['А']: 'A',\n ['а']: 'a',\n ['Б']: 'B',\n ['б']: 'b',\n ['Д']: 'D',\n ['д']: 'd',\n ['Е']: 'E',\n ['е']: 'e',\n ['Ф']: 'F',\n ['ф']: 'f',\n ['Г']: 'G',\n ['г']: 'g',\n ['Ҳ']: 'H',\n ['ҳ']: 'h',\n ['И']: 'I',\n ['и']: 'i',\n ['Ж']: 'J',\n ['ж']: 'j',\n ['К']: 'K',\n ['к']: 'k',\n ['Л']: 'L',\n ['л']: 'l',\n ['М']: 'M',\n ['м']: 'm',\n ['Н']: 'N',\n ['н']: 'n',\n ['О']: 'O',\n ['о']: 'o',\n ['П']: 'P',\n ['п']: 'p',\n ['Қ']: 'Q',\n ['қ']: 'q',\n ['Р']: 'R',\n ['р']: 'r',\n ['С']: 'S',\n ['с']: 's',\n ['Т']: 'T',\n ['т']: 't',\n ['У']: 'U',\n ['у']: 'u',\n ['В']: 'V',\n ['в']: 'v',\n ['Х']: 'X',\n ['х']: 'x',\n ['Й']: 'Y',\n ['й']: 'y',\n ['З']: 'Z',\n ['з']: 'z',\n ['Ў']: `O${TURNED_COMMA}`,\n ['ў']: `o${TURNED_COMMA}`,\n ['Ғ']: `G${TURNED_COMMA}`,\n ['ғ']: `g${TURNED_COMMA}`,\n ['Ш']: 'Sh',\n ['ш']: 'sh',\n ['Ч']: 'Ch',\n ['ч']: 'ch',\n ['Ё']: 'Yo',\n ['ё']: 'yo',\n ['Ц']: 'S',\n ['ц']: 's',\n ['Ь']: '',\n ['ь']: '',\n ['Э']: 'E',\n ['э']: 'e',\n ['Ю']: 'Yu',\n ['ю']: 'yu',\n ['Я']: 'Ya',\n ['я']: 'ya',\n ['Ъ']: APOSTROPHE,\n ['ъ']: APOSTROPHE\n};\nexport const CYRILLIC_LETTER = `\\u0400-\\u04FF`;\nexport const CYRILLIC_VOVEL = `аоэеиуўёюя`;\nexport const LATIN_LETTER = `a-z`;\nexport const LATIN_VOVEL = `aeiou`;","import anchorme from 'anchorme';\nexport function isLowerCase(char) {\n return char.toLowerCase() === char;\n}\nexport function normalizeCase(char, assimilateTo) {\n return isLowerCase(assimilateTo) ? char.toLowerCase() : char.toUpperCase();\n}\nexport function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();\n} // Detect only alphabetical letters, excluding apostrophe(')\n\nexport function isLetter(char) {\n if (typeof char === 'string') {\n return /^[a-z\\u0400-\\u04FF]+$/i.test(char);\n }\n\n return false;\n}\nexport function isVovel(char) {\n return /[аоэеиуўёюяaeiou]/i.test(char);\n}\nexport function isURL(word) {\n return anchorme.list(word).length > 0;\n}\nexport function escapeRegex(expString) {\n return expString.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\nexport function endsWithSoftSign(word) {\n return /ь$/i.test(word);\n}\nexport function isRomanNumber(word) {\n return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\\.|\\))?$/.test(word);\n}","import { APOSTROPHE, CYRILLIC_CHARACTERS } from \"./characters.js\";\nimport { capitalize, isLetter, isLowerCase, normalizeCase } from \"./utils.js\";\nconst CH_MATCHER = /Ч/gi;\nconst SH_MATCHER = /Ш/gi;\nconst YE_START_MATCHER = /^Е/gi;\nconst YE_MATCHER = /Е/gi;\nconst YO_MATCHER = /Ё/gi;\nconst YU_MATCHER = /Ю/gi;\nconst YA_MATCHER = /Я/gi;\nconst YE_REPETITIVE = /е{3,}/gi;\nconst YE_AFTER_SOFT_MATCHER = /[ьъ]е/gi;\nconst YE_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]е/gi;\nconst TS_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]ц/gi;\nconst O_AFTER_SOFT_MATCHER = /ьо/gi;\nconst S_H_MATCHER = /сҳ/gi;\nconst APOSTROPHE_COLLISION_MATCHER = /[ўғ]ъ/gi;\n\nfunction normalizeYeRepetitive(matchString) {\n return matchString.replace(YE_MATCHER, str => CYRILLIC_CHARACTERS[str] || str);\n}\n\nfunction normalizeYeAfterSoft(matchString) {\n return normalizeCase('ye', matchString.charAt(1));\n}\n\nfunction normalizeYeAfterVowel(matchString) {\n return matchString.charAt(0) + normalizeCase('ye', matchString.charAt(1));\n}\n\nfunction normalizeYoAfterSoft(matchString) {\n return normalizeCase('yo', matchString.charAt(1));\n}\n\nfunction normalizeApostropheCollision(matchString) {\n return matchString.charAt(0);\n}\n\nfunction normalizeTsAfterVowel(matchString) {\n return matchString.charAt(0) + normalizeCase('ts', matchString.charAt(1));\n}\n\nfunction normalizeS_H(matchString) {\n return normalizeCase('s', matchString.charAt(0)) + APOSTROPHE + normalizeCase('h', matchString.charAt(1));\n}\n\nfunction normalizeBigramCasing(word, matcher, latinBigram) {\n return word.replace(matcher, (matchString, index) => {\n if (isLowerCase(matchString)) {\n return latinBigram.toLowerCase();\n }\n\n if (!isLetter(word[index - 1]) && !isLetter(word[index + 1])) {\n return capitalize(latinBigram);\n } // Assimilate to the next letter\n\n\n const assimilator = isLetter(word[index + 1]) && word[index + 1];\n\n if (assimilator) {\n return isLowerCase(assimilator) ? capitalize(latinBigram) : latinBigram.toUpperCase();\n }\n\n return latinBigram.toUpperCase();\n });\n}\n\nfunction replaceSpecials(word) {\n word = normalizeBigramCasing(word, CH_MATCHER, 'CH');\n word = normalizeBigramCasing(word, SH_MATCHER, 'SH');\n word = normalizeBigramCasing(word, YE_START_MATCHER, 'YE');\n word = normalizeBigramCasing(word, YO_MATCHER, 'YO');\n word = normalizeBigramCasing(word, YU_MATCHER, 'YU');\n word = normalizeBigramCasing(word, YA_MATCHER, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+\n\n word = word.replace(YE_REPETITIVE, normalizeYeRepetitive);\n return word.replace(YE_AFTER_SOFT_MATCHER, normalizeYeAfterSoft).replace(YE_AFTER_VOWEL_MATCHER, normalizeYeAfterVowel).replace(O_AFTER_SOFT_MATCHER, normalizeYoAfterSoft).replace(APOSTROPHE_COLLISION_MATCHER, normalizeApostropheCollision).replace(TS_AFTER_VOWEL_MATCHER, normalizeTsAfterVowel).replace(S_H_MATCHER, normalizeS_H);\n}\n\nexport function cyrillicToLatin(word) {\n const escapedWord = replaceSpecials(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in CYRILLIC_CHARACTERS) {\n out += CYRILLIC_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { capitalize, endsWithSoftSign, escapeRegex, isLowerCase } from \"./utils.js\";\n/*\n Exceptional word pairs works bidirectional even if\n transliteration from cyrillic to latin is usually\n possible without exceptions list. Sepatating list \n into 2 (one for latin, the other for cyrillc) make\n things complicated. \n \n Proposal can be introducing optional 3rd item to \n `ExceptionalWordPair` which will indicate \n bidirectional, only `latin->cyrillic` or only \n `cyrillic->latin` transliteration. This way look-ups \n in exceptionals list can be avoided where unecessary.\n*/\n\nexport class ExceptionalsCollection {\n collection = [];\n\n constructor(exceptions = []) {\n this.extend(exceptions);\n }\n\n extend(exceptions) {\n // TODO: Optimize for duplicates\n exceptions.forEach(pair => {\n if (pair && pair[0] && pair[1]) {\n this.collection.push(...this.generateWordCasingVariants(pair));\n }\n });\n }\n\n purge() {\n this.collection = [];\n }\n\n generateWordCasingVariants([latin, cyrillic]) {\n return [[latin.toLowerCase(), cyrillic.toLowerCase()], [latin.toUpperCase(), cyrillic.toUpperCase()], [capitalize(latin), capitalize(cyrillic)]];\n }\n\n getCase(exceptionalPair, source) {\n const exceptionSource = source === 'latin' ? 0 : 1;\n const exceptionTarget = source === 'latin' ? 1 : 0;\n return {\n exceptionalWord: exceptionalPair[exceptionSource],\n replacement: exceptionalPair[exceptionTarget]\n };\n }\n\n normalizeEndSoftSign(exceptional) {\n const {\n replacement\n } = exceptional;\n exceptional.replacement = replacement.substring(0, replacement.length - 1);\n }\n\n findInCollection(word, source) {\n let exceptional;\n let alternative; // If the word is typed with wrong letter-casing, default to lower-case or capitalize\n\n const shouldDefaultToLowerCase = isLowerCase(word.charAt(0));\n const altCasingMatch = shouldDefaultToLowerCase ? word.toLowerCase() : capitalize(word);\n\n for (const exceptionalPair of this.collection) {\n const {\n exceptionalWord,\n replacement\n } = this.getCase(exceptionalPair, source);\n\n if (word.startsWith(exceptionalWord)) {\n exceptional = {\n exceptionalWord,\n replacement\n };\n\n if (source === 'latin' && endsWithSoftSign(replacement) && word.length !== exceptionalWord.length) {\n this.normalizeEndSoftSign(exceptional);\n }\n\n return {\n exceptional\n };\n }\n\n if (altCasingMatch.startsWith(exceptionalWord)) {\n alternative = {\n exceptionalWord,\n replacement\n };\n }\n }\n\n return {\n alternative\n };\n }\n\n decideMatcher(exceptional, alternative) {\n if (exceptional !== undefined) {\n return exceptional.exceptionalWord;\n }\n\n if (alternative !== undefined) {\n // Using RegExp in \"case-insensetive\" mode to match exceptional\n // with its alternative casing\n return new RegExp(escapeRegex(alternative.exceptionalWord), 'gi');\n }\n }\n\n findCase(word, source) {\n const {\n exceptional,\n alternative\n } = this.findInCollection(word, source);\n const matcher = this.decideMatcher(exceptional, alternative);\n const replacement = exceptional?.replacement || alternative?.replacement;\n\n if (matcher && replacement) {\n return {\n matcher,\n replacement\n };\n }\n }\n\n}","import { LATIN_CHARACTERS } from \"./characters.js\";\nimport { normalizeCase } from \"./utils.js\";\n\nfunction transliterateBigram(word, matcher, cyrillicBigram) {\n return word.replace(matcher, matchString => {\n return normalizeCase(cyrillicBigram, matchString[0]);\n });\n}\n\nfunction transliterateApostrophe(word) {\n const apostrophe = 'ъ';\n return word.replace(/[ʻʼ’'`‘´]/g, (_, index) => {\n // Prioritize assimilation to the next letter\n const assimilator = word[index + 1] || word[index - 1];\n\n if (assimilator) {\n return normalizeCase(apostrophe, assimilator);\n }\n\n return apostrophe.toLowerCase();\n });\n}\n\nfunction transliterateSpecialLetters(word) {\n word = word.replace(/tsi(on|ya)/gi, matchString => {\n return transliterateBigram(matchString, /ts/i, 'ц');\n });\n /* \n Replace with 'Э' if:\n 1. word starts with 'E'\n 2. 'E' comes after non-letter symbol\n 3. cyrillic letter \n */\n\n word = word.replace(/^e|[\\W]e/gi, matchString => {\n return transliterateBigram(matchString, /e/i, 'э');\n });\n word = word.replace(/e{2}/gi, matchString => {\n return matchString[0] + normalizeCase('э', matchString[1]);\n });\n word = transliterateBigram(word, /ch/gi, 'ч');\n word = transliterateBigram(word, /sh/gi, 'ш');\n word = transliterateBigram(word, /g[ʻʼ’'`‘´]/gi, 'ғ');\n word = transliterateBigram(word, /o[ʻʼ’'`‘´]/gi, 'ў');\n word = transliterateBigram(word, /ye/gi, 'е');\n word = transliterateBigram(word, /yo/gi, 'ё');\n word = transliterateBigram(word, /yu/gi, 'ю');\n word = transliterateBigram(word, /ya/gi, 'я'); // handle non-bigram \"S'H\" => \"СҲ\" combination\n\n word = word.replace(/s[ʻʼ’'`‘´]h/gi, matchString => {\n const s = LATIN_CHARACTERS[matchString[0]] || matchString[0];\n const h = LATIN_CHARACTERS[matchString[2]] || matchString[2];\n return s + h;\n });\n word = transliterateApostrophe(word);\n return word;\n}\n\nexport function latinToCyrillic(word) {\n const escapedWord = transliterateSpecialLetters(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in LATIN_CHARACTERS) {\n out += LATIN_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { cyrillicToLatin } from \"./cyrillic.js\";\nimport { ExceptionalsCollection } from \"./exceptionalsCollection.js\";\nimport { latinToCyrillic } from \"./latin.js\";\nimport { isRomanNumber, isURL } from \"./utils.js\";\nexport default class Transliterator {\n exceptionalsCollection = new ExceptionalsCollection();\n\n constructor(exceptions = []) {\n this.extendExceptionals(exceptions);\n }\n\n extendExceptionals(exceptions) {\n this.exceptionalsCollection.extend(exceptions);\n }\n\n purgeExceptionals() {\n this.exceptionalsCollection.purge();\n }\n\n getTransliterator(source) {\n return source === 'latin' ? latinToCyrillic : cyrillicToLatin;\n }\n\n replaceExceptionals(word, exceptional, replacement, transliterator) {\n let chunks = word.split(exceptional);\n chunks = chunks.map((chunk, i) => {\n const isLastChunk = i === chunks.length - 1;\n return transliterator(chunk) + (isLastChunk ? '' : replacement);\n });\n return chunks.join('');\n }\n\n handleExceptional(word, source) {\n const exceptional = this.exceptionalsCollection.findCase(word, source);\n\n if (exceptional) {\n return this.replaceExceptionals(word, exceptional.matcher, exceptional.replacement, this.getTransliterator(source));\n }\n }\n\n transliteratePureWord(word, source) {\n const transliterator = this.getTransliterator(source);\n return word.replace(/[ʻʼ’'`´‘a-z\\u0400-\\u04FF\\-]+/gi, pureWord => {\n const exceptionalWord = this.handleExceptional(pureWord, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return transliterator(pureWord);\n });\n }\n\n transliterateWord(word, source) {\n if (isURL(word)) {\n return word;\n }\n\n if (isRomanNumber(word)) {\n return word;\n }\n\n const exceptionalWord = this.handleExceptional(word, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return this.transliteratePureWord(word, source);\n }\n\n toCyrillic(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'latin'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'latin');\n }\n }\n\n toLatin(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'cyrillic'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'cyrillic');\n }\n }\n\n textToCyrillic(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'latin'));\n }\n\n textToLatin(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'cyrillic'));\n }\n\n}\nexport { cyrillicToLatin, latinToCyrillic };"],"names":["APOSTROPHE","TURNED_COMMA","LATIN_CHARACTERS","CYRILLIC_CHARACTERS","isLowerCase","char","toLowerCase","normalizeCase","assimilateTo","toUpperCase","capitalize","word","charAt","substring","isLetter","test","isURL","anchorme","list","length","escapeRegex","expString","replace","endsWithSoftSign","isRomanNumber","CH_MATCHER","SH_MATCHER","YE_START_MATCHER","YE_MATCHER","YO_MATCHER","YU_MATCHER","YA_MATCHER","YE_REPETITIVE","YE_AFTER_SOFT_MATCHER","YE_AFTER_VOWEL_MATCHER","TS_AFTER_VOWEL_MATCHER","O_AFTER_SOFT_MATCHER","S_H_MATCHER","APOSTROPHE_COLLISION_MATCHER","normalizeYeRepetitive","matchString","str","normalizeYeAfterSoft","normalizeYeAfterVowel","normalizeYoAfterSoft","normalizeApostropheCollision","normalizeTsAfterVowel","normalizeS_H","normalizeBigramCasing","matcher","latinBigram","index","assimilator","replaceSpecials","cyrillicToLatin","escapedWord","out","ExceptionalsCollection","constructor","exceptions","extend","forEach","pair","collection","push","generateWordCasingVariants","purge","latin","cyrillic","getCase","exceptionalPair","source","exceptionSource","exceptionTarget","exceptionalWord","replacement","normalizeEndSoftSign","exceptional","findInCollection","alternative","shouldDefaultToLowerCase","altCasingMatch","startsWith","decideMatcher","undefined","RegExp","findCase","transliterateBigram","cyrillicBigram","transliterateApostrophe","apostrophe","_","transliterateSpecialLetters","s","h","latinToCyrillic","Transliterator","extendExceptionals","exceptionalsCollection","purgeExceptionals","getTransliterator","replaceExceptionals","transliterator","chunks","split","map","chunk","i","isLastChunk","join","handleExceptional","transliteratePureWord","pureWord","transliterateWord","toCyrillic","Array","w","toLatin","textToCyrillic","text","textToLatin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../dist-src/characters.js","../dist-src/utils.js","../dist-src/cyrillic.js","../dist-src/exceptionalsCollection.js","../dist-src/latin.js","../dist-src/index.js"],"sourcesContent":["export const APOSTROPHE = '\\u02bc';\nexport const TURNED_COMMA = '\\u2018';\nexport const LATIN_CHARACTERS = {\n ['A']: 'А',\n ['a']: 'а',\n ['B']: 'Б',\n ['b']: 'б',\n ['D']: 'Д',\n ['d']: 'д',\n ['E']: 'Е',\n ['e']: 'е',\n ['F']: 'Ф',\n ['f']: 'ф',\n ['G']: 'Г',\n ['g']: 'г',\n ['H']: 'Ҳ',\n ['h']: 'ҳ',\n ['I']: 'И',\n ['i']: 'и',\n ['J']: 'Ж',\n ['j']: 'ж',\n ['K']: 'К',\n ['k']: 'к',\n ['L']: 'Л',\n ['l']: 'л',\n ['M']: 'М',\n ['m']: 'м',\n ['N']: 'Н',\n ['n']: 'н',\n ['O']: 'О',\n ['o']: 'о',\n ['P']: 'П',\n ['p']: 'п',\n ['Q']: 'Қ',\n ['q']: 'қ',\n ['R']: 'Р',\n ['r']: 'р',\n ['S']: 'С',\n ['s']: 'с',\n ['T']: 'Т',\n ['t']: 'т',\n ['U']: 'У',\n ['u']: 'у',\n ['V']: 'В',\n ['v']: 'в',\n ['X']: 'Х',\n ['x']: 'х',\n ['Y']: 'Й',\n ['y']: 'й',\n ['Z']: 'З',\n ['z']: 'з'\n};\nexport const CYRILLIC_CHARACTERS = {\n ['А']: 'A',\n ['а']: 'a',\n ['Б']: 'B',\n ['б']: 'b',\n ['Д']: 'D',\n ['д']: 'd',\n ['Е']: 'E',\n ['е']: 'e',\n ['Ф']: 'F',\n ['ф']: 'f',\n ['Г']: 'G',\n ['г']: 'g',\n ['Ҳ']: 'H',\n ['ҳ']: 'h',\n ['И']: 'I',\n ['и']: 'i',\n ['Ж']: 'J',\n ['ж']: 'j',\n ['К']: 'K',\n ['к']: 'k',\n ['Л']: 'L',\n ['л']: 'l',\n ['М']: 'M',\n ['м']: 'm',\n ['Н']: 'N',\n ['н']: 'n',\n ['О']: 'O',\n ['о']: 'o',\n ['П']: 'P',\n ['п']: 'p',\n ['Қ']: 'Q',\n ['қ']: 'q',\n ['Р']: 'R',\n ['р']: 'r',\n ['С']: 'S',\n ['с']: 's',\n ['Т']: 'T',\n ['т']: 't',\n ['У']: 'U',\n ['у']: 'u',\n ['В']: 'V',\n ['в']: 'v',\n ['Х']: 'X',\n ['х']: 'x',\n ['Й']: 'Y',\n ['й']: 'y',\n ['З']: 'Z',\n ['з']: 'z',\n ['Ў']: `O${TURNED_COMMA}`,\n ['ў']: `o${TURNED_COMMA}`,\n ['Ғ']: `G${TURNED_COMMA}`,\n ['ғ']: `g${TURNED_COMMA}`,\n ['Ш']: 'Sh',\n ['ш']: 'sh',\n ['Ч']: 'Ch',\n ['ч']: 'ch',\n ['Ё']: 'Yo',\n ['ё']: 'yo',\n ['Ц']: 'S',\n ['ц']: 's',\n ['Ь']: '',\n ['ь']: '',\n ['Э']: 'E',\n ['э']: 'e',\n ['Ю']: 'Yu',\n ['ю']: 'yu',\n ['Я']: 'Ya',\n ['я']: 'ya',\n ['Ъ']: APOSTROPHE,\n ['ъ']: APOSTROPHE\n};\nexport const CYRILLIC_LETTER = `\\u0400-\\u04FF`;\nexport const CYRILLIC_VOVEL = `аоэеиуўёюя`;\nexport const LATIN_LETTER = `a-z`;\nexport const LATIN_VOVEL = `aeiou`;","import anchorme from 'anchorme';\nimport { APOSTROPHE, TURNED_COMMA } from \"./characters.js\";\nconst TURNED_COMMA_MATCHER = /[og][ʻʼ’'`‘´]/gi;\nconst APOSTROPHE_MATCHER = /[ʻʼ’'`‘´]/gi;\nconst VOVEL_MATCHER = /[аоэеиуўёюяaeiou]/i;\nconst REGEXP_ESC_MATCHER = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\nconst ROMAN_NUMBER_MATCHER = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\\.|\\))?$/;\nexport function isLowerCase(char) {\n return char.toLowerCase() === char;\n}\nexport function normalizeCase(char, assimilateTo) {\n return isLowerCase(assimilateTo) ? char.toLowerCase() : char.toUpperCase();\n}\nexport function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();\n} // Detect only alphabetical letters, excluding apostrophe(')\n\nexport function isLetter(char) {\n if (typeof char === 'string') {\n return /^[a-z\\u0400-\\u04FF]+$/i.test(char);\n }\n\n return false;\n}\nexport function isVovel(char) {\n return VOVEL_MATCHER.test(char);\n}\nexport function isURL(word) {\n return anchorme.list(word).length > 0;\n}\nexport function escapeRegex(expString) {\n return expString.replace(REGEXP_ESC_MATCHER, '\\\\$&');\n}\nexport function endsWithSoftSign(word) {\n return /ь$/i.test(word);\n}\nexport function dropEndSoftSign(word) {\n return word.replace(/ь$/i, '');\n}\nexport function isRomanNumber(word) {\n return ROMAN_NUMBER_MATCHER.test(word);\n}\nexport function normalizeTurnedComma(word) {\n return word.replace(TURNED_COMMA_MATCHER, matched => matched.charAt(0) + TURNED_COMMA);\n}\nexport function normalizeApostrophe(word) {\n return word.replace(APOSTROPHE_MATCHER, APOSTROPHE);\n}","import { APOSTROPHE, CYRILLIC_CHARACTERS } from \"./characters.js\";\nimport { capitalize, isLetter, isLowerCase, normalizeCase } from \"./utils.js\";\nconst CH_MATCHER = /Ч/gi;\nconst SH_MATCHER = /Ш/gi;\nconst YE_START_MATCHER = /^Е/gi;\nconst YE_MATCHER = /Е/gi;\nconst YO_MATCHER = /Ё/gi;\nconst YU_MATCHER = /Ю/gi;\nconst YA_MATCHER = /Я/gi;\nconst YE_REPETITIVE = /е{3,}/gi;\nconst YE_AFTER_SOFT_MATCHER = /[ьъ]е/gi;\nconst YE_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]е/gi;\nconst TS_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]ц/gi;\nconst O_AFTER_SOFT_MATCHER = /ьо/gi;\nconst S_H_MATCHER = /сҳ/gi;\nconst APOSTROPHE_COLLISION_MATCHER = /[ўғ]ъ/gi;\n\nfunction normalizeYeRepetitive(matchString) {\n return matchString.replace(YE_MATCHER, str => CYRILLIC_CHARACTERS[str] || str);\n}\n\nfunction normalizeYeAfterSoft(matchString) {\n return normalizeCase('ye', matchString.charAt(1));\n}\n\nfunction normalizeYeAfterVowel(matchString) {\n return matchString.charAt(0) + normalizeCase('ye', matchString.charAt(1));\n}\n\nfunction normalizeYoAfterSoft(matchString) {\n return normalizeCase('yo', matchString.charAt(1));\n}\n\nfunction normalizeApostropheCollision(matchString) {\n return matchString.charAt(0);\n}\n\nfunction normalizeTsAfterVowel(matchString) {\n return matchString.charAt(0) + normalizeCase('ts', matchString.charAt(1));\n}\n\nfunction normalizeS_H(matchString) {\n return normalizeCase('s', matchString.charAt(0)) + APOSTROPHE + normalizeCase('h', matchString.charAt(1));\n}\n\nfunction normalizeBigramCasing(word, matcher, latinBigram) {\n return word.replace(matcher, (matchString, index) => {\n if (isLowerCase(matchString)) {\n return latinBigram.toLowerCase();\n }\n\n if (!isLetter(word[index - 1]) && !isLetter(word[index + 1])) {\n return capitalize(latinBigram);\n } // Assimilate to the next letter\n\n\n const assimilator = isLetter(word[index + 1]) && word[index + 1];\n\n if (assimilator) {\n return isLowerCase(assimilator) ? capitalize(latinBigram) : latinBigram.toUpperCase();\n }\n\n return latinBigram.toUpperCase();\n });\n}\n\nfunction replaceSpecials(word) {\n word = normalizeBigramCasing(word, CH_MATCHER, 'CH');\n word = normalizeBigramCasing(word, SH_MATCHER, 'SH');\n word = normalizeBigramCasing(word, YE_START_MATCHER, 'YE');\n word = normalizeBigramCasing(word, YO_MATCHER, 'YO');\n word = normalizeBigramCasing(word, YU_MATCHER, 'YU');\n word = normalizeBigramCasing(word, YA_MATCHER, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+\n\n word = word.replace(YE_REPETITIVE, normalizeYeRepetitive);\n return word.replace(YE_AFTER_SOFT_MATCHER, normalizeYeAfterSoft).replace(YE_AFTER_VOWEL_MATCHER, normalizeYeAfterVowel).replace(O_AFTER_SOFT_MATCHER, normalizeYoAfterSoft).replace(APOSTROPHE_COLLISION_MATCHER, normalizeApostropheCollision).replace(TS_AFTER_VOWEL_MATCHER, normalizeTsAfterVowel).replace(S_H_MATCHER, normalizeS_H);\n}\n\nexport function cyrillicToLatin(word) {\n const escapedWord = replaceSpecials(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in CYRILLIC_CHARACTERS) {\n out += CYRILLIC_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { capitalize, dropEndSoftSign, endsWithSoftSign, escapeRegex, isLowerCase, normalizeApostrophe, normalizeTurnedComma } from \"./utils.js\";\n/*\n Exceptional word pairs works bidirectional even if\n transliteration from cyrillic to latin is usually\n possible without exceptions list. Sepatating list \n into 2 (one for latin, the other for cyrillc) make\n things complicated. \n \n Proposal can be introducing optional 3rd item to \n `ExceptionalWordPair` which will indicate \n bidirectional, only `latin->cyrillic` or only \n `cyrillic->latin` transliteration. This way look-ups \n in exceptionals list can be avoided where unecessary.\n*/\n\nexport class ExceptionalsCollection {\n collection = [];\n\n constructor(exceptions = []) {\n this.extend(exceptions);\n }\n\n extend(exceptions) {\n // TODO: Optimize for duplicates\n exceptions.forEach(pair => {\n if (pair && pair[0] && pair[1]) {\n const normalizedPair = this.normalizeCharactersForLatin(pair);\n this.collection.push(...this.generateWordCasingVariants(normalizedPair));\n } else {\n throw new Error(`Invalid exceptional pair ${pair}`);\n }\n });\n }\n\n purge() {\n this.collection = [];\n }\n\n normalizeCharactersForLatin([latin, cyrillic]) {\n const normalizedLatin = normalizeTurnedComma(normalizeApostrophe(latin));\n return [normalizedLatin, cyrillic];\n }\n\n generateWordCasingVariants([latin, cyrillic]) {\n return [[latin.toLowerCase(), cyrillic.toLowerCase()], [latin.toUpperCase(), cyrillic.toUpperCase()], [capitalize(latin), capitalize(cyrillic)]];\n }\n\n getCase(exceptionalPair, source) {\n const exceptionSource = source === 'latin' ? 0 : 1;\n const exceptionTarget = source === 'latin' ? 1 : 0;\n return {\n exceptionalWord: exceptionalPair[exceptionSource],\n replacement: exceptionalPair[exceptionTarget]\n };\n }\n\n findInCollection(word, source) {\n let exceptional;\n let alternative; // If the word is typed with wrong letter-casing, default to lower-case or capitalize\n\n const shouldDefaultToLowerCase = isLowerCase(word.charAt(0));\n const altCasingMatch = shouldDefaultToLowerCase ? word.toLowerCase() : capitalize(word);\n\n for (const exceptionalPair of this.collection) {\n const {\n exceptionalWord,\n replacement\n } = this.getCase(exceptionalPair, source);\n\n if (word.startsWith(exceptionalWord)) {\n exceptional = {\n exceptionalWord,\n replacement\n }; // Drop soft sign of exceptional if the source word is latin and has suffix\n\n if (source === 'latin' && endsWithSoftSign(replacement) && word.length !== exceptionalWord.length) {\n exceptional.replacement = dropEndSoftSign(replacement);\n }\n\n return {\n exceptional\n };\n } // Check for exceptional case where the source word is cyrillic with suffix\n // and its soft sign is dropped\n\n\n if (source === 'cyrillic' && endsWithSoftSign(exceptionalWord) && word.length !== exceptionalWord.length && word.startsWith(dropEndSoftSign(exceptionalWord))) {\n exceptional = {\n exceptionalWord: dropEndSoftSign(exceptionalWord),\n replacement\n };\n return {\n exceptional\n };\n }\n\n if (altCasingMatch.startsWith(exceptionalWord)) {\n alternative = {\n exceptionalWord,\n replacement\n };\n }\n }\n\n return {\n alternative\n };\n }\n\n decideMatcher(exceptional, alternative) {\n if (exceptional !== undefined) {\n return exceptional.exceptionalWord;\n }\n\n if (alternative !== undefined) {\n // Using RegExp in \"case-insensetive\" mode to match exceptional\n // with its alternative casing\n return new RegExp(escapeRegex(alternative.exceptionalWord), 'gi');\n }\n }\n\n findCase(word, source) {\n const {\n exceptional,\n alternative\n } = this.findInCollection(word, source);\n const matcher = this.decideMatcher(exceptional, alternative);\n const replacement = exceptional?.replacement || alternative?.replacement;\n\n if (matcher && replacement) {\n return {\n matcher,\n replacement\n };\n }\n }\n\n}","import { LATIN_CHARACTERS } from \"./characters.js\";\nimport { normalizeCase } from \"./utils.js\";\n\nfunction transliterateBigram(word, matcher, cyrillicBigram) {\n return word.replace(matcher, matchString => {\n return normalizeCase(cyrillicBigram, matchString[0]);\n });\n}\n\nfunction transliterateApostrophe(word) {\n const apostrophe = 'ъ';\n return word.replace(/[ʻʼ’'`‘´]/g, (_, index) => {\n // Prioritize assimilation to the next letter\n const assimilator = word[index + 1] || word[index - 1];\n\n if (assimilator) {\n return normalizeCase(apostrophe, assimilator);\n }\n\n return apostrophe.toLowerCase();\n });\n}\n\nfunction transliterateSpecialLetters(word) {\n word = word.replace(/tsi(on|ya)/gi, matchString => {\n return transliterateBigram(matchString, /ts/i, 'ц');\n });\n /* \n Replace with 'Э' if:\n 1. word starts with 'E'\n 2. 'E' comes after non-letter symbol\n 3. cyrillic letter \n */\n\n word = word.replace(/^e|[\\W]e/gi, matchString => {\n return transliterateBigram(matchString, /e/i, 'э');\n });\n word = word.replace(/e{2}/gi, matchString => {\n return matchString[0] + normalizeCase('э', matchString[1]);\n });\n word = transliterateBigram(word, /ch/gi, 'ч');\n word = transliterateBigram(word, /sh/gi, 'ш');\n word = transliterateBigram(word, /g[ʻʼ’'`‘´]/gi, 'ғ');\n word = transliterateBigram(word, /o[ʻʼ’'`‘´]/gi, 'ў');\n word = transliterateBigram(word, /ye/gi, 'е');\n word = transliterateBigram(word, /yo/gi, 'ё');\n word = transliterateBigram(word, /yu/gi, 'ю');\n word = transliterateBigram(word, /ya/gi, 'я'); // handle non-bigram \"S'H\" => \"СҲ\" combination\n\n word = word.replace(/s[ʻʼ’'`‘´]h/gi, matchString => {\n const s = LATIN_CHARACTERS[matchString[0]] || matchString[0];\n const h = LATIN_CHARACTERS[matchString[2]] || matchString[2];\n return s + h;\n });\n word = transliterateApostrophe(word);\n return word;\n}\n\nexport function latinToCyrillic(word) {\n const escapedWord = transliterateSpecialLetters(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in LATIN_CHARACTERS) {\n out += LATIN_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { cyrillicToLatin } from \"./cyrillic.js\";\nimport { ExceptionalsCollection } from \"./exceptionalsCollection.js\";\nimport { latinToCyrillic } from \"./latin.js\";\nimport { isRomanNumber, isURL, normalizeApostrophe, normalizeTurnedComma } from \"./utils.js\";\nexport default class Transliterator {\n exceptionalsCollection = new ExceptionalsCollection();\n\n constructor(exceptions = []) {\n this.extendExceptionals(exceptions);\n }\n\n extendExceptionals(exceptions) {\n this.exceptionalsCollection.extend(exceptions);\n }\n\n purgeExceptionals() {\n this.exceptionalsCollection.purge();\n }\n\n getTransliterator(source) {\n return source === 'latin' ? latinToCyrillic : cyrillicToLatin;\n }\n\n replaceExceptionals(word, exceptional, replacement, transliterator) {\n let chunks = word.split(exceptional);\n chunks = chunks.map((chunk, i) => {\n const isLastChunk = i === chunks.length - 1;\n return transliterator(chunk) + (isLastChunk ? '' : replacement);\n });\n return chunks.join('');\n }\n\n handleExceptional(word, source) {\n if (source === 'latin') {\n word = normalizeTurnedComma(normalizeApostrophe(word));\n }\n\n const exceptional = this.exceptionalsCollection.findCase(word, source);\n\n if (exceptional) {\n return this.replaceExceptionals(word, exceptional.matcher, exceptional.replacement, this.getTransliterator(source));\n }\n }\n\n transliteratePureWord(word, source) {\n const transliterator = this.getTransliterator(source);\n return word.replace(/[ʻʼ’'`´‘a-z\\u0400-\\u04FF\\-]+/gi, pureWord => {\n const exceptionalWord = this.handleExceptional(pureWord, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return transliterator(pureWord);\n });\n }\n\n transliterateWord(word, source) {\n if (isURL(word)) {\n return word;\n }\n\n if (isRomanNumber(word)) {\n return word;\n }\n\n const exceptionalWord = this.handleExceptional(word, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return this.transliteratePureWord(word, source);\n }\n\n toCyrillic(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'latin'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'latin');\n }\n }\n\n toLatin(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'cyrillic'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'cyrillic');\n }\n }\n\n textToCyrillic(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'latin'));\n }\n\n textToLatin(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'cyrillic'));\n }\n\n}\nexport { cyrillicToLatin, latinToCyrillic };"],"names":["APOSTROPHE","TURNED_COMMA","LATIN_CHARACTERS","CYRILLIC_CHARACTERS","TURNED_COMMA_MATCHER","APOSTROPHE_MATCHER","REGEXP_ESC_MATCHER","ROMAN_NUMBER_MATCHER","isLowerCase","char","toLowerCase","normalizeCase","assimilateTo","toUpperCase","capitalize","word","charAt","substring","isLetter","test","isURL","anchorme","list","length","escapeRegex","expString","replace","endsWithSoftSign","dropEndSoftSign","isRomanNumber","normalizeTurnedComma","matched","normalizeApostrophe","CH_MATCHER","SH_MATCHER","YE_START_MATCHER","YE_MATCHER","YO_MATCHER","YU_MATCHER","YA_MATCHER","YE_REPETITIVE","YE_AFTER_SOFT_MATCHER","YE_AFTER_VOWEL_MATCHER","TS_AFTER_VOWEL_MATCHER","O_AFTER_SOFT_MATCHER","S_H_MATCHER","APOSTROPHE_COLLISION_MATCHER","normalizeYeRepetitive","matchString","str","normalizeYeAfterSoft","normalizeYeAfterVowel","normalizeYoAfterSoft","normalizeApostropheCollision","normalizeTsAfterVowel","normalizeS_H","normalizeBigramCasing","matcher","latinBigram","index","assimilator","replaceSpecials","cyrillicToLatin","escapedWord","out","ExceptionalsCollection","constructor","exceptions","extend","forEach","pair","normalizedPair","normalizeCharactersForLatin","collection","push","generateWordCasingVariants","Error","purge","latin","cyrillic","normalizedLatin","getCase","exceptionalPair","source","exceptionSource","exceptionTarget","exceptionalWord","replacement","findInCollection","exceptional","alternative","shouldDefaultToLowerCase","altCasingMatch","startsWith","decideMatcher","undefined","RegExp","findCase","transliterateBigram","cyrillicBigram","transliterateApostrophe","apostrophe","_","transliterateSpecialLetters","s","h","latinToCyrillic","Transliterator","extendExceptionals","exceptionalsCollection","purgeExceptionals","getTransliterator","replaceExceptionals","transliterator","chunks","split","map","chunk","i","isLastChunk","join","handleExceptional","transliteratePureWord","pureWord","transliterateWord","toCyrillic","Array","w","toLatin","textToCyrillic","text","textToLatin"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { capitalize, endsWithSoftSign, escapeRegex, isLowerCase } from "./utils.js";
|
|
1
|
+
import { capitalize, dropEndSoftSign, endsWithSoftSign, escapeRegex, isLowerCase, normalizeApostrophe, normalizeTurnedComma } from "./utils.js";
|
|
2
2
|
/*
|
|
3
3
|
Exceptional word pairs works bidirectional even if
|
|
4
4
|
transliteration from cyrillic to latin is usually
|
|
@@ -24,7 +24,10 @@ export class ExceptionalsCollection {
|
|
|
24
24
|
// TODO: Optimize for duplicates
|
|
25
25
|
exceptions.forEach(pair => {
|
|
26
26
|
if (pair && pair[0] && pair[1]) {
|
|
27
|
-
this.
|
|
27
|
+
const normalizedPair = this.normalizeCharactersForLatin(pair);
|
|
28
|
+
this.collection.push(...this.generateWordCasingVariants(normalizedPair));
|
|
29
|
+
} else {
|
|
30
|
+
throw new Error(`Invalid exceptional pair ${pair}`);
|
|
28
31
|
}
|
|
29
32
|
});
|
|
30
33
|
}
|
|
@@ -33,6 +36,11 @@ export class ExceptionalsCollection {
|
|
|
33
36
|
this.collection = [];
|
|
34
37
|
}
|
|
35
38
|
|
|
39
|
+
normalizeCharactersForLatin([latin, cyrillic]) {
|
|
40
|
+
const normalizedLatin = normalizeTurnedComma(normalizeApostrophe(latin));
|
|
41
|
+
return [normalizedLatin, cyrillic];
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
generateWordCasingVariants([latin, cyrillic]) {
|
|
37
45
|
return [[latin.toLowerCase(), cyrillic.toLowerCase()], [latin.toUpperCase(), cyrillic.toUpperCase()], [capitalize(latin), capitalize(cyrillic)]];
|
|
38
46
|
}
|
|
@@ -46,13 +54,6 @@ export class ExceptionalsCollection {
|
|
|
46
54
|
};
|
|
47
55
|
}
|
|
48
56
|
|
|
49
|
-
normalizeEndSoftSign(exceptional) {
|
|
50
|
-
const {
|
|
51
|
-
replacement
|
|
52
|
-
} = exceptional;
|
|
53
|
-
exceptional.replacement = replacement.substring(0, replacement.length - 1);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
57
|
findInCollection(word, source) {
|
|
57
58
|
let exceptional;
|
|
58
59
|
let alternative; // If the word is typed with wrong letter-casing, default to lower-case or capitalize
|
|
@@ -70,12 +71,24 @@ export class ExceptionalsCollection {
|
|
|
70
71
|
exceptional = {
|
|
71
72
|
exceptionalWord,
|
|
72
73
|
replacement
|
|
73
|
-
};
|
|
74
|
+
}; // Drop soft sign of exceptional if the source word is latin and has suffix
|
|
74
75
|
|
|
75
76
|
if (source === 'latin' && endsWithSoftSign(replacement) && word.length !== exceptionalWord.length) {
|
|
76
|
-
|
|
77
|
+
exceptional.replacement = dropEndSoftSign(replacement);
|
|
77
78
|
}
|
|
78
79
|
|
|
80
|
+
return {
|
|
81
|
+
exceptional
|
|
82
|
+
};
|
|
83
|
+
} // Check for exceptional case where the source word is cyrillic with suffix
|
|
84
|
+
// and its soft sign is dropped
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
if (source === 'cyrillic' && endsWithSoftSign(exceptionalWord) && word.length !== exceptionalWord.length && word.startsWith(dropEndSoftSign(exceptionalWord))) {
|
|
88
|
+
exceptional = {
|
|
89
|
+
exceptionalWord: dropEndSoftSign(exceptionalWord),
|
|
90
|
+
replacement
|
|
91
|
+
};
|
|
79
92
|
return {
|
|
80
93
|
exceptional
|
|
81
94
|
};
|
package/pkg/dist-src/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cyrillicToLatin } from "./cyrillic.js";
|
|
2
2
|
import { ExceptionalsCollection } from "./exceptionalsCollection.js";
|
|
3
3
|
import { latinToCyrillic } from "./latin.js";
|
|
4
|
-
import { isRomanNumber, isURL } from "./utils.js";
|
|
4
|
+
import { isRomanNumber, isURL, normalizeApostrophe, normalizeTurnedComma } from "./utils.js";
|
|
5
5
|
export default class Transliterator {
|
|
6
6
|
exceptionalsCollection = new ExceptionalsCollection();
|
|
7
7
|
|
|
@@ -31,6 +31,10 @@ export default class Transliterator {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
handleExceptional(word, source) {
|
|
34
|
+
if (source === 'latin') {
|
|
35
|
+
word = normalizeTurnedComma(normalizeApostrophe(word));
|
|
36
|
+
}
|
|
37
|
+
|
|
34
38
|
const exceptional = this.exceptionalsCollection.findCase(word, source);
|
|
35
39
|
|
|
36
40
|
if (exceptional) {
|
package/pkg/dist-src/utils.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import anchorme from 'anchorme';
|
|
2
|
+
import { APOSTROPHE, TURNED_COMMA } from "./characters.js";
|
|
3
|
+
const TURNED_COMMA_MATCHER = /[og][ʻʼ’'`‘´]/gi;
|
|
4
|
+
const APOSTROPHE_MATCHER = /[ʻʼ’'`‘´]/gi;
|
|
5
|
+
const VOVEL_MATCHER = /[аоэеиуўёюяaeiou]/i;
|
|
6
|
+
const REGEXP_ESC_MATCHER = /[-\/\\^$*+?.()|[\]{}]/g;
|
|
7
|
+
const ROMAN_NUMBER_MATCHER = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/;
|
|
2
8
|
export function isLowerCase(char) {
|
|
3
9
|
return char.toLowerCase() === char;
|
|
4
10
|
}
|
|
@@ -17,17 +23,26 @@ export function isLetter(char) {
|
|
|
17
23
|
return false;
|
|
18
24
|
}
|
|
19
25
|
export function isVovel(char) {
|
|
20
|
-
return
|
|
26
|
+
return VOVEL_MATCHER.test(char);
|
|
21
27
|
}
|
|
22
28
|
export function isURL(word) {
|
|
23
29
|
return anchorme.list(word).length > 0;
|
|
24
30
|
}
|
|
25
31
|
export function escapeRegex(expString) {
|
|
26
|
-
return expString.replace(
|
|
32
|
+
return expString.replace(REGEXP_ESC_MATCHER, '\\$&');
|
|
27
33
|
}
|
|
28
34
|
export function endsWithSoftSign(word) {
|
|
29
35
|
return /ь$/i.test(word);
|
|
30
36
|
}
|
|
37
|
+
export function dropEndSoftSign(word) {
|
|
38
|
+
return word.replace(/ь$/i, '');
|
|
39
|
+
}
|
|
31
40
|
export function isRomanNumber(word) {
|
|
32
|
-
return
|
|
41
|
+
return ROMAN_NUMBER_MATCHER.test(word);
|
|
42
|
+
}
|
|
43
|
+
export function normalizeTurnedComma(word) {
|
|
44
|
+
return word.replace(TURNED_COMMA_MATCHER, matched => matched.charAt(0) + TURNED_COMMA);
|
|
45
|
+
}
|
|
46
|
+
export function normalizeApostrophe(word) {
|
|
47
|
+
return word.replace(APOSTROPHE_MATCHER, APOSTROPHE);
|
|
33
48
|
}
|
|
@@ -9,9 +9,9 @@ export declare class ExceptionalsCollection {
|
|
|
9
9
|
constructor(exceptions?: ExceptionalPair[]);
|
|
10
10
|
extend(exceptions: ExceptionalPair[]): void;
|
|
11
11
|
purge(): void;
|
|
12
|
+
private normalizeCharactersForLatin;
|
|
12
13
|
private generateWordCasingVariants;
|
|
13
14
|
private getCase;
|
|
14
|
-
private normalizeEndSoftSign;
|
|
15
15
|
private findInCollection;
|
|
16
16
|
private decideMatcher;
|
|
17
17
|
findCase(word: string, source: TransliterationSource): ExceptionalMatcher | undefined;
|
|
@@ -6,4 +6,7 @@ export declare function isVovel(char: string): boolean;
|
|
|
6
6
|
export declare function isURL(word: string): boolean;
|
|
7
7
|
export declare function escapeRegex(expString: string): string;
|
|
8
8
|
export declare function endsWithSoftSign(word: string): boolean;
|
|
9
|
+
export declare function dropEndSoftSign(word: string): string;
|
|
9
10
|
export declare function isRomanNumber(word: string): boolean;
|
|
11
|
+
export declare function normalizeTurnedComma(word: string): string;
|
|
12
|
+
export declare function normalizeApostrophe(word: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(u,A){"object"==typeof exports&&"undefined"!=typeof module?A(exports):"function"==typeof define&&define.amd?define(["exports"],A):A((u="undefined"!=typeof globalThis?globalThis:u||self).lotinKirill={})}(this,(function(u){"use strict";function A(u,A){if(!(u instanceof A))throw new TypeError("Cannot call a class as a function")}function e(u,A){for(var e=0;e<A.length;e++){var t=A[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(u,t.key,t)}}function t(u,A,t){return A&&e(u.prototype,A),t&&e(u,t),u}function n(u,A,e){return A in u?Object.defineProperty(u,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):u[A]=e,u}function E(u,A){if(u!==A)throw new TypeError("Cannot instantiate an arrow function")}function i(u,A){return function(u){if(Array.isArray(u))return u}(u)||function(u,A){var e=null==u?null:"undefined"!=typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(null==e)return;var t,n,E=[],i=!0,r=!1;try{for(e=e.call(u);!(i=(t=e.next()).done)&&(E.push(t.value),!A||E.length!==A);i=!0);}catch(u){r=!0,n=u}finally{try{i||null==e.return||e.return()}finally{if(r)throw n}}return E}(u,A)||N(u,A)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(u){return function(u){if(Array.isArray(u))return C(u)}(u)||function(u){if("undefined"!=typeof Symbol&&null!=u[Symbol.iterator]||null!=u["@@iterator"])return Array.from(u)}(u)||N(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(u,A){if(u){if("string"==typeof u)return C(u,A);var e=Object.prototype.toString.call(u).slice(8,-1);return"Object"===e&&u.constructor&&(e=u.constructor.name),"Map"===e||"Set"===e?Array.from(u):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?C(u,A):void 0}}function C(u,A){(null==A||A>u.length)&&(A=u.length);for(var e=0,t=new Array(A);e<A;e++)t[e]=u[e];return t}function o(u,A){var e="undefined"!=typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(!e){if(Array.isArray(u)||(e=N(u))||A&&u&&"number"==typeof u.length){e&&(u=e);var t=0,n=function(){};return{s:n,n:function(){return t>=u.length?{done:!0}:{done:!1,value:u[t++]}},e:function(u){throw u},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var E,i=!0,r=!1;return{s:function(){e=e.call(u)},n:function(){var u=e.next();return i=u.done,u},e:function(u){r=!0,E=u},f:function(){try{i||null==e.return||e.return()}finally{if(r)throw E}}}}var a,O,I=(n(a={},"A","А"),n(a,"a","а"),n(a,"B","Б"),n(a,"b","б"),n(a,"D","Д"),n(a,"d","д"),n(a,"E","Е"),n(a,"e","е"),n(a,"F","Ф"),n(a,"f","ф"),n(a,"G","Г"),n(a,"g","г"),n(a,"H","Ҳ"),n(a,"h","ҳ"),n(a,"I","И"),n(a,"i","и"),n(a,"J","Ж"),n(a,"j","ж"),n(a,"K","К"),n(a,"k","к"),n(a,"L","Л"),n(a,"l","л"),n(a,"M","М"),n(a,"m","м"),n(a,"N","Н"),n(a,"n","н"),n(a,"O","О"),n(a,"o","о"),n(a,"P","П"),n(a,"p","п"),n(a,"Q","Қ"),n(a,"q","қ"),n(a,"R","Р"),n(a,"r","р"),n(a,"S","С"),n(a,"s","с"),n(a,"T","Т"),n(a,"t","т"),n(a,"U","У"),n(a,"u","у"),n(a,"V","В"),n(a,"v","в"),n(a,"X","Х"),n(a,"x","х"),n(a,"Y","Й"),n(a,"y","й"),n(a,"Z","З"),n(a,"z","з"),a),R=(n(O={},"А","A"),n(O,"а","a"),n(O,"Б","B"),n(O,"б","b"),n(O,"Д","D"),n(O,"д","d"),n(O,"Е","E"),n(O,"е","e"),n(O,"Ф","F"),n(O,"ф","f"),n(O,"Г","G"),n(O,"г","g"),n(O,"Ҳ","H"),n(O,"ҳ","h"),n(O,"И","I"),n(O,"и","i"),n(O,"Ж","J"),n(O,"ж","j"),n(O,"К","K"),n(O,"к","k"),n(O,"Л","L"),n(O,"л","l"),n(O,"М","M"),n(O,"м","m"),n(O,"Н","N"),n(O,"н","n"),n(O,"О","O"),n(O,"о","o"),n(O,"П","P"),n(O,"п","p"),n(O,"Қ","Q"),n(O,"қ","q"),n(O,"Р","R"),n(O,"р","r"),n(O,"С","S"),n(O,"с","s"),n(O,"Т","T"),n(O,"т","t"),n(O,"У","U"),n(O,"у","u"),n(O,"В","V"),n(O,"в","v"),n(O,"Х","X"),n(O,"х","x"),n(O,"Й","Y"),n(O,"й","y"),n(O,"З","Z"),n(O,"з","z"),n(O,"Ў","O".concat("‘")),n(O,"ў","o".concat("‘")),n(O,"Ғ","G".concat("‘")),n(O,"ғ","g".concat("‘")),n(O,"Ш","Sh"),n(O,"ш","sh"),n(O,"Ч","Ch"),n(O,"ч","ch"),n(O,"Ё","Yo"),n(O,"ё","yo"),n(O,"Ц","S"),n(O,"ц","s"),n(O,"Ь",""),n(O,"ь",""),n(O,"Э","E"),n(O,"э","e"),n(O,"Ю","Yu"),n(O,"ю","yu"),n(O,"Я","Ya"),n(O,"я","ya"),n(O,"Ъ","ʼ"),n(O,"ъ","ʼ"),O),S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function T(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}function l(u,A){return u(A={exports:{}},A.exports),A.exports}var B=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.TLDs="(AAA|AARP|ABARTH|ABB|ABBOTT|ABBVIE|ABC|ABLE|ABOGADO|ABUDHABI|AC|ACADEMY|ACCENTURE|ACCOUNTANT|ACCOUNTANTS|ACO|ACTOR|AD|ADAC|ADS|ADULT|AE|AEG|AERO|AETNA|AF|AFAMILYCOMPANY|AFL|AFRICA|AG|AGAKHAN|AGENCY|AI|AIG|AIGO|AIRBUS|AIRFORCE|AIRTEL|AKDN|AL|ALFAROMEO|ALIBABA|ALIPAY|ALLFINANZ|ALLSTATE|ALLY|ALSACE|ALSTOM|AM|AMERICANEXPRESS|AMERICANFAMILY|AMEX|AMFAM|AMICA|AMSTERDAM|ANALYTICS|ANDROID|ANQUAN|ANZ|AO|AOL|APARTMENTS|APP|APPLE|AQ|AQUARELLE|AR|ARAB|ARAMCO|ARCHI|ARMY|ARPA|ART|ARTE|AS|ASDA|ASIA|ASSOCIATES|AT|ATHLETA|ATTORNEY|AU|AUCTION|AUDI|AUDIBLE|AUDIO|AUSPOST|AUTHOR|AUTO|AUTOS|AVIANCA|AW|AWS|AX|AXA|AZ|AZURE|BA|BABY|BAIDU|BANAMEX|BANANAREPUBLIC|BAND|BANK|BAR|BARCELONA|BARCLAYCARD|BARCLAYS|BAREFOOT|BARGAINS|BASEBALL|BASKETBALL|BAUHAUS|BAYERN|BB|BBC|BBT|BBVA|BCG|BCN|BD|BE|BEATS|BEAUTY|BEER|BENTLEY|BERLIN|BEST|BESTBUY|BET|BF|BG|BH|BHARTI|BI|BIBLE|BID|BIKE|BING|BINGO|BIO|BIZ|BJ|BLACK|BLACKFRIDAY|BLOCKBUSTER|BLOG|BLOOMBERG|BLUE|BM|BMS|BMW|BN|BNPPARIBAS|BO|BOATS|BOEHRINGER|BOFA|BOM|BOND|BOO|BOOK|BOOKING|BOSCH|BOSTIK|BOSTON|BOT|BOUTIQUE|BOX|BR|BRADESCO|BRIDGESTONE|BROADWAY|BROKER|BROTHER|BRUSSELS|BS|BT|BUDAPEST|BUGATTI|BUILD|BUILDERS|BUSINESS|BUY|BUZZ|BV|BW|BY|BZ|BZH|CA|CAB|CAFE|CAL|CALL|CALVINKLEIN|CAM|CAMERA|CAMP|CANCERRESEARCH|CANON|CAPETOWN|CAPITAL|CAPITALONE|CAR|CARAVAN|CARDS|CARE|CAREER|CAREERS|CARS|CASA|CASE|CASEIH|CASH|CASINO|CAT|CATERING|CATHOLIC|CBA|CBN|CBRE|CBS|CC|CD|CEB|CENTER|CEO|CERN|CF|CFA|CFD|CG|CH|CHANEL|CHANNEL|CHARITY|CHASE|CHAT|CHEAP|CHINTAI|CHRISTMAS|CHROME|CHURCH|CI|CIPRIANI|CIRCLE|CISCO|CITADEL|CITI|CITIC|CITY|CITYEATS|CK|CL|CLAIMS|CLEANING|CLICK|CLINIC|CLINIQUE|CLOTHING|CLOUD|CLUB|CLUBMED|CM|CN|CO|COACH|CODES|COFFEE|COLLEGE|COLOGNE|COM|COMCAST|COMMBANK|COMMUNITY|COMPANY|COMPARE|COMPUTER|COMSEC|CONDOS|CONSTRUCTION|CONSULTING|CONTACT|CONTRACTORS|COOKING|COOKINGCHANNEL|COOL|COOP|CORSICA|COUNTRY|COUPON|COUPONS|COURSES|CPA|CR|CREDIT|CREDITCARD|CREDITUNION|CRICKET|CROWN|CRS|CRUISE|CRUISES|CSC|CU|CUISINELLA|CV|CW|CX|CY|CYMRU|CYOU|CZ|DABUR|DAD|DANCE|DATA|DATE|DATING|DATSUN|DAY|DCLK|DDS|DE|DEAL|DEALER|DEALS|DEGREE|DELIVERY|DELL|DELOITTE|DELTA|DEMOCRAT|DENTAL|DENTIST|DESI|DESIGN|DEV|DHL|DIAMONDS|DIET|DIGITAL|DIRECT|DIRECTORY|DISCOUNT|DISCOVER|DISH|DIY|DJ|DK|DM|DNP|DO|DOCS|DOCTOR|DOG|DOMAINS|DOT|DOWNLOAD|DRIVE|DTV|DUBAI|DUCK|DUNLOP|DUPONT|DURBAN|DVAG|DVR|DZ|EARTH|EAT|EC|ECO|EDEKA|EDU|EDUCATION|EE|EG|EMAIL|EMERCK|ENERGY|ENGINEER|ENGINEERING|ENTERPRISES|EPSON|EQUIPMENT|ER|ERICSSON|ERNI|ES|ESQ|ESTATE|ESURANCE|ET|ETISALAT|EU|EUROVISION|EUS|EVENTS|EXCHANGE|EXPERT|EXPOSED|EXPRESS|EXTRASPACE|FAGE|FAIL|FAIRWINDS|FAITH|FAMILY|FAN|FANS|FARM|FARMERS|FASHION|FAST|FEDEX|FEEDBACK|FERRARI|FERRERO|FI|FIAT|FIDELITY|FIDO|FILM|FINAL|FINANCE|FINANCIAL|FIRE|FIRESTONE|FIRMDALE|FISH|FISHING|FIT|FITNESS|FJ|FK|FLICKR|FLIGHTS|FLIR|FLORIST|FLOWERS|FLY|FM|FO|FOO|FOOD|FOODNETWORK|FOOTBALL|FORD|FOREX|FORSALE|FORUM|FOUNDATION|FOX|FR|FREE|FRESENIUS|FRL|FROGANS|FRONTDOOR|FRONTIER|FTR|FUJITSU|FUJIXEROX|FUN|FUND|FURNITURE|FUTBOL|FYI|GA|GAL|GALLERY|GALLO|GALLUP|GAME|GAMES|GAP|GARDEN|GAY|GB|GBIZ|GD|GDN|GE|GEA|GENT|GENTING|GEORGE|GF|GG|GGEE|GH|GI|GIFT|GIFTS|GIVES|GIVING|GL|GLADE|GLASS|GLE|GLOBAL|GLOBO|GM|GMAIL|GMBH|GMO|GMX|GN|GODADDY|GOLD|GOLDPOINT|GOLF|GOO|GOODYEAR|GOOG|GOOGLE|GOP|GOT|GOV|GP|GQ|GR|GRAINGER|GRAPHICS|GRATIS|GREEN|GRIPE|GROCERY|GROUP|GS|GT|GU|GUARDIAN|GUCCI|GUGE|GUIDE|GUITARS|GURU|GW|GY|HAIR|HAMBURG|HANGOUT|HAUS|HBO|HDFC|HDFCBANK|HEALTH|HEALTHCARE|HELP|HELSINKI|HERE|HERMES|HGTV|HIPHOP|HISAMITSU|HITACHI|HIV|HK|HKT|HM|HN|HOCKEY|HOLDINGS|HOLIDAY|HOMEDEPOT|HOMEGOODS|HOMES|HOMESENSE|HONDA|HORSE|HOSPITAL|HOST|HOSTING|HOT|HOTELES|HOTELS|HOTMAIL|HOUSE|HOW|HR|HSBC|HT|HU|HUGHES|HYATT|HYUNDAI|IBM|ICBC|ICE|ICU|ID|IE|IEEE|IFM|IKANO|IL|IM|IMAMAT|IMDB|IMMO|IMMOBILIEN|IN|INC|INDUSTRIES|INFINITI|INFO|ING|INK|INSTITUTE|INSURANCE|INSURE|INT|INTEL|INTERNATIONAL|INTUIT|INVESTMENTS|IO|IPIRANGA|IQ|IR|IRISH|IS|ISMAILI|IST|ISTANBUL|IT|ITAU|ITV|IVECO|JAGUAR|JAVA|JCB|JCP|JE|JEEP|JETZT|JEWELRY|JIO|JLL|JM|JMP|JNJ|JO|JOBS|JOBURG|JOT|JOY|JP|JPMORGAN|JPRS|JUEGOS|JUNIPER|KAUFEN|KDDI|KE|KERRYHOTELS|KERRYLOGISTICS|KERRYPROPERTIES|KFH|KG|KH|KI|KIA|KIM|KINDER|KINDLE|KITCHEN|KIWI|KM|KN|KOELN|KOMATSU|KOSHER|KP|KPMG|KPN|KR|KRD|KRED|KUOKGROUP|KW|KY|KYOTO|KZ|LA|LACAIXA|LAMBORGHINI|LAMER|LANCASTER|LANCIA|LAND|LANDROVER|LANXESS|LASALLE|LAT|LATINO|LATROBE|LAW|LAWYER|LB|LC|LDS|LEASE|LECLERC|LEFRAK|LEGAL|LEGO|LEXUS|LGBT|LI|LIDL|LIFE|LIFEINSURANCE|LIFESTYLE|LIGHTING|LIKE|LILLY|LIMITED|LIMO|LINCOLN|LINDE|LINK|LIPSY|LIVE|LIVING|LIXIL|LK|LLC|LLP|LOAN|LOANS|LOCKER|LOCUS|LOFT|LOL|LONDON|LOTTE|LOTTO|LOVE|LPL|LPLFINANCIAL|LR|LS|LT|LTD|LTDA|LU|LUNDBECK|LUPIN|LUXE|LUXURY|LV|LY|MA|MACYS|MADRID|MAIF|MAISON|MAKEUP|MAN|MANAGEMENT|MANGO|MAP|MARKET|MARKETING|MARKETS|MARRIOTT|MARSHALLS|MASERATI|MATTEL|MBA|MC|MCKINSEY|MD|ME|MED|MEDIA|MEET|MELBOURNE|MEME|MEMORIAL|MEN|MENU|MERCKMSD|METLIFE|MG|MH|MIAMI|MICROSOFT|MIL|MINI|MINT|MIT|MITSUBISHI|MK|ML|MLB|MLS|MM|MMA|MN|MO|MOBI|MOBILE|MODA|MOE|MOI|MOM|MONASH|MONEY|MONSTER|MORMON|MORTGAGE|MOSCOW|MOTO|MOTORCYCLES|MOV|MOVIE|MP|MQ|MR|MS|MSD|MT|MTN|MTR|MU|MUSEUM|MUTUAL|MV|MW|MX|MY|MZ|NA|NAB|NAGOYA|NAME|NATIONWIDE|NATURA|NAVY|NBA|NC|NE|NEC|NET|NETBANK|NETFLIX|NETWORK|NEUSTAR|NEW|NEWHOLLAND|NEWS|NEXT|NEXTDIRECT|NEXUS|NF|NFL|NG|NGO|NHK|NI|NICO|NIKE|NIKON|NINJA|NISSAN|NISSAY|NL|NO|NOKIA|NORTHWESTERNMUTUAL|NORTON|NOW|NOWRUZ|NOWTV|NP|NR|NRA|NRW|NTT|NU|NYC|NZ|OBI|OBSERVER|OFF|OFFICE|OKINAWA|OLAYAN|OLAYANGROUP|OLDNAVY|OLLO|OM|OMEGA|ONE|ONG|ONL|ONLINE|ONYOURSIDE|OOO|OPEN|ORACLE|ORANGE|ORG|ORGANIC|ORIGINS|OSAKA|OTSUKA|OTT|OVH|PA|PAGE|PANASONIC|PARIS|PARS|PARTNERS|PARTS|PARTY|PASSAGENS|PAY|PCCW|PE|PET|PF|PFIZER|PG|PH|PHARMACY|PHD|PHILIPS|PHONE|PHOTO|PHOTOGRAPHY|PHOTOS|PHYSIO|PICS|PICTET|PICTURES|PID|PIN|PING|PINK|PIONEER|PIZZA|PK|PL|PLACE|PLAY|PLAYSTATION|PLUMBING|PLUS|PM|PN|PNC|POHL|POKER|POLITIE|PORN|POST|PR|PRAMERICA|PRAXI|PRESS|PRIME|PRO|PROD|PRODUCTIONS|PROF|PROGRESSIVE|PROMO|PROPERTIES|PROPERTY|PROTECTION|PRU|PRUDENTIAL|PS|PT|PUB|PW|PWC|PY|QA|QPON|QUEBEC|QUEST|QVC|RACING|RADIO|RAID|RE|READ|REALESTATE|REALTOR|REALTY|RECIPES|RED|REDSTONE|REDUMBRELLA|REHAB|REISE|REISEN|REIT|RELIANCE|REN|RENT|RENTALS|REPAIR|REPORT|REPUBLICAN|REST|RESTAURANT|REVIEW|REVIEWS|REXROTH|RICH|RICHARDLI|RICOH|RIGHTATHOME|RIL|RIO|RIP|RMIT|RO|ROCHER|ROCKS|RODEO|ROGERS|ROOM|RS|RSVP|RU|RUGBY|RUHR|RUN|RW|RWE|RYUKYU|SA|SAARLAND|SAFE|SAFETY|SAKURA|SALE|SALON|SAMSCLUB|SAMSUNG|SANDVIK|SANDVIKCOROMANT|SANOFI|SAP|SARL|SAS|SAVE|SAXO|SB|SBI|SBS|SC|SCA|SCB|SCHAEFFLER|SCHMIDT|SCHOLARSHIPS|SCHOOL|SCHULE|SCHWARZ|SCIENCE|SCJOHNSON|SCOR|SCOT|SD|SE|SEARCH|SEAT|SECURE|SECURITY|SEEK|SELECT|SENER|SERVICES|SES|SEVEN|SEW|SEX|SEXY|SFR|SG|SH|SHANGRILA|SHARP|SHAW|SHELL|SHIA|SHIKSHA|SHOES|SHOP|SHOPPING|SHOUJI|SHOW|SHOWTIME|SHRIRAM|SI|SILK|SINA|SINGLES|SITE|SJ|SK|SKI|SKIN|SKY|SKYPE|SL|SLING|SM|SMART|SMILE|SN|SNCF|SO|SOCCER|SOCIAL|SOFTBANK|SOFTWARE|SOHU|SOLAR|SOLUTIONS|SONG|SONY|SOY|SPACE|SPORT|SPOT|SPREADBETTING|SR|SRL|SS|ST|STADA|STAPLES|STAR|STATEBANK|STATEFARM|STC|STCGROUP|STOCKHOLM|STORAGE|STORE|STREAM|STUDIO|STUDY|STYLE|SU|SUCKS|SUPPLIES|SUPPLY|SUPPORT|SURF|SURGERY|SUZUKI|SV|SWATCH|SWIFTCOVER|SWISS|SX|SY|SYDNEY|SYMANTEC|SYSTEMS|SZ|TAB|TAIPEI|TALK|TAOBAO|TARGET|TATAMOTORS|TATAR|TATTOO|TAX|TAXI|TC|TCI|TD|TDK|TEAM|TECH|TECHNOLOGY|TEL|TEMASEK|TENNIS|TEVA|TF|TG|TH|THD|THEATER|THEATRE|TIAA|TICKETS|TIENDA|TIFFANY|TIPS|TIRES|TIROL|TJ|TJMAXX|TJX|TK|TKMAXX|TL|TM|TMALL|TN|TO|TODAY|TOKYO|TOOLS|TOP|TORAY|TOSHIBA|TOTAL|TOURS|TOWN|TOYOTA|TOYS|TR|TRADE|TRADING|TRAINING|TRAVEL|TRAVELCHANNEL|TRAVELERS|TRAVELERSINSURANCE|TRUST|TRV|TT|TUBE|TUI|TUNES|TUSHU|TV|TVS|TW|TZ|UA|UBANK|UBS|UG|UK|UNICOM|UNIVERSITY|UNO|UOL|UPS|US|UY|UZ|VA|VACATIONS|VANA|VANGUARD|VC|VE|VEGAS|VENTURES|VERISIGN|VERSICHERUNG|VET|VG|VI|VIAJES|VIDEO|VIG|VIKING|VILLAS|VIN|VIP|VIRGIN|VISA|VISION|VIVA|VIVO|VLAANDEREN|VN|VODKA|VOLKSWAGEN|VOLVO|VOTE|VOTING|VOTO|VOYAGE|VU|VUELOS|WALES|WALMART|WALTER|WANG|WANGGOU|WATCH|WATCHES|WEATHER|WEATHERCHANNEL|WEBCAM|WEBER|WEBSITE|WED|WEDDING|WEIBO|WEIR|WF|WHOSWHO|WIEN|WIKI|WILLIAMHILL|WIN|WINDOWS|WINE|WINNERS|WME|WOLTERSKLUWER|WOODSIDE|WORK|WORKS|WORLD|WOW|WS|WTC|WTF|XBOX|XEROX|XFINITY|XIHUAN|XIN|XN--11B4C3D|XN--1CK2E1B|XN--1QQW23A|XN--2SCRJ9C|XN--30RR7Y|XN--3BST00M|XN--3DS443G|XN--3E0B707E|XN--3HCRJ9C|XN--3OQ18VL8PN36A|XN--3PXU8K|XN--42C2D9A|XN--45BR5CYL|XN--45BRJ9C|XN--45Q11C|XN--4GBRIM|XN--54B7FTA0CC|XN--55QW42G|XN--55QX5D|XN--5SU34J936BGSG|XN--5TZM5G|XN--6FRZ82G|XN--6QQ986B3XL|XN--80ADXHKS|XN--80AO21A|XN--80AQECDR1A|XN--80ASEHDB|XN--80ASWG|XN--8Y0A063A|XN--90A3AC|XN--90AE|XN--90AIS|XN--9DBQ2A|XN--9ET52U|XN--9KRT00A|XN--B4W605FERD|XN--BCK1B9A5DRE4C|XN--C1AVG|XN--C2BR7G|XN--CCK2B3B|XN--CG4BKI|XN--CLCHC0EA0B2G2A9GCD|XN--CZR694B|XN--CZRS0T|XN--CZRU2D|XN--D1ACJ3B|XN--D1ALF|XN--E1A4C|XN--ECKVDTC9D|XN--EFVY88H|XN--FCT429K|XN--FHBEI|XN--FIQ228C5HS|XN--FIQ64B|XN--FIQS8S|XN--FIQZ9S|XN--FJQ720A|XN--FLW351E|XN--FPCRJ9C3D|XN--FZC2C9E2C|XN--FZYS8D69UVGM|XN--G2XX48C|XN--GCKR3F0F|XN--GECRJ9C|XN--GK3AT1E|XN--H2BREG3EVE|XN--H2BRJ9C|XN--H2BRJ9C8C|XN--HXT814E|XN--I1B6B1A6A2E|XN--IMR513N|XN--IO0A7I|XN--J1AEF|XN--J1AMH|XN--J6W193G|XN--JLQ61U9W7B|XN--JVR189M|XN--KCRX77D1X4A|XN--KPRW13D|XN--KPRY57D|XN--KPU716F|XN--KPUT3I|XN--L1ACC|XN--LGBBAT1AD8J|XN--MGB9AWBF|XN--MGBA3A3EJT|XN--MGBA3A4F16A|XN--MGBA7C0BBN0A|XN--MGBAAKC7DVF|XN--MGBAAM7A8H|XN--MGBAB2BD|XN--MGBAH1A3HJKRD|XN--MGBAI9AZGQP6J|XN--MGBAYH7GPA|XN--MGBBH1A|XN--MGBBH1A71E|XN--MGBC0A9AZCG|XN--MGBCA7DZDO|XN--MGBCPQ6GPA1A|XN--MGBERP4A5D4AR|XN--MGBGU82A|XN--MGBI4ECEXP|XN--MGBPL2FH|XN--MGBT3DHD|XN--MGBTX2B|XN--MGBX4CD0AB|XN--MIX891F|XN--MK1BU44C|XN--MXTQ1M|XN--NGBC5AZD|XN--NGBE9E0A|XN--NGBRX|XN--NODE|XN--NQV7F|XN--NQV7FS00EMA|XN--NYQY26A|XN--O3CW4H|XN--OGBPF8FL|XN--OTU796D|XN--P1ACF|XN--P1AI|XN--PBT977C|XN--PGBS0DH|XN--PSSY2U|XN--Q7CE6A|XN--Q9JYB4C|XN--QCKA1PMC|XN--QXA6A|XN--QXAM|XN--RHQV96G|XN--ROVU88B|XN--RVC1E0AM3E|XN--S9BRJ9C|XN--SES554G|XN--T60B56A|XN--TCKWE|XN--TIQ49XQYJ|XN--UNUP4Y|XN--VERMGENSBERATER-CTB|XN--VERMGENSBERATUNG-PWB|XN--VHQUV|XN--VUQ861B|XN--W4R85EL8FHU5DNRA|XN--W4RS40L|XN--WGBH1C|XN--WGBL6A|XN--XHQ521B|XN--XKC2AL3HYE2A|XN--XKC2DL3A5EE0H|XN--Y9A3AQ|XN--YFRO4I67O|XN--YGBI2AMMX|XN--ZFR164B|XXX|XYZ|YACHTS|YAHOO|YAMAXUN|YANDEX|YE|YODOBASHI|YOGA|YOKOHAMA|YOU|YOUTUBE|YT|YUN|ZA|ZAPPOS|ZARA|ZERO|ZIP|ZM|ZONE|ZUERICH|ZW|TEST)"}));T(B),B.TLDs;var s=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.openingParenthesis="([\"'{",A.closingParenthesis=")]\"'}",A.parenthesis=A.openingParenthesis.split("").map((function(u,e){return""+u+A.closingParenthesis.charAt(e)})),A.htmlAttributes=["src","data","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap","itemtype","action","longdesc","classid","archive"],A.nonLatinAlphabetRanges="\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC",A.TLDs=B.TLDs}));T(s),s.openingParenthesis,s.closingParenthesis,s.parenthesis,s.htmlAttributes,s.nonLatinAlphabetRanges,s.TLDs;var D=l((function(u,A){function e(u,A,e){return"function"==typeof e?e(u,A):e}Object.defineProperty(A,"__esModule",{value:!0}),A.transform=function(u,A){var t="",n=1/0,E={},i=!1;if(A&&A.specialTransform)for(var r=0;r<A.specialTransform.length;r++){var N=A.specialTransform[r];if(N.test.test(u.string))return N.transform(u.string,u)}return A&&A.exclude&&e(u.string,u,A.exclude)?u.string:(A&&A.protocol&&(t=e(u.string,u,A.protocol)),u.protocol?t="":t||(t=u.isEmail?"mailto:":u.isFile?"file:///":"http://"),A&&A.truncate&&(n=e(u.string,u,A.truncate)),A&&A.middleTruncation&&(i=e(u.string,u,A.middleTruncation)),A&&A.attributes&&(E=e(u.string,u,A.attributes)),"<a "+Object.keys(E).map((function(u){return!0===E[u]?u:u+'="'+E[u]+'" '})).join(" ")+'href="'+t+u.string+'">'+(u.string.length>n?i?u.string.substring(0,Math.floor(n/2))+"…"+u.string.substring(u.string.length-Math.ceil(n/2),u.string.length):u.string.substring(0,n)+"…":u.string)+"</a>")}}));T(D),D.transform;var L=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var e="([a-z0-9]+(-+[a-z0-9]+)*\\.)+("+s.TLDs+")",t="a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()",n="((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",E="\\[(([a-f0-9:]+:+)+[a-f0-9]+)\\]",i="(https?:|ftps?:)\\/\\/",r="((("+i+")?("+e+"|"+n+"|("+i+")("+E+"|"+("([a-z0-9]+(-+[a-z0-9]+)*\\.)+([a-z0-9][a-z0-9-]{0,"+(Math.max.apply(S,s.TLDs.split("|").map((function(u){return u.length})))-2)+"}[a-z0-9])")+"))(?!@\\w)(:(\\d{1,5}))?)|(((https?:|ftps?:)\\/\\/)\\S+))",N=r+"((((\\/((["+t+"]+(\\/["+t+s.nonLatinAlphabetRanges+"]*)*))?)?)((\\?(["+t+"\\/?]*))?)((\\#(["+t+"\\/?]*))?))?\\b(((["+t+"\\/"+s.nonLatinAlphabetRanges+"][a-zA-Z\\d\\-_~+=\\/"+s.nonLatinAlphabetRanges+"]+)?))+)";A.email="\\b(mailto:)?([a-z0-9!#$%&'*+=?^_`{|}~-]+(\\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*)@("+e+"|"+n+")\\b",A.url="("+N+")|(\\b"+r+"(((\\/(([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]+(\\/[a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]*)*))?)?)((\\?([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?)((\\#([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?))?\\b(([\\/]?))+)",A.file="(file:\\/\\/\\/)([a-z]+:(\\/|\\\\)+)?([\\w.]+([\\/\\\\]?)+)+",A.final="("+A.url+")|("+A.email+")|("+A.file+")",A.finalRegex=new RegExp(A.final,"gi"),A.ipRegex=new RegExp("^("+n+"|"+E+")$","i"),A.emailRegex=new RegExp("^("+A.email+")$","i"),A.fileRegex=new RegExp("^("+A.file+")$","i"),A.urlRegex=new RegExp("^("+A.url+")$","i");var C={isURL:0,isEmail:0,isFile:0,file:{fileName:0,protocol:0},email:{protocol:0,local:0,host:0},url:{ipv4:0,ipv6:0,ipv4Confirmation:0,byProtocol:0,port:0,protocol1:0,protocol2:0,protocol3:0,protocolWithDomain:0,path:0,secondPartOfPath:0,query:0,fragment:0}};A.iidxes=C;for(var o=["file:///some/file/path/filename.pdf","mailto:e+_mail.me@sub.domain.com","http://sub.domain.co.uk:3000/p/a/t/h_(asd)/h?q=abc123#dfdf","http://www.عربي.com","http://127.0.0.1:3000/p/a/t_(asd)/h?q=abc123#dfdf","http://[2a00:1450:4025:401::67]/k/something","a.org/abc/ი_გგ"].join(" "),a=null,O=0;null!==(a=A.finalRegex.exec(o));)0===O&&(C.isFile=a.lastIndexOf(a[0]),C.file.fileName=a.indexOf("filename.pdf"),C.file.protocol=a.indexOf("file:///")),1===O&&(C.isEmail=a.lastIndexOf(a[0]),C.email.protocol=a.indexOf("mailto:"),C.email.local=a.indexOf("e+_mail.me"),C.email.host=a.indexOf("sub.domain.com")),2===O&&(C.isURL=a.lastIndexOf(a[0]),C.url.protocol1=a.indexOf("http://"),C.url.protocolWithDomain=a.indexOf("http://sub.domain.co.uk:3000"),C.url.port=a.indexOf("3000"),C.url.path=a.indexOf("/p/a/t/h_(asd)/h"),C.url.query=a.indexOf("q=abc123"),C.url.fragment=a.indexOf("dfdf")),3===O&&(C.url.byProtocol=a.lastIndexOf("http://www.عربي.com"),C.url.protocol2=a.lastIndexOf("http://")),4===O&&(C.url.ipv4=a.indexOf("127.0.0.1"),C.url.ipv4Confirmation=a.indexOf("0.")),5===O&&(C.url.ipv6=a.indexOf("2a00:1450:4025:401::67"),C.url.protocol3=a.lastIndexOf("http://")),6===O&&(C.url.secondPartOfPath=a.indexOf("გგ")),O++}));T(L),L.email,L.url,L.file,L.finalRegex,L.ipRegex,L.emailRegex,L.fileRegex,L.urlRegex,L.iidxes;var c=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.checkParenthesis=function(u,A,e,t){return t===A&&(e.split(u).length-e.split(A).length==1||u===A&&e.split(u).length%2==0||void 0)},A.maximumAttrLength=s.htmlAttributes.sort((function(u,A){return A.length-u.length}))[0].length,A.isInsideAttribute=function(u){return/\s[a-z0-9-]+=('|")$/i.test(u)||/: ?url\(('|")?$/i.test(u)},A.isInsideAnchorTag=function(u,A,e){for(var t=u.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),n=new RegExp("(?=(<a))(?!([\\s\\S]*)(<\\/a>)("+t+"))[\\s\\S]*?("+t+")(?!\"|')","gi"),E=null;null!==(E=n.exec(A));){if(E.index+E[0].length===e)return!0}return!1}}));T(c),c.checkParenthesis,c.maximumAttrLength,c.isInsideAttribute,c.isInsideAnchorTag;var F=T(l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var e=function(u){for(var A=[],e=null,t=function(){var t=e.index,n=t+e[0].length,E=e[0];if("/"===u.charAt(n)&&(E+=u.charAt(n),n++),s.closingParenthesis.indexOf(u.charAt(n))>-1&&s.parenthesis.forEach((function(A){var e=A.charAt(0),t=A.charAt(1);c.checkParenthesis(e,t,E,u.charAt(n))&&(E+=u.charAt(n),n++)})),-1!==['""',"''","()"].indexOf(u.charAt(t-1)+u.charAt(n))&&c.isInsideAttribute(u.substring(t-c.maximumAttrLength-15,t)))return"continue";if(u.substring(n,u.length).indexOf("</a>")>-1&&u.substring(0,t).indexOf("<a")>-1&&c.isInsideAnchorTag(E,u,n))return"continue";if(e[L.iidxes.isURL]){var i=(e[L.iidxes.url.path]||"")+(e[L.iidxes.url.secondPartOfPath]||"")||void 0,r=e[L.iidxes.url.protocol1]||e[L.iidxes.url.protocol2]||e[L.iidxes.url.protocol3];A.push({start:t,end:n,string:E,isURL:!0,protocol:r,port:e[L.iidxes.url.port],ipv4:e[L.iidxes.url.ipv4Confirmation]?e[L.iidxes.url.ipv4]:void 0,ipv6:e[L.iidxes.url.ipv6],host:e[L.iidxes.url.byProtocol]?void 0:(e[L.iidxes.url.protocolWithDomain]||"").substr((r||"").length),confirmedByProtocol:!!e[L.iidxes.url.byProtocol],path:e[L.iidxes.url.byProtocol]?void 0:i,query:e[L.iidxes.url.query]||void 0,fragment:e[L.iidxes.url.fragment]||void 0})}else if(e[L.iidxes.isFile]){var N=E.substr(8);A.push({start:t,end:n,string:E,isFile:!0,protocol:e[L.iidxes.file.protocol],filename:e[L.iidxes.file.fileName],filePath:N,fileDirectory:N.substr(0,N.length-e[L.iidxes.file.fileName].length)})}else e[L.iidxes.isEmail]?A.push({start:t,end:n,string:E,isEmail:!0,local:e[L.iidxes.email.local],protocol:e[L.iidxes.email.protocol],host:e[L.iidxes.email.host]}):A.push({start:t,end:n,string:E})};null!==(e=L.finalRegex.exec(u));)t();return A},t=function(u){var A="string"==typeof u?{input:u,options:void 0,extensions:void 0}:u,t=A.input,n=A.options,E=A.extensions;if(E)for(var i=0;i<E.length;i++){var r=E[i];t=t.replace(r.test,r.transform)}var N=e(t),C="";for(i=0;i<N.length;i++)C=(C||(0===i?t.substring(0,N[i].start):""))+D.transform(N[i],n)+(N[i+1]?t.substring(N[i].end,N[i+1].start):t.substring(N[i].end));return C||t};t.list=function(u){return e(u)},t.validate={ip:function(u){return L.ipRegex.test(u)},email:function(u){return L.emailRegex.test(u)},file:function(u){return L.fileRegex.test(u)},url:function(u){return L.urlRegex.test(u)||L.ipRegex.test(u)}},A.default=t})));function f(u){return u.toLowerCase()===u}function M(u,A){return f(A)?u.toLowerCase():u.toUpperCase()}function G(u){return u.charAt(0).toUpperCase()+u.substring(1).toLowerCase()}function U(u){return"string"==typeof u&&/^[a-z\u0400-\u04FF]+$/i.test(u)}function h(u){return/ь$/i.test(u)}var P=/Ч/gi,d=/Ш/gi,p=/^Е/gi,X=/Е/gi,H=/Ё/gi,g=/Ю/gi,K=/Я/gi,Y=/е{3,}/gi,v=/[ьъ]е/gi,m=/[аоэеиуўёюяaeiou]е/gi,W=/[аоэеиуўёюяaeiou]ц/gi,y=/ьо/gi,x=/сҳ/gi,V=/[ўғ]ъ/gi;function b(u){var A=this;return u.replace(X,function(u){return E(this,A),R[u]||u}.bind(this))}function J(u){return M("ye",u.charAt(1))}function Z(u){return u.charAt(0)+M("ye",u.charAt(1))}function Q(u){return M("yo",u.charAt(1))}function w(u){return u.charAt(0)}function k(u){return u.charAt(0)+M("ts",u.charAt(1))}function _(u){return M("s",u.charAt(0))+"ʼ"+M("h",u.charAt(1))}function z(u,A,e){var t=this;return u.replace(A,function(A,n){if(E(this,t),f(A))return e.toLowerCase();if(!U(u[n-1])&&!U(u[n+1]))return G(e);var i=U(u[n+1])&&u[n+1];return i&&f(i)?G(e):e.toUpperCase()}.bind(this))}function j(u){var A,e="",t=o(function(u){return u=z(u,P,"CH"),u=z(u,d,"SH"),u=z(u,p,"YE"),u=z(u,H,"YO"),u=z(u,g,"YU"),(u=(u=z(u,K,"YA")).replace(Y,b)).replace(v,J).replace(m,Z).replace(y,Q).replace(V,w).replace(W,k).replace(x,_)}(u));try{for(t.s();!(A=t.n()).done;){var n=A.value;e+=n in R?R[n]:n}}catch(u){t.e(u)}finally{t.f()}return e}var $=function(){function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"collection",[]),this.extend(e)}return t(u,[{key:"extend",value:function(u){var A=this;u.forEach(function(u){var e;(E(this,A),u&&u[0]&&u[1])&&(e=this.collection).push.apply(e,r(this.generateWordCasingVariants(u)))}.bind(this))}},{key:"purge",value:function(){this.collection=[]}},{key:"generateWordCasingVariants",value:function(u){var A=i(u,2),e=A[0],t=A[1];return[[e.toLowerCase(),t.toLowerCase()],[e.toUpperCase(),t.toUpperCase()],[G(e),G(t)]]}},{key:"getCase",value:function(u,A){var e="latin"===A?1:0;return{exceptionalWord:u["latin"===A?0:1],replacement:u[e]}}},{key:"normalizeEndSoftSign",value:function(u){var A=u.replacement;u.replacement=A.substring(0,A.length-1)}},{key:"findInCollection",value:function(u,A){var e,t,n,E=f(u.charAt(0))?u.toLowerCase():G(u),i=o(this.collection);try{for(i.s();!(n=i.n()).done;){var r=n.value,N=this.getCase(r,A),C=N.exceptionalWord,a=N.replacement;if(u.startsWith(C))return e={exceptionalWord:C,replacement:a},"latin"===A&&h(a)&&u.length!==C.length&&this.normalizeEndSoftSign(e),{exceptional:e};E.startsWith(C)&&(t={exceptionalWord:C,replacement:a})}}catch(u){i.e(u)}finally{i.f()}return{alternative:t}}},{key:"decideMatcher",value:function(u,A){return void 0!==u?u.exceptionalWord:void 0!==A?new RegExp(A.exceptionalWord.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"gi"):void 0}},{key:"findCase",value:function(u,A){var e=this.findInCollection(u,A),t=e.exceptional,n=e.alternative,E=this.decideMatcher(t,n),i=(null==t?void 0:t.replacement)||(null==n?void 0:n.replacement);if(E&&i)return{matcher:E,replacement:i}}}]),u}();function q(u,A,e){var t=this;return u.replace(A,function(u){return E(this,t),M(e,u[0])}.bind(this))}function uu(u){var A=this;return u=(u=u.replace(/tsi(on|ya)/gi,function(u){return E(this,A),q(u,/ts/i,"ц")}.bind(this))).replace(/^e|[\W]e/gi,function(u){return E(this,A),q(u,/e/i,"э")}.bind(this)),u=q(u=u.replace(/e{2}/gi,function(u){return E(this,A),u[0]+M("э",u[1])}.bind(this)),/ch/gi,"ч"),u=q(u,/sh/gi,"ш"),u=q(u,/g[ʻʼ’'`‘´]/gi,"ғ"),u=q(u,/o[ʻʼ’'`‘´]/gi,"ў"),u=q(u,/ye/gi,"е"),u=q(u,/yo/gi,"ё"),u=q(u,/yu/gi,"ю"),u=function(u){var A=this;return u.replace(/[ʻʼ’'`‘´]/g,function(e,t){E(this,A);var n=u[t+1]||u[t-1];return n?M("ъ",n):"ъ".toLowerCase()}.bind(this))}(u=(u=q(u,/ya/gi,"я")).replace(/s[ʻʼ’'`‘´]h/gi,function(u){return E(this,A),(I[u[0]]||u[0])+(I[u[2]]||u[2])}.bind(this)))}function Au(u){var A,e="",t=o(uu(u));try{for(t.s();!(A=t.n()).done;){var n=A.value;e+=n in I?I[n]:n}}catch(u){t.e(u)}finally{t.f()}return e}var eu=function(){function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"exceptionalsCollection",new $),this.extendExceptionals(e)}return t(u,[{key:"extendExceptionals",value:function(u){this.exceptionalsCollection.extend(u)}},{key:"purgeExceptionals",value:function(){this.exceptionalsCollection.purge()}},{key:"getTransliterator",value:function(u){return"latin"===u?Au:j}},{key:"replaceExceptionals",value:function(u,A,e,t){var n=this,i=u.split(A);return(i=i.map(function(u,A){E(this,n);var r=A===i.length-1;return t(u)+(r?"":e)}.bind(this))).join("")}},{key:"handleExceptional",value:function(u,A){var e=this.exceptionalsCollection.findCase(u,A);if(e)return this.replaceExceptionals(u,e.matcher,e.replacement,this.getTransliterator(A))}},{key:"transliteratePureWord",value:function(u,A){var e=this,t=this.getTransliterator(A);return u.replace(/[ʻʼ’'`´‘a-z\u0400-\u04FF\-]+/gi,function(u){E(this,e);var n=this.handleExceptional(u,A);return n||t(u)}.bind(this))}},{key:"transliterateWord",value:function(u,A){if(function(u){return F.list(u).length>0}(u))return u;if(function(u){return/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/.test(u)}(u))return u;var e=this.handleExceptional(u,A);return e||this.transliteratePureWord(u,A)}},{key:"toCyrillic",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return E(this,A),this.transliterateWord(u,"latin")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"latin"):void 0}},{key:"toLatin",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return E(this,A),this.transliterateWord(u,"cyrillic")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"cyrillic"):void 0}},{key:"textToCyrillic",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return E(this,A),this.transliterateWord(u,"latin")}.bind(this))}},{key:"textToLatin",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return E(this,A),this.transliterateWord(u,"cyrillic")}.bind(this))}}]),u}();u.cyrillicToLatin=j,u.default=eu,u.latinToCyrillic=Au,Object.defineProperty(u,"__esModule",{value:!0})}));
|
|
1
|
+
!function(u,A){"object"==typeof exports&&"undefined"!=typeof module?A(exports):"function"==typeof define&&define.amd?define(["exports"],A):A((u="undefined"!=typeof globalThis?globalThis:u||self).lotinKirill={})}(this,(function(u){"use strict";function A(u,A){if(!(u instanceof A))throw new TypeError("Cannot call a class as a function")}function e(u,A){for(var e=0;e<A.length;e++){var t=A[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(u,t.key,t)}}function t(u,A,t){return A&&e(u.prototype,A),t&&e(u,t),u}function n(u,A,e){return A in u?Object.defineProperty(u,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):u[A]=e,u}function i(u,A){if(u!==A)throw new TypeError("Cannot instantiate an arrow function")}function E(u,A){return function(u){if(Array.isArray(u))return u}(u)||function(u,A){var e=null==u?null:"undefined"!=typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(null==e)return;var t,n,i=[],E=!0,r=!1;try{for(e=e.call(u);!(E=(t=e.next()).done)&&(i.push(t.value),!A||i.length!==A);E=!0);}catch(u){r=!0,n=u}finally{try{E||null==e.return||e.return()}finally{if(r)throw n}}return i}(u,A)||N(u,A)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(u){return function(u){if(Array.isArray(u))return o(u)}(u)||function(u){if("undefined"!=typeof Symbol&&null!=u[Symbol.iterator]||null!=u["@@iterator"])return Array.from(u)}(u)||N(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(u,A){if(u){if("string"==typeof u)return o(u,A);var e=Object.prototype.toString.call(u).slice(8,-1);return"Object"===e&&u.constructor&&(e=u.constructor.name),"Map"===e||"Set"===e?Array.from(u):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?o(u,A):void 0}}function o(u,A){(null==A||A>u.length)&&(A=u.length);for(var e=0,t=new Array(A);e<A;e++)t[e]=u[e];return t}function a(u,A){var e="undefined"!=typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(!e){if(Array.isArray(u)||(e=N(u))||A&&u&&"number"==typeof u.length){e&&(u=e);var t=0,n=function(){};return{s:n,n:function(){return t>=u.length?{done:!0}:{done:!1,value:u[t++]}},e:function(u){throw u},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,E=!0,r=!1;return{s:function(){e=e.call(u)},n:function(){var u=e.next();return E=u.done,u},e:function(u){r=!0,i=u},f:function(){try{E||null==e.return||e.return()}finally{if(r)throw i}}}}var C,O,I=(n(C={},"A","А"),n(C,"a","а"),n(C,"B","Б"),n(C,"b","б"),n(C,"D","Д"),n(C,"d","д"),n(C,"E","Е"),n(C,"e","е"),n(C,"F","Ф"),n(C,"f","ф"),n(C,"G","Г"),n(C,"g","г"),n(C,"H","Ҳ"),n(C,"h","ҳ"),n(C,"I","И"),n(C,"i","и"),n(C,"J","Ж"),n(C,"j","ж"),n(C,"K","К"),n(C,"k","к"),n(C,"L","Л"),n(C,"l","л"),n(C,"M","М"),n(C,"m","м"),n(C,"N","Н"),n(C,"n","н"),n(C,"O","О"),n(C,"o","о"),n(C,"P","П"),n(C,"p","п"),n(C,"Q","Қ"),n(C,"q","қ"),n(C,"R","Р"),n(C,"r","р"),n(C,"S","С"),n(C,"s","с"),n(C,"T","Т"),n(C,"t","т"),n(C,"U","У"),n(C,"u","у"),n(C,"V","В"),n(C,"v","в"),n(C,"X","Х"),n(C,"x","х"),n(C,"Y","Й"),n(C,"y","й"),n(C,"Z","З"),n(C,"z","з"),C),R=(n(O={},"А","A"),n(O,"а","a"),n(O,"Б","B"),n(O,"б","b"),n(O,"Д","D"),n(O,"д","d"),n(O,"Е","E"),n(O,"е","e"),n(O,"Ф","F"),n(O,"ф","f"),n(O,"Г","G"),n(O,"г","g"),n(O,"Ҳ","H"),n(O,"ҳ","h"),n(O,"И","I"),n(O,"и","i"),n(O,"Ж","J"),n(O,"ж","j"),n(O,"К","K"),n(O,"к","k"),n(O,"Л","L"),n(O,"л","l"),n(O,"М","M"),n(O,"м","m"),n(O,"Н","N"),n(O,"н","n"),n(O,"О","O"),n(O,"о","o"),n(O,"П","P"),n(O,"п","p"),n(O,"Қ","Q"),n(O,"қ","q"),n(O,"Р","R"),n(O,"р","r"),n(O,"С","S"),n(O,"с","s"),n(O,"Т","T"),n(O,"т","t"),n(O,"У","U"),n(O,"у","u"),n(O,"В","V"),n(O,"в","v"),n(O,"Х","X"),n(O,"х","x"),n(O,"Й","Y"),n(O,"й","y"),n(O,"З","Z"),n(O,"з","z"),n(O,"Ў","O".concat("‘")),n(O,"ў","o".concat("‘")),n(O,"Ғ","G".concat("‘")),n(O,"ғ","g".concat("‘")),n(O,"Ш","Sh"),n(O,"ш","sh"),n(O,"Ч","Ch"),n(O,"ч","ch"),n(O,"Ё","Yo"),n(O,"ё","yo"),n(O,"Ц","S"),n(O,"ц","s"),n(O,"Ь",""),n(O,"ь",""),n(O,"Э","E"),n(O,"э","e"),n(O,"Ю","Yu"),n(O,"ю","yu"),n(O,"Я","Ya"),n(O,"я","ya"),n(O,"Ъ","ʼ"),n(O,"ъ","ʼ"),O),S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function T(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}function l(u,A){return u(A={exports:{}},A.exports),A.exports}var B=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.TLDs="(AAA|AARP|ABARTH|ABB|ABBOTT|ABBVIE|ABC|ABLE|ABOGADO|ABUDHABI|AC|ACADEMY|ACCENTURE|ACCOUNTANT|ACCOUNTANTS|ACO|ACTOR|AD|ADAC|ADS|ADULT|AE|AEG|AERO|AETNA|AF|AFAMILYCOMPANY|AFL|AFRICA|AG|AGAKHAN|AGENCY|AI|AIG|AIGO|AIRBUS|AIRFORCE|AIRTEL|AKDN|AL|ALFAROMEO|ALIBABA|ALIPAY|ALLFINANZ|ALLSTATE|ALLY|ALSACE|ALSTOM|AM|AMERICANEXPRESS|AMERICANFAMILY|AMEX|AMFAM|AMICA|AMSTERDAM|ANALYTICS|ANDROID|ANQUAN|ANZ|AO|AOL|APARTMENTS|APP|APPLE|AQ|AQUARELLE|AR|ARAB|ARAMCO|ARCHI|ARMY|ARPA|ART|ARTE|AS|ASDA|ASIA|ASSOCIATES|AT|ATHLETA|ATTORNEY|AU|AUCTION|AUDI|AUDIBLE|AUDIO|AUSPOST|AUTHOR|AUTO|AUTOS|AVIANCA|AW|AWS|AX|AXA|AZ|AZURE|BA|BABY|BAIDU|BANAMEX|BANANAREPUBLIC|BAND|BANK|BAR|BARCELONA|BARCLAYCARD|BARCLAYS|BAREFOOT|BARGAINS|BASEBALL|BASKETBALL|BAUHAUS|BAYERN|BB|BBC|BBT|BBVA|BCG|BCN|BD|BE|BEATS|BEAUTY|BEER|BENTLEY|BERLIN|BEST|BESTBUY|BET|BF|BG|BH|BHARTI|BI|BIBLE|BID|BIKE|BING|BINGO|BIO|BIZ|BJ|BLACK|BLACKFRIDAY|BLOCKBUSTER|BLOG|BLOOMBERG|BLUE|BM|BMS|BMW|BN|BNPPARIBAS|BO|BOATS|BOEHRINGER|BOFA|BOM|BOND|BOO|BOOK|BOOKING|BOSCH|BOSTIK|BOSTON|BOT|BOUTIQUE|BOX|BR|BRADESCO|BRIDGESTONE|BROADWAY|BROKER|BROTHER|BRUSSELS|BS|BT|BUDAPEST|BUGATTI|BUILD|BUILDERS|BUSINESS|BUY|BUZZ|BV|BW|BY|BZ|BZH|CA|CAB|CAFE|CAL|CALL|CALVINKLEIN|CAM|CAMERA|CAMP|CANCERRESEARCH|CANON|CAPETOWN|CAPITAL|CAPITALONE|CAR|CARAVAN|CARDS|CARE|CAREER|CAREERS|CARS|CASA|CASE|CASEIH|CASH|CASINO|CAT|CATERING|CATHOLIC|CBA|CBN|CBRE|CBS|CC|CD|CEB|CENTER|CEO|CERN|CF|CFA|CFD|CG|CH|CHANEL|CHANNEL|CHARITY|CHASE|CHAT|CHEAP|CHINTAI|CHRISTMAS|CHROME|CHURCH|CI|CIPRIANI|CIRCLE|CISCO|CITADEL|CITI|CITIC|CITY|CITYEATS|CK|CL|CLAIMS|CLEANING|CLICK|CLINIC|CLINIQUE|CLOTHING|CLOUD|CLUB|CLUBMED|CM|CN|CO|COACH|CODES|COFFEE|COLLEGE|COLOGNE|COM|COMCAST|COMMBANK|COMMUNITY|COMPANY|COMPARE|COMPUTER|COMSEC|CONDOS|CONSTRUCTION|CONSULTING|CONTACT|CONTRACTORS|COOKING|COOKINGCHANNEL|COOL|COOP|CORSICA|COUNTRY|COUPON|COUPONS|COURSES|CPA|CR|CREDIT|CREDITCARD|CREDITUNION|CRICKET|CROWN|CRS|CRUISE|CRUISES|CSC|CU|CUISINELLA|CV|CW|CX|CY|CYMRU|CYOU|CZ|DABUR|DAD|DANCE|DATA|DATE|DATING|DATSUN|DAY|DCLK|DDS|DE|DEAL|DEALER|DEALS|DEGREE|DELIVERY|DELL|DELOITTE|DELTA|DEMOCRAT|DENTAL|DENTIST|DESI|DESIGN|DEV|DHL|DIAMONDS|DIET|DIGITAL|DIRECT|DIRECTORY|DISCOUNT|DISCOVER|DISH|DIY|DJ|DK|DM|DNP|DO|DOCS|DOCTOR|DOG|DOMAINS|DOT|DOWNLOAD|DRIVE|DTV|DUBAI|DUCK|DUNLOP|DUPONT|DURBAN|DVAG|DVR|DZ|EARTH|EAT|EC|ECO|EDEKA|EDU|EDUCATION|EE|EG|EMAIL|EMERCK|ENERGY|ENGINEER|ENGINEERING|ENTERPRISES|EPSON|EQUIPMENT|ER|ERICSSON|ERNI|ES|ESQ|ESTATE|ESURANCE|ET|ETISALAT|EU|EUROVISION|EUS|EVENTS|EXCHANGE|EXPERT|EXPOSED|EXPRESS|EXTRASPACE|FAGE|FAIL|FAIRWINDS|FAITH|FAMILY|FAN|FANS|FARM|FARMERS|FASHION|FAST|FEDEX|FEEDBACK|FERRARI|FERRERO|FI|FIAT|FIDELITY|FIDO|FILM|FINAL|FINANCE|FINANCIAL|FIRE|FIRESTONE|FIRMDALE|FISH|FISHING|FIT|FITNESS|FJ|FK|FLICKR|FLIGHTS|FLIR|FLORIST|FLOWERS|FLY|FM|FO|FOO|FOOD|FOODNETWORK|FOOTBALL|FORD|FOREX|FORSALE|FORUM|FOUNDATION|FOX|FR|FREE|FRESENIUS|FRL|FROGANS|FRONTDOOR|FRONTIER|FTR|FUJITSU|FUJIXEROX|FUN|FUND|FURNITURE|FUTBOL|FYI|GA|GAL|GALLERY|GALLO|GALLUP|GAME|GAMES|GAP|GARDEN|GAY|GB|GBIZ|GD|GDN|GE|GEA|GENT|GENTING|GEORGE|GF|GG|GGEE|GH|GI|GIFT|GIFTS|GIVES|GIVING|GL|GLADE|GLASS|GLE|GLOBAL|GLOBO|GM|GMAIL|GMBH|GMO|GMX|GN|GODADDY|GOLD|GOLDPOINT|GOLF|GOO|GOODYEAR|GOOG|GOOGLE|GOP|GOT|GOV|GP|GQ|GR|GRAINGER|GRAPHICS|GRATIS|GREEN|GRIPE|GROCERY|GROUP|GS|GT|GU|GUARDIAN|GUCCI|GUGE|GUIDE|GUITARS|GURU|GW|GY|HAIR|HAMBURG|HANGOUT|HAUS|HBO|HDFC|HDFCBANK|HEALTH|HEALTHCARE|HELP|HELSINKI|HERE|HERMES|HGTV|HIPHOP|HISAMITSU|HITACHI|HIV|HK|HKT|HM|HN|HOCKEY|HOLDINGS|HOLIDAY|HOMEDEPOT|HOMEGOODS|HOMES|HOMESENSE|HONDA|HORSE|HOSPITAL|HOST|HOSTING|HOT|HOTELES|HOTELS|HOTMAIL|HOUSE|HOW|HR|HSBC|HT|HU|HUGHES|HYATT|HYUNDAI|IBM|ICBC|ICE|ICU|ID|IE|IEEE|IFM|IKANO|IL|IM|IMAMAT|IMDB|IMMO|IMMOBILIEN|IN|INC|INDUSTRIES|INFINITI|INFO|ING|INK|INSTITUTE|INSURANCE|INSURE|INT|INTEL|INTERNATIONAL|INTUIT|INVESTMENTS|IO|IPIRANGA|IQ|IR|IRISH|IS|ISMAILI|IST|ISTANBUL|IT|ITAU|ITV|IVECO|JAGUAR|JAVA|JCB|JCP|JE|JEEP|JETZT|JEWELRY|JIO|JLL|JM|JMP|JNJ|JO|JOBS|JOBURG|JOT|JOY|JP|JPMORGAN|JPRS|JUEGOS|JUNIPER|KAUFEN|KDDI|KE|KERRYHOTELS|KERRYLOGISTICS|KERRYPROPERTIES|KFH|KG|KH|KI|KIA|KIM|KINDER|KINDLE|KITCHEN|KIWI|KM|KN|KOELN|KOMATSU|KOSHER|KP|KPMG|KPN|KR|KRD|KRED|KUOKGROUP|KW|KY|KYOTO|KZ|LA|LACAIXA|LAMBORGHINI|LAMER|LANCASTER|LANCIA|LAND|LANDROVER|LANXESS|LASALLE|LAT|LATINO|LATROBE|LAW|LAWYER|LB|LC|LDS|LEASE|LECLERC|LEFRAK|LEGAL|LEGO|LEXUS|LGBT|LI|LIDL|LIFE|LIFEINSURANCE|LIFESTYLE|LIGHTING|LIKE|LILLY|LIMITED|LIMO|LINCOLN|LINDE|LINK|LIPSY|LIVE|LIVING|LIXIL|LK|LLC|LLP|LOAN|LOANS|LOCKER|LOCUS|LOFT|LOL|LONDON|LOTTE|LOTTO|LOVE|LPL|LPLFINANCIAL|LR|LS|LT|LTD|LTDA|LU|LUNDBECK|LUPIN|LUXE|LUXURY|LV|LY|MA|MACYS|MADRID|MAIF|MAISON|MAKEUP|MAN|MANAGEMENT|MANGO|MAP|MARKET|MARKETING|MARKETS|MARRIOTT|MARSHALLS|MASERATI|MATTEL|MBA|MC|MCKINSEY|MD|ME|MED|MEDIA|MEET|MELBOURNE|MEME|MEMORIAL|MEN|MENU|MERCKMSD|METLIFE|MG|MH|MIAMI|MICROSOFT|MIL|MINI|MINT|MIT|MITSUBISHI|MK|ML|MLB|MLS|MM|MMA|MN|MO|MOBI|MOBILE|MODA|MOE|MOI|MOM|MONASH|MONEY|MONSTER|MORMON|MORTGAGE|MOSCOW|MOTO|MOTORCYCLES|MOV|MOVIE|MP|MQ|MR|MS|MSD|MT|MTN|MTR|MU|MUSEUM|MUTUAL|MV|MW|MX|MY|MZ|NA|NAB|NAGOYA|NAME|NATIONWIDE|NATURA|NAVY|NBA|NC|NE|NEC|NET|NETBANK|NETFLIX|NETWORK|NEUSTAR|NEW|NEWHOLLAND|NEWS|NEXT|NEXTDIRECT|NEXUS|NF|NFL|NG|NGO|NHK|NI|NICO|NIKE|NIKON|NINJA|NISSAN|NISSAY|NL|NO|NOKIA|NORTHWESTERNMUTUAL|NORTON|NOW|NOWRUZ|NOWTV|NP|NR|NRA|NRW|NTT|NU|NYC|NZ|OBI|OBSERVER|OFF|OFFICE|OKINAWA|OLAYAN|OLAYANGROUP|OLDNAVY|OLLO|OM|OMEGA|ONE|ONG|ONL|ONLINE|ONYOURSIDE|OOO|OPEN|ORACLE|ORANGE|ORG|ORGANIC|ORIGINS|OSAKA|OTSUKA|OTT|OVH|PA|PAGE|PANASONIC|PARIS|PARS|PARTNERS|PARTS|PARTY|PASSAGENS|PAY|PCCW|PE|PET|PF|PFIZER|PG|PH|PHARMACY|PHD|PHILIPS|PHONE|PHOTO|PHOTOGRAPHY|PHOTOS|PHYSIO|PICS|PICTET|PICTURES|PID|PIN|PING|PINK|PIONEER|PIZZA|PK|PL|PLACE|PLAY|PLAYSTATION|PLUMBING|PLUS|PM|PN|PNC|POHL|POKER|POLITIE|PORN|POST|PR|PRAMERICA|PRAXI|PRESS|PRIME|PRO|PROD|PRODUCTIONS|PROF|PROGRESSIVE|PROMO|PROPERTIES|PROPERTY|PROTECTION|PRU|PRUDENTIAL|PS|PT|PUB|PW|PWC|PY|QA|QPON|QUEBEC|QUEST|QVC|RACING|RADIO|RAID|RE|READ|REALESTATE|REALTOR|REALTY|RECIPES|RED|REDSTONE|REDUMBRELLA|REHAB|REISE|REISEN|REIT|RELIANCE|REN|RENT|RENTALS|REPAIR|REPORT|REPUBLICAN|REST|RESTAURANT|REVIEW|REVIEWS|REXROTH|RICH|RICHARDLI|RICOH|RIGHTATHOME|RIL|RIO|RIP|RMIT|RO|ROCHER|ROCKS|RODEO|ROGERS|ROOM|RS|RSVP|RU|RUGBY|RUHR|RUN|RW|RWE|RYUKYU|SA|SAARLAND|SAFE|SAFETY|SAKURA|SALE|SALON|SAMSCLUB|SAMSUNG|SANDVIK|SANDVIKCOROMANT|SANOFI|SAP|SARL|SAS|SAVE|SAXO|SB|SBI|SBS|SC|SCA|SCB|SCHAEFFLER|SCHMIDT|SCHOLARSHIPS|SCHOOL|SCHULE|SCHWARZ|SCIENCE|SCJOHNSON|SCOR|SCOT|SD|SE|SEARCH|SEAT|SECURE|SECURITY|SEEK|SELECT|SENER|SERVICES|SES|SEVEN|SEW|SEX|SEXY|SFR|SG|SH|SHANGRILA|SHARP|SHAW|SHELL|SHIA|SHIKSHA|SHOES|SHOP|SHOPPING|SHOUJI|SHOW|SHOWTIME|SHRIRAM|SI|SILK|SINA|SINGLES|SITE|SJ|SK|SKI|SKIN|SKY|SKYPE|SL|SLING|SM|SMART|SMILE|SN|SNCF|SO|SOCCER|SOCIAL|SOFTBANK|SOFTWARE|SOHU|SOLAR|SOLUTIONS|SONG|SONY|SOY|SPACE|SPORT|SPOT|SPREADBETTING|SR|SRL|SS|ST|STADA|STAPLES|STAR|STATEBANK|STATEFARM|STC|STCGROUP|STOCKHOLM|STORAGE|STORE|STREAM|STUDIO|STUDY|STYLE|SU|SUCKS|SUPPLIES|SUPPLY|SUPPORT|SURF|SURGERY|SUZUKI|SV|SWATCH|SWIFTCOVER|SWISS|SX|SY|SYDNEY|SYMANTEC|SYSTEMS|SZ|TAB|TAIPEI|TALK|TAOBAO|TARGET|TATAMOTORS|TATAR|TATTOO|TAX|TAXI|TC|TCI|TD|TDK|TEAM|TECH|TECHNOLOGY|TEL|TEMASEK|TENNIS|TEVA|TF|TG|TH|THD|THEATER|THEATRE|TIAA|TICKETS|TIENDA|TIFFANY|TIPS|TIRES|TIROL|TJ|TJMAXX|TJX|TK|TKMAXX|TL|TM|TMALL|TN|TO|TODAY|TOKYO|TOOLS|TOP|TORAY|TOSHIBA|TOTAL|TOURS|TOWN|TOYOTA|TOYS|TR|TRADE|TRADING|TRAINING|TRAVEL|TRAVELCHANNEL|TRAVELERS|TRAVELERSINSURANCE|TRUST|TRV|TT|TUBE|TUI|TUNES|TUSHU|TV|TVS|TW|TZ|UA|UBANK|UBS|UG|UK|UNICOM|UNIVERSITY|UNO|UOL|UPS|US|UY|UZ|VA|VACATIONS|VANA|VANGUARD|VC|VE|VEGAS|VENTURES|VERISIGN|VERSICHERUNG|VET|VG|VI|VIAJES|VIDEO|VIG|VIKING|VILLAS|VIN|VIP|VIRGIN|VISA|VISION|VIVA|VIVO|VLAANDEREN|VN|VODKA|VOLKSWAGEN|VOLVO|VOTE|VOTING|VOTO|VOYAGE|VU|VUELOS|WALES|WALMART|WALTER|WANG|WANGGOU|WATCH|WATCHES|WEATHER|WEATHERCHANNEL|WEBCAM|WEBER|WEBSITE|WED|WEDDING|WEIBO|WEIR|WF|WHOSWHO|WIEN|WIKI|WILLIAMHILL|WIN|WINDOWS|WINE|WINNERS|WME|WOLTERSKLUWER|WOODSIDE|WORK|WORKS|WORLD|WOW|WS|WTC|WTF|XBOX|XEROX|XFINITY|XIHUAN|XIN|XN--11B4C3D|XN--1CK2E1B|XN--1QQW23A|XN--2SCRJ9C|XN--30RR7Y|XN--3BST00M|XN--3DS443G|XN--3E0B707E|XN--3HCRJ9C|XN--3OQ18VL8PN36A|XN--3PXU8K|XN--42C2D9A|XN--45BR5CYL|XN--45BRJ9C|XN--45Q11C|XN--4GBRIM|XN--54B7FTA0CC|XN--55QW42G|XN--55QX5D|XN--5SU34J936BGSG|XN--5TZM5G|XN--6FRZ82G|XN--6QQ986B3XL|XN--80ADXHKS|XN--80AO21A|XN--80AQECDR1A|XN--80ASEHDB|XN--80ASWG|XN--8Y0A063A|XN--90A3AC|XN--90AE|XN--90AIS|XN--9DBQ2A|XN--9ET52U|XN--9KRT00A|XN--B4W605FERD|XN--BCK1B9A5DRE4C|XN--C1AVG|XN--C2BR7G|XN--CCK2B3B|XN--CG4BKI|XN--CLCHC0EA0B2G2A9GCD|XN--CZR694B|XN--CZRS0T|XN--CZRU2D|XN--D1ACJ3B|XN--D1ALF|XN--E1A4C|XN--ECKVDTC9D|XN--EFVY88H|XN--FCT429K|XN--FHBEI|XN--FIQ228C5HS|XN--FIQ64B|XN--FIQS8S|XN--FIQZ9S|XN--FJQ720A|XN--FLW351E|XN--FPCRJ9C3D|XN--FZC2C9E2C|XN--FZYS8D69UVGM|XN--G2XX48C|XN--GCKR3F0F|XN--GECRJ9C|XN--GK3AT1E|XN--H2BREG3EVE|XN--H2BRJ9C|XN--H2BRJ9C8C|XN--HXT814E|XN--I1B6B1A6A2E|XN--IMR513N|XN--IO0A7I|XN--J1AEF|XN--J1AMH|XN--J6W193G|XN--JLQ61U9W7B|XN--JVR189M|XN--KCRX77D1X4A|XN--KPRW13D|XN--KPRY57D|XN--KPU716F|XN--KPUT3I|XN--L1ACC|XN--LGBBAT1AD8J|XN--MGB9AWBF|XN--MGBA3A3EJT|XN--MGBA3A4F16A|XN--MGBA7C0BBN0A|XN--MGBAAKC7DVF|XN--MGBAAM7A8H|XN--MGBAB2BD|XN--MGBAH1A3HJKRD|XN--MGBAI9AZGQP6J|XN--MGBAYH7GPA|XN--MGBBH1A|XN--MGBBH1A71E|XN--MGBC0A9AZCG|XN--MGBCA7DZDO|XN--MGBCPQ6GPA1A|XN--MGBERP4A5D4AR|XN--MGBGU82A|XN--MGBI4ECEXP|XN--MGBPL2FH|XN--MGBT3DHD|XN--MGBTX2B|XN--MGBX4CD0AB|XN--MIX891F|XN--MK1BU44C|XN--MXTQ1M|XN--NGBC5AZD|XN--NGBE9E0A|XN--NGBRX|XN--NODE|XN--NQV7F|XN--NQV7FS00EMA|XN--NYQY26A|XN--O3CW4H|XN--OGBPF8FL|XN--OTU796D|XN--P1ACF|XN--P1AI|XN--PBT977C|XN--PGBS0DH|XN--PSSY2U|XN--Q7CE6A|XN--Q9JYB4C|XN--QCKA1PMC|XN--QXA6A|XN--QXAM|XN--RHQV96G|XN--ROVU88B|XN--RVC1E0AM3E|XN--S9BRJ9C|XN--SES554G|XN--T60B56A|XN--TCKWE|XN--TIQ49XQYJ|XN--UNUP4Y|XN--VERMGENSBERATER-CTB|XN--VERMGENSBERATUNG-PWB|XN--VHQUV|XN--VUQ861B|XN--W4R85EL8FHU5DNRA|XN--W4RS40L|XN--WGBH1C|XN--WGBL6A|XN--XHQ521B|XN--XKC2AL3HYE2A|XN--XKC2DL3A5EE0H|XN--Y9A3AQ|XN--YFRO4I67O|XN--YGBI2AMMX|XN--ZFR164B|XXX|XYZ|YACHTS|YAHOO|YAMAXUN|YANDEX|YE|YODOBASHI|YOGA|YOKOHAMA|YOU|YOUTUBE|YT|YUN|ZA|ZAPPOS|ZARA|ZERO|ZIP|ZM|ZONE|ZUERICH|ZW|TEST)"}));T(B),B.TLDs;var s=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.openingParenthesis="([\"'{",A.closingParenthesis=")]\"'}",A.parenthesis=A.openingParenthesis.split("").map((function(u,e){return""+u+A.closingParenthesis.charAt(e)})),A.htmlAttributes=["src","data","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap","itemtype","action","longdesc","classid","archive"],A.nonLatinAlphabetRanges="\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC",A.TLDs=B.TLDs}));T(s),s.openingParenthesis,s.closingParenthesis,s.parenthesis,s.htmlAttributes,s.nonLatinAlphabetRanges,s.TLDs;var D=l((function(u,A){function e(u,A,e){return"function"==typeof e?e(u,A):e}Object.defineProperty(A,"__esModule",{value:!0}),A.transform=function(u,A){var t="",n=1/0,i={},E=!1;if(A&&A.specialTransform)for(var r=0;r<A.specialTransform.length;r++){var N=A.specialTransform[r];if(N.test.test(u.string))return N.transform(u.string,u)}return A&&A.exclude&&e(u.string,u,A.exclude)?u.string:(A&&A.protocol&&(t=e(u.string,u,A.protocol)),u.protocol?t="":t||(t=u.isEmail?"mailto:":u.isFile?"file:///":"http://"),A&&A.truncate&&(n=e(u.string,u,A.truncate)),A&&A.middleTruncation&&(E=e(u.string,u,A.middleTruncation)),A&&A.attributes&&(i=e(u.string,u,A.attributes)),"<a "+Object.keys(i).map((function(u){return!0===i[u]?u:u+'="'+i[u]+'" '})).join(" ")+'href="'+t+u.string+'">'+(u.string.length>n?E?u.string.substring(0,Math.floor(n/2))+"…"+u.string.substring(u.string.length-Math.ceil(n/2),u.string.length):u.string.substring(0,n)+"…":u.string)+"</a>")}}));T(D),D.transform;var L=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var e="([a-z0-9]+(-+[a-z0-9]+)*\\.)+("+s.TLDs+")",t="a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()",n="((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",i="\\[(([a-f0-9:]+:+)+[a-f0-9]+)\\]",E="(https?:|ftps?:)\\/\\/",r="((("+E+")?("+e+"|"+n+"|("+E+")("+i+"|"+("([a-z0-9]+(-+[a-z0-9]+)*\\.)+([a-z0-9][a-z0-9-]{0,"+(Math.max.apply(S,s.TLDs.split("|").map((function(u){return u.length})))-2)+"}[a-z0-9])")+"))(?!@\\w)(:(\\d{1,5}))?)|(((https?:|ftps?:)\\/\\/)\\S+))",N=r+"((((\\/((["+t+"]+(\\/["+t+s.nonLatinAlphabetRanges+"]*)*))?)?)((\\?(["+t+"\\/?]*))?)((\\#(["+t+"\\/?]*))?))?\\b(((["+t+"\\/"+s.nonLatinAlphabetRanges+"][a-zA-Z\\d\\-_~+=\\/"+s.nonLatinAlphabetRanges+"]+)?))+)";A.email="\\b(mailto:)?([a-z0-9!#$%&'*+=?^_`{|}~-]+(\\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*)@("+e+"|"+n+")\\b",A.url="("+N+")|(\\b"+r+"(((\\/(([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]+(\\/[a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]*)*))?)?)((\\?([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?)((\\#([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?))?\\b(([\\/]?))+)",A.file="(file:\\/\\/\\/)([a-z]+:(\\/|\\\\)+)?([\\w.]+([\\/\\\\]?)+)+",A.final="("+A.url+")|("+A.email+")|("+A.file+")",A.finalRegex=new RegExp(A.final,"gi"),A.ipRegex=new RegExp("^("+n+"|"+i+")$","i"),A.emailRegex=new RegExp("^("+A.email+")$","i"),A.fileRegex=new RegExp("^("+A.file+")$","i"),A.urlRegex=new RegExp("^("+A.url+")$","i");var o={isURL:0,isEmail:0,isFile:0,file:{fileName:0,protocol:0},email:{protocol:0,local:0,host:0},url:{ipv4:0,ipv6:0,ipv4Confirmation:0,byProtocol:0,port:0,protocol1:0,protocol2:0,protocol3:0,protocolWithDomain:0,path:0,secondPartOfPath:0,query:0,fragment:0}};A.iidxes=o;for(var a=["file:///some/file/path/filename.pdf","mailto:e+_mail.me@sub.domain.com","http://sub.domain.co.uk:3000/p/a/t/h_(asd)/h?q=abc123#dfdf","http://www.عربي.com","http://127.0.0.1:3000/p/a/t_(asd)/h?q=abc123#dfdf","http://[2a00:1450:4025:401::67]/k/something","a.org/abc/ი_გგ"].join(" "),C=null,O=0;null!==(C=A.finalRegex.exec(a));)0===O&&(o.isFile=C.lastIndexOf(C[0]),o.file.fileName=C.indexOf("filename.pdf"),o.file.protocol=C.indexOf("file:///")),1===O&&(o.isEmail=C.lastIndexOf(C[0]),o.email.protocol=C.indexOf("mailto:"),o.email.local=C.indexOf("e+_mail.me"),o.email.host=C.indexOf("sub.domain.com")),2===O&&(o.isURL=C.lastIndexOf(C[0]),o.url.protocol1=C.indexOf("http://"),o.url.protocolWithDomain=C.indexOf("http://sub.domain.co.uk:3000"),o.url.port=C.indexOf("3000"),o.url.path=C.indexOf("/p/a/t/h_(asd)/h"),o.url.query=C.indexOf("q=abc123"),o.url.fragment=C.indexOf("dfdf")),3===O&&(o.url.byProtocol=C.lastIndexOf("http://www.عربي.com"),o.url.protocol2=C.lastIndexOf("http://")),4===O&&(o.url.ipv4=C.indexOf("127.0.0.1"),o.url.ipv4Confirmation=C.indexOf("0.")),5===O&&(o.url.ipv6=C.indexOf("2a00:1450:4025:401::67"),o.url.protocol3=C.lastIndexOf("http://")),6===O&&(o.url.secondPartOfPath=C.indexOf("გგ")),O++}));T(L),L.email,L.url,L.file,L.finalRegex,L.ipRegex,L.emailRegex,L.fileRegex,L.urlRegex,L.iidxes;var c=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.checkParenthesis=function(u,A,e,t){return t===A&&(e.split(u).length-e.split(A).length==1||u===A&&e.split(u).length%2==0||void 0)},A.maximumAttrLength=s.htmlAttributes.sort((function(u,A){return A.length-u.length}))[0].length,A.isInsideAttribute=function(u){return/\s[a-z0-9-]+=('|")$/i.test(u)||/: ?url\(('|")?$/i.test(u)},A.isInsideAnchorTag=function(u,A,e){for(var t=u.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),n=new RegExp("(?=(<a))(?!([\\s\\S]*)(<\\/a>)("+t+"))[\\s\\S]*?("+t+")(?!\"|')","gi"),i=null;null!==(i=n.exec(A));){if(i.index+i[0].length===e)return!0}return!1}}));T(c),c.checkParenthesis,c.maximumAttrLength,c.isInsideAttribute,c.isInsideAnchorTag;var F=T(l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var e=function(u){for(var A=[],e=null,t=function(){var t=e.index,n=t+e[0].length,i=e[0];if("/"===u.charAt(n)&&(i+=u.charAt(n),n++),s.closingParenthesis.indexOf(u.charAt(n))>-1&&s.parenthesis.forEach((function(A){var e=A.charAt(0),t=A.charAt(1);c.checkParenthesis(e,t,i,u.charAt(n))&&(i+=u.charAt(n),n++)})),-1!==['""',"''","()"].indexOf(u.charAt(t-1)+u.charAt(n))&&c.isInsideAttribute(u.substring(t-c.maximumAttrLength-15,t)))return"continue";if(u.substring(n,u.length).indexOf("</a>")>-1&&u.substring(0,t).indexOf("<a")>-1&&c.isInsideAnchorTag(i,u,n))return"continue";if(e[L.iidxes.isURL]){var E=(e[L.iidxes.url.path]||"")+(e[L.iidxes.url.secondPartOfPath]||"")||void 0,r=e[L.iidxes.url.protocol1]||e[L.iidxes.url.protocol2]||e[L.iidxes.url.protocol3];A.push({start:t,end:n,string:i,isURL:!0,protocol:r,port:e[L.iidxes.url.port],ipv4:e[L.iidxes.url.ipv4Confirmation]?e[L.iidxes.url.ipv4]:void 0,ipv6:e[L.iidxes.url.ipv6],host:e[L.iidxes.url.byProtocol]?void 0:(e[L.iidxes.url.protocolWithDomain]||"").substr((r||"").length),confirmedByProtocol:!!e[L.iidxes.url.byProtocol],path:e[L.iidxes.url.byProtocol]?void 0:E,query:e[L.iidxes.url.query]||void 0,fragment:e[L.iidxes.url.fragment]||void 0})}else if(e[L.iidxes.isFile]){var N=i.substr(8);A.push({start:t,end:n,string:i,isFile:!0,protocol:e[L.iidxes.file.protocol],filename:e[L.iidxes.file.fileName],filePath:N,fileDirectory:N.substr(0,N.length-e[L.iidxes.file.fileName].length)})}else e[L.iidxes.isEmail]?A.push({start:t,end:n,string:i,isEmail:!0,local:e[L.iidxes.email.local],protocol:e[L.iidxes.email.protocol],host:e[L.iidxes.email.host]}):A.push({start:t,end:n,string:i})};null!==(e=L.finalRegex.exec(u));)t();return A},t=function(u){var A="string"==typeof u?{input:u,options:void 0,extensions:void 0}:u,t=A.input,n=A.options,i=A.extensions;if(i)for(var E=0;E<i.length;E++){var r=i[E];t=t.replace(r.test,r.transform)}var N=e(t),o="";for(E=0;E<N.length;E++)o=(o||(0===E?t.substring(0,N[E].start):""))+D.transform(N[E],n)+(N[E+1]?t.substring(N[E].end,N[E+1].start):t.substring(N[E].end));return o||t};t.list=function(u){return e(u)},t.validate={ip:function(u){return L.ipRegex.test(u)},email:function(u){return L.emailRegex.test(u)},file:function(u){return L.fileRegex.test(u)},url:function(u){return L.urlRegex.test(u)||L.ipRegex.test(u)}},A.default=t}))),f=/[og][ʻʼ’'`‘´]/gi,M=/[ʻʼ’'`‘´]/gi,G=/[-\/\\^$*+?.()|[\]{}]/g,h=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/;function U(u){return u.toLowerCase()===u}function p(u,A){return U(A)?u.toLowerCase():u.toUpperCase()}function P(u){return u.charAt(0).toUpperCase()+u.substring(1).toLowerCase()}function d(u){return"string"==typeof u&&/^[a-z\u0400-\u04FF]+$/i.test(u)}function X(u){return/ь$/i.test(u)}function H(u){return u.replace(/ь$/i,"")}function g(u){var A=this;return u.replace(f,function(u){return i(this,A),u.charAt(0)+"‘"}.bind(this))}function K(u){return u.replace(M,"ʼ")}var Y=/Ч/gi,v=/Ш/gi,m=/^Е/gi,W=/Е/gi,x=/Ё/gi,y=/Ю/gi,V=/Я/gi,b=/е{3,}/gi,J=/[ьъ]е/gi,Z=/[аоэеиуўёюяaeiou]е/gi,Q=/[аоэеиуўёюяaeiou]ц/gi,w=/ьо/gi,k=/сҳ/gi,_=/[ўғ]ъ/gi;function z(u){var A=this;return u.replace(W,function(u){return i(this,A),R[u]||u}.bind(this))}function j(u){return p("ye",u.charAt(1))}function $(u){return u.charAt(0)+p("ye",u.charAt(1))}function q(u){return p("yo",u.charAt(1))}function uu(u){return u.charAt(0)}function Au(u){return u.charAt(0)+p("ts",u.charAt(1))}function eu(u){return p("s",u.charAt(0))+"ʼ"+p("h",u.charAt(1))}function tu(u,A,e){var t=this;return u.replace(A,function(A,n){if(i(this,t),U(A))return e.toLowerCase();if(!d(u[n-1])&&!d(u[n+1]))return P(e);var E=d(u[n+1])&&u[n+1];return E&&U(E)?P(e):e.toUpperCase()}.bind(this))}function nu(u){var A,e="",t=a(function(u){return u=tu(u,Y,"CH"),u=tu(u,v,"SH"),u=tu(u,m,"YE"),u=tu(u,x,"YO"),u=tu(u,y,"YU"),(u=(u=tu(u,V,"YA")).replace(b,z)).replace(J,j).replace(Z,$).replace(w,q).replace(_,uu).replace(Q,Au).replace(k,eu)}(u));try{for(t.s();!(A=t.n()).done;){var n=A.value;e+=n in R?R[n]:n}}catch(u){t.e(u)}finally{t.f()}return e}var iu=function(){function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"collection",[]),this.extend(e)}return t(u,[{key:"extend",value:function(u){var A=this;u.forEach(function(u){if(i(this,A),!(u&&u[0]&&u[1]))throw new Error("Invalid exceptional pair ".concat(u));var e,t=this.normalizeCharactersForLatin(u);(e=this.collection).push.apply(e,r(this.generateWordCasingVariants(t)))}.bind(this))}},{key:"purge",value:function(){this.collection=[]}},{key:"normalizeCharactersForLatin",value:function(u){var A=E(u,2),e=A[0],t=A[1];return[g(K(e)),t]}},{key:"generateWordCasingVariants",value:function(u){var A=E(u,2),e=A[0],t=A[1];return[[e.toLowerCase(),t.toLowerCase()],[e.toUpperCase(),t.toUpperCase()],[P(e),P(t)]]}},{key:"getCase",value:function(u,A){var e="latin"===A?1:0;return{exceptionalWord:u["latin"===A?0:1],replacement:u[e]}}},{key:"findInCollection",value:function(u,A){var e,t,n,i=U(u.charAt(0))?u.toLowerCase():P(u),E=a(this.collection);try{for(E.s();!(n=E.n()).done;){var r=n.value,N=this.getCase(r,A),o=N.exceptionalWord,C=N.replacement;if(u.startsWith(o))return e={exceptionalWord:o,replacement:C},"latin"===A&&X(C)&&u.length!==o.length&&(e.replacement=H(C)),{exceptional:e};if("cyrillic"===A&&X(o)&&u.length!==o.length&&u.startsWith(H(o)))return{exceptional:e={exceptionalWord:H(o),replacement:C}};i.startsWith(o)&&(t={exceptionalWord:o,replacement:C})}}catch(u){E.e(u)}finally{E.f()}return{alternative:t}}},{key:"decideMatcher",value:function(u,A){return void 0!==u?u.exceptionalWord:void 0!==A?new RegExp(A.exceptionalWord.replace(G,"\\$&"),"gi"):void 0}},{key:"findCase",value:function(u,A){var e=this.findInCollection(u,A),t=e.exceptional,n=e.alternative,i=this.decideMatcher(t,n),E=(null==t?void 0:t.replacement)||(null==n?void 0:n.replacement);if(i&&E)return{matcher:i,replacement:E}}}]),u}();function Eu(u,A,e){var t=this;return u.replace(A,function(u){return i(this,t),p(e,u[0])}.bind(this))}function ru(u){var A=this;return u=(u=u.replace(/tsi(on|ya)/gi,function(u){return i(this,A),Eu(u,/ts/i,"ц")}.bind(this))).replace(/^e|[\W]e/gi,function(u){return i(this,A),Eu(u,/e/i,"э")}.bind(this)),u=Eu(u=u.replace(/e{2}/gi,function(u){return i(this,A),u[0]+p("э",u[1])}.bind(this)),/ch/gi,"ч"),u=Eu(u,/sh/gi,"ш"),u=Eu(u,/g[ʻʼ’'`‘´]/gi,"ғ"),u=Eu(u,/o[ʻʼ’'`‘´]/gi,"ў"),u=Eu(u,/ye/gi,"е"),u=Eu(u,/yo/gi,"ё"),u=Eu(u,/yu/gi,"ю"),u=function(u){var A=this;return u.replace(/[ʻʼ’'`‘´]/g,function(e,t){i(this,A);var n=u[t+1]||u[t-1];return n?p("ъ",n):"ъ".toLowerCase()}.bind(this))}(u=(u=Eu(u,/ya/gi,"я")).replace(/s[ʻʼ’'`‘´]h/gi,function(u){return i(this,A),(I[u[0]]||u[0])+(I[u[2]]||u[2])}.bind(this)))}function Nu(u){var A,e="",t=a(ru(u));try{for(t.s();!(A=t.n()).done;){var n=A.value;e+=n in I?I[n]:n}}catch(u){t.e(u)}finally{t.f()}return e}var ou=function(){function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"exceptionalsCollection",new iu),this.extendExceptionals(e)}return t(u,[{key:"extendExceptionals",value:function(u){this.exceptionalsCollection.extend(u)}},{key:"purgeExceptionals",value:function(){this.exceptionalsCollection.purge()}},{key:"getTransliterator",value:function(u){return"latin"===u?Nu:nu}},{key:"replaceExceptionals",value:function(u,A,e,t){var n=this,E=u.split(A);return(E=E.map(function(u,A){i(this,n);var r=A===E.length-1;return t(u)+(r?"":e)}.bind(this))).join("")}},{key:"handleExceptional",value:function(u,A){"latin"===A&&(u=g(K(u)));var e=this.exceptionalsCollection.findCase(u,A);if(e)return this.replaceExceptionals(u,e.matcher,e.replacement,this.getTransliterator(A))}},{key:"transliteratePureWord",value:function(u,A){var e=this,t=this.getTransliterator(A);return u.replace(/[ʻʼ’'`´‘a-z\u0400-\u04FF\-]+/gi,function(u){i(this,e);var n=this.handleExceptional(u,A);return n||t(u)}.bind(this))}},{key:"transliterateWord",value:function(u,A){if(function(u){return F.list(u).length>0}(u))return u;if(function(u){return h.test(u)}(u))return u;var e=this.handleExceptional(u,A);return e||this.transliteratePureWord(u,A)}},{key:"toCyrillic",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return i(this,A),this.transliterateWord(u,"latin")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"latin"):void 0}},{key:"toLatin",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return i(this,A),this.transliterateWord(u,"cyrillic")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"cyrillic"):void 0}},{key:"textToCyrillic",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return i(this,A),this.transliterateWord(u,"latin")}.bind(this))}},{key:"textToLatin",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return i(this,A),this.transliterateWord(u,"cyrillic")}.bind(this))}}]),u}();u.cyrillicToLatin=nu,u.default=ou,u.latinToCyrillic=Nu,Object.defineProperty(u,"__esModule",{value:!0})}));
|
package/pkg/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lotin-kirill",
|
|
3
3
|
"description": "Transform Uzbek latin characters into Uzbek-cyrillic characters or vice versa. O'zbekcha so'zlarni lotin alifbosidan kirill alifbosiga (yoki aksincha) o'girish.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.4",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist-*/",
|