// ==UserScript==
// @name OWOP Chat Utils
// @namespace https://greasyfork.org/en/users/1502179/
// @version 1.6
// @description Adds several useful features to the chat
// @author NothingHere7759
// @match https://ourworldofpixels.com/*
// @exclude https://ourworldofpixels.com/api*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAYAAACLz2ctAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAIAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAA2XYBAOgDAADZdgEA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAAACMojeFEB6NgAAArJJREFUeF7t28uNE1EQQFGbCFgzgZDGiEARaRAIrCeDYd8CqawpfP05Z9kLd7d99RZV8vn0IH79+Px+vPbIXl7fzsdr9+jT8QJckwBJCZCUAEkJkJQASQmQlABJCZBUNk2vNhdfvn47Xropv39+P166imqz4gQkJUBSAiQlQFICJCVAUgIkJUBSAiS1Pv3e3nA82+Zi+323n297Y+IEJCVAUgIkJUBSAiQlQFICJCVAUgIkNZ5qVxuO7Un+9L5Tt/58U9vvMd2YOAFJCZCUAEkJkJQASQmQlABJCZCUAEmNptWnCzYh00n+9uR92/Q9KtPvb/s9pve1CeEuCJCUAEkJkJQASQmQlABJCZCUAEmdpxuOqenkfTpRr0zf49ls/25OQFICJCVAUgIkJUBSAiQlQFICJCVAUuNNSLUZ2J68b7/H9vNt237fqen34gQkJUBSAiQlQFICJCVAUgIkJUBSAiR185uQynSS/yi2f9/p9+cEJCVAUgIkJUBSAiQlQFICJCVAUgIktb4JmU7Ap6b3ndp+vmcz/T2m37MTkJQASQmQlABJCZCUAEkJkJQASQmQlABJCZCUAEkJkJQASQmQlABJCZCUAEkJkNT4PyFT0/8MVKb/VeA6nICkBEhKgKQESEqApARISoCkBEhKgKTOxwv/Mt2YbG9CppuL6X2nn8fHvLy+jdpyApISICkBkhIgKQGSEiApAZISICkBkhpNq08XbEKmppuLio3Jx9iEcBcESEqApARISoCkBEhKgKQESEqApEbT6kvYmDy26YZjyglISoCkBEhKgKQESEqApARISoCkBEhqdap9ie2NyZTNyt9tbzimnICkBEhKgKQESEqApARISoCkBEhKgKSS6ff/UG1WKtXmYpsTkJQASQmQlABJCZCUAEkJkJQASQmQ1B8g1YFmQv53bQAAAABJRU5ErkJggg==
// @grant none
// @license MIT
// ==/UserScript==
// CREDITS: Advice about the code - NekoNoka
// Beta testers - Rainbow, SyntexPr
/* CHANGELOG
Quick Tell 1.0 - Added /q and /qid
Group Chat 1.0 - Added /g
1.0 - Combined Quick Tell and Group Chat into Chat Utils
1.1 - Minor bugfixes for /g tell, /qid, /q and /help
Added /qgname and /qg
1.2 - Added /r
1.3 - Added /l, /lset and /clear
Improved command messages
Added aliases and changed some of the default commands
1.3.1 - Changed some command messages
Colorful Chat 0.0 - Added red, orange, gold, yellow, lime, green, cyan, blue, purple, violet, pink, magenta, brown, gray, grey, tree, grass, Mr. Smiles, Forest Land and Riverland
Colorful Chat 0.1 - Added white, black, rgb, Rainbow, Monochrome, Romaniaball, NothingHere, Diermania, SyntexPr, Trion, Coalition, Nortia, Vinland and [Server]
Fixed Mr. Smiles not having chat mentions
1.3.2 - Changed /clear to actually clear the chat
Colorful Chat 0.1.1 - Added RSSR, R55R, Moth, Potassium, Atlan, ATLaDOS, :D Anon, St. and Orang
Colorful Chat 1.0 - Rewrote the script with RegEx
Added crimson, indigo, fuchsia, mauve, South Nortia, Norisia and Evermore
Added support for hex color codes
Fixed :D Anon, St. and Моль not being colored
Colorful Chat 1.0.1 - Added water, :D-Anon, USRNSNN and URNNSN
Fixed some color names not working
1.4 - Incorporated Colorful Chat into Chat Utils
Added /color
Added chat mentions for colorful chat
1.4.1 - Fixed a bug with the /help message
1.4.2 - Added lava, fire, HungaryBall, Rainbowball, Hungary, MagyarLabda, Magyar, Romania, Europe RP and Cyan (nickname) to colorful chat
Changed crimson, orange, lime, indigo and Trion for colorful chat
1.5 - Added an icon to the script
Added /yell
Removed the ability for players to execute their own html
Fixed the "unknown command" message when using /help for commands added by the script
Fixed /group ids showing a stray comma when the group it's being used on has only one player
Changed /help messages to be more similar to the vanilla ones
Added Coali, EU, Slyntex, Syntaxis, Gabriel, CLN, CoalCRCition and Unbidden to colorful chat
Changed Rainbow for colorful chat
Fixed NothingHere7759 not being colored properly
1.5.1 - Cleaned up some of the code
Added /mute and /unmute
Added SAR, Shadow Taile, West Vlandia, East Vlandia, Sangsa, Kwapt, Siremia, Magyarország, România, Mothership, MothMethMyth, Mothylamine and СинтексПр to colorful chat
Changed CoalCRCition, Hungary, Hungaryball, Magyarlabda and Magyar for colorful chat
Made some names get colored when used as nickname too
Removed the /gq alias of /qg
1.5.2 - Added colorful chat for discord messages
Added taumotons, Sisyphus Prime, Minos Prime, Russia, Germany, Potassium_l, Enderment, Xahh, LLG, NoNameZ, 16777216, NekoNoka, Toaster, C3phei, Taha Südenland, Martan, ReloopGD, Blake, Capa, Leg, Vvictor, Lapis, Stevesta, JPDLD, Amogusland, Doitshlænd, Lemon, Lemonwires, Tess, Helper, Cygnus, Shay, Neomoth, Eldit, Jigg, C-Yard, VGS, JJB, Norddex, 999, Nurutomo, Memelord, Randoof and Frick Verizon to colorful chat
Added /nearby
Changed Romaniaball for colorful chat
Fixed some names not being colored if next to punctuation marks
Fixed Rainbow, Rainbowball and Gabriel having two (M)'s, St. being colored when part of a word, and the space between "Shadow" and "Taile" getting removed
1.6 - Added /show
Changed /mute and /unmute to /block and /unblock, respectively
Added Markdown support
Added earth, air, void, admin, moderator, Limbo, Oblivion, Arcadia, Purgatory, Damnation, Paradise, Nirvana, Ragnarok, Olympus, Eden, Utopia, Laniakea, Eka-Laniakea, Elysium, Camelot, Lemuria, Midas, Armageddon, Valhalla, Atlantis, Avalon, Heaven, Shangri-La, El Dorado, Solaris, Aether, Hyperion, Anteproxima, Proxima, Syberlong, Sudenland, 4est, Phorrhest Landt, Northia, Greenyland, Phyrexia, Purperism, RodimusPrime, Duck12, Boötes Imperium, Raliovi, Regenbogen and Ofo Gang to colorful chat
Unnamed players now have their id colored in the chat
Changed Norisia and Diermania for colorful chat
Fixed Слюнтекс not being colored
Fixed the JP discord emoji not working properly
Fixed words inside of some links getting colored, therefore breaking them
*/
'use strict';
(() => {
//Pre-installation
const waitUntil = (probe, cb, t = 200) => {
const id = setInterval(() => { try { if (probe()) { clearInterval(id); cb(); } } catch { } }, t);
};
waitUntil(
() => window.OWOP &&
OWOP.misc?.chatRecvModifier &&
OWOP.misc.world?.players &&
OWOP.misc.chatSendModifier,
install
);
function install() {
//Utilities
const say = OWOP.chat.send;
function tell(id, msg) { say('/tell ' + id + ' ' + msg) };
const locSend = OWOP.chat.local;
function locErr(msg) {
OWOP.chat.receiveMessage(`{
"sender":"server",
"type":"error",
"data":{
"message":"${msg}"
}
}`);
}
const playerList = OWOP.misc.world.players;
function mdParse(str) {
return str
.replace(/(?<!\\)\*\*([^*].*?[^\\]|[^*\\])\*\*/g, match => `<b>${match.slice(2).slice(0, -2)}</b>`) // ** --> Bold
.replace(/(?<!\\)\*.*?[^\\]\*/g, match => `<i>${match.slice(1).slice(0, -1)}</i>`) // * ---> Italic
.replace(/(?<!\\)__([^_].*?[^\\]|[^_\\])__/g, match => `<u>${match.slice(2).slice(0, -2)}</u>`) // __ --> Underline
.replace(/(?<!\\)_.*?[^\\]_/g, match => `<i>${match.slice(1).slice(0, -1)}</i>`) // _ ---> Italic
.replace(/(?<!\\)~~([^~].*?[^\\]|[^~\\])~~/g, match => `<s>${match.slice(2).slice(0, -2)}</s>`) // ~~ --> Strikethrough
.replace(/(?<!\\)~.*?[^\\]~/g, match => `<sub>${match.slice(1).slice(0, -1)}</sub>`) // ~ ---> Subscript
.replace(/(?<!\\)\^.*?[^\\]\^/g, match => `<sup>${match.slice(1).slice(0, -1)}</sup>`) // ^ ---> Superscript
.replace(/(?<!\\)`.*?[^\\]`/g, match => `<code>${match.slice(1).slice(0, -1)}</code>`) // ` ---> Code
.replace(/(?<!\\)==([^=].*?[^\\]|[^=\\])==/g, match => `<mark>${match.slice(2).slice(0, -2)}</mark>`) // == --> Highlight
.replace(/^##\s.+$/gm, match => `<span style="font-size:24px;">${match.slice(3).replace(/#+\s*$/, '')}</span>`) // ## --> Heading 2
.replace(/^#\s.+$/gm, match => `<span style="font-size:32px;">${match.slice(2).replace(/#+\s*$/, '')}</span>`) // # ---> Heading 1
.replace(/^-#\s.+$/gm, match => `<span style="font-size:12px;">${match.slice(3)}</span>`) // -# --> Subtext
.replace(/(?<!\\)\{[\dA-F]{6}\s/gi, match => `<span style='color:#${match.slice(1, -1)}'>`) // {c --> Color
.replace(/(?<!\\)\{RB\s/gi, `<span class="rainbow">`) // {rb -> Rainbow
.replace(/(?<!\\)\}/g, '</span>') // Close the color spans
.replace(/^\[ \]/gm, '<input type="checkbox">') // [ ] -> Unchecked item
.replace(/^\[X\]/gim, '<input type="checkbox" checked>') // [X] -> Checked item
.replace(/(?<!\\)\\/g, '') // Remove lone backslashes
.replace(/\\\\/g, '\\') // Halve each backslash pair
}
let playerID = OWOP.player.id;
//Variables
let quickID;
let quickGroup;
let responseID;
let nearbyThresh = 500;
//Group command
const groups = {};
function gHandle(args) {
switch (args[0]) {
case "create": {
if (args.length != 2) {
locErr("Usage: /group create <group name> (group name cannot contain spaces)");
break;
};
if (!groups[args[1]]) {
groups[args[1]] = [];
locSend('Group "' + args[1] + '" was successfully created');
break;
};
locErr('Group "' + args[1] + '" already exists');
}; break;
case "delete": {
if (args.length != 2) {
locErr("Usage: /group delete <group name>")
break;
};
if (!groups[args[1]]) {
locErr('Group "' + args[1] + '" does not exist');
break;
};
delete groups[args[1]];
locSend('Group "' + args[1] + '" was successfully deleted')
}; break;
case "add": {
if (args.length != 3 || isNaN(args[1])) {
locErr("Usage: /group add <id> <group name>");
break;
};
if (!groups[args[2]]) {
locErr('Group "' + args[2] + '" does not exist');
break;
};
if (groups[args[2]].includes(args[1])) {
locErr('Group "' + args[2] + '" already includes ' + args[1]);
break;
};
if (args[1] == playerID) {
locErr('Group "' + args[2] + '" already includes you')
break;
};
if (!playerList[args[1]]) {
locErr("ID " + args[1] + " does not exist")
break;
};
groups[args[2]].push(args[1]);
locSend("ID " + args[1] + ' was successfully added to group "' + args[2] + '"')
}; break;
case "remove": {
if (args.length != 3 || isNaN(args[1])) {
locErr("Usage: /group remove <id> <group name>");
break;
};
if (!groups[args[2]]) {
locErr('Group "' + args[2] + '" does not exist');
break;
};
if (args[1] == playerID) {
locErr('You cannot remove yourself from any group')
break;
};
if (!groups[args[2]].includes(args[1])) {
locErr('Group "' + args[2] + '" does not include ' + args[1]);
break;
};
groups[args[2]].splice(groups[args[2]].indexOf(args[1]), 1);
locSend("ID " + args[1] + ' was successfully removed from group "' + args[2] + '"')
}; break;
case "tell": {
if (args.length < 2) {
locErr('Usage: /group tell <group name> <message>');
break;
};
if (!groups[args[1]]) {
locErr('Group "' + args[1] + '" does not exist');
break;
};
for (let i = 0; i < groups[args[1]].length; i++) {
if (!playerList[groups[args[1]][i]]) {
locErr("ID " + groups[args[1]][i] + " disconnected");
groups[args[1]].splice(i, 1);
};
};
let msg = args.slice(2).join(' ') + "\nGroup chat: " + playerID + ", " + groups[args[1]].join(', ');
for (let i = 0; i < groups[args[1]].length; i++) {
tell(groups[args[1]][i], msg)
};
}; break;
case "ids": {
if (args.length != 2) {
locErr("Usage: /group ids <group name>");
break;
};
if (!groups[args[1]]) {
locErr('Group "' + args[1] + '" does not exist');
break;
};
locSend('Group "' + args[1] + '": ' + playerID + (groups[args[1]].length == 0 ? '' : (', ' + groups[args[1]].join(', '))));
}; break;
case "groups": {
if (args.length != 1) {
locErr("Usage: /group groups");
break;
};
locSend('Groups: ' + Object.keys(groups).join(", "))
}; break;
default: {
locErr("Usage: /group create/delete <group name> | /group add/remove <id> <group name> | /group tell <group name> <message> | /group ids <group name> | /group groups");
};
};
};
//Help command
function helpHandle(args) {
if (args.length != 1) {
locSend("Chat Utils commands: block, clear, color, group, local, lset, nearby, q, qg, qgset, qset, respond, show, unblock, yell")
return;
};
switch (args[0]) {
case "group":
case "groups":
case "g":
locSend("group - Create/delete a group, add/remove a player from a group, tell a message to a group, list ids inside a group or list current groups.\nUsage: /group create/delete <group name> | /group add/remove <id> <group name> | /group tell <group name> <message> | /group ids <group name> | /group groups\nAliases: g, groups");
break;
case "qset":
case "qid":
locSend("qset - Set an id to quickly message with /q.\nUsage: /qset <id>\nAliases: qid")
break;
case "q":
locSend("q - Message the id set with /qset.\nUsage: /q <message>\nAliases: [None]")
break;
case "qgset":
case "qgroup":
case "qgname":
locSend("qgset - Set a group to quickly message with /qg.\nUsage: /qgset <group name>\nAliases: qgroup, qgname")
break;
case "qg":
locSend("qg - Message the group set with /qgset.\nUsage: /qg <message>\nAliases: [None]")
break;
case "respond":
case "r":
locSend("respond - Respond to the latest /tell message from another player.\nUsage: /respond <message>\nAliases: r")
break;
case "local":
case "l":
locSend("local - Message people within the distance set with /lset (default: 500 pixels).\nUsage: /local <message>\nAliases: l")
break;
case "lset":
locSend("lset - Set the distance within which people receive messages sent with /local (default: 500 pixels).\nUsage: /lset <distance>\nAliases: [None]")
break;
case "c":
case "clear":
locSend("clear - Clears the chat.\nUsage: /clear\nAliases: c");
break;
case "color":
locSend("color - Toggles colorful chat.\nUsage: /color <true/false>\nAliases: [None]");
break;
case "yell":
locSend("yell - Tell another user a message privately or send it globally in all caps.\nUsage: /yell <id*> <message> (* = optional)\nAliases: [None]");
break;
case "block":
locSend("block - Blocks a user.\nUsage: /block <id>\nAliases: [None]");
break;
case "unblock":
locSend("unblock - Unblocks a user.\nUsage: /unblock <id>\nAliases: [None]");
break;
case "nearby":
locSend("nearby - Lists the players within the distance set with /lset or the specified one.\nUsage: /nearby <distance*> (* = optional)\nAliases: [None]");
break;
case "show":
locSend("show - Shows or hides the chat.\nUsage: /show\nAliases: [None]");
};
return '';
};
//Message processing
const prevR = OWOP.misc.chatRecvModifier || (m => m);
OWOP.misc.chatRecvModifier = (msg) => {
msg = prevR(msg);
const msgParsed = JSON.parse(msg);
//Response
if (msgParsed.type == "whisperSent") {
responseID = msgParsed.data.targetID;
};
if (msgParsed.type == "whisperReceived") {
responseID = msgParsed.data.senderID;
};
//Fix "Unknown command:" messages from /help
if (msgParsed.type == "error" && msgParsed.data.message.startsWith("Unknown command: ")) {
if (!['group', 'groups', 'g', 'qset', 'qid', 'q', 'qgset', 'qgroup', 'qgname', 'qg', 'respond', 'r', 'local', 'l', 'lset', 'c', 'clear', 'color', 'yell', 'block', 'unblock', 'nearby', 'show'].every(cmd => cmd != msgParsed.data.message.slice(17, -1))) {
return '';
};
};
// Muting system because either idk how to use the vanilla one or it just isn't working
if (OWOP.muted.includes(msgParsed.data.senderID)) return;
//Colorful Chat
if (localStorage.colorChat === undefined) localStorage.colorChat = true;
if (localStorage.colorChat == "true") {
/*** FIRST TECHNICAL AREA ***/
if (msgParsed.sender == "server" && msgParsed.data.message.startsWith('[D] ')) { //Discord compatibility
msgParsed.sender = 'player';
msgParsed.type = 'message';
msgParsed.data.nick = msgParsed.data.message.match(/^\[D\]\s.+?(?=:)/)[0];
msgParsed.data.message = msgParsed.data.message.replace(/^\[D\]\s.+?:\s/, ``);
msgParsed.data.rank = 4;
};
if (msgParsed.sender == "server" || msgParsed.type == "whisperReceived") return msg;
//console.log("Message before: " + msg); // Debug
const rank = msgParsed.data.rank;
msgParsed.data.rank = 3;
function sName(rx, replace) {
msgParsed.data.message = msgParsed.data.message.replace(rx, replace);
};
// Prevent people from executing their own code but leave dc emojis alone
if (rank < 3) {
//msgParsed.data.message = OWOP.util.escapeHTML(msgParsed.data.message);
sName(/<(?!a?:(.+?):(\d{8,32}))/g, `<`);
sName(/(?<!a?:(.+?):(\d{8,32}))>/g, `>`);
};
if (!msgParsed.data.message.match(/^\$(?!\$)/) && !anchorme(msgParsed.data.message).includes("<a")) { // Color override
/*** OTHER WORDS ***/
// Colors
sName(/#\b(\d|[a-f]){6}\b/gi, match => `<span style='color:${match}'>${match}</span>`);
sName(/\bRED\b/gi, match => `<span style='color:#E53B44'>${match}</span>`);
sName(/\bCRIMSON\b/gi, match => `<span style='color:#9E2835'>${match}</span>`);
sName(/\bORANGE\b/gi, match => `<span style='color:#FB922B'>${match}</span>`);
sName(/\bGOLD\b/gi, match => `<span style='color:#FFB735'>${match}</span>`);
sName(/\bYELLOW\b/gi, match => `<span style='color:#FFE762'>${match}</span>`);
sName(/\bGREEN\b/gi, match => `<span style='color:#63C64D'>${match}</span>`);
sName(/\bLIME\b/gi, match => `<span style='color:#B1D657'>${match}</span>`);
sName(/\bBLUE\b/gi, match => `<span style='color:#3AB2FF'>${match}</span>`);
sName(/\bINDIGO\b/gi, match => `<span style='color:#0484D1'>${match}</span>`);
sName(/\bCYAN\b/gi, match => `<span style='color:#2CE8F4'>${match}</span>`);
sName(/\b(MAGENTA|PINK|FUCHSIA)\b/gi, match => `<span style='color:#FF41E4'>${match}</span>`);
sName(/\b(VIOLET|PURPLE|MAUVE)\b/gi, match => `<span style='color:#AB80F9'>${match}</span>`);
sName(/\bBROWN\b/gi, match => `<span style='color:#B86F50'>${match}</span>`);
sName(/\bGR(A|E)Y\b/gi, match => `<span style='color:#AFBFD2'>${match}</span>`);
sName(/\bWHITE\b/gi, match => `<span style='color:#FFFFFF'>${match}</span>`);
sName(/\bBLACK\b/gi, match => `<span style='color:#000000; text-shadow:-1px 0px 0 #FFF, 1px 0px 0 #FFF, 0px 1px 0 #FFF, 0px -1px 0 #FFF'>${match}</span>`);
sName(/\bRGB\b/gi, match => { match = match.split(""); return `<span style='color:#FF0000'>${match[0]}</span><span style='color:#00FF00'>${match[1]}</span><span style='color:#0000FF'>${match[2]}</span>` });
// Other words
sName(/\bTREE\b/gi, match => `<span style='color:#B86F50'>${match}</span>`);
sName(/\bGRASS\b/gi, match => `<span style='color:#63C64D'>${match}</span>`);
sName(/\bWATER\b/gi, match => `<span style='color:#3AB2FF'>${match}</span>`);
sName(/\bLAVA\b/gi, match => `<span style='color:#FB922B'>${match}</span>`);
sName(/\bFIRE\b/gi, match => `<span style='color:#E53B44'>${match}</span>`);
sName(/\bEARTH\b/gi, match => `<span style='color:#B86F50'>${match}</span>`);
sName(/\bAIR\b/gi, match => `<span style='color:#AFBFD2'>${match}</span>`);
// Countries
sName(/\bROM(A|Â)NIA\b/gi, match => `<span style='color:#003CB3'>${match[0] + match[1]}</span><span style='color:#FCD116'>${match[2] + match[3] + match[4]}</span><span style='color:#CE1126'>${match[5] + match[6]}</span>`);
sName(/\bHUNGARY\b/gi, match => { match = match.split(""); return `<span style='color:#CE2939'>${match[0] + match[1]}</span><span style='color:#FFFFFF'>${match[2] + match[3] + match[4]}</span><span style='color:#477050'>${match[5] + match[6]}</span>` });
sName(/\bMAGYAR\b/gi, match => { match = match.split(""); return `<span style='color:#CE2939'>${match[0] + match[1]}</span><span style='color:#FFFFFF'>${match[2] + match[3]}</span><span style='color:#477050'>${match[4] + match[5]}</span>` });
sName(/\bMAGYARORSZ(Á|A)G\b/gi, match => `<span style='color:#CE2939'>${match.slice(0, 4)}</span><span style='color:#FFFFFF'>${match.slice(4, 8)}</span><span style='color:#477050'>${match.slice(8)}</span>`);
sName(/(?<=\s|^|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)(RUSSIA|РОССИЯ|POCCNR)(?=\s|$|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)/gi, match => `<span style='color:#FFFFFF'>${match.slice(0, 2)}</span><span style='color:#0032A0'>${match.slice(2, 4)}</span><span style='color:#DA291C'>${match.slice(-2)}</span>`);
sName(/\bGERMANY\b/gi, match => `<span style='color:#595959'>${match.slice(0, 2)}</span><span style='color:#FF0000'>${match.slice(2, 5)}</span><span style='color:#FFCC00'>${match.slice(-2)}</span>`);
sName(/\bDEUTSCHLAND\b/gi, match => `<span style='color:#595959'>${match.slice(0, 4)}</span><span style='color:#FF0000'>${match.slice(4, 7)}</span><span style='color:#FFCC00'>${match.slice(-4)}</span>`);
// Border names
sName(/\bLIMBO\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAMUExURQo5VBVwqArQlSzy7vDaOZYAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAASZJREFUOMttkgGSBREMRFtcQLgAcQHk/nfbZv7Wbo2vahjzppPoAN4jVHQ+rTui1wvDn0U+yL0MlDjVu07X5W8OnenvQyiqfUDjyl6OQN+cIc342hcnMz8ZWpzNi3sHM7w4l6kVMiInLdzucuKAl1kouHnARIalYGgoSP8FRdfNkTJK7bktmWiBGbz5dkl8HJfeHFKgo7e8omJ+sfHiQmeGp+CRjjwCxlEF0kfw4hIbP9DhqHk8guqr5e7yCF48CKZ1Hn8uK6gJCsEIuaWIys3FwbOZaRU14yl3fP4aWk6U7RwXnzTNWgqZDWqMlIS9Zr2cVg03Z19StJ7CshF2ZwQtYZl1hMyiLg7m5/3Yg7aMXZL0c+N8VfnGT8JjZj63Zpv6O9LNfwDPsDQ6wZvBIgAAAABJRU5ErkJggg==">`);
sName(/\bOBLIVION\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAPUExURQAAAKysrICAgJ4oNeU7RDSL0DwAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAARtJREFUOMuV0lGShiAIAGBGT6BeAOkCGtwA73+mBaym3X3Y/akMiU9rJoBPo+yo5R31HvpV6Hde4fW0MU9mblzIkkmN/fC08HmhC/QY2lpTljbtJFOY2NKozS4Oei2doNQAVAs19b4APEVJ1HbwmoNaDfQNrN1Af4Pa2QCXdHjtDJA6BaAA+A0gz6Ys82ADp+gDCA2guYJ0gaWHEsjZFq95aIB1yiAyQAmhOkgdbRLbsy2aDBy21w1EDWBKSAmA0HsJkGCvphugAcob8JKBDtIG1m4gbcAvkLJmrw1ZBiBBAPgLDBn5BrBBshEekJWtB+3lHgB2QrQDIPhGkee1/Bvs5j282MGeBPgVmXnYvxS3YTO/rgmPf//NP+MLZABWizJ0KUoAAAAASUVORK5CYII=">`);
sName(/\bARCADIA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAwUExURQAAAP8AAP9VAP+SAP/AAP/+AKT/AFVVVQD/SgD/zQC+/wCA/yEA/6wA/9oA//8A0CK0ZI4AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAJVJREFUOMuVksENwjAQBPcDFyf50AIt0AIt0ALv/NwCLdBCWqCFtEALtAAXbO8Ffjv26UbW6ixLBlQOIjiK4CSCswguxB+0+yuebVJXYjnvf2uiRwo3YrCuFLrmsOKRwp34pORTk6Xqq63bPVKYiU/qS6Fv7jd8e6TwIDbUlXPtEz1SWAjGusC+NN+kniJ4ieAtIv/uD0cKCqWhgX+MAAAAAElFTkSuQmCC">`);
sName(/\bPURGATORY\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAMUExURQAAAOLi4rm5uZCQkEjWg78AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAKVJREFUOMu9UEEOAyEIBP0A/mDDfqCR//+tMGDWJu3BSwcMyu44I0SnGIf4A0GBi6gh6MfyyD9LQcZgIOq3hU9QSIlLuCHoWcT0nD1SgCQJYyQhqluIatwn9+yRSBJ4EYRKQZqL41ZFZu/FNIuwLNnc7cTNINT55l5vXlNyIdgpC/AcWT2tJzhjjTXI22hjjJHb/oNwm6qZTURVjdz2RbBDnBNO8QYr6TfVIF/BsgAAAABJRU5ErkJggg==">`);
sName(/\bDAMNATION\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURfuSK+U7RP/nYvW7CgAAAJ4oNT8oMigaILh8MN4AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAANNJREFUOMu1j8kVwjAMRAUVQHgUQKgARAPEyx3zoACW0AG0j2ZkliM58GMrGmmkvIj8nclAZATGbbsY8S4QTLtq7e0ZSkSmoFHV17WwarSrqquZleicyhx4K7KJsKcKqhsfYCnRKjtQYK7NGkylmcbms2hLqxxAgXm9tEYIdcBUKjjvRYlWuYITzVie0A3+mVxw6iIboFWOoNCM5XBodpVOOMEX2Tyt0oOz/V5QPPnMsKm5ZZk9JLT6QB9jxM0x9x6oemYX9JB8D/yO3Acit4HIYyBPxTW3XqdtH+cAAAAASUVORK5CYII=">`);
sName(/\bPARADISE\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAQBAMAAABzZ+XyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAACzo9P/nYvuSK////6+/0gSE0XqUtCCWJngAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAR1JREFUKM+NkjtuwzAMhn+93NUGcgDCvoAQXUAD3dkFombVUHjOEMDXLyknbdPJhB+fpU8kZRs4GsPBULEHjBD+gR4wgjq4i+NIejGvYNtNzvFHJCRjycUX8NbbCAj+ZqTBGVkf8xN6OjkVTZvce2zMVuYzZa0nIsmIii5Cy5m2D1mQCVOwACkYhYe4pGT6KaloEQfOU4qzTWdSGBR2MTBauyo6mBNLIs+SKC5tMwI9XVScP7Td1mKPTxaRmW1YRNREXY2VimzFl7VSpVXiq+D6R8yP1rTeJBkBG/fXwzPKxjmK6FSMIirUlOLFBZdSJ5g6mUcpW4ZCWHADwytkIBS83YC1yif0u3jdWGMugnd+xly27c7v2l97PPyXfQOBOkQnJXD4WQAAAABJRU5ErkJggg==">`);
sName(/\bNIRVANA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAAN2D8/OL/P/nYkAAgP///6hR/4AA/4F+am4AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAUJJREFUOMuVkjmWgzAMhrmCDI/UyDy7Hps3fYhyA3KAuJBrKPD1R5gMeJYmcuH196etqt41gG746ABA4Wnee1dsEU6rQNV0U7KqtT+NbsXG6x+CbriSIGrl9lv5UA/TlOf9xLkaGiK6ZoEAmiYjSo+EUPgkHtNDRhZsgIwAgxgYDQefY9COw3aAHDpo7hPdpw1RCeBKGWGCCRE5sSPyA42fiQ1zMIlF8BDBQwSqEkDTZETLJqzIMvrRO0LrmHkNFplPQVcQWvlOnnNER7ofnSzXaIJM6VkQzhjamAWJtetvhN5E3rzkyDAfgiJLzzasQbxGluhpRC1vRSBOMZRBf9cBVp4v4kPENSL2kkzL0Sw2XjhCmdaj0pcEkOyyoF2kZFv602KxmyHNcnsW7uil3V4dpf820dEaglC/T9V/T1+Cd+0LG618W9f1xygAAAAASUVORK5CYII=">`);
sName(/\bRAGNAROK\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAAP8AAP9VALAAAP+DAP+5AP/2AP/8tvJ2gkQAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAUxJREFUOMuVkl2uhCAMhZuwAt0BjAtAq8474gqU2YCxLOAmsv17qhkzyb0v0x8oh6+kJhJ9a5VaXf01+48Gjqy1Ve1Qwt+hmoYCWmM/F93JWVc5Z5m7irl9MPOjdY5bh5O9lI5b7uq6thYwOdCueRCZO41zvvtQOt/73rnmDAohuDU+DJt3LtQ3vptuRXE0hBhC4wLFGJtmnsyEq8ksyIlM9L0qlwMf/ABuDXOMtK5rnJO+d6W20OD75VaAQ4nrfAbNKc1zWoh4wsRAeDEeEBSj6qINZFJaz0iU0o5YCLPr/AYYQD9s59eo4kc8ML4UfKWdkkja981suNJVEfE0Xuflahi1AaDsO4nILnI3YJDNyKYNm/m5lNE//SgXKCQ5Y9v47YyUws8PZYQ/RbIcCJKjHEc+ci5S8lFyOeujQNVD0TprjUKQVL60r//uX/VJkTvjyKq5AAAAAElFTkSuQmCC">`);
// sName(/\bHELL\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAASUExURQAAAKw5QGglRjkRNisLIOVwRCO+SAIAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAJ9JREFUOMuVkosNwzAIRFkB4gVgg9RZIEpW8P6rFIPbfJ2WE7KMzZMOBEBUWEViyqZp/WrxF/9lKz0AIw4WqjRjUkDTWwDbUxnGGqo0FwWypjm//NcrQWKAAPMVMEu3ABEwbU2wljqQ1gosDuxaYIJGNkBllnqACAhFAD4DPy0JULdpPf1Ou6b5Yawfe4UOY8UY8LQaZsnO7i79tXxRvQE8GWZd0MwBHgAAAABJRU5ErkJggg==">`);
sName(/\bOLYMPUS\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAbUExURQAAAGPGTeSmcv///2yr0bhvUD8oMnQ/OWdRQb54c88AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAR5JREFUOMuV0kFOwzAQBdBcwRB5X4PcdRiJvdtRbsABQqPB6xzC8rH54wk0EWHRqapft/PkuJ6ue7TcU0C9OMtXTod5cvRm2Tn3gSJn+UxDS+a0S+eINAcFFAKhz4nIJDfyEsWLVhQhhP6gQPsMnJcGcq1TBiix+IoqsdZbFl2UBtDXwFVBApD8C4rgFUs2gB16vgPGB2aALwM1A7wX/wOwdVGAvmv6A2Yacv1cgT2Si6KA0YcuA7wByZfFl7HtIKTgvOTpf8BbQEegN5D00HMW2QJmPbRIPQa1zjgf70G1v5XvgDmEBnA/M97sJXgZRS+QeZRJb7EB9DVgI8DrKHBb4wlSWycbGbd+D9BfbMh4HTa+7DLZUJ7WNYbv0foGpWOxkn/yUekAAAAASUVORK5CYII=">`);
sName(/\bEDEN\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAAJza///////wm//nYjJzRT2OVWPGTR4+ICMAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAARNJREFUOMuVkrFuxCAMhqFNwkoiZU95AqT4ASodD5AbyJzlyMp0fv3aECLS3tD7h9g/+LONFCHeVU8yxqTvV19rOG19k4CBAJ15maOsfW8mOvgDzEkyR1t7aab5CvBIDUdHcCyp7entMMEVYGn4MDlSWcOAOby7EfUKSB3bBaQx+jLB2ddA2rnb+I6B8gZo3E3UgPccxyXvriLdeQbKW0DQCJD+TkVUKsYQOF23vBIDPiyuPVaiFRWNcG143Mc1+F6siJzuETp87oiRwU/XLTYERHxuoCJNosvHumPwgmpSGs8JtDk4tdniFTa0KqZ2GAQiHp3TI6mAV//GOBevMCYgS5QkiqNjDpWnWj74DfxXb//dP1QmeY3eT1cEAAAAAElFTkSuQmCC">`);
sName(/\bUTOPIA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAAAAoU7m5uX5+fv/nYoiivgAADt7JfLMAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAQZJREFUOMuVktFxwyAQRGkBUYFBDYgTDQg6uNF/+q8iuwdCjseeJDc+n9FoebsY5/5b/k0tEfXwbwuC5fodxMsmYi0VM2B69ieBxrKV82RrRYfeZzZah7rlhgc9yiZFchHRpKJBVIJK2R90uTa+6mJbbTkIGZ9WcjIBnngKQFjaAQEkFCBhO2CNhLxSs1ezZAJY2uMoSJzNw5ZpEihQyZPAN0mIJHQpli1NglnCNtiCu3SCWWpmiQQT/MiAZ1X7LkYwS3cGs/ScYRKOmxCfMhhBBgHHWkFIONaOHRnaSwb+R0bACTFDsnlluE5pZGDhFuArN16NJCTYlJkhzgx/r5e7+/Xr7f4G6ZJzfWnCnfcAAAAASUVORK5CYII=">`);
sName(/\bEKA(-|\s)LANIAKEA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAAA8THCcXPlEdcP///5csnthWuP+Xv5gokeAAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAPFJREFUOMuVksEKwjAMhvcKWdt5Hj6Bog9QFvFclN0HE8+C7PnNn5bNjF2WHhqSfv2bpFW112inCVCbwMnm3QYgMWb25D1zpBQJeySKsi0J8ZQWIEiOCHE4gwA4DF9W43OCEA4ZaAoQJd71U/cP3N7jRRMUW4+TAA4ZYH2KKuAFer++lXEDvOv7daLq2H+nB3NRyDXILhKKBI8E8LRSuOQaUK4CPmu4uYZhVcOzFE0FcFmBZuDjbZfGFRAMUF/v9/G8zCG6/vuwQLOhsExaWjArYFQCHHRwBYA3zEC2ZD6A9q41oUQWWP0h9M5aObD7d/8AJ7dTcuHcbqEAAAAASUVORK5CYII=">`);
sName(/\bLANIAKEA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAMUExURQAAAAAADv/th////yFmTPkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAONJREFUOMuVkoERwyAIRbFZAJigOgF37L9b4aNeml6vKYmJRJ4/IERna/Tb5E9bAMck+XhzPGIjjFai+aFFlG6gs4kc7sbW2Dgn7t6OvJbTRUafgA4ARLGUABmxUQRjEJzH+FQAEKuCG8EWGlJOXzlgEiG9xA3RWr/klNuUs5LWUYAOKJhTAuO5FXw6tfWbQv6+RQAUTHYO5dTWu6yZAwCmmYMcVSXkIKWgE+gnQPgrkHWlqmrWoRWgq6wLQFkncFLAMSUQGeLgNrCca2tkG2RXaLUGz8aYrSF0Ae43Xxnf6OuyF+/mL3AHNsf6AAAAAElFTkSuQmCC">`);
sName(/\bELYSIUM\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAbUExURQAAAP///+VwRPvUOR6QVZDx+K7+XZpKS//l76hNuvgAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAS1JREFUOMuVkjFuwzAMRX0FGeYJeAJLtds1hXIAGiayCyjjC7TonCHn7qfkBCnQoaEAi/zk49fgrns2wpPxG+DU7sM/gX7sx8B/AA91J4FwAtEQhIlCH0cZskshCOrB00OdCYIDYICM1iDCSsT9JGsmkmUUlORdrwkUAOlEIJGo5oMyT+pAzkcSFgc0H1XugDgAibQB7xMrLxNnPjIkiA3wBTpkrAWgLiHWnJvDEhFO6k12QB1Q7Oiq1DorIwMwcVpiMwP94j0MVOoBgFEDfGxm4/Y6BHqfN0D1/iQ9YRhZHU9zSanMXCph9mW7TQVOamZXO5uVyR24xDcYlAQgxlcuM/pbs3EAk1dzyezMCbsxDXa2K8d0ifCqbbNv2z4AbLXYtf16TLf7pyVP/90/dyiXyQCDav0AAAAASUVORK5CYII=">`);
sName(/\bCAMELOT\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAhUExURQAAAFKk3P///5zExIt/c1VNS2B+iR6QVZpKSzNjr0LMOc8JdYAAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAPVJREFUOMu9kbFKxTAUhiuBi6NHAtc1wQcIFO5e+DO4p3tBuLtTwcn7Di46u9in9D9NkyCo0MVvaJLT/zs5pV23F9lJFW5dXtZidyVy83OzWvTeqeQdH8aoEAJPIq509N8ET1izwD0GY3TYECw8tpwGXBG86ioAKY4ADo+mP02nidsIDLl/E7jPDSxijGNMMP1hMqEPjKc0pnJDHUnV4yxiR8Yje5qzuX4J5yxEiMxP7aM1yYIuHIhp6A0q6A2MV2FNVkEuYqHzk4fyj17zeZA7aQKTooWLYGP5fNt4X8hHEdZkEY4zWX6D75owN57/ECr/IOzlC/PRsYQzn6TUAAAAAElFTkSuQmCC">`);
sName(/\bLEMURIA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAPUExURQAAAASE0WPGTXQ/ObhvULu6x28AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAOJJREFUOMuVktEVwyAIRbOCcQJhAsENZP+ZCi8aTXP6Uc4LJS23gHIc/1padlJY2eJld9IAVGs4VfEIEkiFWJUIv+9AsxrOTDyCBLJOjMf6Dpwpx3vu2oS7f5KLQ2pCzeVB9TYnQDQAYmH/45EdajIVQLkADzwXFSQ6sAXMCgASrRkcoJR9BE+yfgMxA7JVW30MzQBQoTd9V/DjeABnADQc83uG7woB+LzTQXkHampSni3hROGu7rUtoLyBcWc27gtdh1PrDOV5c/dqXJswNgILcVJ8oQxl1QeA2/tt24b+vd0f8NhkG/eRgwIAAAAASUVORK5CYII=">`);
sName(/\bMIDAS\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAAN21M8ShLeVwRP/qaPvUOdewFYg7kxkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAPlJREFUOMudku1xwyAMhr0CvS5QsAcIWBnAhwaIkTxAarL/CBWf4V+TiBMnuPdBCDRN75r60tV+1CvxB4DuppRLZqtrbZzVEqhRU4B5LwCwmIXqGjgkV6OmAIQVcDLSZGUKhp2QLUPVZGD2dC+AhRXWO8jhFxNM8LJhtRo1GVgi7Q0AWPcOONkIJUPTZACPiE8AsAFSULqaGjUJWBD9YyuAlLA+hgzXzWSgaxIwU2SuwExD0SHKwmWgaxLAkZjPArBo2rOGQGmRga4RYInoD/Rb+jiI6K7145Zf5yVZftanRlrjZKbDM6UW+D+e1Pfp8STGeFOvxG939x+0GoGFY5R8XgAAAABJRU5ErkJggg==">`);
sName(/\bARMAGEDDON\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAADNjr1Kk3JyKkOVwRKw5QIovQ2glRpDx+B6QVULMOXeDPa7+XXzHMaAAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAWtJREFUOMuV0rFugzAUBVD/AmyRumBkqcqIwUtHLNhBJlIymnhhJcreqc2WtWOlSKmbrYIhTF2rfFQfThyI1A65o/2ujvADoXvjQFzHxRj72KeUhjTk18Q0hqMAB3DtOV4/awow3zfySFBGGQ9LnvJ0XSvJlaQ0oxnOsIfNvDMSCCE0Z6UKk4TXdcp5mcQyoVEUiCAbBO8qEBL5EZOKswSAvhCXkso8yMUguOh1OxaiswDTfYFLGcucZpCLMHlDm60VMiuUtmCFvnAWJnukP6yQG4GxsPxfmL6gzftYyKHwh0Cs8LhHG88KQhB4VhCUSnmdrkdCZAVXo2fvIhBsBMqSMEnTm1ca9uBOzbMagfjmG57aVhQzMZsJsRRV9WWEYQ/usOmd3jVd03ZtIQqxWvWFQlRt1zTdXM9vN/1w+tEaCjtTAEEAsV6p5UJVXbc4QkHrw+nbFE59YB7y2fVpxCgLc3Q01wczevff/Qs4hrpiREO30gAAAABJRU5ErkJggg==">`);
sName(/\bVALHALLA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAAJpKS2glRmB+ieVwRJzExPvUOUoZLHGFz4QAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAKpJREFUOMu9ksENwzAIRbMCbhfgRxkg8Q7tPZEn6f5S+Ti2bFc95BKwEF/mSYCYpqsmbioSROAJs0FZ1FwoJwC+AGXin70yjZuBFRog2QvQKgtlCAOe8ji2OcYIc5qLQZ3mwOv9OfYlpQRz2g60aknVjgFAB+AXWLuWNiuZaxO9qh2VobkFGytoHbpTeYvtWm8A/J8lgDYAlYU/AI+Q3358VQkpLUcol6/7C0kjUx54RfAVAAAAAElFTkSuQmCC">`);
sName(/\bATLANTIS\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAABi24izo9A5giJXnq////5Xz+QSE0UzQFeYAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAATFJREFUOMuVUsuOgzAM9C+YVHAmrLibqOy5VbR8Bw9xR6qU39+xk7LVXnY7AZNgz/gBRO+Cmf0/0SKWlcCVnWG7MBRnN/wO5wyKnCmtmqGDB6HBX9cn00KrLM8cKd74hKsGI3RexpWdleH4FZdI+/xzFCzvhR2LEx7FRHDlzQFT7zRvZwqnlCDiQMhHdgH764rdkUC43Gb62l8SsEA+KONECDwqoUmcuK43qhetKakHkSyWBzekndYipaTGZrMv1Pc6p3RYHOQKQakiViQXA9HY93RfKj5QoEm70ol2r+mMoKnwaNBDtWzUY86p+ZSTIKX7TLCXttMh+b4lzDpOKdlITc8yOCzTh1DQWsU+AoLJf8T4mKbDBZssPGhE45/qgXWhfsXdkz0fceI/EAve/ru/AW6VWHJ6+rA2AAAAAElFTkSuQmCC">`);
sName(/\bAVALON\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAhUExURQAAAP///9ff6Czo9JXz+fuSK//nYmPGTa+/0k9ngQSE0U+FMvcAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAATlJREFUOMuVkkFugzAQRbmCkXIAjLgAJicAqd2CNV6wn1l0XdU5QnoQuvAp+8eYlC4Zycr3n/88kyhVdbVMqaZ81sa0btIamnLfu3ugqbJT03wjqjsiQ7N1o+bHscfdNgYdPRowNQCQdR3mTri9C9uwtG4Y8gSHu+ttEFluwggYa/vK6jRNB+9c8Jo5gMGpdxcKeMe7sNjWuQpPWNsxu8Do+TuU5mPETjvAfYfnOF8U0AqsUfSyGsfpLcZPzNiB7Iv/B3hdxudn4E/Te3zoiBMQ+AT8ZbPCSo/nEyPOAMkZeG2T1TDFx/cT3+K8ksdSGUiowGmTdWMuSiTGLxFJYU20wUJjha/ZHVhTdrio9IO0fEAS8aY/q5rhBWhyTx+q1AYMtog2ip8BonxoPdQBEBUDp/hVuliX/92/5ujtgKiDYxEAAAAASUVORK5CYII=">`);
sName(/\bHEAVEN\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAYUExURQAAAJXz+Szo9P28Rv/nYtff6PuSK////9bLqqAAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAV9JREFUOMuVkkGLwyAQhQcxerZh7yaQHxBCydVD6DnbILl6KJ4DRebv7xvbLr3tdtDkjc43zwSJPg3nTqe+x/grOozOOXKj6x71nnpS0gNKQXrySJSIJ3FyraPJjbAQwodeK70seMlUPvhlWZQmbNT6rmvdRG5yrtYPa4gG20R+oawAJB/goINPMVbCoZhc21aHYT8CA7Ac19CbJ4A6nSgxx+owjo5aPMRh5yOQFgeIq67AGkgN+iYAX/t4RfORMKsDgEteGp3Tk2zWhJVm16YCZeDyje4vhyHiSGSa6lBJeySsWNYUBOAd0JsD0iMUY/EN4gAhDqEwgFsqkYtAmzicz/H6FVnq9hcAYYIGwAKYtEt/OGwbgG3mUlP5S3IkEmGP28XCitDC4EhiUPb7fKZtemQAEupMzqkKRtmRc25MQ6k2lJhmur80H8Rk5WpUwQcGEksW+W/Mb/p/8fHt/gHL2Zifr8iNpQAAAABJRU5ErkJggg==">`);
sName(/\bSHANGRI(-|\s)LA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAtUExURQAAAJXz+eU7RJ4oNf///6+/0sExPOSmcnQ/OUdHWdff6D8oMk9ngWPGTcmyolMFqZMAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAVJJREFUOMuVkj1Ow0AQhX0FokDPjBKCUJpZ0VCvJQqamCxKEZogfIMoVUpQiigFR0DQRNBwBA6QIv1wBJ+BN5vYcQqQMpbmx37fvl3bSXJoHFXRINoNsa/fKKMOOKkEDUYf038AsZyWvaCPCUPT7wO+mokrwKGPCYNPfR1opv00+N6JneHP6PtelB/7JE1DjDus6pidiBUkx8KWYgeByVGSsI38MYOCmMQKMSMJWeccGTCZjMMOuMwf8pFABAeUVgaXTgb2/IVsEUg6nVYNuHVXThxBxlZa0AKA28WX2zrM5081ICyXy1c8xy5wwQHrno3NR0qH2WwP+PA375m9jwwXYUv4itM1cfubHQDVn6IoVNWAe1R9u/afGraD6hoLy1RJ2vFkBqwWK3uSbAQbYDgYloC9G1Wm55HYGcxhUdSBGGFQOig210Xu6jp+uJ3m4L/7F6ffvbi5cw9BAAAAAElFTkSuQmCC">`);
sName(/\bEL\s?DORADO\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAkUExURQAAAEqcSWPGTf/zsP28RnQ/OfuSK//nYsExPDJzRZ4oNT8oMjEAaJ4AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAVtJREFUOMuVkjFuwkAQRfcKa2GklN5ITm8k90QWgRIpadIBzjjmAF4OgCKntyy5jwgniDhe/h+DQ0p+8T0zO887AzbmVlkbTKDEOasKrJtc5KJIKwEMUcAeAO6e/TxSximQZQScZTlkc2J7yrzYQKCVCN9lx4g3E1iewtaOR1pLGAEy4dIW3vtVUdkQeYxY0oI2RGNGMSOrIynwVlRRiAHGXooqpc1o8WB60ANhgdsAJOHywcd+LQDy/8BKAKAFW5pMb6iWReXC53k985v0ApznQm/ZIiUQZGb0GPEG7mBfj6eD31zfkPbTlIK0RMtoauxUd0Amsj3tfq52ANoSbZl+0LoGO0zvegC2/faH4bepOEg7DHdgrWs60y06/g8lLccOjFnJZ1K20kouwtr7UQ8IQPt6/8lnXR9rDTK802eMmgzqH51KgbnfLRTYf/XAn5qnM3mR6W7UzV/3Lxx0+QYhcAfUAAAAAElFTkSuQmCC">`);
sName(/\bSOLARIS\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAbUExURQAAAPXMAA6l2Nff6PXgAP///wRC0v/nYgSE0dLMZGkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAPxJREFUOMudUjtuwzAMfZai3UAu4KW7AAFGRx+BGXSG9gK1vWeIj12S+gb5DCEkmqL4TD5SwAsZHl3m3eUTeNneF+8SIzleYrPSU4zyrUBrEYItJ4kkOAUQiYmkmviAn6sfO8AFX05N9wiYOMOBffXJHvoMF81xB5Dy7fyHba8c+LYAqAFk5a7Y8xFxu1YOcFq4G4RwJCVL6i0ybxvW0HFyfYaoSQ1qUaP93leExTdOWkctiZKBhTKFMN8OlPDUqgoY2czIrIRD+A2wNTgBTEc6ccBIU5kC1+/bE+G58iYZbe6STFq8qa2G/15bOr18QuaJr0nDne7DTvhU/gFIfC2SnkfnfgAAAABJRU5ErkJggg==">`);
sName(/\bAETHER\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAAPuSKxk9P//nYgSE0Szo9JXz+bkvnOsAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAMlJREFUOMuVkkESgyAMRXOFCLpvpxfIcAI67QGYUfcu5P5H6E+0GFetH4EneWFcSHQ13f1SbiSPSwkkT5fMeJi3mfedO2cEii8XlphTEps6NmZnZPJ+DoGz6K3C1qAsLN6ht4sWMXtAY23zDsXxSIFUUoqAEbuxnnmFZDpiEm6dikzWDMYZOyWcG0wywFOM9ezU0K+8frOIDmZAY12bgArNJQ3zHrsVnwVorHurQ6W6pKHuWVgHM6Cxrq0OlWpt778Dlf63t1z+uz+CSKxdfCwzEgAAAABJRU5ErkJggg==">`);
sName(/\bHYPERION\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAbUExURQAAAJXz+fuSKxi24gSE0Q5giCzo9P28Rv/nYgvspVMAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAf9JREFUOMuVUsGOm0AM5RfckDTXZbtarqyBcmUxEddox+lcEWBxbVQJrmxmqD+7s5/QuVgjvef37Oco+t/37ZmSmk0dUy0wAkBOKCKIwyDM3OTI1ALEiMgLvD9Fn/j2ozZcE2an03jkK2I50kUGGcoPLAgLc2mPfCj4A3/+hjS6JwmAobopKziTl+2sO6m6WR+i6o162id/PDAw43JPo1Wfvi/cQiNzNtd+2ue+Gj2bWeaheBQdVsZN2/FQXEEf1V0jTV4XLFrTDAESCH4eKnFkLFtEz11esU4bA0IPqkHhM+DLggwO1dj1bvIVWthiY42lxpmOOlTxtx5O0sOyLNF9SUop2GQyq4qdJ6vbQdV06mpy3LFlt+9hayVJv+rf6P6aliWiySg0I+Nklh4fMXfeQOxaS2fwzmF+kUvfr6tGy5JiKQNmcXDdsqNu7LNH3FpLcfygrj5ffeVyEqIvS2ukmqqASEYWLZFnO/bwgKC2xfEuM535i2DGSxPWnKzRsj5XmsEpO9oPK6MjSzJsAGfoiPZA745eXM6jNOrt6xpySELqmSAEAss+duEbggtemlBY3dHfXN7K2BBrkkYLvr1wUBgCTiZmaQrm6wGRqBEx7WWEm+TYssHWekqjX38waTMKU4iMItOt4XBmAIGCExsmqm+YN0Qmb5XfX/77uv8BkxTQHgK/b+IAAAAASUVORK5CYII=">`);
sName(/\bANTEPROXIMA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQBAMAAAAblGfKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAAABmOAevCTf/WoT/kf///yrTaOw+uowAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAASZJREFUOMt1UluOwyAMnALqN2ovQNXVfqOw4jsKucFeALUS9z/CjnFe2s1aGA22xx4SALHLA2oG+INWC4fUbfCKP8JpiUAzaRcJXp7fD0VmqTvyJOZ3+iTbNuHMOHWTTHaY5xHzPIuPTkHZAyPcsAAbmQZcSpmeauEmIBY9iDODsmSgUbivz+yitxVcLnJ6IVJHBklgbygBb9akRgKeSuAA37vntynPmINNEV4IMVmJVpUUYTcCSmvoJBszSLg8NkKXFJHdsBIGfojCL1ZwV0msgb8LAfZVFtl9wosHCpDOQoLVS2eTauoigtxKlEc0+rXKQmutJhIST1cebF3BMF1r6jW/3kNYNrP+T2b9IXb+zjSkL8ac5o4gbENlQvin5Sl5f0K74h8hY0SZdVIsfwAAAABJRU5ErkJggg==">`);
sName(/\bPROXIMA\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAQBAMAAABzZ+XyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAVUExURQAAAAAuZgp4/jfc/4Ty/////zOz/+0H8sQAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAPxJREFUKM9tUkGOwzAInIK152jVB1BtHuAWyeeq9g/2A5Yq+f9PWByctNkUKdaEgQGDgdMFbgQc0Gpi3/dt8p9Z/lMbpAdw+vm9uJsGLx+Ud4pH29ewHkMpGaWUu4GCAskOCNrdL9mgqjWrJgcxLCDmyO4ZTUwIkbhmIIUIrrxQSlgCr3jWtVdxodRiiMoVakGis2SO6aztWbc2Q2oNS+keKKpwRQucvfSYgZUGMo3Sph8t0DzWzPk28ZuiEZJnGZepnHgBPfVqqdtoOXqthtZaTRhAQc2or9oXc5h/P2jdg018eu1zP/+R6JulA0Fvmp7YFeXjU6I92F7fsD/aWi+37K8etAAAAABJRU5ErkJggg==">`);
// sName(/\bERROR\b/gi, `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAQCAMAAADeZIrLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAC3UExURQAAAOON1lCbS00jUjUUKK7+Xe1SWQ0vbd6OdeoaKDk6Vs0KFx6QVXFZUzkRNjnNecWBWBOy8pRVQuWueEoZLP///w9NoytXWJzExP8A/wD//yYkOv8AAMQsNvDSr3gfLOVwRJpKS2dwi0Hz/A8nOLRes3vPXKw5QP/SqBYmNfvUOU5TcR6Pcy5qQisLIBpFO9vg5xELGqOsvuVwKELMOWglRvvfaxQQIEYhH/esN387huU7RG9ndo3TCK0AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAepJREFUOE+1k22X0jAUhNuCKL6y1REbAgpIoUBbrIWyq///d3nunSTF5fPOB87JJZknM4EoemnFcRwn1GAwGAyHw1fUaDQavabeqMbj8fgt9e499UH1kfokmkwmD6L0M5VG8RdRkiRw8gC37AFuIICvDuBGPcANHqbT6TcqAJAxkTGgP9cGs9mM/n7QA8LIA8LgBmCtAJBlmXiHBOA6U4LaywA6cADdAo4IcBM5aaD21kZWCQm/m4uc/81en4BEY+AAkcFisdBZSGDc1TSBFQCEoBVpgPn8+w/Rzd5QkSNiKXKZV7zaer12AMbWiqyFjWCt/bkJb2CQ5z1AP+4qUv8ljRc9YP1/bAaAA2w2PkHeA/wjb0XiwwH9CTBYrdRwvdvtiuLZIytAKtrv/SPnIvprRT1gy870cp4QGRwOBCkgHFLC8agVWfHf70t3Ns+rqnr2BjeAu4oOQogMCp8gvMH0KAQBiL9EYEWoqqo++UQaIVTkiaEk/kx/GRSUTBrdeKSsjdSeCdifQVWfTic9/ZtX6hO0NxE0AytPnb14Nw0PnYkIgNL9y1HXtQAuALruCuCRFW0BtG0LeH9BUCkBwgCapgFwPt8ByrJ8ehJ31eVyuXRdd71eHz3gT6v62/svUy8PKIqiUfWAl9Y/7MJ8jrkj4GEAAAAASUVORK5CYII=">`);
// Rank names
sName(/\bADMINS?\b/gi, match => `<span style='color:#FF4F4F'>${match}</span>`);
sName(/\bMODERATORS?\b/gi, match => `<span style='color:#86FF41'>${match}</span>`);
/*** PLAYER NAMES ***/
sName(/\b((F|L)OR|4|PHOR(RH?)?)EST(\s?(L|F)ANDT?)?\b/gi, match => `<span style='color:#63C64D'>${match}</span>`);
sName(/\b(MR\.?\s)?SMILES\b/gi, match => `<span style='color:#FFFFFF'>${match}</span>`);
sName(/\bRIVER(\s?LAND)?\b/gi, match => `<span style='color:#0484D1'>${match}</span>`);
sName(/\b(RAINBOW(BALL)?|REGENBOGEN)\b/gi, match => `<span class="rainbow-container"><span class="rainbow">${match}</span><span class="rainbow-back">${match}</span></span>`);
sName(/\bMONOCHROME\b/gi, match => { match = match.split(""); return `<span style='color:#000000'>${match[0]}<span style='color:#404040'>${match[1]}<span style='color:#808080'>${match[2]}<span style='color:#C0C0C0'>${match[3]}<span style='color:#FFFFFF'>${match[4]}${match[5]}</span>${match[6]}</span>${match[7]}</span>${match[8]}</span>${match[9]}</span>` });
sName(/\bROMANIABALL\b/gi, match => `<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAASUExURf///wAAAPzQAAArf84AAAAAAL+aKrIAAAAGdFJOU///////ALO/pL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAE9JREFUKFN10EkKACAMA8DE5f9flqQuiDWHogNVK7oDZS5jTyVMBWRRSO8EtVpaE8GwRBTiNjLEALCoiD5yurbsk3P53H7L++ZkrmT2+38GpP8CyRiq0RgAAAAASUVORK5CYII='> <span style='color:#003CB3'>${match[0] + match[1] + match[2] + match[3]}</span><span style='color:#FCD116'>${match[4] + match[5] + match[6]}</span><span style='color:#CE1126'>${match[7] + match[8] + match[9] + match[10]}</span>`);
sName(/\bNOTHINGHERE(7759)?\b/gi, match => { match = match.split(""); return `<span style='color:#FFE762'>${match[0] + match[1] + match[2] + match[3] + match[4] + match[5] + match[6]}<span style='color:#63C64D'>${match[7] + match[8] + match[9] + match[10]}</span>${match[11] ? "7759" : ""}</span>` });
sName(/\bDIERMANIA\b/gi, match => { match = match.split(""); return `<span style='color:#DD0000'>${match[0] + match[1] + match[2]}<span style='color:#FFCE00'>${match[3]}<span style='color:#000000; text-shadow:-1px 0px 0 #FFF, 1px 0px 0 #FFF, 0px 1px 0 #FFF, 0px -1px 0 #FFF'>${match[4]}</span>${match[5]}</span>${match[6] + match[7] + match[8]}</span>` });
sName(/\b(SL?YNT(EX(PR)?|AXIS))\b/gi, match => `<span style='color:#417171'>${match}</span>`);
sName(/\bTRION(\sNEX(\b\.|US(ORIATE)?)?)?(?=\s|$|"|'|\b)/gi, match => { match = match.split(""); return `<span style='color:#21D714'>${match[0]}<span style='color:#FFFFFF'>${match[1]}<span style='color:#000000'>${match[2]}</span>${match[3]}</span>${match.slice(4).join("")}</span>`; });
sName(/(?<=\s|^|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)(СИНТ((Е|Э)КС(ПР)?|АКСИС)|СЛЮНТ(Е|Э)КС)(?=\s|$|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)/gi, match => `<span style='color:#417171'>${match}</span>`);
sName(/\b(COALI(TION)?|CLN)\b/gi, match => `<span style='color:#608C5E'>${match}</span>`);
sName(/\b(CRC|UNBIDDEN)\b/gi, match => `<span style='color:#90F1F8'>${match}</span>`);
sName(/\bCOALCRCITION\b/gi, match => `<span style='color:#6D80A5'>${match}</span>`);
sName(/\b((SOUTH\s)?NORTH?IA|USRNSNN|URNNSN)\b/gi, match => `<span style='color:#32E27E'>${match}</span>`);
sName(/\bNORISIA\b/gi, match => `<span style='color:#F75B18'>${match}</span>`);
sName(/\bVINLAND\b/gi, match => `<span style='color:#DEB129'>${match}</span>`);
sName(/\bR(SS|55)R\b/gi, match => `<span style='color:#FF0000'>${match}</span>`);
sName(/(?<=\s|^|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)(MOTH(ERSHIP|METHMYTH|YLAMINE)?|МОЛЬ)(?=\s|$|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)/gi, match => `<span style='color:#D7C39F'>${match}</span>`);
sName(/\bSAR\b/gi, match => `<span style='color:#D50B0B'>${match}</span>`);
sName(/\b(POTASS(IUM)?|EVERMORE)\b/gi, match => `<span style='color:#FFA200'>${match}</span>`);
sName(/\bATLAN\b/gi, match => { match = match.split(""); return `<span style='color:#FFFFFF'>${match[0]}<span style='color:#808080'>${match[1]}<span style='color:#FF0000'>${match[2]}</span>${match[3]}</span>${match[4]}</span>` });
sName(/\bATLAN?DOS\b/gi, match => { match = match.split(""); return `<span style='color:#FFFFFF'>${match[0]}<span style='color:#AAAAAA'>${match[1]}<span style='color:#555555'>${match[2]}<span style='color:#FF0000'>${match[3] + (match.length == 7 ? "" : match[4])}</span>${match[match.length - 3]}</span>${match[match.length - 2]}</span>${match[match.length - 1]}</span>` });
sName(/(?<=\s|^|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b):\bD(\s|-)ANON\b/gi, match => `<span style='color:#0080FF'>${match}</span>`);
sName(/(?<=\s|^|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_)ST\.?(?=\s|$|"|'|\b)/gi, match => `<span style='color:#A1409D'>${match}</span>`);
sName(/\bSHADOW\sTAI?LE\b/gi, match => `<span style='color:#4394A0'>${match.slice(0, 6)}</span>${match[6] == ' ' ? ' ' : ''}<span style='color:#F430B2'>${match.slice(7)}</span>`);
sName(/\bOrang\b/gi, match => `<span style='color:#FF8800'>${match}</span>`);
sName(/\bHUNGARYBALL\b/gi, match => { match = match.split(""); return `<span style='color:#CE2939'>${match[0] + match[1] + match[2] + match[3]}</span><span style='color:#FFFFFF'>${match[4] + match[5] + match[6]}</span><span style='color:#477050'>${match[7] + match[8] + match[9] + match[10]}</span>` });
sName(/\bMAGYARLABDA\b/gi, match => { match = match.split(""); return `<span style='color:#CE2939'>${match[0] + match[1] + match[2] + match[3]}</span><span style='color:#FFFFFF'>${match[4] + match[5] + match[6]}</span><span style='color:#477050'>${match[7] + match[8] + match[9] + match[10]}</span>` });
sName(/\bEU(ROPE\sRP)?\b/gi, match => `<span style='color:#0000FF'>${match}</span>`);
sName(/\bGABRIEL\b/gi, match => `<span style='color:#F0F0F0'>${match[0]}<span style='color:#F4E5BC'>${match[1]}<span style='color:#F9DB88'>${match[2]}<span style='color:#FED154'>${match[3]}</span>${match[4]}</span>${match[5]}</span>${match[6]}</span>`);
sName(/\bWEST\sVLANDIA\b/gi, match => `<span style='color:#950000'>${match}</span>`);
sName(/\bEAST\sVLANDIA\b/gi, match => `<span style='color:#FF7A33'>${match}</span>`);
sName(/\b(?<!(EA|WE)ST\s)VLANDIA\b/gi, match => `<span style='color:#950000'>${match}</span>`);
sName(/\bSANGSA\b/gi, match => `<span style='color:#FF0000'>${match.slice(0, 1)}</span><span style='color:#0000FF'>${match.slice(1, 5)}</span><span style='color:#FF00F7'>${match.slice(-1)}</span>`);
sName(/\b(KWAPT|62143)\b/gi, match => `<span style='color:#A45195'>${match}</span>`);
sName(/\bSIREMIA\b/gi, match => `<span style='color:#FFFFFF'>${match}</span>`);
sName(/\bXAHH\b/gi, match => `<span style='color:#00FA9A'>${match}</span>`);
sName(/\bLLG\b/gi, match => `<span style='color:#FF00FF'>${match}</span>`);
sName(/\bNONA(EM|MEZ_?)\b/gi, match => `<span style='color:#9E9EFF'>${match}</span>`);
sName(/\b16777216\b/gi, `<span style='color:#0000FF'>16</span><span style='color:#00FF00'>77</span><span style='color:#FF0000'>72</span><span style='color:#FFFFFF'>16</span>`);
sName(/\bNEKONOKA\b/gi, match => `<span style='color:#8F3CD7'>${match}</span>`);
sName(/\bTOASTER\b/gi, match => `<span style='color:#FFC839'>${match.slice(0, 2)}<span style='color:#FFFFFF'>${match.slice(2, 5)}</span>${match.slice(-2)}</span>`);
sName(/\bTAUM(OTON(S)?)?\b/gi, match => `<span style='color:#EE00FF'>${match}</span>`);
sName(/\bC3PHEI\b/gi, match => `<span style='color:#AC3940'>${match}</span>`);
sName(/\bENDERMENT\b/gi, match => `<span style='color:#952BFF'>${match}</span>`);
sName(/\b(TAHA(\sÖZDEMIR)?|SYBERLONG)\b/gi, match => `<span style='color:#224E7C'>${match}</span>`);
sName(/\bS(Ü|U)DENLAND\b/gi, match => `<span style='color:#224E7C'>${match[0]}<span style='color:#4C8FD6'>${match[1]}<span style='color:#1DCDA1'>${match[2]}</span>${match[3]}</span>${match.slice(-5)}</span>`);
sName(/\bRELOOPGD\b/gi, match => `<span style='color:#FD1C27'>${match}</span>`);
sName(/\bBLAKE\b/gi, match => `<span style='color:#FCC8D9'>${match}</span>`);
sName(/\bCAPA\b/gi, match => `<span style='color:#A44F15'>${match}</span>`);
sName(/\bLEG(3ND)?\b/gi, match => `<span style='color:#DD80A5'>${match}</span>`);
sName(/\b5UP\b/gi, match => `<span style='color:#0484D1'>${match}</span>`);
sName(/\b(VVICTOR|OFO\sGANG)\b/gi, match => `<span style='color:#00FF66'>${match}</span>`);
sName(/\bM(OUNTAI|T)N\sDEW\b/gi, match => `<span style='color:#00FF00'>${match.slice(0, -4)}</span> <span style='color:#FF0000'>${match.slice(-3)}</span>`);
sName(/\b(MART|ARTM)AN\b/gi, match => `<span style='color:#0083D5'>${match}</span>`);
sName(/\bSTEVESTA\b/gi, match => `<span style='color:#7F7F7F'>${match}</span>`);
sName(/\bLAPIS\b/gi, match => `<span style='color:#0066FF'>${match}</span>`);
sName(/(?<![\B:])JP(DLD|LAND)?\b/gi, match => `<:J:409708038589775872> <span style='color:#FFFFFF'>${match}</span>`);
sName(/\bAMON?GUSLAND\b/gi, match => `<span style='color:#52A4DC'>${match}</span>`);
sName(/\bDOITSHL(Æ|A)ND\b/gi, match => `<span style='color:#58585A'>${match.slice(0, 3)}</span><span style='color:#C72931'>${match.slice(3, 7)}</span><span style='color:#F9DD3E'>${match.slice(-3)}</span>`);
sName(/\bDOITSHLAEND\b/gi, match => `<span style='color:#58585A'>${match.slice(0, 4)}</span><span style='color:#C72931'>${match.slice(4, 7)}</span><span style='color:#F9DD3E'>${match.slice(-4)}</span>`);
sName(/\bDEUCHLAND\b/gi, match => `<span style='color:#58585A'>${match.slice(0, 3)}</span><span style='color:#C72931'>${match.slice(3, 6)}</span><span style='color:#F9DD3E'>${match.slice(-3)}</span>`);
sName(/\bLEMONWIRES\b/gi, match => `<span style='color:#FFF700'>${match[0]}</span><span style='color:#00FF1E'>${match[1]}</span><span style='color:#FFF700'>${match[2]}</span><span style='color:#00FF1E'>${match[3]}</span><span style='color:#FFF700'>${match[4]}</span><span style='color:#00FF1E'>${match[5]}</span><span style='color:#FFF700'>${match[6]}</span><span style='color:#00FF1E'>${match[7]}</span><span style='color:#FFF700'>${match[8]}</span><span style='color:#00FF1E'>${match[9]}</span>`);
sName(/\bLEMON\b/gi, match => `<span style='color:#FFFF00'>🍋 ${match}</span>`);
sName(/\bTESS\b/gi, match => `<span style='color:#9CDED3'>${match}</span>`);
sName(/\bHELPER\b/gi, match => `<span style='color:#00FF00'>${match}</span>`);
sName(/\b(CYGNUS|CEUTHYN)\b/gi, match => `<span style='color:#00EEFF'>${match}</span>`);
sName(/\bSHAY\b/gi, match => `<span style='color:#2CE8F4'>${match}</span>`);
sName(/\bNEOMOTH\b/gi, match => `<span style='color:#9669ff'><:1:1388314585781637200> ${match}</span>`);
sName(/\bELDIT\b/gi, match => `<span style='color:#A92444'>${match}</span>`);
sName(/\bJI+GG\b/gi, match => `<span style='color:#00FFFF'>${match}</span>`);
sName(/\bC(-|\s)?YARD\b/gi, match => `<span style='color:#00FF00'>${match}</span>`);
sName(/\bVGS\b/gi, match => `<span style='color:#FF0000'>${match}</span>`);
sName(/\b(JJB|JAR\s?JAR(\s?BOINKS)?)\b/gi, match => `<span style='color:#750F00'><:j:411450961949753345> ${match}</span>`);
sName(/\bNORDDEX\b/gi, match => `<span style='color:#E53B44'>${match}</span>`);
sName(/\b(999|AZSRIEL)\b/gi, match => `<span class="rainbow-container"><span class="rainbow">${match}</span><span class="rainbow-back">${match}</span></span>`);
sName(/\bNURUTOMO\b/gi, match => `<span style='color:#0484D1'>${match}</span>`);
sName(/\bMEMELORD\b/gi, match => `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAMAAABlXnzoAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJUExURZ5q/0X/DwAAAJ+7yioAAAADdFJOU///ANfKDUEAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAADhJREFUGFdtzkEKADEMQtGv9z/0YIUySLNI8lyEYAPYkmQzBClB+tmGRWvZUw3u5R8TFG/mic7hBzLcALENn7j/AAAAAElFTkSuQmCC"> <span style='color:#9E6AFF'>${match.slice(0, 4)}</span><span style='color:#45FF0F'>${match.slice(4)}</span>`);
sName(/\bF(RI|U)CK\sVERIZON\b/gi, match => `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJUExURf///wAAAAAAAH5RqV0AAAADdFJOU///ANfKDUEAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAIAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAA2XYBAOgDAADZdgEA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAAACMojeFEB6NgAAAEZJREFUKFONkIsKACAIA+f+/6NjEr6o6EBhR0UKkkTgSWWBx2bcoRs5wPIloehltluo0S7qdDEZusb41PNU4Vsdxq4LFOQCftcAm2osOS0AAAAASUVORK5CYII="> <span style='color:#FFFFFF'>${match}</span>`);
sName(/\bRANDOOF\b/gi, match => `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJUExURXUAALMZGQAAAOXo42cAAAADdFJOU///ANfKDUEAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAnZMAAOgDAACdkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAAAJFj+K2cP21wAAACBJREFUGFdjYAADJhiAcAnySQKMjIxwkhg+SQDdZQT4ADwAAH+enAY0AAAAAElFTkSuQmCC"> <span style="color:#B31919">${match}</span>`)
sName(/\bSISYPHUS(\sPRIME)?\b/gi, match => `<span style='color:#FFDF00'>${match}</span>`);
sName(/\bMINOS(\sPRIME)?\b/gi, match => `<span style='color:#DFDFFF'>${match}</span>`);
sName(/\b(GREENY(\s?LAND)?|UGS|UNITED\s<span\sstyle='color:#63C64D'>GREEN<\/span>\sSTATES)\b/gi, match => `<span style='color:#4ED97C'>${match}</span>`);
sName(/(?<=\s|^|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)((NEW\s)?PHY(REXIA)?|ɸ)(?=\s|$|"|'|\.|,|:|;|\?|!|\*|\/|\\|\||\(|\)|\[|\]|{|}|=|\+|-|_|\b)/gi, match => `<span style='color:#F4F1A4'>${match}</span>`);
sName(/\bPURPERISM\b/gi, match => `<span style='color:#972C9E'>${match}</span>`);
sName(/\b(RODIMUS(\s?PRIME)?|PACI(CIDAL)?)\b/gi, match => `<span style='color:#58A699'>${match}</span>`);
sName(/\bDUCK12\b/gi, match => `<span style='color:#FFFFFF'>${match}</span>`);
sName(/\b((BO(Ö|O)TES|VOID)\s(IMPERIUM|EMPIRE)|VOID)\b/gi, match => `<span style='color:#000000; text-shadow:-1px 0px 0 #FFF, 1px 0px 0 #FFF, 0px 1px 0 #FFF, 0px -1px 0 #FFF'>${match}</span>`);
sName(/\bRALIOVI\b/gi, match => `<span style='color:#AEE797'>${match}</span>`);
}
sName(/^\$(?!\$)/g, '');
/*** NICKNAMES ***/
if (msgParsed.data.nick.match(/\b((F|L)OR|4|PHOR(RH?)?)EST(\s?(L|F)ANDT?)?\b/gi)) {
msgParsed.data.nick = "<span style='color:#63C64D'>" + msgParsed.data.nick + "</span>"
};
if (msgParsed.data.nick.match(/\bMR\.?\sSMILES\b/gi)) {
msgParsed.data.nick = "<span style='color:#FFFFFF'>" + msgParsed.data.nick + "</span>"
};
if (msgParsed.data.nick.match(/\bRIVERLAND\b/gi)) {
msgParsed.data.nick = "<span style='color:#0484D1'>" + msgParsed.data.nick + "</span>"
};
if (msgParsed.data.nick.includes("Rainbowball")) {
msgParsed.data.nick = msgParsed.data.nick.replace(/\bRAINBOWBALL\b/gi, `<span class="rainbow-container"><span class="rainbow">Rainbowball</span><span class="rainbow-back">Rainbowball</span></span>`);
if (rank < 2) { msgParsed.data.nick = msgParsed.data.nick.replace(/\[\d+?\]\s/, ``); msgParsed.data.nick = `<span style='color:#FF0000'>[</span><span style='color:#00FF00'>${msgParsed.data.senderID}</span><span style='color:#0000FF'>]</span> ${msgParsed.data.nick}` };
if (rank == 2) { msgParsed.data.nick = msgParsed.data.nick.replace('(M) ', ``); msgParsed.data.nick = `<span style='color:#FF0000'>(</span><span style='color:#00FF00'>M</span><span style='color:#0000FF'>)</span> ${msgParsed.data.nick}` };
if (rank == 3) { msgParsed.data.nick = msgParsed.data.nick.replace('(A) ', ``); msgParsed.data.nick = `<span style='color:#FF0000'>(</span><span style='color:#00FF00'>A</span><span style='color:#0000FF'>)</span> ${msgParsed.data.nick}` };
} else if (msgParsed.data.nick.includes("Rainbow")) {
msgParsed.data.nick = msgParsed.data.nick.replace(/\bRAINBOW\b/gi, `<span class="rainbow-container"><span class="rainbow">Rainbow</span><span class="rainbow-back">Rainbow</span></span>`);
if (rank < 2) { msgParsed.data.nick = msgParsed.data.nick.replace(/\[\d+?\]\s/, ``); msgParsed.data.nick = `<span style='color:#FF0000'>[</span><span style='color:#00FF00'>${msgParsed.data.senderID}</span><span style='color:#0000FF'>]</span> ${msgParsed.data.nick}` };
if (rank == 2) { msgParsed.data.nick = msgParsed.data.nick.replace('(M) ', ``); msgParsed.data.nick = `<span style='color:#FF0000'>(</span><span style='color:#00FF00'>M</span><span style='color:#0000FF'>)</span> ${msgParsed.data.nick}` };
if (rank == 3) { msgParsed.data.nick = msgParsed.data.nick.replace('(A) ', ``); msgParsed.data.nick = `<span style='color:#FF0000'>(</span><span style='color:#00FF00'>A</span><span style='color:#0000FF'>)</span> ${msgParsed.data.nick}` };
};
if (msgParsed.data.nick.includes("Monochrome")) {
msgParsed.data.nick = "<span style='color:#000000'>" + msgParsed.data.nick.replaceAll("Monochrome", "M<span style='color:#404040'>o<span style='color:#808080'>n<span style='color:#C0C0C0'>o<span style='color:#FFFFFF'>ch</span>r</span>o</span>m</span>e") + "</span>";
};
if (msgParsed.data.nick.includes("Romaniaball")) {
msgParsed.data.nick = "<span style='color:#003CB3'>" + msgParsed.data.nick.replaceAll("Romaniaball", "<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAMAAAAMs7fIAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAASUExURf///wAAAPzQAAArf84AAAAAAL+aKrIAAAAGdFJOU///////ALO/pL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOWxu2j4AAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAMAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAo5MAAOgDAACjkwAA6AMAAFBhaW50Lk5FVCA1LjEuOQADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAABdUNkYj53BAQAAAE9JREFUKFN10EkKACAMA8DE5f9flqQuiDWHogNVK7oDZS5jTyVMBWRRSO8EtVpaE8GwRBTiNjLEALCoiD5yurbsk3P53H7L++ZkrmT2+38GpP8CyRiq0RgAAAAASUVORK5CYII='> Roma<span style='color:#FCD116'>nia</span><span style='color:#CE1126'>ball</span>") + "</span>";
};
if (msgParsed.data.nick.match(/\bNOTHINGHERE(7759)?\b/gi)) {
msgParsed.data.nick = "<span style='color:#63C64D'>" + msgParsed.data.nick.replace(/\bNOTHINGHERE(7759)?\b/gi, match => { match = match.split(""); return `<span style='color:#FFE762'>${match[0] + match[1] + match[2] + match[3] + match[4] + match[5] + match[6]}<span style='color:#63C64D'>${match[7] + match[8] + match[9] + match[10]}</span>${match[11] ? "7759" : ""}</span>` }) + "</span>";
};
if (msgParsed.data.nick.includes("Diermania")) {
msgParsed.data.nick = "<span style='color:#DD0000'>" + msgParsed.data.nick.replaceAll("Diermania", "Die<span style='color:#FFCE00'>r<span style='color:#000000; text-shadow:-1px 0px 0 #FFF, 1px 0px 0 #FFF, 0px 1px 0 #FFF, 0px -1px 0 #FFF'>m</span>a</span>nia") + "</span>";
};
if (msgParsed.data.nick.match(/\b(SL?YNT(EX(PR)?|AXIS))\b/gi)) {
msgParsed.data.nick = "<span style='color:#417171'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/(?<=\s|^|"|'|\b)(СИНТ((Е|Э)КС(ПР)?|АКСИС)|СЛЮНТ(Е|Э)КС)(?=\s|$|"|'|\b)/gi)) {
msgParsed.data.nick = "<span style='color:#417171'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bCOALITION\b/gi)) {
msgParsed.data.nick = "<span style='color:#608C5E'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\b(CRC|UNBIDDEN)\b/gi)) {
msgParsed.data.nick = "<span style='color:#90F1F8'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bCOALCRCITION\b/gi)) {
msgParsed.data.nick = "<span style='color:#6D80A5'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\b((SOUTH\s)?NORTH?IA|USRNSNN|URNNSN)\b/gi)) {
msgParsed.data.nick = "<span style='color:#32E27E'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bVINLAND\b/gi)) {
msgParsed.data.nick = "<span style='color:#DEB129'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\[SERVER\]/gi)) {
msgParsed.data.nick = "<span style='color:#FF41E4'>" + msgParsed.data.nick; + "</span>"
};
if (msgParsed.data.nick.match(/\bR(SS|55)R\b/gi)) {
msgParsed.data.nick = "<span style='color:#FF0000'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/(?<=\s|^|"|'|\b)(MOTH(ERSHIP|METHMYTH|YLAMINE)?|МОЛЬ)(?=\s|$|"|'|\b)/gi)) {
msgParsed.data.nick = "<span style='color:#D7C39F'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bPOTASSIUM(_L)?\b/gi)) {
msgParsed.data.nick = "<span style='color:#FFA200'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.includes("Atlan")) {
msgParsed.data.nick = "<span style='color:#FFFFFF'>" + msgParsed.data.nick.replaceAll("Atlan", "A<span style='color:#808080'>t<span style='color:#FF0000'>l</span>a</span>n") + "</span>";
};
if (msgParsed.data.nick.includes("ATLaDOS")) {
msgParsed.data.nick = "<span style='color:#FFFFFF'>" + msgParsed.data.nick.replaceAll("ATLaDOS", "A<span style='color:#AAAAAA'>T<span style='color:#555555'>L<span style='color:#FF0000'>a</span>D</span>O</span>S") + "</span>";
};
if (msgParsed.data.nick.includes("St.")) {
msgParsed.data.nick = "<span style='color:#A1409D'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bORANG\b/gi)) {
msgParsed.data.nick = "<span style='color:#FF8800'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.includes("HungaryBall")) {
msgParsed.data.nick = "<span style='color:#CE2939'>" + msgParsed.data.nick.replaceAll("HungaryBall", "Hung<span style='color:#FFFFFF'>ary</span><span style='color:#477050'>Ball</span>") + "</span>";
};
if (msgParsed.data.nick.includes("Hungaryball")) {
msgParsed.data.nick = "<span style='color:#CE2939'>" + msgParsed.data.nick.replaceAll("Hungaryball", "Hung<span style='color:#FFFFFF'>ary</span><span style='color:#477050'>ball</span>") + "</span>";
};
if (msgParsed.data.nick.includes("MagyarLabda")) {
msgParsed.data.nick = "<span style='color:#CE2939'>" + msgParsed.data.nick.replaceAll("MagyarLabda", "Magy<span style='color:#FFFFFF'>arL</span><span style='color:#477050'>abda</span>") + "</span>";
};
if (msgParsed.data.nick.includes("Magyarlabda")) {
msgParsed.data.nick = "<span style='color:#CE2939'>" + msgParsed.data.nick.replaceAll("Magyarlabda", "Magy<span style='color:#FFFFFF'>arl</span><span style='color:#477050'>abda</span>") + "</span>";
};
if (msgParsed.data.nick.includes("Europe RP")) {
msgParsed.data.nick = "<span style='color:#0000FF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bCYAN\b/gi)) {
msgParsed.data.nick = "<span style='color:#2CE8F4'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bGABRIEL\b/gi)) {
msgParsed.data.nick = msgParsed.data.nick.replace(/\bGABRIEL\b/gi, match => `<span style='color:#F0F0F0'>${match[0]}<span style='color:#F4E5BC'>${match[1]}<span style='color:#F9DB88'>${match[2]}<span style='color:#FED154'>${match[3]}</span>${match[4]}</span>${match[5]}</span>${match[6]}</span>`);
if (rank < 2) { msgParsed.data.nick = msgParsed.data.nick.replace(/\[\d+?\]\s/, ``); msgParsed.data.nick = `<span style='color:#F0F0F0'>[<span style='color:#F9DB88'>${msgParsed.data.senderID}</span>]</span> ${msgParsed.data.nick}` };
if (rank == 2) { msgParsed.data.nick = msgParsed.data.nick.replace('(M) ', ``); msgParsed.data.nick = `<span style='color:#F0F0F0'>(<span style='color:#F9DB88'>M</span>)</span> ${msgParsed.data.nick}` };
if (rank == 3) { msgParsed.data.nick = msgParsed.data.nick.replace('(A) ', ``); msgParsed.data.nick = `<span style='color:#F0F0F0'>(<span style='color:#F9DB88'>A</span>)</span> ${msgParsed.data.nick}` };
};
if (msgParsed.data.nick.match(/\bXAHH\b/gi)) {
msgParsed.data.nick = "<span style='color:#00FA9A'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bLLG\b/gi)) {
msgParsed.data.nick = "<span style='color:#FF00FF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bNONA(EM|MEZ_?)\b/gi)) {
msgParsed.data.nick = "<span style='color:#9E9EFF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bNEKONOKA\b/gi)) {
msgParsed.data.nick = "<span style='color:#8F3CD7'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bTOASTER\b/gi)) {
msgParsed.data.nick = "<span style='color:#FFC839'>" + msgParsed.data.nick.replace(/\bTOASTER\b/gi, match => `${match.slice(0, 2)}<span style='color:#FFFFFF'>${match.slice(2, 5)}</span>${match.slice(-2)}`) + "</span>";
};
if (msgParsed.data.nick.match(/\bC3PHEI\b/gi)) {
msgParsed.data.nick = "<span style='color:#AC3940'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bENDERMENT\b/gi)) {
msgParsed.data.nick = "<span style='color:#952BFF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bTAHA\b/gi)) {
msgParsed.data.nick = "<span style='color:#224E7C'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bS(Ü|U)DENLAND\b/gi)) {
msgParsed.data.nick = "<span style='color:#224E7C'>" + msgParsed.data.nick.replace(/\bSÜDENLAND\b/gi, match => `${match[0]}<span style='color:#4C8FD6'>${match[1]}<span style='color:#1DCDA1'>${match[2]}</span>${match[3]}</span>${match.slice(-5)}`) + "</span>";
};
if (msgParsed.data.nick.match(/\bRELOOPGD\b/gi)) {
msgParsed.data.nick = "<span style='color:#FD1C27'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/(\bBLAKE\b|._BLAKE_.)/gi)) {
msgParsed.data.nick = "<span style='color:#FCC8D9'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bCAPA\b/gi)) {
msgParsed.data.nick = "<span style='color:#A44F15'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bLEG\b/gi)) {
msgParsed.data.nick = "<span style='color:#DD80A5'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bVVICTOR(__)?\b/gi)) {
msgParsed.data.nick = "<span style='color:#00FF66'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\b(MART|ARTM)AN\b/gi)) {
msgParsed.data.nick = "<span style='color:#0083D5'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bSTEVESTA\b/gi)) {
msgParsed.data.nick = "<span style='color:#7F7F7F'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bLAPIS\b/gi)) {
msgParsed.data.nick = "<span style='color:#0066FF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bAMON?GUSLAND\b/gi)) {
msgParsed.data.nick = "<span style='color:#52A4DC'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bDOITSHL(Æ|AE?)ND\b/gi)) {
msgParsed.data.nick = "<span style='color:#F9DD3E'>" + msgParsed.data.nick.replace(/\bDOITSHL(Æ|A)ND\b/gi, match => `<span style='color:#58585A'>${match.slice(0, 3)}</span><span style='color:#C72931'>${match.slice(3, 7)}</span><span style='color:#F9DD3E'>${match.slice(-3)}</span>`).replace(/\bDOITSHLAEND\b/gi, match => `<span style='color:#58585A'>${match.slice(0, 4)}</span><span style='color:#C72931'>${match.slice(4, 7)}</span><span style='color:#F9DD3E'>${match.slice(-4)}</span>`) + "</span>";
};
if (msgParsed.data.nick.match(/\bLEMON\b/gi)) {
msgParsed.data.nick = "<span style='color:#FFFF00'>" + msgParsed.data.nick.replace(/\bLEMON\b/gi, match => `🍋 ${match}`) + "</span>";
};
if (msgParsed.data.nick.match(/\bTESS\b/gi)) {
msgParsed.data.nick = "<span style='color:#9CDED3'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\b(CYGNUS|CEUTHYN)\b/gi)) {
msgParsed.data.nick = "<span style='color:#00EEFF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bELDIT\b/gi)) {
msgParsed.data.nick = "<span style='color:#A92444'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\b(GREEN(YLAND)?\sREP|UGS)\b/gi)) {
msgParsed.data.nick = "<span style='color:#4ED97C'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/(?<=\s|^|"|'|\b)(PHYREXIA|ɸ)(?=\s|$|"|'|\b)/gi)) {
msgParsed.data.nick = "<span style='color:#F4F1A4'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bPURPERISM\b/gi)) {
msgParsed.data.nick = "<span style='color:#972C9E'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\b(RODIMUSPRIME|PACICIDAL)\b/gi)) {
msgParsed.data.nick = "<span style='color:#58A699'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bDUCK12\b/gi)) {
msgParsed.data.nick = "<span style='color:#FFFFFF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bBOÖTES\sIMPERIUM\b/gi)) {
msgParsed.data.nick = "<span style='color:#000000; text-shadow:-1px 0px 0 #FFF, 1px 0px 0 #FFF, 0px 1px 0 #FFF, 0px -1px 0 #FFF'>" + msgParsed.data.nick + "</span>";
};
if (msgParsed.data.nick.match(/\bRALIOVI\b/gi)) {
msgParsed.data.nick = "<span style='color:#AEE797'>" + msgParsed.data.nick + "</span>";
};
/*** SECOND TECHNICAL AREA ***/
if (!anchorme(msgParsed.data.message).includes("<a")) {
msgParsed.data.message = mdParse(msgParsed.data.message);
}
// Unnamed players
if (msgParsed.data.nick == msgParsed.data.senderID) {
msgParsed.data.nick = `<span style='color:${playerList[msgParsed.data.senderID]?.clr}'>` + msgParsed.data.nick + "</span>";
};
// Chat mention
let findPlayer = new RegExp(`(?<=\\s|^|"|'|\\b)${playerID}(?=\\s|$|"|'|\\b)`, "g");
sName(findPlayer, match => `<span style='color:#FF0000'>${match}</span>`);
// Restore normal message color
if (rank == 0) msgParsed.data.nick = "<span style='color:#999999'>" + msgParsed.data.nick
if (rank == 1) msgParsed.data.nick = "<span style='color:#3AB2FF'>" + msgParsed.data.nick + "</span><span style='color:#FFFFFF'>";
if (rank == 2) msgParsed.data.nick = "<span style='color:#86FF41'>" + msgParsed.data.nick;
if (rank == 4) msgParsed.data.nick = "<span style='color:#6CFFE7'>" + msgParsed.data.nick + "</span><span style='color:#FFFFFF'>"; // Discord messages
//console.log("Message after: " + JSON.stringify(msgParsed)); // Debug
return JSON.stringify(msgParsed);
};
return msg;
};
//Command processing
const prevS = OWOP.misc.chatSendModifier || (m => m);
OWOP.misc.chatSendModifier = msg => {
msg = prevS(msg);
if (!msg.startsWith('/')) return msg;
const [cmd, ...args] = msg.slice(1).trim().split(/\s+/);
switch (cmd.toLowerCase()) {
case "local":
case "l": {
if (args.length < 1) {
locErr('Usage: /local <message>');
return '';
};
let px = OWOP.mouse.tileX
let py = OWOP.mouse.tileY
let nearbyPlayers = []
for (let x in playerList) {
if (Math.abs(playerList[x].x / 16 - px) <= nearbyThresh && Math.abs(playerList[x].y / 16 - py) <= nearbyThresh) {
nearbyPlayers.push(x);
};
};
if (nearbyPlayers.length == 0) {
locErr('No players nearby');
return '';
};
let localMsg = args.join(' ') + "\nLocal chat: " + playerID + ", " + nearbyPlayers.join(', ');
for (let i = 0; i < nearbyPlayers.length; i++) {
tell(nearbyPlayers[i], localMsg);
};
return '';
}
case "lset":
if (args.length != 1 || isNaN(args[0]) || args[0] < 0) {
locErr("Usage: /lset <distance>");
return '';
};
nearbyThresh = args;
return '';
case "clear":
case "c":
if (args.length != 0) {
locErr("Usage: /clear");
return '';
};
OWOP.chat.clear();
return '';
case "respond":
case "r":
if (!responseID) {
locErr('Nobody messaged you yet');
return '';
}
if (!playerList[responseID]) {
locErr(`ID ${responseID} disconnected`);
responseID = undefined;
return '';
};
tell(responseID, args.join(" "));
return '';
case "qid":
case "qset":
if (args.length != 1) {
locErr('Usage: /qset <id>');
return '';
};
if (!isNaN(args)) {
if (!playerList[args]) {
locErr("ID " + args + " doesn't exist.")
return '';
};
quickID = args;
return '';
};
locErr('Usage: /qset <id>');
return '';
case "q":
if (quickID === undefined) {
locErr('Use "/qset <id>" to set a quick id first');
return '';
};
if (args.length == 0) {
locErr('Usage: /q <message>');
return '';
};
if (!playerList[quickID]) {
locErr("ID " + quickID + " disconnected");
quickID = undefined;
return '';
};
tell(quickID, args.join(' '));
return '';
case "qgname":
case "qgset":
case "qgroup": // Group-based
if (args.length != 1) {
locErr('Usage: /qgset <group name>');
return '';
};
if (!groups[args]) {
locErr('Group "' + args + '" does not exist');
return '';
};
quickGroup = args;
return '';
case "qg": { // Group-based
if (quickGroup === undefined) {
locErr('Use "/qgset <group name>" to set a quick group first');
return '';
};
if (!groups[quickGroup]) {
locErr('Group "' + quickGroup + '" does not exist anymore');
quickGroup = undefined;
return '';
};
for (let i = 0; i < groups[quickGroup].length; i++) {
if (!playerList[groups[quickGroup][i]]) {
locErr("ID " + groups[quickGroup][i] + " disconnected");
groups[quickGroup].splice(i, 1);
};
};
let quickGroupMsg = args.join(' ') + "\nGroup chat: " + playerID + ", " + groups[quickGroup].join(', ');
for (let i = 0; i < groups[quickGroup].length; i++) {
tell(groups[quickGroup][i], quickGroupMsg)
};
return '';
};
case "color":
if (args.length != 1 || (args != "true" && args != "false")) {
locErr("Usage: /color <true/false>");
return '';
};
localStorage.colorChat = args;
return '';
case "block":
if (args.length != 1) {
locErr('Usage: /block <id>');
return '';
};
if (!playerList[args]) {
locErr(`ID ${args} does not exist`);
return '';
};
if (OWOP.muted.includes(Number(args))) {
locErr(`ID ${args} is already blocked`);
return '';
};
OWOP.muted.push(Number(args));
return '';
case "unblock":
if (args.length != 1) {
locErr('Usage: /unblock <id>');
return '';
};
if (!playerList[args]) {
locErr(`ID ${args} does not exist`);
return '';
};
if (!OWOP.muted.includes(Number(args))) {
locErr(`ID ${args} is not blocked`);
return '';
};
OWOP.muted.splice(OWOP.muted.indexOf(Number(args)), 1);
return '';
case "nearby": {
if (args.length > 1 || (args.length == 1 && isNaN(args[0]))) {
locErr('Usage: /nearby <distance*> (* = optional)');
return '';
};
let px = OWOP.mouse.tileX;
let py = OWOP.mouse.tileY;
let thresh = (args.length == 1 ? args[0] : nearbyThresh);
let nearbyPlayers = [];
for (let x in playerList) {
if (Math.abs(playerList[x].x / 16 - px) <= thresh && Math.abs(playerList[x].y / 16 - py) <= thresh) {
nearbyPlayers.push(x);
};
};
if (nearbyPlayers.length == 0) {
locErr('No players nearby');
return '';
} else {
locSend(`Nearby player ids: ${nearbyPlayers.join(', ')}`);
return '';
}
};
case "show":
if (args.length != 0) {
locErr('Usage: /show');
return '';
};
document.getElementById('chat-messages').style.display = (document.getElementById('chat-messages').style.display == 'none' ? '' : 'none');
return '';
case "g":
case "group":
case "groups": // Group-based
gHandle(args);
return '';
case "yell":
if (args.length == 0) {
locErr('Usage: /yell <id*> <message> (* = optional)');
return '';
};
if (!isNaN(args[0])) {
tell(args[0], args.slice(1).join(' ').toUpperCase());
return '';
};
say(args.join(' ').toUpperCase());
return '';
case "help":
case "h":
case "?":
helpHandle(args);
};
return msg;
};
console.log('Chat Utils installed');
};
})();