@tixyel/streamelements 3.6.0 → 3.7.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/simulation/data/avatars.ts","../src/simulation/data/badges.ts","../src/simulation/data/emotes.ts","../src/simulation/data/messages.ts","../src/simulation/data/names.ts","../src/simulation/data/tts.ts","../src/simulation/data/items.ts","../src/simulation/data/tiers.ts","../src/simulation/data/css.ts","../src/simulation/data/youtube.ts","../src/types/alejo.ts","../src/utils/color.ts","../src/simulation/simulation.ts","../src/utils/Message.ts","../src/streamelements/api.ts","../src/utils/EventProvider.ts","../src/utils/useStorage.ts","../src/client/client.ts","../src/actions/command.ts","../src/utils/useQueue.ts","../src/actions/button.ts","../src/utils/Logger.ts","../src/client/listener.ts","../src/index.ts"],"sourcesContent":["export const avatars = [\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/13e5fa74-defa-11e9-809c-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/dbdc9198-def8-11e9-8681-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/998f01ae-def8-11e9-b95c-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/de130ab0-def7-11e9-b668-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/ebe4cd89-b4f4-4cd9-adac-2f30151b4209-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/215b7342-def9-11e9-9a66-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/ead5c8b2-a4c9-4724-b1dd-9f00b46cbd3d-profile_image-300x300.png',\n];\n","import { Twitch } from '../../types/twitch.js';\n\nexport const badges: Record<Twitch.roles, Twitch.badge> = {\n '100 bits': {\n type: '100 bits',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/09d93036-e7ce-431c-9a9e-7044297133f2/3',\n description: '100 bits badge',\n },\n 'no audio': {\n type: 'no audio',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/aef2cd08-f29b-45a1-8c12-d44d7fd5e6f0/3',\n description: 'Individuals with unreliable or no sound can select this badge',\n },\n 'no video': {\n type: 'no video',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/199a0dba-58f3-494e-a7fc-1fa0a1001fb8/3',\n description: 'Individuals with unreliable or no video can select this badge',\n },\n 'bot': {\n type: 'bot',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/df9095f6-a8a0-4cc2-bb33-d908c0adffb8/3',\n description: 'Twitch bot',\n },\n 'twitch staff': {\n type: 'twitch staff',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/d97c37bd-a6f5-4c38-8f57-4e4bef88af34/3',\n description: 'Twitch Staff',\n },\n 'admins': {\n type: 'admins',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/9ef7e029-4cdf-4d4d-a0d5-e2b3fb2583fe/3',\n description: 'Admins',\n },\n 'artist': {\n type: 'artist',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/4300a897-03dc-4e83-8c0e-c332fee7057f/3',\n description: 'Artist',\n },\n 'game developer': {\n type: 'game developer',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/85856a4a-eb7d-4e26-a43e-d204a977ade4/3',\n description: 'Game Developer',\n },\n 'prime': {\n type: 'prime',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/a1dd5073-19c3-4911-8cb4-c464a7bc1510/3',\n description: 'Prime',\n },\n 'turbo': {\n type: 'turbo',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/bd444ec6-8f34-4bf9-91f4-af1e3428d80f/3',\n description: 'Turbo',\n },\n 'subscriber': {\n type: 'subscriber',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3',\n description: 'Subscriber',\n },\n 'broadcaster': {\n type: 'broadcaster',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3',\n description: 'Broadcaster',\n },\n 'verified': {\n type: 'verified',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3',\n description: 'Verified',\n },\n 'moderator': {\n type: 'moderator',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3',\n description: 'Moderator',\n },\n 'vip': {\n type: 'vip',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3',\n description: 'VIP',\n },\n};\n","import { BttvEmote, SeventvEmote, TwitchEmote } from '../../types/emote.js';\n\nexport const emotes: Array<TwitchEmote | BttvEmote | SeventvEmote> = Object.values([\n {\n 'type': 'twitch',\n 'name': 'TheIlluminati',\n 'id': '145315',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/static/dark/3.0',\n },\n 'start': 0,\n 'end': 13,\n },\n {\n 'type': 'twitch',\n 'name': 'BrainSlug',\n 'id': '115233',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/115233/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/115233/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/115233/static/dark/3.0',\n },\n 'start': 14,\n 'end': 23,\n },\n {\n 'type': 'twitch',\n 'name': 'imGlitch',\n 'id': '112290',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/static/dark/3.0',\n },\n 'start': 24,\n 'end': 32,\n },\n {\n 'type': 'twitch',\n 'name': 'TakeNRG',\n 'id': '112292',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/112292/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/112292/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/112292/static/dark/3.0',\n },\n 'start': 33,\n 'end': 40,\n },\n {\n 'type': 'twitch',\n 'name': 'DxCat',\n 'id': '110734',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/110734/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/110734/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/110734/static/dark/3.0',\n },\n 'start': 41,\n 'end': 46,\n },\n {\n 'type': 'twitch',\n 'name': 'VoHiYo',\n 'id': '81274',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/81274/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/81274/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/81274/static/dark/3.0',\n },\n 'start': 47,\n 'end': 53,\n },\n {\n 'type': 'twitch',\n 'name': 'DoritosChip',\n 'id': '102242',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/static/dark/3.0',\n },\n 'start': 54,\n 'end': 65,\n },\n {\n 'type': 'twitch',\n 'name': 'KomodoHype',\n 'id': '81273',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/81273/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/81273/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/81273/static/dark/3.0',\n },\n 'start': 66,\n 'end': 76,\n },\n {\n 'type': 'twitch',\n 'name': 'duDudu',\n 'id': '62834',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/62834/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/62834/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/62834/static/dark/3.0',\n },\n 'start': 77,\n 'end': 83,\n },\n {\n 'type': 'twitch',\n 'name': 'CoolCat',\n 'id': '58127',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/58127/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/58127/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/58127/static/dark/3.0',\n },\n 'start': 84,\n 'end': 91,\n },\n {\n 'type': 'twitch',\n 'name': 'KappaPride',\n 'id': '55338',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/55338/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/55338/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/55338/static/dark/3.0',\n },\n 'start': 92,\n 'end': 102,\n },\n {\n 'type': 'twitch',\n 'name': 'BloodTrail',\n 'id': '69',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/69/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/69/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/69/static/dark/3.0',\n },\n 'start': 103,\n 'end': 113,\n },\n {\n 'type': 'twitch',\n 'name': 'PunchTrees',\n 'id': '47',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/47/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/47/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/47/static/dark/3.0',\n },\n 'start': 114,\n 'end': 124,\n },\n {\n 'type': 'twitch',\n 'name': 'SSSsss',\n 'id': '46',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/46/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/46/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/46/static/dark/3.0',\n },\n 'start': 125,\n 'end': 131,\n },\n {\n 'type': 'twitch',\n 'name': 'Kappa',\n 'id': '25',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/25/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/25/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/25/static/dark/3.0',\n },\n 'start': 132,\n 'end': 137,\n },\n {\n 'type': 'twitch',\n 'name': 'MrDestructoid',\n 'id': '28',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/28/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/28/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/28/static/dark/3.0',\n },\n 'start': 138,\n 'end': 151,\n },\n {\n 'type': 'twitch',\n 'name': '<3',\n 'id': '9',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0',\n },\n 'start': 152,\n 'end': 154,\n },\n {\n 'type': 'twitch',\n 'name': 'HSWP',\n 'id': '446979',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/446979/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/446979/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/446979/static/dark/3.0',\n },\n 'start': 155,\n 'end': 159,\n },\n {\n 'type': 'twitch',\n 'name': 'Shush',\n 'id': 'emotesv2_819621bcb8f44566a1bd8ea63d06c58f',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_819621bcb8f44566a1bd8ea63d06c58f/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_819621bcb8f44566a1bd8ea63d06c58f/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_819621bcb8f44566a1bd8ea63d06c58f/static/dark/3.0',\n },\n 'start': 160,\n 'end': 165,\n },\n {\n 'type': 'twitch',\n 'name': 'IronmouseLuv',\n 'id': 'emotesv2_54c53ae67ad746d2bc866b6fc779183c',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_54c53ae67ad746d2bc866b6fc779183c/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_54c53ae67ad746d2bc866b6fc779183c/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_54c53ae67ad746d2bc866b6fc779183c/static/dark/3.0',\n },\n 'start': 166,\n 'end': 178,\n },\n\n {\n 'type': 'twitch',\n 'name': 'KPOPTT',\n 'id': '304047269',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/304047269/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/304047269/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/304047269/default/dark/3.0',\n },\n 'start': 0,\n 'end': 5,\n },\n {\n 'type': 'twitch',\n 'name': 'FrogPonder',\n 'id': 'emotesv2_a3cdcbfcae9b41bb8215b012362eea35',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_a3cdcbfcae9b41bb8215b012362eea35/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_a3cdcbfcae9b41bb8215b012362eea35/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_a3cdcbfcae9b41bb8215b012362eea35/default/dark/3.0',\n },\n 'start': 7,\n 'end': 16,\n },\n {\n 'type': 'twitch',\n 'name': 'HypeCheer',\n 'id': 'emotesv2_dd4f4f9cea1a4039ad3390e20900abe4',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dd4f4f9cea1a4039ad3390e20900abe4/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dd4f4f9cea1a4039ad3390e20900abe4/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dd4f4f9cea1a4039ad3390e20900abe4/default/dark/3.0',\n },\n 'start': 18,\n 'end': 26,\n },\n {\n 'type': 'twitch',\n 'name': 'HypeFail',\n 'id': 'emotesv2_0330a84e75ad48c1821c1d29a7dadd4d',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_0330a84e75ad48c1821c1d29a7dadd4d/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_0330a84e75ad48c1821c1d29a7dadd4d/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_0330a84e75ad48c1821c1d29a7dadd4d/default/dark/3.0',\n },\n 'start': 28,\n 'end': 35,\n },\n {\n 'type': 'twitch',\n 'name': 'HypePopcorn',\n 'id': 'emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a/default/dark/3.0',\n },\n 'start': 37,\n 'end': 47,\n },\n {\n 'type': 'twitch',\n 'name': 'TransgenderPride',\n 'id': '307827377',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/static/dark/3.0',\n },\n 'start': 49,\n 'end': 65,\n },\n {\n 'type': 'twitch',\n 'name': 'PansexualPride',\n 'id': '307827370',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/static/dark/3.0',\n },\n 'start': 66,\n 'end': 80,\n },\n {\n 'type': 'twitch',\n 'name': 'NonbinaryPride',\n 'id': '307827356',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/static/dark/3.0',\n },\n 'start': 81,\n 'end': 95,\n },\n {\n 'type': 'twitch',\n 'name': 'LesbianPride',\n 'id': '307827340',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/static/dark/3.0',\n },\n 'start': 96,\n 'end': 108,\n },\n {\n 'type': 'twitch',\n 'name': 'IntersexPride',\n 'id': '307827332',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/static/dark/3.0',\n },\n 'start': 109,\n 'end': 122,\n },\n {\n 'type': 'twitch',\n 'name': 'GenderFluidPride',\n 'id': '307827326',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/static/dark/3.0',\n },\n 'start': 123,\n 'end': 139,\n },\n {\n 'type': 'twitch',\n 'name': 'GayPride',\n 'id': '307827321',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/static/dark/3.0',\n },\n 'start': 140,\n 'end': 148,\n },\n {\n 'type': 'twitch',\n 'name': 'BisexualPride',\n 'id': '307827313',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/static/dark/3.0',\n },\n 'start': 149,\n 'end': 162,\n },\n {\n 'type': 'twitch',\n 'name': 'AsexualPride',\n 'id': '307827267',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/static/dark/3.0',\n },\n 'start': 163,\n 'end': 175,\n },\n {\n 'type': 'twitch',\n 'name': 'PogChamp',\n 'id': '305954156',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/static/dark/3.0',\n },\n 'start': 176,\n 'end': 184,\n },\n {\n 'type': 'twitch',\n 'name': 'GlitchCat',\n 'id': '304486301',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/static/dark/3.0',\n },\n 'start': 185,\n 'end': 194,\n },\n {\n 'type': 'twitch',\n 'name': 'SoonerLater',\n 'id': '2113050',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/2113050/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/2113050/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/2113050/static/dark/3.0',\n },\n 'start': 195,\n 'end': 206,\n },\n {\n 'type': 'twitch',\n 'name': 'FBCatch',\n 'id': '1441281',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/1441281/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/1441281/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/1441281/static/dark/3.0',\n },\n 'start': 207,\n 'end': 214,\n },\n {\n 'type': 'twitch',\n 'name': 'FBBlock',\n 'id': '1441276',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/1441276/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/1441276/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/1441276/static/dark/3.0',\n },\n 'start': 215,\n 'end': 222,\n },\n {\n 'type': 'twitch',\n 'name': 'PixelBob',\n 'id': '1547903',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/1547903/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/1547903/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/1547903/static/dark/3.0',\n },\n 'start': 223,\n 'end': 231,\n },\n {\n 'type': 'twitch',\n 'name': 'LUL',\n 'id': '425618',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/static/dark/3.0',\n },\n 'start': 232,\n 'end': 235,\n },\n {\n 'type': 'twitch',\n 'name': 'DarkMode',\n 'id': '461298',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/static/dark/3.0',\n },\n 'start': 236,\n 'end': 244,\n },\n {\n 'type': 'twitch',\n 'name': 'PopCorn',\n 'id': '724216',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/724216/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/724216/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/724216/static/dark/3.0',\n },\n 'start': 245,\n 'end': 252,\n },\n {\n 'type': 'twitch',\n 'name': 'EarthDay',\n 'id': '959018',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/959018/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/959018/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/959018/static/dark/3.0',\n },\n 'start': 253,\n 'end': 261,\n },\n {\n 'type': 'twitch',\n 'name': 'TwitchUnity',\n 'id': '196892',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/196892/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/196892/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/196892/static/dark/3.0',\n },\n 'start': 262,\n 'end': 273,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid4',\n 'id': '191767',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191767/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191767/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191767/static/dark/3.0',\n },\n 'start': 274,\n 'end': 280,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid3',\n 'id': '191764',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191764/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191764/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191764/static/dark/3.0',\n },\n 'start': 281,\n 'end': 287,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid2',\n 'id': '191763',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191763/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191763/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191763/static/dark/3.0',\n },\n 'start': 288,\n 'end': 294,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid1',\n 'id': '191762',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191762/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191762/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191762/static/dark/3.0',\n },\n 'start': 295,\n 'end': 301,\n },\n {\n 'type': 'twitch',\n 'name': 'CrreamAwk',\n 'id': '191313',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191313/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191313/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191313/static/dark/3.0',\n },\n 'start': 302,\n 'end': 311,\n },\n {\n 'type': 'twitch',\n 'name': 'DinoDance',\n 'id': 'emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7/animated/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7/animated/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7/animated/dark/3.0',\n },\n 'start': 46,\n 'end': 55,\n },\n {\n 'type': 'twitch',\n 'name': 'PopNemo',\n 'id': 'emotesv2_5d523adb8bbb4786821cd7091e47da21',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_5d523adb8bbb4786821cd7091e47da21/animated/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_5d523adb8bbb4786821cd7091e47da21/animated/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_5d523adb8bbb4786821cd7091e47da21/animated/dark/3.0',\n },\n 'start': 56,\n 'end': 63,\n },\n {\n 'type': 'twitch',\n 'name': 'TransgenderPride',\n 'id': '307827377',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/default/dark/3.0',\n },\n 'start': 0,\n 'end': 15,\n },\n {\n 'type': 'twitch',\n 'name': 'PansexualPride',\n 'id': '307827370',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/default/dark/3.0',\n },\n 'start': 17,\n 'end': 30,\n },\n {\n 'type': 'twitch',\n 'name': 'NonbinaryPride',\n 'id': '307827356',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/default/dark/3.0',\n },\n 'start': 32,\n 'end': 45,\n },\n {\n 'type': 'twitch',\n 'name': 'LesbianPride',\n 'id': '307827340',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/default/dark/3.0',\n },\n 'start': 47,\n 'end': 58,\n },\n {\n 'type': 'twitch',\n 'name': 'IntersexPride',\n 'id': '307827332',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/default/dark/3.0',\n },\n 'start': 60,\n 'end': 72,\n },\n {\n 'type': 'twitch',\n 'name': 'GenderFluidPride',\n 'id': '307827326',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/default/dark/3.0',\n },\n 'start': 74,\n 'end': 89,\n },\n {\n 'type': 'twitch',\n 'name': 'GayPride',\n 'id': '307827321',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/default/dark/3.0',\n },\n 'start': 91,\n 'end': 98,\n },\n {\n 'type': 'twitch',\n 'name': 'BisexualPride',\n 'id': '307827313',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/default/dark/3.0',\n },\n 'start': 100,\n 'end': 112,\n },\n {\n 'type': 'twitch',\n 'name': 'AsexualPride',\n 'id': '307827267',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/default/dark/3.0',\n },\n 'start': 114,\n 'end': 125,\n },\n {\n 'type': 'twitch',\n 'name': 'PogChamp',\n 'id': '305954156',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/default/dark/3.0',\n },\n 'start': 127,\n 'end': 134,\n },\n {\n 'type': 'twitch',\n 'name': 'GlitchCat',\n 'id': '304486301',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/default/dark/3.0',\n },\n 'start': 136,\n 'end': 144,\n },\n {\n 'type': 'twitch',\n 'name': 'DarkMode',\n 'id': '461298',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/default/dark/3.0',\n },\n 'start': 146,\n 'end': 153,\n },\n {\n 'type': 'twitch',\n 'name': 'LUL',\n 'id': '425618',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/3.0',\n },\n 'start': 155,\n 'end': 157,\n },\n {\n 'type': 'twitch',\n 'name': 'TheIlluminati',\n 'id': '145315',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/default/dark/3.0',\n },\n 'start': 159,\n 'end': 171,\n },\n {\n 'type': 'twitch',\n 'name': 'imGlitch',\n 'id': '112290',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/default/dark/3.0',\n },\n 'start': 173,\n 'end': 180,\n },\n {\n 'type': 'twitch',\n 'name': 'DoritosChip',\n 'id': '102242',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/default/dark/3.0',\n },\n 'start': 182,\n 'end': 192,\n },\n {\n 'type': 'twitch',\n 'name': 'SSSsss',\n 'id': '46',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/46/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/46/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/46/default/dark/3.0',\n },\n 'start': 194,\n 'end': 199,\n },\n {\n 'type': 'twitch',\n 'name': 'PunchTrees',\n 'id': '47',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/47/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/47/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/47/default/dark/3.0',\n },\n 'start': 201,\n 'end': 210,\n },\n {\n 'type': 'twitch',\n 'name': 'BloodTrail',\n 'id': '69',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/69/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/69/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/69/default/dark/3.0',\n },\n 'start': 223,\n 'end': 232,\n },\n {\n 'type': '7tv',\n 'name': 'CookieTime',\n 'id': '635b0184ea9ce7391cbf77d6',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/1x.webp',\n '2': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/2x.webp',\n '3': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/3x.webp',\n '4': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/4x.webp',\n },\n 'start': 0,\n 'end': 10,\n 'coords': {\n 'x': 0,\n 'y': 0,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'catJAM',\n 'id': '5f1b0186cf6d2144653d2970',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/5f1b0186cf6d2144653d2970/1x',\n '2': 'https://cdn.betterttv.net/emote/5f1b0186cf6d2144653d2970/2x',\n '4': 'https://cdn.betterttv.net/emote/5f1b0186cf6d2144653d2970/3x',\n },\n 'start': 0,\n 'end': 6,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': ':tf:',\n 'id': '54fa8f1401e468494b85b537',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fa8f1401e468494b85b537/1x',\n '2': 'https://cdn.betterttv.net/emote/54fa8f1401e468494b85b537/2x',\n '4': 'https://cdn.betterttv.net/emote/54fa8f1401e468494b85b537/3x',\n },\n 'start': 7,\n 'end': 11,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'AngelThump',\n 'id': '566ca1a365dbbdab32ec055b',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/566ca1a365dbbdab32ec055b/1x',\n '2': 'https://cdn.betterttv.net/emote/566ca1a365dbbdab32ec055b/2x',\n '4': 'https://cdn.betterttv.net/emote/566ca1a365dbbdab32ec055b/3x',\n },\n 'start': 12,\n 'end': 22,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 334,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'ariW',\n 'id': '56fa09f18eff3b595e93ac26',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/1x',\n '2': 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/2x',\n '4': 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/3x',\n },\n 'start': 23,\n 'end': 27,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'BroBalt',\n 'id': '54fbf00a01abde735115de5c',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fbf00a01abde735115de5c/1x',\n '2': 'https://cdn.betterttv.net/emote/54fbf00a01abde735115de5c/2x',\n '4': 'https://cdn.betterttv.net/emote/54fbf00a01abde735115de5c/3x',\n },\n 'start': 28,\n 'end': 35,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 184,\n 'height': 120,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'bttvNice',\n 'id': '54fab7d2633595ca4c713abf',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fab7d2633595ca4c713abf/1x',\n '2': 'https://cdn.betterttv.net/emote/54fab7d2633595ca4c713abf/2x',\n '4': 'https://cdn.betterttv.net/emote/54fab7d2633595ca4c713abf/3x',\n },\n 'start': 36,\n 'end': 44,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 168,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'bUrself',\n 'id': '566c9f3b65dbbdab32ec052e',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/566c9f3b65dbbdab32ec052e/1x',\n '2': 'https://cdn.betterttv.net/emote/566c9f3b65dbbdab32ec052e/2x',\n '4': 'https://cdn.betterttv.net/emote/566c9f3b65dbbdab32ec052e/3x',\n },\n 'start': 45,\n 'end': 52,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'c!',\n 'id': '6468f7acaee1f7f47567708e',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/6468f7acaee1f7f47567708e/1x',\n '2': 'https://cdn.betterttv.net/emote/6468f7acaee1f7f47567708e/2x',\n '4': 'https://cdn.betterttv.net/emote/6468f7acaee1f7f47567708e/3x',\n },\n 'start': 53,\n 'end': 55,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'CandianRage',\n 'id': '54fbf09c01abde735115de61',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fbf09c01abde735115de61/1x',\n '2': 'https://cdn.betterttv.net/emote/54fbf09c01abde735115de61/2x',\n '4': 'https://cdn.betterttv.net/emote/54fbf09c01abde735115de61/3x',\n },\n 'start': 56,\n 'end': 67,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'CiGrip',\n 'id': '54fa8fce01e468494b85b53c',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fa8fce01e468494b85b53c/1x',\n '2': 'https://cdn.betterttv.net/emote/54fa8fce01e468494b85b53c/2x',\n '4': 'https://cdn.betterttv.net/emote/54fa8fce01e468494b85b53c/3x',\n },\n 'start': 68,\n 'end': 74,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'ConcernDoge',\n 'id': '566c9f6365dbbdab32ec0532',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/566c9f6365dbbdab32ec0532/1x',\n '2': 'https://cdn.betterttv.net/emote/566c9f6365dbbdab32ec0532/2x',\n '4': 'https://cdn.betterttv.net/emote/566c9f6365dbbdab32ec0532/3x',\n },\n 'start': 75,\n 'end': 86,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 101,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'CruW',\n 'id': '55471c2789d53f2d12781713',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/55471c2789d53f2d12781713/1x',\n '2': 'https://cdn.betterttv.net/emote/55471c2789d53f2d12781713/2x',\n '4': 'https://cdn.betterttv.net/emote/55471c2789d53f2d12781713/3x',\n },\n 'start': 87,\n 'end': 91,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'cvHazmat',\n 'id': '5e76d338d6581c3724c0f0b2',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/5e76d338d6581c3724c0f0b2/1x',\n '2': 'https://cdn.betterttv.net/emote/5e76d338d6581c3724c0f0b2/2x',\n '4': 'https://cdn.betterttv.net/emote/5e76d338d6581c3724c0f0b2/3x',\n },\n 'start': 92,\n 'end': 100,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'D:',\n 'id': '55028cd2135896936880fdd7',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/55028cd2135896936880fdd7/1x',\n '2': 'https://cdn.betterttv.net/emote/55028cd2135896936880fdd7/2x',\n '4': 'https://cdn.betterttv.net/emote/55028cd2135896936880fdd7/3x',\n },\n 'start': 101,\n 'end': 103,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'haHAA',\n 'id': '555981336ba1901877765555',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/555981336ba1901877765555/1x',\n '2': 'https://cdn.betterttv.net/emote/555981336ba1901877765555/2x',\n '4': 'https://cdn.betterttv.net/emote/555981336ba1901877765555/3x',\n },\n 'start': 104,\n 'end': 109,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'LuL',\n 'id': '567b00c61ddbe1786688a633',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/567b00c61ddbe1786688a633/1x',\n '2': 'https://cdn.betterttv.net/emote/567b00c61ddbe1786688a633/2x',\n '4': 'https://cdn.betterttv.net/emote/567b00c61ddbe1786688a633/3x',\n },\n 'start': 110,\n 'end': 113,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'DuckerZ',\n 'id': '573d38b50ffbf6cc5cc38dc9',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/573d38b50ffbf6cc5cc38dc9/1x',\n '2': 'https://cdn.betterttv.net/emote/573d38b50ffbf6cc5cc38dc9/2x',\n '4': 'https://cdn.betterttv.net/emote/573d38b50ffbf6cc5cc38dc9/3x',\n },\n 'start': 114,\n 'end': 121,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 149,\n 'height': 112,\n },\n },\n {\n 'type': 'ffz',\n 'name': 'CatBag',\n 'id': '25927',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.frankerfacez.com/emote/25927/1',\n '2': 'https://cdn.frankerfacez.com/emote/25927/2',\n '4': 'https://cdn.frankerfacez.com/emote/25927/4',\n },\n 'start': 122,\n 'end': 128,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 143,\n 'height': 128,\n },\n },\n]).reduce(\n (acc, emote) => {\n if (!acc.some((e) => e.name === emote.name)) {\n acc.push({\n ...emote,\n start: 0,\n end: 0,\n } as TwitchEmote | BttvEmote | SeventvEmote);\n }\n\n return acc;\n },\n [] as Array<TwitchEmote | BttvEmote | SeventvEmote>,\n);\n","export const messages = [\n 'Hello everyone!',\n 'PogChamp',\n 'This stream is amazing!',\n 'catJAM catJAM catJAM',\n 'LUL that was funny',\n 'GG!',\n 'First time here, loving it!',\n 'DinoDance',\n 'Can we get some hype in chat?',\n 'TransgenderPride PansexualPride NonbinaryPride',\n 'POGGERS',\n 'I just followed! PogChamp',\n 'Great gameplay btw',\n 'LUL LUL LUL',\n 'This is so wholesome AngelThump',\n 'catJAM vibing',\n 'haHAA',\n 'Wait what just happened? D:',\n 'GlitchCat GlitchCat',\n 'Best stream on Twitch right now!',\n 'DarkMode gang where you at?',\n 'PogChamp PogChamp PogChamp PogChamp',\n 'Anyone else eating? DoritosChip',\n 'I love this community!',\n 'TheIlluminati confirmed',\n 'bUrself be yourself!',\n 'CookieTime nom nom',\n 'imGlitch technical difficulties',\n 'This music is fire catJAM',\n 'bttvNice',\n 'LesbianPride GayPride BisexualPride',\n 'SSSsss Minecraft time',\n 'PopNemo',\n 'Going to bed, good night everyone!',\n 'Just got here, what did I miss?',\n ':tf: trollface',\n 'ariW wave',\n 'BroBalt nice one',\n 'AsexualPride IntersexPride GenderFluidPride',\n 'This chat is moving so fast!',\n 'CandianRage',\n 'PunchTrees PunchTrees',\n 'CiGrip',\n 'ConcernDoge hmm',\n 'CruW salute',\n 'cvHazmat stay safe',\n 'DuckerZ quack',\n 'BloodTrail hunting time',\n 'CatBag kitty!',\n 'c! poggers',\n];\n","export const names = ['Local', 'Tixyel', 'Urie_s2', 'itzzcatt', 'BeniArts', 'Cupidiko', 'shy_madeit'];\n","export const tts = [\n 'Filiz',\n 'Astrid',\n 'Tatyana',\n 'Maxim',\n 'Carmen',\n 'Ines',\n 'Cristiano',\n 'Vitoria',\n 'Ricardo',\n 'Maja',\n 'Jan',\n 'Jacek',\n 'Ewa',\n 'Ruben',\n 'Lotte',\n 'Liv',\n 'Seoyeon',\n 'Takumi',\n 'Mizuki',\n 'Giorgio',\n 'Carla',\n 'Bianca',\n 'Karl',\n 'Dora',\n 'Mathieu',\n 'Celine',\n 'Chantal',\n 'Penelope',\n 'Miguel',\n 'Mia',\n 'Enrique',\n 'Conchita',\n 'Geraint',\n 'Salli',\n 'Matthew',\n 'Kimberly',\n 'Kendra',\n 'Justin',\n 'Joey',\n 'Joanna',\n 'Ivy',\n 'Raveena',\n 'Aditi',\n 'Emma',\n 'Brian',\n 'Amy',\n 'Russell',\n 'Nicole',\n 'Vicki',\n 'Marlene',\n 'Hans',\n 'Naja',\n 'Mads',\n 'Gwyneth',\n 'Zhiyu',\n 'Tracy',\n 'Danny',\n 'Huihui',\n 'Yaoyao',\n 'Kangkang',\n 'HanHan',\n 'Zhiwei',\n 'Asaf',\n 'An',\n 'Stefanos',\n 'Filip',\n 'Ivan',\n 'Heidi',\n 'Herena',\n 'Kalpana',\n 'Hemant',\n 'Matej',\n 'Andika',\n 'Rizwan',\n 'Lado',\n 'Valluvar',\n 'Linda',\n 'Heather',\n 'Sean',\n 'Michael',\n 'Karsten',\n 'Guillaume',\n 'Pattara',\n 'Jakub',\n 'Szabolcs',\n 'Hoda',\n 'Naayf',\n];\n","export const items: any[] = [];\n","export const tiers = ['1000', '2000', '3000', 'prime'];\n","export const css_color_names = [\n 'aliceblue',\n 'antiquewhite',\n 'aqua',\n 'aquamarine',\n 'azure',\n 'beige',\n 'bisque',\n 'black',\n 'blanchedalmond',\n 'blue',\n 'blueviolet',\n 'brown',\n 'burlywood',\n 'cadetblue',\n 'chartreuse',\n 'chocolate',\n 'coral',\n 'cornflowerblue',\n 'cornsilk',\n 'crimson',\n 'cyan',\n 'darkblue',\n 'darkcyan',\n 'darkgoldenrod',\n 'darkgray',\n 'darkgreen',\n 'darkgrey',\n 'darkkhaki',\n 'darkmagenta',\n 'darkolivegreen',\n 'darkorange',\n 'darkorchid',\n 'darkred',\n 'darksalmon',\n 'darkseagreen',\n 'darkslateblue',\n 'darkslategray',\n 'darkslategrey',\n 'darkturquoise',\n 'darkviolet',\n 'deeppink',\n 'deepskyblue',\n 'dimgray',\n 'dimgrey',\n 'dodgerblue',\n 'firebrick',\n 'floralwhite',\n 'forestgreen',\n 'fuchsia',\n 'gainsboro',\n 'ghostwhite',\n 'gold',\n 'goldenrod',\n 'gray',\n 'green',\n 'greenyellow',\n 'grey',\n 'honeydew',\n 'hotpink',\n 'indianred',\n 'indigo',\n 'ivory',\n 'khaki',\n 'lavender',\n 'lavenderblush',\n 'lawngreen',\n 'lemonchiffon',\n 'lightblue',\n 'lightcoral',\n 'lightcyan',\n 'lightgoldenrodyellow',\n 'lightgray',\n 'lightgreen',\n 'lightgrey',\n 'lightpink',\n 'lightsalmon',\n 'lightseagreen',\n 'lightskyblue',\n 'lightslategray',\n 'lightslategrey',\n 'lightsteelblue',\n 'lightyellow',\n 'lime',\n 'limegreen',\n 'linen',\n 'magenta',\n 'maroon',\n 'mediumaquamarine',\n 'mediumblue',\n 'mediumorchid',\n 'mediumpurple',\n 'mediumseagreen',\n 'mediumslateblue',\n 'mediumspringgreen',\n 'mediumturquoise',\n 'mediumvioletred',\n 'midnightblue',\n 'mintcream',\n 'mistyrose',\n 'moccasin',\n 'navajowhite',\n 'navy',\n 'oldlace',\n 'olive',\n 'olivedrab',\n 'orange',\n 'orangered',\n 'orchid',\n 'palegoldenrod',\n 'palegreen',\n 'paleturquoise',\n 'palevioletred',\n 'papayawhip',\n 'peachpuff',\n 'peru',\n 'pink',\n 'plum',\n 'powderblue',\n 'purple',\n 'rebeccapurple',\n 'red',\n 'rosybrown',\n 'royalblue',\n 'saddlebrown',\n 'salmon',\n 'sandybrown',\n 'seagreen',\n 'seashell',\n 'sienna',\n 'silver',\n 'skyblue',\n 'slateblue',\n 'slategray',\n 'slategrey',\n 'snow',\n 'springgreen',\n 'steelblue',\n 'tan',\n 'teal',\n 'thistle',\n 'tomato',\n 'turquoise',\n 'violet',\n 'wheat',\n 'white',\n 'whitesmoke',\n 'yellow',\n 'yellowgreen',\n 'transparent',\n];\n","export const youtube_emotes = [\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/flower-rainbow-heart-red',\n 'shortcuts': [':pride-flower-rainbow-heart:'],\n 'searchTerms': ['pride-flower-rainbow-heart'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/8cF4z9clPGshgty6vT3ImAtx_CUvz3TMY-SAu_UKw-x1Z9-2KzcK4OuyAIROrKhyvcabrw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/8cF4z9clPGshgty6vT3ImAtx_CUvz3TMY-SAu_UKw-x1Z9-2KzcK4OuyAIROrKhyvcabrw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-flower-rainbow-heart',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 0,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-green-earth-head',\n 'shortcuts': [':pride-person-earth-intersex:'],\n 'searchTerms': ['pride-person-earth-intersex'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Gr-3he7L8jjQFj7aI0kSY1eV4aIsy-vT7Hk5shdakigG9aAJO_uMBmV6haCtK1OHjTEjj1o=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Gr-3he7L8jjQFj7aI0kSY1eV4aIsy-vT7Hk5shdakigG9aAJO_uMBmV6haCtK1OHjTEjj1o=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-person-earth-intersex',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 1,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-yellow-heart-lesbian',\n 'shortcuts': [':pride-person-heart-lesbian:'],\n 'searchTerms': ['pride-person-heart-lesbian'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tKVZ2TfK5tMLvF88cnz2YNVwuHNgr0eDR9Ef8J0OCkZEHXLFUtH3f6-xSHhqhwd2sL3Tu4I=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tKVZ2TfK5tMLvF88cnz2YNVwuHNgr0eDR9Ef8J0OCkZEHXLFUtH3f6-xSHhqhwd2sL3Tu4I=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-person-heart-lesbian',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 2,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-yellow-flower-nonbinary',\n 'shortcuts': [':pride-person-flower-nonbinary:'],\n 'searchTerms': ['pride-person-flower-nonbinary'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/le1X4KHLOmK5K1s5xu-owmP_eZK4D0ExyjnMCS6UNqZa-Zh4uEzz3mZnU3jBlLfi14Zpngw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/le1X4KHLOmK5K1s5xu-owmP_eZK4D0ExyjnMCS6UNqZa-Zh4uEzz3mZnU3jBlLfi14Zpngw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-person-flower-nonbinary',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 3,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/flower-rainbow-heart-pansexual',\n 'shortcuts': [':pride-flower-pansexual:'],\n 'searchTerms': ['pride-flower-pansexual'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/blSdVv_UpdTn8BIWU6u9oCWhdtpc0-a-3dJeaRX9As6ftLc0OGPJ1PveQEJbUEDzf6by2Xi9=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/blSdVv_UpdTn8BIWU6u9oCWhdtpc0-a-3dJeaRX9As6ftLc0OGPJ1PveQEJbUEDzf6by2Xi9=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-flower-pansexual',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 4,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/heart-stripes-pride-flag',\n 'shortcuts': [':pride-heart-rainbow-philly:'],\n 'searchTerms': ['pride-heart-rainbow-philly'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7iYeXsmU2YMcKsKalaKJhirWdDASATIpl_c7Ib7akaRhvz8GChI4xpM0d0dtASjmmWPbg1NG=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7iYeXsmU2YMcKsKalaKJhirWdDASATIpl_c7Ib7akaRhvz8GChI4xpM0d0dtASjmmWPbg1NG=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-heart-rainbow-philly',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 5,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/symbol-turquoise-flowers-transgender',\n 'shortcuts': [':pride-flowers-turquoise-transgender:'],\n 'searchTerms': ['pride-flowers-turquoise-transgender'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/ovz1T6ay1D1GNFXwwYibZeu_rV5_iSRXWSHR2thQDLLWejVQMqWPUhsUWrMMw1tlBwllYA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/ovz1T6ay1D1GNFXwwYibZeu_rV5_iSRXWSHR2thQDLLWejVQMqWPUhsUWrMMw1tlBwllYA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-flowers-turquoise-transgender',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 6,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hand-rainbow-fan-open',\n 'shortcuts': [':pride-fan-rainbow-open:'],\n 'searchTerms': ['pride-fan-rainbow-open'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/lDH5aORWtlc42NxTwiP3aIUIjttLVvE4Q_xIJDuu55DKvYSLeDIysOEKtGuMmEtOLgvZ_zTX=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/lDH5aORWtlc42NxTwiP3aIUIjttLVvE4Q_xIJDuu55DKvYSLeDIysOEKtGuMmEtOLgvZ_zTX=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-fan-rainbow-open',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 7,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-pink-hair-earrings',\n 'shortcuts': [':pride-face-pink-earrings:'],\n 'searchTerms': ['pride-face-pink-earrings'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/utFog-w4fqgJ05xfQFjSdy8jvRBtFCeuWRkLH3IaVJ4WCBrdjDbXzXOprJA_h6MPOuksv0c=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/utFog-w4fqgJ05xfQFjSdy8jvRBtFCeuWRkLH3IaVJ4WCBrdjDbXzXOprJA_h6MPOuksv0c=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-face-pink-earrings',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 8,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/unicorn-white-rainbow-mane',\n 'shortcuts': [':pride-unicorn-rainbow-mane:'],\n 'searchTerms': ['pride-unicorn-rainbow-mane'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/fvdANfncTw5aDF8GBq20kHicN5rMVoCMTM3FY8MQbZH9sZXvHy5o48yvHZWN4No5rz8b7-0=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/fvdANfncTw5aDF8GBq20kHicN5rMVoCMTM3FY8MQbZH9sZXvHy5o48yvHZWN4No5rz8b7-0=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-unicorn-rainbow-mane',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 9,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/people-embracing-two',\n 'shortcuts': [':pride-people-embracing-two:'],\n 'searchTerms': ['pride-people-embracing-two'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/h1zJqFv2R4LzS3ZUpVyHhprCHQTIhbSecqu2Lid23byl5hD5cJdnshluOCyRdldYkWCUNg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/h1zJqFv2R4LzS3ZUpVyHhprCHQTIhbSecqu2Lid23byl5hD5cJdnshluOCyRdldYkWCUNg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-people-embracing-two',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 10,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-green-hair-tears',\n 'shortcuts': [':pride-face-green-tears:'],\n 'searchTerms': ['pride-face-green-tears'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2BNf4_qBG7mqt1sN-JwThp1srHlDr03xoya9hpIvbgS65HwLaaDz46r3A6dy8JnO2GtLNag=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2BNf4_qBG7mqt1sN-JwThp1srHlDr03xoya9hpIvbgS65HwLaaDz46r3A6dy8JnO2GtLNag=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-face-green-tears',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 11,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/megaphone-rainbow-handle',\n 'shortcuts': [':pride-megaphone-rainbow-handle:'],\n 'searchTerms': ['pride-megaphone-rainbow-handle'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cop1MU9YkEuUxbe8d1NhPl1S9uJ60YSVTMM1gelP7Cy0BICa6Ey_TpxEFFdYITtsUK1cSg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cop1MU9YkEuUxbe8d1NhPl1S9uJ60YSVTMM1gelP7Cy0BICa6Ey_TpxEFFdYITtsUK1cSg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-megaphone-rainbow-handle',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 12,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hand-brown-yellow-nails',\n 'shortcuts': [':pride-hand-yellow-nails:'],\n 'searchTerms': ['pride-hand-yellow-nails'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/1dEPlxkQ1RdZkPo5CLgYvneMQ-BBo63b3nnASEAXoccnVktMjgviKqMj1pjPiK2zTPTc7g=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/1dEPlxkQ1RdZkPo5CLgYvneMQ-BBo63b3nnASEAXoccnVktMjgviKqMj1pjPiK2zTPTc7g=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-hand-yellow-nails',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 13,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-orange-hair-flowing',\n 'shortcuts': [':pride-face-orange-flowing:'],\n 'searchTerms': ['pride-face-orange-flowing'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/RuhTeU8YiT0_NaOYjMmXv77eEw5eO5Bdzfr7ouS0u3ZAK2J4coKGe5g4fN8mJV85jC63hw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/RuhTeU8YiT0_NaOYjMmXv77eEw5eO5Bdzfr7ouS0u3ZAK2J4coKGe5g4fN8mJV85jC63hw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-face-orange-flowing',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 14,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/CIW60IPp_dYCFcuqTgodEu4IlQ',\n 'shortcuts': [':yt:'],\n 'searchTerms': ['yt'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/IkpeJf1g9Lq0WNjvSa4XFq4LVNZ9IP5FKW8yywXb12djo1OGdJtziejNASITyq4L0itkMNw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/IkpeJf1g9Lq0WNjvSa4XFq4LVNZ9IP5FKW8yywXb12djo1OGdJtziejNASITyq4L0itkMNw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'yt',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 15,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/CN2m5cKr49sCFYbFggodDFEKrg',\n 'shortcuts': [':oops:'],\n 'searchTerms': ['oops'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/PFoVIqIiFRS3aFf5-bt_tTC0WrDm_ylhF4BKKwgqAASNb7hVgx_adFP-XVhFiJLXdRK0EQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/PFoVIqIiFRS3aFf5-bt_tTC0WrDm_ylhF4BKKwgqAASNb7hVgx_adFP-XVhFiJLXdRK0EQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'oops',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 16,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/X_zdXMHgJaPa8gTGt4f4Ag',\n 'shortcuts': [':buffering:'],\n 'searchTerms': ['buffering'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/5gfMEfdqO9CiLwhN9Mq7VI6--T2QFp8AXNNy5Fo7btfY6fRKkThWq35SCZ6SPMVCjg-sUA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/5gfMEfdqO9CiLwhN9Mq7VI6--T2QFp8AXNNy5Fo7btfY6fRKkThWq35SCZ6SPMVCjg-sUA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'buffering',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 17,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/1v50XorRJ8GQ8gTz_prwAg',\n 'shortcuts': [':stayhome:'],\n 'searchTerms': ['stayhome'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/_1FGHypiub51kuTiNBX1a0H3NyFih3TnHX7bHU06j_ajTzT0OQfMLl9RI1SiQoxtgA2Grg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/_1FGHypiub51kuTiNBX1a0H3NyFih3TnHX7bHU06j_ajTzT0OQfMLl9RI1SiQoxtgA2Grg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'stayhome',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 18,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/8P50XuS9Oo7h8wSqtIagBA',\n 'shortcuts': [':dothefive:'],\n 'searchTerms': ['dothefive'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/-nM0DOd49969h3GNcl705Ti1fIf1ZG_E3JxcOUVV-qPfCW6jY8xZ98caNLHkVSGRTSEb7Y9y=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/-nM0DOd49969h3GNcl705Ti1fIf1ZG_E3JxcOUVV-qPfCW6jY8xZ98caNLHkVSGRTSEb7Y9y=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'dothefive',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 19,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Fv90Xq-vJcPq8gTqzreQAQ',\n 'shortcuts': [':elbowbump:'],\n 'searchTerms': ['elbowbump'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2ou58X5XuhTrxjtIM2wew1f-HKRhN_T5SILQgHE-WD9dySzzJdGwL4R1gpKiJXcbtq6sjQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2ou58X5XuhTrxjtIM2wew1f-HKRhN_T5SILQgHE-WD9dySzzJdGwL4R1gpKiJXcbtq6sjQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'elbowbump',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 20,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Iv90XouTLuOR8gSxxrToBA',\n 'shortcuts': [':goodvibes:'],\n 'searchTerms': ['goodvibes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2CvFOwgKpL29mW_C51XvaWa7Eixtv-3tD1XvZa1_WemaDDL2AqevKbTZ1rdV0OWcnOZRag=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2CvFOwgKpL29mW_C51XvaWa7Eixtv-3tD1XvZa1_WemaDDL2AqevKbTZ1rdV0OWcnOZRag=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'goodvibes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 21,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Rf90XtDbG8GQ8gTz_prwAg',\n 'shortcuts': [':thanksdoc:'],\n 'searchTerms': ['thanksdoc'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/bUnO_VwXW2hDf-Da8D64KKv6nBJDYUBuo13RrOg141g2da8pi9-KClJYlUDuqIwyPBfvOO8=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/bUnO_VwXW2hDf-Da8D64KKv6nBJDYUBuo13RrOg141g2da8pi9-KClJYlUDuqIwyPBfvOO8=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'thanksdoc',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 22,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/VP90Xv_wG82o8wTCi7CQAw',\n 'shortcuts': [':videocall:'],\n 'searchTerms': ['videocall'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/k5v_oxUzRWmTOXP0V6WJver6xdS1lyHMPcMTfxn23Md6rmixoR5RZUusFbZi1uZwjF__pv4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/k5v_oxUzRWmTOXP0V6WJver6xdS1lyHMPcMTfxn23Md6rmixoR5RZUusFbZi1uZwjF__pv4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'videocall',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 23,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/dv90XtfhAurw8gTgzar4DA',\n 'shortcuts': [':virtualhug:'],\n 'searchTerms': ['virtualhug'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/U1TjOZlqtS58NGqQhE8VWDptPSrmJNkrbVRp_8jI4f84QqIGflq2Ibu7YmuOg5MmVYnpevc=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/U1TjOZlqtS58NGqQhE8VWDptPSrmJNkrbVRp_8jI4f84QqIGflq2Ibu7YmuOg5MmVYnpevc=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'virtualhug',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 24,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hf90Xv-jHeOR8gSxxrToBA',\n 'shortcuts': [':yougotthis:'],\n 'searchTerms': ['yougotthis'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/s3uOe4lUx3iPIt1h901SlMp_sKCTp3oOVj1JV8izBw_vDVLxFqk5dq-3NX-nK_gnUwVEXld3=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/s3uOe4lUx3iPIt1h901SlMp_sKCTp3oOVj1JV8izBw_vDVLxFqk5dq-3NX-nK_gnUwVEXld3=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'yougotthis',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 25,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/lP90XvOhCZGl8wSO1JmgAw',\n 'shortcuts': [':sanitizer:'],\n 'searchTerms': ['sanitizer'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EJ_8vc4Gl-WxCWBurHwwWROAHrPzxgePodoNfkRY1U_I8L1O2zlqf7-wfUtTeyzq2qHNnocZ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EJ_8vc4Gl-WxCWBurHwwWROAHrPzxgePodoNfkRY1U_I8L1O2zlqf7-wfUtTeyzq2qHNnocZ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'sanitizer',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 26,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/uP90Xq6wNYrK8gTUoo3wAg',\n 'shortcuts': [':takeout:'],\n 'searchTerms': ['takeout'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/FizHI5IYMoNql9XeP7TV3E0ffOaNKTUSXbjtJe90e1OUODJfZbWU37VqBbTh-vpyFHlFIS0=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/FizHI5IYMoNql9XeP7TV3E0ffOaNKTUSXbjtJe90e1OUODJfZbWU37VqBbTh-vpyFHlFIS0=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'takeout',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 27,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/fAF1XtDQMIrK8gTUoo3wAg',\n 'shortcuts': [':hydrate:'],\n 'searchTerms': ['hydrate'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tpgZgmhX8snKniye36mnrDVfTnlc44EK92EPeZ0m9M2EPizn1vKEGJzNYdp7KQy6iNZlYDc1=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tpgZgmhX8snKniye36mnrDVfTnlc44EK92EPeZ0m9M2EPizn1vKEGJzNYdp7KQy6iNZlYDc1=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hydrate',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 28,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/vQF1XpyaG_XG8gTs77bACQ',\n 'shortcuts': [':chillwcat:'],\n 'searchTerms': ['chillwcat'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/y03dFcPc1B7CO20zgQYzhcRPka5Bhs6iSg57MaxJdhaLidFvvXBLf_i4_SHG7zJ_2VpBMNs=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/y03dFcPc1B7CO20zgQYzhcRPka5Bhs6iSg57MaxJdhaLidFvvXBLf_i4_SHG7zJ_2VpBMNs=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'chillwcat',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 29,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCw',\n 'shortcuts': [':chillwdog:'],\n 'searchTerms': ['chillwdog'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Ir9mDxzUi0mbqyYdJ3N9Lq7bN5Xdt0Q7fEYFngN3GYAcJT_tccH1as1PKmInnpt2cbWOam4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Ir9mDxzUi0mbqyYdJ3N9Lq7bN5Xdt0Q7fEYFngN3GYAcJT_tccH1as1PKmInnpt2cbWOam4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'chillwdog',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 30,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/8gF1Xp_zK8jk8gSDrI2wCw',\n 'shortcuts': [':elbowcough:'],\n 'searchTerms': ['elbowcough'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DTR9bZd1HOqpRJyz9TKiLb0cqe5Hb84Yi_79A6LWlN1tY-5kXqLDXRmtYVKE9rcqzEghmw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DTR9bZd1HOqpRJyz9TKiLb0cqe5Hb84Yi_79A6LWlN1tY-5kXqLDXRmtYVKE9rcqzEghmw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'elbowcough',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 31,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/EAJ1XrS7PMGQ8gTz_prwAg',\n 'shortcuts': [':learning:'],\n 'searchTerms': ['learning'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/ZuBuz8GAQ6IEcQc7CoJL8IEBTYbXEvzhBeqy1AiytmhuAT0VHjpXEjd-A5GfR4zDin1L53Q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/ZuBuz8GAQ6IEcQc7CoJL8IEBTYbXEvzhBeqy1AiytmhuAT0VHjpXEjd-A5GfR4zDin1L53Q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'learning',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 32,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/JAJ1XpGpJYnW8wTupZu4Cw',\n 'shortcuts': [':washhands:'],\n 'searchTerms': ['washhands'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/qXUeUW0KpKBc9Z3AqUqr_0B7HbW1unAv4qmt7-LJGUK_gsFBIaHISWJNt4n3yvmAnQNZHE-u=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/qXUeUW0KpKBc9Z3AqUqr_0B7HbW1unAv4qmt7-LJGUK_gsFBIaHISWJNt4n3yvmAnQNZHE-u=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'washhands',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 33,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/PAJ1XsOOI4fegwOo57ewAg',\n 'shortcuts': [':socialdist:'],\n 'searchTerms': ['socialdist'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/igBNi55-TACUi1xQkqMAor-IEXmt8He56K7pDTG5XoTsbM-rVswNzUfC5iwnfrpunWihrg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/igBNi55-TACUi1xQkqMAor-IEXmt8He56K7pDTG5XoTsbM-rVswNzUfC5iwnfrpunWihrg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'socialdist',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 34,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/egJ1XufTKYfegwOo57ewAg',\n 'shortcuts': [':shelterin:'],\n 'searchTerms': ['shelterin'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/gjC5x98J4BoVSEPfFJaoLtc4tSBGSEdIlfL2FV4iJG9uGNykDP9oJC_QxAuBTJy6dakPxVeC=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/gjC5x98J4BoVSEPfFJaoLtc4tSBGSEdIlfL2FV4iJG9uGNykDP9oJC_QxAuBTJy6dakPxVeC=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'shelterin',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 35,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/G8AfY6yWGuKuhL0PlbiA2AE',\n 'shortcuts': [':hand-pink-waving:'],\n 'searchTerms': ['hand-pink-waving'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/KOxdr_z3A5h1Gb7kqnxqOCnbZrBmxI2B_tRQ453BhTWUhYAlpg5ZP8IKEBkcvRoY8grY91Q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/KOxdr_z3A5h1Gb7kqnxqOCnbZrBmxI2B_tRQ453BhTWUhYAlpg5ZP8IKEBkcvRoY8grY91Q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-pink-waving',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 36,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/KsIfY6LzFoLM6AKanYDQAg',\n 'shortcuts': [':face-blue-smiling:'],\n 'searchTerms': ['face-blue-smiling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cktIaPxFwnrPwn-alHvnvedHLUJwbHi8HCK3AgbHpphrMAW99qw0bDfxuZagSY5ieE9BBrA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cktIaPxFwnrPwn-alHvnvedHLUJwbHi8HCK3AgbHpphrMAW99qw0bDfxuZagSY5ieE9BBrA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-smiling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 37,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/W8IfY_bwAfiPq7IPvNCA2AU',\n 'shortcuts': [':face-red-droopy-eyes:'],\n 'searchTerms': ['face-red-droopy-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/oih9s26MOYPWC_uL6tgaeOlXSGBv8MMoDrWzBt-80nEiVSL9nClgnuzUAKqkU9_TWygF6CI=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/oih9s26MOYPWC_uL6tgaeOlXSGBv8MMoDrWzBt-80nEiVSL9nClgnuzUAKqkU9_TWygF6CI=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-red-droopy-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 38,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/b8IfY7zOK9iVkNAP_I2A-AY',\n 'shortcuts': [':face-purple-crying:'],\n 'searchTerms': ['face-purple-crying'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/g6_km98AfdHbN43gvEuNdZ2I07MmzVpArLwEvNBwwPqpZYzszqhRzU_DXALl11TchX5_xFE=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/g6_km98AfdHbN43gvEuNdZ2I07MmzVpArLwEvNBwwPqpZYzszqhRzU_DXALl11TchX5_xFE=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-crying',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 39,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hcIfY57lBJXp6AKBx4CoCA',\n 'shortcuts': [':text-green-game-over:'],\n 'searchTerms': ['text-green-game-over'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cr36FHhSiMAJUSpO9XzjbOgxhtrdJNTVJUlMJeOOfLOFzKleAKT2SEkZwbqihBqfTXYCIg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cr36FHhSiMAJUSpO9XzjbOgxhtrdJNTVJUlMJeOOfLOFzKleAKT2SEkZwbqihBqfTXYCIg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'text-green-game-over',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 40,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ssIfY7OFG5OykQOpn4CQCw',\n 'shortcuts': [':person-turqouise-waving:'],\n 'searchTerms': ['person-turqouise-waving'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/uNSzQ2M106OC1L3VGzrOsGNjopboOv-m1bnZKFGuh0DxcceSpYHhYbuyggcgnYyaF3o-AQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/uNSzQ2M106OC1L3VGzrOsGNjopboOv-m1bnZKFGuh0DxcceSpYHhYbuyggcgnYyaF3o-AQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turqouise-waving',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 41,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/xsIfY4OqCd2T29sP54iAsAw',\n 'shortcuts': [':face-green-smiling:'],\n 'searchTerms': ['face-green-smiling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/G061SAfXg2bmG1ZXbJsJzQJpN8qEf_W3f5cb5nwzBYIV58IpPf6H90lElDl85iti3HgoL3o=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/G061SAfXg2bmG1ZXbJsJzQJpN8qEf_W3f5cb5nwzBYIV58IpPf6H90lElDl85iti3HgoL3o=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-green-smiling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 42,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/2sIfY8vIG8z96ALulYDQDQ',\n 'shortcuts': [':face-orange-frowning:'],\n 'searchTerms': ['face-orange-frowning'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Ar8jaEIxzfiyYmB7ejDOHba2kUMdR37MHn_R39mtxqO5CD4aYGvjDFL22DW_Cka6LKzhGDk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Ar8jaEIxzfiyYmB7ejDOHba2kUMdR37MHn_R39mtxqO5CD4aYGvjDFL22DW_Cka6LKzhGDk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-frowning',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 43,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/7cIfY5niDOmSkNAP08CA6A4',\n 'shortcuts': [':eyes-purple-crying:'],\n 'searchTerms': ['eyes-purple-crying'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/FrYgdeZPpvXs-6Mp305ZiimWJ0wV5bcVZctaUy80mnIdwe-P8HRGYAm0OyBtVx8EB9_Dxkc=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/FrYgdeZPpvXs-6Mp305ZiimWJ0wV5bcVZctaUy80mnIdwe-P8HRGYAm0OyBtVx8EB9_Dxkc=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'eyes-purple-crying',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 44,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/A8MfY-_pEIKNr8oP78-AGA',\n 'shortcuts': [':face-fuchsia-wide-eyes:'],\n 'searchTerms': ['face-fuchsia-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/zdcOC1SMmyXJOAddl9DYeEFN9YYcn5mHemJCdRFQMtDuS0V-IyE-5YjNUL1tduX1zs17tQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/zdcOC1SMmyXJOAddl9DYeEFN9YYcn5mHemJCdRFQMtDuS0V-IyE-5YjNUL1tduX1zs17tQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 45,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/E8MfY5u7JPSXkNAP95GAmAE',\n 'shortcuts': [':cat-orange-whistling:'],\n 'searchTerms': ['cat-orange-whistling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/0ocqEmuhrKCK87_J21lBkvjW70wRGC32-Buwk6TP4352CgcNjL6ug8zcsel6JiPbE58xhq5g=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/0ocqEmuhrKCK87_J21lBkvjW70wRGC32-Buwk6TP4352CgcNjL6ug8zcsel6JiPbE58xhq5g=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'cat-orange-whistling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 46,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/LsMfY8P6G-yckNAPjoWA8AI',\n 'shortcuts': [':face-blue-wide-eyes:'],\n 'searchTerms': ['face-blue-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2Ht4KImoWDlCddiDQVuzSJwpEb59nZJ576ckfaMh57oqz2pUkkgVTXV8osqUOgFHZdUISJM=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2Ht4KImoWDlCddiDQVuzSJwpEb59nZJ576ckfaMh57oqz2pUkkgVTXV8osqUOgFHZdUISJM=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 47,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Z8MfY8mzLbnovwK5roC4Bg',\n 'shortcuts': [':face-orange-raised-eyebrow:'],\n 'searchTerms': ['face-orange-raised-eyebrow'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/JbCfmOgYI-mO17LPw8e_ycqbBGESL8AVP6i7ZsBOVLd3PEpgrfEuJ9rEGpP_unDcqgWSCg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/JbCfmOgYI-mO17LPw8e_ycqbBGESL8AVP6i7ZsBOVLd3PEpgrfEuJ9rEGpP_unDcqgWSCg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-raised-eyebrow',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 48,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hcMfY5_zAbbxvwKLooCoCA',\n 'shortcuts': [':face-fuchsia-tongue-out:'],\n 'searchTerms': ['face-fuchsia-tongue-out'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EURfJZi_heNulV3mfHzXBk8PIs9XmZ9lOOYi5za6wFMCGrps4i2BJX9j-H2gK6LIhW6h7sY=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EURfJZi_heNulV3mfHzXBk8PIs9XmZ9lOOYi5za6wFMCGrps4i2BJX9j-H2gK6LIhW6h7sY=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-tongue-out',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 49,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCx',\n 'shortcuts': [':face-orange-biting-nails:'],\n 'searchTerms': ['face-orange-biting-nails'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/HmsXEgqUogkQOnL5LP_FdPit9Z909RJxby-uYcPxBLNhaPyqPTcGwvGaGPk2hzB_cC0hs_pV=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/HmsXEgqUogkQOnL5LP_FdPit9Z909RJxby-uYcPxBLNhaPyqPTcGwvGaGPk2hzB_cC0hs_pV=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-biting-nails',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 50,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/m8MfY4jbFsWJhL0PyouA2Ak',\n 'shortcuts': [':face-red-heart-shape:'],\n 'searchTerms': ['face-red-heart-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/I0Mem9dU_IZ4a9cQPzR0pUJ8bH-882Eg0sDQjBmPcHA6Oq0uXOZcsjPvPbtormx91Ha2eRA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/I0Mem9dU_IZ4a9cQPzR0pUJ8bH-882Eg0sDQjBmPcHA6Oq0uXOZcsjPvPbtormx91Ha2eRA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-red-heart-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 51,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/6_cfY8HJH8bV5QS5yYDYDg',\n 'shortcuts': [':face-fuchsia-poop-shape:'],\n 'searchTerms': ['face-fuchsia-poop-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/_xlyzvSimqMzhdhODyqUBLXIGA6F_d5en2bq-AIfc6fc3M7tw2jucuXRIo5igcW3g9VVe3A=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/_xlyzvSimqMzhdhODyqUBLXIGA6F_d5en2bq-AIfc6fc3M7tw2jucuXRIo5igcW3g9VVe3A=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-poop-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 52,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/DfgfY9LaNdmMq7IPuI2AaA',\n 'shortcuts': [':face-purple-wide-eyes:'],\n 'searchTerms': ['face-purple-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/5RDrtjmzRQKuVYE_FKPUHiGh7TNtX5eSNe6XzcSytMsHirXYKunxpyAsVacTFMg0jmUGhQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/5RDrtjmzRQKuVYE_FKPUHiGh7TNtX5eSNe6XzcSytMsHirXYKunxpyAsVacTFMg0jmUGhQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 53,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/HvgfY93GEYmqvwLUuYDwAQ',\n 'shortcuts': [':glasses-purple-yellow-diamond:'],\n 'searchTerms': ['glasses-purple-yellow-diamond'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EnDBiuksboKsLkxp_CqMWlTcZtlL77QBkbjz_rLedMSDzrHmy_6k44YWFy2rk4I0LG6K2KI=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EnDBiuksboKsLkxp_CqMWlTcZtlL77QBkbjz_rLedMSDzrHmy_6k44YWFy2rk4I0LG6K2KI=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'glasses-purple-yellow-diamond',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 54,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/NvgfY9aeC_OFvOMPkrOAsAM',\n 'shortcuts': [':face-pink-tears:'],\n 'searchTerms': ['face-pink-tears'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/RL5QHCNcO_Mc98SxFEblXZt9FNoh3bIgsjm0Kj8kmeQJWMeTu7JX_NpICJ6KKwKT0oVHhAA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/RL5QHCNcO_Mc98SxFEblXZt9FNoh3bIgsjm0Kj8kmeQJWMeTu7JX_NpICJ6KKwKT0oVHhAA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-pink-tears',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 55,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/UvgfY_vqE92T29sPvqiAkAU',\n 'shortcuts': [':body-blue-raised-arms:'],\n 'searchTerms': ['body-blue-raised-arms'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2Jds3I9UKOfgjid97b_nlDU4X2t5MgjTof8yseCp7M-6ZhOhRkPGSPfYwmE9HjCibsfA1Uzo=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2Jds3I9UKOfgjid97b_nlDU4X2t5MgjTof8yseCp7M-6ZhOhRkPGSPfYwmE9HjCibsfA1Uzo=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'body-blue-raised-arms',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 56,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/YvgfY-LIBpjChgHKyYCQBg',\n 'shortcuts': [':hand-orange-covering-eyes:'],\n 'searchTerms': ['hand-orange-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/y8ppa6GcJoRUdw7GwmjDmTAnSkeIkUptZMVQuFmFaTlF_CVIL7YP7hH7hd0TJbd8p9w67IM=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/y8ppa6GcJoRUdw7GwmjDmTAnSkeIkUptZMVQuFmFaTlF_CVIL7YP7hH7hd0TJbd8p9w67IM=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-orange-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 57,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ePgfY-K2Kp6Mr8oP1oqAwAc',\n 'shortcuts': [':trophy-yellow-smiling:'],\n 'searchTerms': ['trophy-yellow-smiling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7tf3A_D48gBg9g2N0Rm6HWs2aqzshHU4CuVubTXVxh1BP7YDBRC6pLBoC-ibvr-zCl_Lgg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7tf3A_D48gBg9g2N0Rm6HWs2aqzshHU4CuVubTXVxh1BP7YDBRC6pLBoC-ibvr-zCl_Lgg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'trophy-yellow-smiling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 58,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/jPgfY5j2IIud29sP3ZeA4Ag',\n 'shortcuts': [':eyes-pink-heart-shape:'],\n 'searchTerms': ['eyes-pink-heart-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/5vzlCQfQQdzsG7nlQzD8eNjtyLlnATwFwGvrMpC8dgLcosNhWLXu8NN9qIS3HZjJYd872dM=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/5vzlCQfQQdzsG7nlQzD8eNjtyLlnATwFwGvrMpC8dgLcosNhWLXu8NN9qIS3HZjJYd872dM=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'eyes-pink-heart-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 59,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/oPgfY_DoKfSXkNAPq8-AgAo',\n 'shortcuts': [':face-turquoise-covering-eyes:'],\n 'searchTerms': ['face-turquoise-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/H2HNPRO8f4SjMmPNh5fl10okSETW7dLTZtuE4jh9D6pSmaUiLfoZJ2oiY-qWU3Owfm1IsXg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/H2HNPRO8f4SjMmPNh5fl10okSETW7dLTZtuE4jh9D6pSmaUiLfoZJ2oiY-qWU3Owfm1IsXg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 60,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/tPgfY7mSO4XovQKzmYCgCw',\n 'shortcuts': [':hand-green-crystal-ball:'],\n 'searchTerms': ['hand-green-crystal-ball'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/qZfJrWDEmR03FIak7PMNRNpMjNsCnOzD9PqK8mOpAp4Kacn_uXRNJNb99tE_1uyEbvgJReF2=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/qZfJrWDEmR03FIak7PMNRNpMjNsCnOzD9PqK8mOpAp4Kacn_uXRNJNb99tE_1uyEbvgJReF2=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-green-crystal-ball',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 61,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/zPgfY66lCJGRhL0Pz6iA4Aw',\n 'shortcuts': [':face-turquoise-drinking-coffee:'],\n 'searchTerms': ['face-turquoise-drinking-coffee'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/myqoI1MgFUXQr5fuWTC9mz0BCfgf3F8GSDp06o1G7w6pTz48lwARjdG8vj0vMxADvbwA1dA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/myqoI1MgFUXQr5fuWTC9mz0BCfgf3F8GSDp06o1G7w6pTz48lwARjdG8vj0vMxADvbwA1dA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-drinking-coffee',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 62,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/4PgfY73cJprKCq-_gIAO',\n 'shortcuts': [':body-green-covering-eyes:'],\n 'searchTerms': ['body-green-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/UR8ydcU3gz360bzDsprB6d1klFSQyVzgn-Fkgu13dIKPj3iS8OtG1bhBUXPdj9pMwtM00ro=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/UR8ydcU3gz360bzDsprB6d1klFSQyVzgn-Fkgu13dIKPj3iS8OtG1bhBUXPdj9pMwtM00ro=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'body-green-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 63,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/-fgfY9DIGYjbhgHLzoDIDw',\n 'shortcuts': [':goat-turquoise-white-horns:'],\n 'searchTerms': ['goat-turquoise-white-horns'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/jMnX4lu5GnjBRgiPtX5FwFmEyKTlWFrr5voz-Auko35oP0t3-zhPxR3PQMYa-7KhDeDtrv4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/jMnX4lu5GnjBRgiPtX5FwFmEyKTlWFrr5voz-Auko35oP0t3-zhPxR3PQMYa-7KhDeDtrv4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'goat-turquoise-white-horns',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 64,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/EvkfY6uNC5OykQOewoCQAQ',\n 'shortcuts': [':hand-purple-blue-peace:'],\n 'searchTerms': ['hand-purple-blue-peace'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/-sC8wj6pThd7FNdslEoJlG4nB9SIbrJG3CRGh7-bNV0RVfcrJuwiWHoUZ6UmcVs7sQjxTg4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/-sC8wj6pThd7FNdslEoJlG4nB9SIbrJG3CRGh7-bNV0RVfcrJuwiWHoUZ6UmcVs7sQjxTg4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-purple-blue-peace',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 65,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/LfkfY_zhH4GFr8oP4aKA6AI',\n 'shortcuts': [':face-blue-question-mark:'],\n 'searchTerms': ['face-blue-question-mark'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Wx4PMqTwG3f4gtR7J9Go1s8uozzByGWLSXHzrh3166ixaYRinkH_F05lslfsRUsKRvHXrDk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Wx4PMqTwG3f4gtR7J9Go1s8uozzByGWLSXHzrh3166ixaYRinkH_F05lslfsRUsKRvHXrDk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-question-mark',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 66,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/RPkfY8TPGsCakNAP-JWAoAQ',\n 'shortcuts': [':face-blue-covering-eyes:'],\n 'searchTerms': ['face-blue-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/kj3IgbbR6u-mifDkBNWVcdOXC-ut-tiFbDpBMGVeW79c2c54n5vI-HNYCOC6XZ9Bzgupc10=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/kj3IgbbR6u-mifDkBNWVcdOXC-ut-tiFbDpBMGVeW79c2c54n5vI-HNYCOC6XZ9Bzgupc10=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 67,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Mm5IY53bH7SEq7IP-MWAkAM',\n 'shortcuts': [':face-purple-smiling-fangs:'],\n 'searchTerms': ['face-purple-smiling-fangs'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/k1vqi6xoHakGUfa0XuZYWHOv035807ARP-ZLwFmA-_NxENJMxsisb-kUgkSr96fj5baBOZE=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/k1vqi6xoHakGUfa0XuZYWHOv035807ARP-ZLwFmA-_NxENJMxsisb-kUgkSr96fj5baBOZE=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-smiling-fangs',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 68,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/UW5IY-ibBqa8jgTymoCIBQ',\n 'shortcuts': [':face-purple-sweating:'],\n 'searchTerms': ['face-purple-sweating'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tRnrCQtEKlTM9YLPo0vaxq9mDvlT0mhDld2KI7e_nDRbhta3ULKSoPVHZ1-bNlzQRANmH90=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tRnrCQtEKlTM9YLPo0vaxq9mDvlT0mhDld2KI7e_nDRbhta3ULKSoPVHZ1-bNlzQRANmH90=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-sweating',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 69,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Ym5IY7-0LoqA29sPq9CAkAY',\n 'shortcuts': [':face-purple-smiling-tears:'],\n 'searchTerms': ['face-purple-smiling-tears'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/MJV1k3J5s0hcUfuo78Y6MKi-apDY5NVDjO9Q7hL8fU4i0cIBgU-cU4rq4sHessJuvuGpDOjJ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/MJV1k3J5s0hcUfuo78Y6MKi-apDY5NVDjO9Q7hL8fU4i0cIBgU-cU4rq4sHessJuvuGpDOjJ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-smiling-tears',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 70,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/dG5IY-mhEof9jgSykoCgBw',\n 'shortcuts': [':face-blue-star-eyes:'],\n 'searchTerms': ['face-blue-star-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/m_ANavMhp6cQ1HzX0HCTgp_er_yO2UA28JPbi-0HElQgnQ4_q5RUhgwueTpH-st8L3MyTA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/m_ANavMhp6cQ1HzX0HCTgp_er_yO2UA28JPbi-0HElQgnQ4_q5RUhgwueTpH-st8L3MyTA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-star-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 71,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hm5IY4W-H9SO5QS6n4CwCA',\n 'shortcuts': [':face-blue-heart-eyes:'],\n 'searchTerms': ['face-blue-heart-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/M9tzKd64_r3hvgpTSgca7K3eBlGuyiqdzzhYPp7ullFAHMgeFoNLA0uQ1dGxj3fXgfcHW4w=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/M9tzKd64_r3hvgpTSgca7K3eBlGuyiqdzzhYPp7ullFAHMgeFoNLA0uQ1dGxj3fXgfcHW4w=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-heart-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 72,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/mW5IY47PMcSnkMkPo6OAyAk',\n 'shortcuts': [':face-blue-three-eyes:'],\n 'searchTerms': ['face-blue-three-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/nSQHitVplLe5uZC404dyAwv1f58S3PN-U_799fvFzq-6b3bv-MwENO-Zs1qQI4oEXCbOJg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/nSQHitVplLe5uZC404dyAwv1f58S3PN-U_799fvFzq-6b3bv-MwENO-Zs1qQI4oEXCbOJg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-three-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 73,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/rW5IY_26FryOq7IPlL2A6Ao',\n 'shortcuts': [':face-blue-droopy-eyes:'],\n 'searchTerms': ['face-blue-droopy-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/hGPqMUCiXGt6zuX4dHy0HRZtQ-vZmOY8FM7NOHrJTta3UEJksBKjOcoE6ZUAW9sz7gIF_nk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/hGPqMUCiXGt6zuX4dHy0HRZtQ-vZmOY8FM7NOHrJTta3UEJksBKjOcoE6ZUAW9sz7gIF_nk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-droopy-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 74,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/v25IY7KcJIGOr8oPz4OA-As',\n 'shortcuts': [':planet-orange-purple-ring:'],\n 'searchTerms': ['planet-orange-purple-ring'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/xkaLigm3P4_1g4X1JOtkymcC7snuJu_C5YwIFAyQlAXK093X0IUjaSTinMTLKeRZ6280jXg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/xkaLigm3P4_1g4X1JOtkymcC7snuJu_C5YwIFAyQlAXK093X0IUjaSTinMTLKeRZ6280jXg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'planet-orange-purple-ring',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 75,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-yellow-podium-blue',\n 'shortcuts': [':person-yellow-podium-blue:'],\n 'searchTerms': ['person-yellow-podium-blue'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/N28nFDm82F8kLPAa-jY_OySFsn3Ezs_2Bl5kdxC8Yxau5abkj_XZHYsS3uYKojs8qy8N-9w=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/N28nFDm82F8kLPAa-jY_OySFsn3Ezs_2Bl5kdxC8Yxau5abkj_XZHYsS3uYKojs8qy8N-9w=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-yellow-podium-blue',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 76,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/baseball-white-cap-out',\n 'shortcuts': [':baseball-white-cap-out:'],\n 'searchTerms': ['baseball-white-cap-out'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/8DaGaXfaBN0c-ZsZ-1WqPJ6H9TsJOlUUQQEoXvmdROphZE9vdRtN0867Gb2YZcm2x38E9Q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/8DaGaXfaBN0c-ZsZ-1WqPJ6H9TsJOlUUQQEoXvmdROphZE9vdRtN0867Gb2YZcm2x38E9Q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'baseball-white-cap-out',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 77,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/whistle-red-blow',\n 'shortcuts': [':whistle-red-blow:'],\n 'searchTerms': ['whistle-red-blow'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DBu1ZfPJTnX9S1RyKKdBY-X_CEmj7eF6Uzl71j5jVBz5y4k9JcKnoiFtImAbeu4u8M2X8tU=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DBu1ZfPJTnX9S1RyKKdBY-X_CEmj7eF6Uzl71j5jVBz5y4k9JcKnoiFtImAbeu4u8M2X8tU=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'whistle-red-blow',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 78,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-crowd-surf',\n 'shortcuts': [':person-turquoise-crowd-surf:'],\n 'searchTerms': ['person-turquoise-crowd-surf'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Q0wFvHZ5h54xGSTo-JeGst6InRU3yR6NdBRoyowaqGY66LPzdcrV2t-wBN21kBIdb2TeNA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Q0wFvHZ5h54xGSTo-JeGst6InRU3yR6NdBRoyowaqGY66LPzdcrV2t-wBN21kBIdb2TeNA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-crowd-surf',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 79,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/finger-red-number-one',\n 'shortcuts': [':finger-red-number-one:'],\n 'searchTerms': ['finger-red-number-one'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Hbk0wxBzPTBCDvD_y4qdcHL5_uu7SeOnaT2B7gl9GLB4u8Ecm9OaXCGSMMUBFeNGl5Q3fHJ2=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Hbk0wxBzPTBCDvD_y4qdcHL5_uu7SeOnaT2B7gl9GLB4u8Ecm9OaXCGSMMUBFeNGl5Q3fHJ2=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'finger-red-number-one',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 80,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/text-yellow-goal',\n 'shortcuts': [':text-yellow-goal:'],\n 'searchTerms': ['text-yellow-goal'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tnHp8rHjXecGbGrWNcs7xss_aVReaYE6H-QWRCXYg_aaYszHXnbP_pVADnibUiimspLvgX0L=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tnHp8rHjXecGbGrWNcs7xss_aVReaYE6H-QWRCXYg_aaYszHXnbP_pVADnibUiimspLvgX0L=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'text-yellow-goal',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 81,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/medal-yellow-first-red',\n 'shortcuts': [':medal-yellow-first-red:'],\n 'searchTerms': ['medal-yellow-first-red'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EEHiiIalCBKuWDPtNOjjvmEZ-KRkf5dlgmhe5rbLn8aZQl-pNz_paq5UjxNhCrI019TWOQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EEHiiIalCBKuWDPtNOjjvmEZ-KRkf5dlgmhe5rbLn8aZQl-pNz_paq5UjxNhCrI019TWOQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'medal-yellow-first-red',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 82,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-wheelchair-race',\n 'shortcuts': [':person-blue-wheelchair-race:'],\n 'searchTerms': ['person-blue-wheelchair-race'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/ZepxPGk5TwzrKAP9LUkzmKmEkbaF5OttNyybwok6mJENw3p0lxDXkD1X2_rAwGcUM0L-D04=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/ZepxPGk5TwzrKAP9LUkzmKmEkbaF5OttNyybwok6mJENw3p0lxDXkD1X2_rAwGcUM0L-D04=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-wheelchair-race',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 83,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/card-red-penalty',\n 'shortcuts': [':card-red-penalty:'],\n 'searchTerms': ['card-red-penalty'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/uRDUMIeAHnNsaIaShtRkQ6hO0vycbNH_BQT7i3PWetFJb09q88RTjxwzToBy9Cez20D7hA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/uRDUMIeAHnNsaIaShtRkQ6hO0vycbNH_BQT7i3PWetFJb09q88RTjxwzToBy9Cez20D7hA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'card-red-penalty',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 84,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/stopwatch-blue-hand-timer',\n 'shortcuts': [':stopwatch-blue-hand-timer:'],\n 'searchTerms': ['stopwatch-blue-hand-timer'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DCvefDAiskRfACgolTlvV1kMfiZVcG50UrmpnRrg3k0udFWG2Uo9zFMaJrJMSJYwcx6fMgk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DCvefDAiskRfACgolTlvV1kMfiZVcG50UrmpnRrg3k0udFWG2Uo9zFMaJrJMSJYwcx6fMgk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'stopwatch-blue-hand-timer',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 85,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-speaker-shape',\n 'shortcuts': [':face-turquoise-speaker-shape:'],\n 'searchTerms': ['face-turquoise-speaker-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/WTFFqm70DuMxSC6ezQ5Zs45GaWD85Xwrd9Sullxt54vErPUKb_o0NJQ4kna5m7rvjbRMgr3A=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/WTFFqm70DuMxSC6ezQ5Zs45GaWD85Xwrd9Sullxt54vErPUKb_o0NJQ4kna5m7rvjbRMgr3A=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-speaker-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 86,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/octopus-red-waving',\n 'shortcuts': [':octopus-red-waving:'],\n 'searchTerms': ['octopus-red-waving'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/L9Wo5tLT_lRQX36iZO_fJqLJR4U74J77tJ6Dg-QmPmSC_zhVQ-NodMRc9T0ozwvRXRaT43o=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/L9Wo5tLT_lRQX36iZO_fJqLJR4U74J77tJ6Dg-QmPmSC_zhVQ-NodMRc9T0ozwvRXRaT43o=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'octopus-red-waving',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 87,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/pillow-turquoise-hot-chocolate',\n 'shortcuts': [':pillow-turquoise-hot-chocolate:'],\n 'searchTerms': ['pillow-turquoise-hot-chocolate'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cAR4cehRxbn6dPbxKIb-7ShDdWnMxbaBqy2CXzBW4aRL3IqXs3rxG0UdS7IU71OEU7LSd20q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cAR4cehRxbn6dPbxKIb-7ShDdWnMxbaBqy2CXzBW4aRL3IqXs3rxG0UdS7IU71OEU7LSd20q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pillow-turquoise-hot-chocolate',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 88,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hourglass-purple-sand-orange',\n 'shortcuts': [':hourglass-purple-sand-orange:'],\n 'searchTerms': ['hourglass-purple-sand-orange'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/MFDLjasPt5cuSM_tK5Fnjaz_k08lKHdX_Mf7JkI6awaHriC3rGL7J_wHxyG6PPhJ8CJ6vsQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/MFDLjasPt5cuSM_tK5Fnjaz_k08lKHdX_Mf7JkI6awaHriC3rGL7J_wHxyG6PPhJ8CJ6vsQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hourglass-purple-sand-orange',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 89,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/fish-orange-wide-eyes',\n 'shortcuts': [':fish-orange-wide-eyes:'],\n 'searchTerms': ['fish-orange-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/iQLKgKs7qL3091VHgVgpaezc62uPewy50G_DoI0dMtVGmQEX5pflZrUxWfYGmRfzfUOOgJs=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/iQLKgKs7qL3091VHgVgpaezc62uPewy50G_DoI0dMtVGmQEX5pflZrUxWfYGmRfzfUOOgJs=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'fish-orange-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 90,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/popcorn-yellow-striped-smile',\n 'shortcuts': [':popcorn-yellow-striped-smile:'],\n 'searchTerms': ['popcorn-yellow-striped-smile'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/TW_GktV5uVYviPDtkCRCKRDrGlUc3sJ5OHO81uqdMaaHrIQ5-sXXwJfDI3FKPyv4xtGpOlg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/TW_GktV5uVYviPDtkCRCKRDrGlUc3sJ5OHO81uqdMaaHrIQ5-sXXwJfDI3FKPyv4xtGpOlg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'popcorn-yellow-striped-smile',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 91,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/penguin-blue-waving-tear',\n 'shortcuts': [':penguin-blue-waving-tear:'],\n 'searchTerms': ['penguin-blue-waving-tear'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/p2u7dcfZau4_bMOMtN7Ma8mjHX_43jOjDwITf4U9adT44I-y-PT7ddwPKkfbW6Wx02BTpNoC=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/p2u7dcfZau4_bMOMtN7Ma8mjHX_43jOjDwITf4U9adT44I-y-PT7ddwPKkfbW6Wx02BTpNoC=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'penguin-blue-waving-tear',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 92,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/clock-turquoise-looking-up',\n 'shortcuts': [':clock-turquoise-looking-up:'],\n 'searchTerms': ['clock-turquoise-looking-up'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tDnDkDZykkJTrsWEJPlRF30rmbek2wcDcAIymruOvSLTsUFIZHoAiYTRe9OtO-80lDfFGvo=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tDnDkDZykkJTrsWEJPlRF30rmbek2wcDcAIymruOvSLTsUFIZHoAiYTRe9OtO-80lDfFGvo=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'clock-turquoise-looking-up',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 93,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-red-smiling-live',\n 'shortcuts': [':face-red-smiling-live:'],\n 'searchTerms': ['face-red-smiling-live'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/14Pb--7rVcqnHvM7UlrYnV9Rm4J-uojX1B1kiXYvv1my-eyu77pIoPR5sH28-eNIFyLaQHs=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/14Pb--7rVcqnHvM7UlrYnV9Rm4J-uojX1B1kiXYvv1my-eyu77pIoPR5sH28-eNIFyLaQHs=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-red-smiling-live',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 94,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hands-yellow-heart-red',\n 'shortcuts': [':hands-yellow-heart-red:'],\n 'searchTerms': ['hands-yellow-heart-red'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/qWSu2zrgOKLKgt_E-XUP9e30aydT5aF3TnNjvfBL55cTu1clP8Eoh5exN3NDPEVPYmasmoA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/qWSu2zrgOKLKgt_E-XUP9e30aydT5aF3TnNjvfBL55cTu1clP8Eoh5exN3NDPEVPYmasmoA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hands-yellow-heart-red',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 95,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/volcano-green-lava-orange',\n 'shortcuts': [':volcano-green-lava-orange:'],\n 'searchTerms': ['volcano-green-lava-orange'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/_IWOdMxapt6IBY5Cb6LFVkA3J77dGQ7P2fuvYYv1-ahigpVfBvkubOuGLSCyFJ7jvis-X8I=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/_IWOdMxapt6IBY5Cb6LFVkA3J77dGQ7P2fuvYYv1-ahigpVfBvkubOuGLSCyFJ7jvis-X8I=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'volcano-green-lava-orange',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 96,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-waving-speech',\n 'shortcuts': [':person-turquoise-waving-speech:'],\n 'searchTerms': ['person-turquoise-waving-speech'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/gafhCE49PH_9q-PuigZaDdU6zOKD6grfwEh1MM7fYVs7smAS_yhYCBipq8gEiW73E0apKTzi=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/gafhCE49PH_9q-PuigZaDdU6zOKD6grfwEh1MM7fYVs7smAS_yhYCBipq8gEiW73E0apKTzi=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-waving-speech',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 97,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-orange-tv-shape',\n 'shortcuts': [':face-orange-tv-shape:'],\n 'searchTerms': ['face-orange-tv-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EVK0ik6dL5mngojX9I9Juw4iFh053emP0wcUjZH0whC_LabPq-DZxN4Jg-tpMcEVfJ0QpcJ4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EVK0ik6dL5mngojX9I9Juw4iFh053emP0wcUjZH0whC_LabPq-DZxN4Jg-tpMcEVfJ0QpcJ4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-tv-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 98,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-blue-spam-shape',\n 'shortcuts': [':face-blue-spam-shape:'],\n 'searchTerms': ['face-blue-spam-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/hpwvR5UgJtf0bGkUf8Rn-jTlD6DYZ8FPOFY7rhZZL-JHj_7OPDr7XUOesilRPxlf-aW42Zg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/hpwvR5UgJtf0bGkUf8Rn-jTlD6DYZ8FPOFY7rhZZL-JHj_7OPDr7XUOesilRPxlf-aW42Zg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-spam-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 99,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-fuchsia-flower-shape',\n 'shortcuts': [':face-fuchsia-flower-shape:'],\n 'searchTerms': ['face-fuchsia-flower-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/o9kq4LQ0fE_x8yxj29ZeLFZiUFpHpL_k2OivHbjZbttzgQytU49Y8-VRhkOP18jgH1dQNSVz=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/o9kq4LQ0fE_x8yxj29ZeLFZiUFpHpL_k2OivHbjZbttzgQytU49Y8-VRhkOP18jgH1dQNSVz=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-flower-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 100,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-holding-pencil',\n 'shortcuts': [':person-blue-holding-pencil:'],\n 'searchTerms': ['person-blue-holding-pencil'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/TKgph5IHIHL-A3fgkrGzmiNXzxJkibB4QWRcf_kcjIofhwcUK_pWGUFC4xPXoimmne3h8eQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/TKgph5IHIHL-A3fgkrGzmiNXzxJkibB4QWRcf_kcjIofhwcUK_pWGUFC4xPXoimmne3h8eQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-holding-pencil',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 101,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/body-turquoise-yoga-pose',\n 'shortcuts': [':body-turquoise-yoga-pose:'],\n 'searchTerms': ['body-turquoise-yoga-pose'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/GW3otW7CmWpuayb7Ddo0ux5c-OvmPZ2K3vaytJi8bHFjcn-ulT8vcHMNcqVqMp1j2lit2Vw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/GW3otW7CmWpuayb7Ddo0ux5c-OvmPZ2K3vaytJi8bHFjcn-ulT8vcHMNcqVqMp1j2lit2Vw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'body-turquoise-yoga-pose',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 102,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/location-yellow-teal-bars',\n 'shortcuts': [':location-yellow-teal-bars:'],\n 'searchTerms': ['location-yellow-teal-bars'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/YgeWJsRspSlAp3BIS5HMmwtpWtMi8DqLg9fH7DwUZaf5kG4yABfE1mObAvjCh0xKX_HoIR23=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/YgeWJsRspSlAp3BIS5HMmwtpWtMi8DqLg9fH7DwUZaf5kG4yABfE1mObAvjCh0xKX_HoIR23=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'location-yellow-teal-bars',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 103,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-writing-headphones',\n 'shortcuts': [':person-turquoise-writing-headphones:'],\n 'searchTerms': ['person-turquoise-writing-headphones'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DC4KrwzNkVxLZa2_KbKyjZTUyB9oIvH5JuEWAshsMv9Ctz4lEUVK0yX5PaMsTK3gGS-r9w=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DC4KrwzNkVxLZa2_KbKyjZTUyB9oIvH5JuEWAshsMv9Ctz4lEUVK0yX5PaMsTK3gGS-r9w=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-writing-headphones',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 104,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-wizard-wand',\n 'shortcuts': [':person-turquoise-wizard-wand:'],\n 'searchTerms': ['person-turquoise-wizard-wand'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/OiZeNvmELg2PQKbT5UCS0xbmsGbqRBSbaRVSsKnRS9gvJPw7AzPp-3ysVffHFbSMqlWKeQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/OiZeNvmELg2PQKbT5UCS0xbmsGbqRBSbaRVSsKnRS9gvJPw7AzPp-3ysVffHFbSMqlWKeQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-wizard-wand',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 105,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-eating-spaghetti',\n 'shortcuts': [':person-blue-eating-spaghetti:'],\n 'searchTerms': ['person-blue-eating-spaghetti'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/AXZ8POmCHoxXuBaRxX6-xlT5M-nJZmO1AeUNo0t4o7xxT2Da2oGy347sHpMM8shtUs7Xxh0=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/AXZ8POmCHoxXuBaRxX6-xlT5M-nJZmO1AeUNo0t4o7xxT2Da2oGy347sHpMM8shtUs7Xxh0=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-eating-spaghetti',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 106,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-music-note',\n 'shortcuts': [':face-turquoise-music-note:'],\n 'searchTerms': ['face-turquoise-music-note'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/-K6oRITFKVU8V4FedrqXGkV_vTqUufVCQpBpyLK6w3chF4AS1kzT0JVfJxhtlfIAw5jrNco=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/-K6oRITFKVU8V4FedrqXGkV_vTqUufVCQpBpyLK6w3chF4AS1kzT0JVfJxhtlfIAw5jrNco=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-music-note',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 107,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-pink-swaying-hair',\n 'shortcuts': [':person-pink-swaying-hair:'],\n 'searchTerms': ['person-pink-swaying-hair'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/L8cwo8hEoVhB1k1TopQaeR7oPTn7Ypn5IOae5NACgQT0E9PNYkmuENzVqS7dk2bYRthNAkQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/L8cwo8hEoVhB1k1TopQaeR7oPTn7Ypn5IOae5NACgQT0E9PNYkmuENzVqS7dk2bYRthNAkQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-pink-swaying-hair',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 108,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-speaking-microphone',\n 'shortcuts': [':person-blue-speaking-microphone:'],\n 'searchTerms': ['person-blue-speaking-microphone'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/FMaw3drKKGyc6dk3DvtHbkJ1Ki2uD0FLqSIiFDyuChc1lWcA9leahX3mCFMBIWviN2o8eyc=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/FMaw3drKKGyc6dk3DvtHbkJ1Ki2uD0FLqSIiFDyuChc1lWcA9leahX3mCFMBIWviN2o8eyc=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-speaking-microphone',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 109,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/rocket-red-countdown-liftoff',\n 'shortcuts': [':rocket-red-countdown-liftoff:'],\n 'searchTerms': ['rocket-red-countdown-liftoff'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/lQZFYAeWe5-SJ_fz6dCAFYz1MjBnEek8DvioGxhlj395UFTSSHqYAmfhJN2i0rz3fDD5DQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/lQZFYAeWe5-SJ_fz6dCAFYz1MjBnEek8DvioGxhlj395UFTSSHqYAmfhJN2i0rz3fDD5DQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'rocket-red-countdown-liftoff',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 110,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-purple-rain-drops',\n 'shortcuts': [':face-purple-rain-drops:'],\n 'searchTerms': ['face-purple-rain-drops'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/woHW5Jl2RD0qxijnl_4vx4ZhP0Zp65D4Ve1DM_HrwJW-Kh6bQZoRjesGnEwjde8F4LynrQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/woHW5Jl2RD0qxijnl_4vx4ZhP0Zp65D4Ve1DM_HrwJW-Kh6bQZoRjesGnEwjde8F4LynrQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-rain-drops',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 111,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-pink-drinking-tea',\n 'shortcuts': [':face-pink-drinking-tea:'],\n 'searchTerms': ['face-pink-drinking-tea'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/WRLIgKpnClgYOZyAwnqP-Edrdxu6_N19qa8gsB9P_6snZJYIMu5YBJX8dlM81YG6H307KA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/WRLIgKpnClgYOZyAwnqP-Edrdxu6_N19qa8gsB9P_6snZJYIMu5YBJX8dlM81YG6H307KA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-pink-drinking-tea',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 112,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-purple-stage-event',\n 'shortcuts': [':person-purple-stage-event:'],\n 'searchTerms': ['person-purple-stage-event'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/YeVVscOyRcDJAhKo2bMwMz_B6127_7lojqafTZECTR9NSEunYO5zEi7R7RqxBD7LYLxfNnXe=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/YeVVscOyRcDJAhKo2bMwMz_B6127_7lojqafTZECTR9NSEunYO5zEi7R7RqxBD7LYLxfNnXe=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-purple-stage-event',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 113,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-purple-open-box',\n 'shortcuts': [':face-purple-open-box:'],\n 'searchTerms': ['face-purple-open-box'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7lJM2sLrozPtNLagPTcN0xlcStWpAuZEmO2f4Ej5kYgSp3woGdq3tWFrTH30S3mD2PyjlQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7lJM2sLrozPtNLagPTcN0xlcStWpAuZEmO2f4Ej5kYgSp3woGdq3tWFrTH30S3mD2PyjlQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-open-box',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 114,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/COLRg9qOwdQCFce-qgodrbsLaA',\n 'shortcuts': [':awesome:'],\n 'searchTerms': ['awesome'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/xqqFxk7nC5nYnjy0oiSPpeWX4yu4I-ysb3QJMOuVml8dHWz82FvF8bhGVjlosZRIG_XxHA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/xqqFxk7nC5nYnjy0oiSPpeWX4yu4I-ysb3QJMOuVml8dHWz82FvF8bhGVjlosZRIG_XxHA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'awesome',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 115,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CMKC7uKOwdQCFce-qgodqbsLaA',\n 'shortcuts': [':gar:'],\n 'searchTerms': ['gar'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/pxQTF9D-uxlSIgoopRcS8zAZnBBEPp2R9bwo5qIc3kc7PF2k18so72-ohINWPa6OvWudEcsC=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/pxQTF9D-uxlSIgoopRcS8zAZnBBEPp2R9bwo5qIc3kc7PF2k18so72-ohINWPa6OvWudEcsC=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'gar',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 116,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CJiQ8uiOwdQCFcx9qgodysAOHg',\n 'shortcuts': [':jakepeter:'],\n 'searchTerms': ['jakepeter'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/iq0g14tKRcLwmfdpHULRMeUGfpWUlUyJWr0adf1K1-dStgPOguOe8eo5bKrxmCqIOlu-J18=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/iq0g14tKRcLwmfdpHULRMeUGfpWUlUyJWr0adf1K1-dStgPOguOe8eo5bKrxmCqIOlu-J18=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'jakepeter',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 117,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CI3h3uDJitgCFdARTgodejsFWg',\n 'shortcuts': [':wormRedBlue:'],\n 'searchTerms': ['wormRedBlue'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/QrjYSGexvrRfCVpWrgctyB3shVRAgKmXtctM1vUnA78taji1zYNWwrHs1GKBpdpG5A6yK_k=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/QrjYSGexvrRfCVpWrgctyB3shVRAgKmXtctM1vUnA78taji1zYNWwrHs1GKBpdpG5A6yK_k=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'wormRedBlue',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 118,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CI69oYTKitgCFdaPTgodsHsP5g',\n 'shortcuts': [':wormOrangeGreen:'],\n 'searchTerms': ['wormOrangeGreen'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/S-L8lYTuP13Ds9TJZ2UlxdjDiwNRFPnj0o4x6DAecyJLXDdQ941upYRhxalbjzpJn5USU_k=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/S-L8lYTuP13Ds9TJZ2UlxdjDiwNRFPnj0o4x6DAecyJLXDdQ941upYRhxalbjzpJn5USU_k=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'wormOrangeGreen',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 119,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CKzQr47KitgCFdCITgodq6EJZg',\n 'shortcuts': [':wormYellowRed:'],\n 'searchTerms': ['wormYellowRed'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/L9TQqjca5x7TE8ZB-ifFyU51xWXArz47rJFU7Pg2KgWMut5th9qsU-pCu1zIF98szO5wNXE=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/L9TQqjca5x7TE8ZB-ifFyU51xWXArz47rJFU7Pg2KgWMut5th9qsU-pCu1zIF98szO5wNXE=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'wormYellowRed',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 120,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CPGD8Iu8kN4CFREChAod9OkLmg',\n 'shortcuts': [':ytg:'],\n 'searchTerms': ['ytg'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7PgbidnZLTC-38qeoqYensfXg7s7EC1Dudv9q9l8aIjqLgnfvpfhnEBH_7toCmVmqhIe4I45=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7PgbidnZLTC-38qeoqYensfXg7s7EC1Dudv9q9l8aIjqLgnfvpfhnEBH_7toCmVmqhIe4I45=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'ytg',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 121,\n },\n];\n","export namespace Alejo {\n export namespace Pronouns {\n export type name =\n | 'hehim'\n | 'sheher'\n | 'theythem'\n | 'shethem'\n | 'hethem'\n | 'heshe'\n | 'xexem'\n | 'faefaer'\n | 'vever'\n | 'aeaer'\n | 'ziehir'\n | 'perper'\n | 'eem'\n | 'itits';\n\n export type display =\n | 'He/Him'\n | 'She/Her'\n | 'They/Them'\n | 'She/They'\n | 'He/They'\n | 'He/She'\n | 'Xe/Xem'\n | 'Fae/Faer'\n | 'Ve/Ver'\n | 'Ae/Aer'\n | 'Zie/Hir'\n | 'Per/Per'\n | 'E/Em'\n | 'It/Its';\n\n export enum map {\n hehim = 'He/Him',\n sheher = 'She/Her',\n theythem = 'They/Them',\n shethem = 'She/They',\n hethem = 'He/They',\n heshe = 'He/She',\n xexem = 'Xe/Xem',\n faefaer = 'Fae/Faer',\n vever = 'Ve/Ver',\n aeaer = 'Ae/Aer',\n ziehir = 'Zie/Hir',\n perper = 'Per/Per',\n eem = 'E/Em',\n itits = 'It/Its',\n }\n }\n\n export type user = {\n id: string;\n login: string;\n pronouns: Pronouns.name;\n };\n}\n","import { Simulation } from '../simulation/simulation.js';\n\n/**\n * Parse a color string to RGBA components\n * @param str - color string\n * @param format - format of the input color string\n * @returns - RGBA components or null if parsing fails\n */\nexport function parseToRGBA(str: string, format: string | false): { r: number; g: number; b: number; a: number } | null {\n if (!format) return null;\n\n switch (format) {\n case 'hex': {\n const hex = str.replace('#', '');\n let r = 0,\n g = 0,\n b = 0,\n a = 1;\n\n if (hex.length === 3) {\n r = parseInt(hex[0] + hex[0], 16);\n g = parseInt(hex[1] + hex[1], 16);\n b = parseInt(hex[2] + hex[2], 16);\n } else if (hex.length === 6) {\n r = parseInt(hex.slice(0, 2), 16);\n g = parseInt(hex.slice(2, 4), 16);\n b = parseInt(hex.slice(4, 6), 16);\n } else if (hex.length === 4) {\n r = parseInt(hex[0] + hex[0], 16);\n g = parseInt(hex[1] + hex[1], 16);\n b = parseInt(hex[2] + hex[2], 16);\n a = parseInt(hex[3] + hex[3], 16) / 255;\n } else if (hex.length === 8) {\n r = parseInt(hex.slice(0, 2), 16);\n g = parseInt(hex.slice(2, 4), 16);\n b = parseInt(hex.slice(4, 6), 16);\n a = parseInt(hex.slice(6, 8), 16) / 255;\n }\n\n return { r, g, b, a };\n }\n\n case 'rgb':\n case 'rgba': {\n const match = str.match(/rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)/);\n if (!match) return null;\n\n return {\n r: parseInt(match[1]),\n g: parseInt(match[2]),\n b: parseInt(match[3]),\n a: match[4] ? parseFloat(match[4]) : 1,\n };\n }\n\n case 'hsl':\n case 'hsla': {\n const match = str.match(/hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%(?:\\s*,\\s*([\\d.]+))?\\s*\\)/);\n if (!match) return null;\n\n const h = parseInt(match[1]);\n const s = parseInt(match[2]);\n const l = parseInt(match[3]);\n const a = match[4] ? parseFloat(match[4]) : 1;\n\n const rgb = hslToRgb(h, s, l);\n return { ...rgb, a };\n }\n\n case 'css-color-name': {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n const ctx = canvas.getContext('2d');\n if (!ctx) return null;\n\n ctx.fillStyle = str;\n ctx.fillRect(0, 0, 1, 1);\n const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;\n\n return { r, g, b, a: 1 };\n }\n\n default:\n return null;\n }\n}\n\n/**\n * Convert RGBA to Hex\n * @param rgba - RGBA components\n * @param includeAlpha - Whether to include alpha in the hex string\n * @returns Hex color string\n */\nexport function rgbaToHex(rgba: { r: number; g: number; b: number; a: number }, includeAlpha: boolean = true): string {\n const toHex = (n: number) => Math.round(n).toString(16).padStart(2, '0');\n\n let hex = `#${toHex(rgba.r)}${toHex(rgba.g)}${toHex(rgba.b)}`;\n\n if (includeAlpha && rgba.a < 1) {\n hex += toHex(rgba.a * 255);\n }\n\n return hex;\n}\n\n/**\n * Convert RGB to HSL\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns HSL components\n */\nexport function rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n switch (max) {\n case r:\n h = ((g - b) / delta + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / delta + 2) / 6;\n break;\n case b:\n h = ((r - g) / delta + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\n/**\n * Convert HSL to RGB\n * @param h - Hue (0-360)\n * @param s - Saturation (0-100)\n * @param l - Lightness (0-100)\n * @returns RGB components\n */\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n h /= 360;\n s /= 100;\n l /= 100;\n\n let r: number, g: number, b: number;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n };\n}\n\n/**\n * Find the closest CSS color name to the given RGB values\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns Closest CSS color name\n */\nexport function findClosestColorName(r: number, g: number, b: number): string {\n const cssColors = Simulation.data.css_color_names;\n\n let closestColor = cssColors[0];\n let minDistance = Infinity;\n\n for (const colorName of cssColors) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n const ctx = canvas.getContext('2d');\n if (!ctx) continue;\n\n ctx.fillStyle = colorName;\n ctx.fillRect(0, 0, 1, 1);\n const [cr, cg, cb] = ctx.getImageData(0, 0, 1, 1).data;\n\n const distance = Math.sqrt(Math.pow(r - cr, 2) + Math.pow(g - cg, 2) + Math.pow(b - cb, 2));\n\n if (distance < minDistance) {\n minDistance = distance;\n closestColor = colorName;\n }\n\n if (distance === 0) break;\n }\n\n return closestColor;\n}\n","import { type BadgeOptions, findEmotesInText, generateBadges, replaceEmotesWithHTML } from '../utils/Message.js';\nimport { names, messages, avatars, emotes, badges, tts, items, tiers, css_color_names, youtube_emotes } from './data/index.js';\nimport { StreamElements } from '../types/streamelements/main.js';\nimport type { Provider } from '../types/client.js';\nimport { Alejo } from '../types/alejo.js';\nimport { logger } from '../index.js';\nimport { findClosestColorName, parseToRGBA, rgbaToHex, rgbToHsl } from '../utils/color.js';\n\nexport namespace Simulation {\n export const data = {\n names,\n messages,\n tiers,\n avatars,\n emotes,\n youtube_emotes,\n badges,\n items,\n tts,\n pronouns: Alejo.Pronouns.map,\n css_color_names,\n };\n\n export const color = {\n /**\n * Generate opacity hex value\n * @param opacity - Opacity value from 0 to 100\n * @param color - Hex color code\n * @returns - Hex color code with opacity\n */\n opacity(opacity: number = 100, color: string = '') {\n color = color.length > 7 ? color?.substring(0, 6) : color;\n opacity = opacity > 1 ? opacity / 100 : opacity;\n\n let result = Math.round(Math.min(Math.max(opacity, 0), 1) * 255)\n .toString(16)\n .toLowerCase()\n .padStart(2, '0');\n\n return color + result;\n },\n\n /**\n * Extract color and opacity from hex code\n * @param hex - Hex color code\n * @returns - Object with color and opacity\n */\n extract(hex: string) {\n if (!hex.startsWith('#') || hex.length <= 7) {\n return {\n color: hex,\n opacity: 100,\n };\n }\n\n var color = hex.slice(-2);\n var decimal = parseInt(color, 16) / 255;\n var percentage = Math.round(decimal * 100);\n var color = hex.length > 7 ? hex.slice(0, 7) : hex;\n\n return {\n color: color,\n opacity: percentage,\n };\n },\n\n validate(str: string) {\n if (typeof str !== 'string' || !String(str).trim().length) return false;\n\n const s = str.trim();\n\n // HEX (#FFF, #FFFFFF, #FFFFFFFF)\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(s) || /^#([A-Fa-f0-9]{4}|[A-Fa-f0-9]{8})$/.test(s)) {\n return 'hex';\n }\n\n // rgb(255, 255, 255)\n if (/^rgb\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)$/.test(s)) {\n return 'rgb';\n }\n\n // rgba(255, 255, 255, 0.5)\n if (/^rgba\\(\\s*(?:\\d{1,3}\\s*,\\s*){3}(?:0|1|0?\\.\\d+)\\s*\\)$/.test(s)) {\n return 'rgba';\n }\n\n // hsl(360, 100%, 100%)\n if (/^hsl\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*\\)$/.test(s)) {\n return 'hsl';\n }\n\n // hsla(360, 100%, 100%, 0.5)\n if (/^hsla\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*,\\s*(?:0|1|0?\\.\\d+)\\s*\\)$/.test(s)) {\n return 'hsla';\n }\n\n if (data.css_color_names.includes(s.toLowerCase())) {\n return 'css-color-name';\n }\n\n return false;\n },\n\n /**\n * Convert color to different format\n * @param str - Color string to convert (e.g. \"#FF5733\", \"rgb(255, 87, 51)\")\n * @param format - Target format\n * @returns - Converted color string\n * @example\n * ```javascript\n * const hexColor = Simulation.color.convert(\"rgb(255, 87, 51)\", \"hex\"); // \"#FF5733\"\n * const rgbColor = Simulation.color.convert(\"#FF5733\", \"rgb\"); // \"rgb(255, 87, 51)\"\n * const hslColor = Simulation.color.convert(\"#FF5733\", \"hsl\"); // \"hsl(14, 100%, 60%)\"\n * const colorName = Simulation.color.convert(\"#FF5733\", \"css-color-name\"); // \"orangered\"\n * ```\n */\n convert(str: string, format: 'hex' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'css-color-name'): string | null {\n const valid = this.validate(str);\n\n if (!valid) {\n throw new Error(`Invalid color format: ${str}`);\n }\n\n if (valid === format) {\n throw new Error(`Color is already in the desired format: ${format}`);\n }\n\n const rgba = parseToRGBA(str.trim(), valid);\n\n if (!rgba) {\n throw new Error(`Failed to parse color: ${str}`);\n }\n\n switch (format) {\n case 'hex': {\n return rgbaToHex(rgba, false);\n }\n case 'rgb': {\n return `rgb(${rgba.r}, ${rgba.g}, ${rgba.b})`;\n }\n case 'rgba': {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n }\n case 'hsl': {\n const hsl = rgbToHsl(rgba.r, rgba.g, rgba.b);\n return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n }\n case 'hsla': {\n const hsl = rgbToHsl(rgba.r, rgba.g, rgba.b);\n return `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${rgba.a})`;\n }\n case 'css-color-name': {\n return findClosestColorName(rgba.r, rgba.g, rgba.b);\n }\n default: {\n return null;\n }\n }\n },\n };\n\n export const rand = {\n /**\n * Generate random color\n * @param type - Color format\n * @returns - Random color in specified format\n * @example\n * ```javascript\n * const hexColor = Simulation.rand.color('hex');\n * console.log(hexColor); // e.g. #3e92cc\n *\n * const rgbColor = Simulation.rand.color('rgb');\n * console.log(rgbColor); // e.g. rgb(62, 146, 204)\n * ```\n */\n color(type: 'hex' | 'hexa' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'css-color-name' = 'hex') {\n switch (type) {\n default:\n case 'hex': {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padStart(6, '0')}`;\n }\n case 'hexa': {\n const hex = `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padStart(6, '0')}`;\n\n const alpha = Math.floor(Math.random() * 256)\n .toString(16)\n .padStart(2, '0');\n\n return hex + alpha;\n }\n case 'rgb': {\n const r = Math.floor(Math.random() * 256);\n const g = Math.floor(Math.random() * 256);\n const b = Math.floor(Math.random() * 256);\n\n return `rgb(${r}, ${g}, ${b})`;\n }\n case 'rgba': {\n const r = Math.floor(Math.random() * 256);\n const g = Math.floor(Math.random() * 256);\n const b = Math.floor(Math.random() * 256);\n const a = Math.random().toFixed(2);\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n case 'hsl': {\n const h = Math.floor(Math.random() * 361);\n const s = Math.floor(Math.random() * 101);\n const l = Math.floor(Math.random() * 101);\n\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n case 'hsla': {\n const h = Math.floor(Math.random() * 361);\n const s = Math.floor(Math.random() * 101);\n const l = Math.floor(Math.random() * 101);\n const a = Math.random().toFixed(2);\n\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n case 'css-color-name': {\n var names = data.css_color_names;\n\n return this.array(names)[0];\n }\n }\n },\n\n /**\n * Generate random number\n * @param min - Minimum value\n * @param max - Maximum value\n * @param float - Number of decimal places (0 for integer)\n * @returns - Random number\n * @example\n * ```javascript\n * const intNumber = Simulation.rand.number(1, 10);\n * console.log(intNumber); // e.g. 7\n *\n * const floatNumber = Simulation.rand.number(1, 10, 2);\n * console.log(floatNumber); // e.g. 3.14\n * ```\n */\n number(min: number, max: number, float: number = 0): number {\n if (min > max) [min, max] = [max, min];\n\n const rand = Math.random() * (max - min) + min;\n return float ? Number(rand.toFixed(float)) : Math.round(rand);\n },\n\n /**\n * Generate random boolean\n * @param threshold - Threshold between 0 and 1\n * @returns - Random boolean\n * @example\n * ```javascript\n * const boolValue = Simulation.rand.boolean(0.7);\n * console.log(boolValue); // e.g. true (70% chance)\n * ```\n */\n boolean(threshold: number = 0.5): boolean {\n return Math.random() > threshold;\n },\n\n /**\n * Generate random string\n * @param length - Length of the string\n * @param chars - Characters to use\n * @returns - Random string\n * @example\n * ```javascript\n * const randString = Simulation.rand.string(10);\n * console.log(randString); // e.g. \"aZ3bT9xYqP\"\n * ```\n */\n string(length: number, chars: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'): string {\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return result;\n },\n\n /**\n * Pick random element from array\n * @param arr - Array to pick from\n * @returns - Random element and its index\n * @example\n * ```javascript\n * const [element, index] = Simulation.rand.array(['apple', 'banana', 'cherry']);\n * console.log(element, index); // e.g. \"banana\", 1\n * ```\n */\n array<T>(arr: T[]): [value: T, index: number] {\n const index = this.number(0, arr.length - 1);\n\n return [arr[index], index];\n },\n\n /**\n * Generate random date\n * @param start - Start date\n * @param end - End date\n * @returns - Random date between start and end\n * @example\n * ```javascript\n * const randDate = Simulation.rand.date(new Date(2020, 0, 1), new Date());\n * console.log(randDate); // e.g. 2022-05-15T10:30:00.000Z\n * ```\n */\n date(start: Date = new Date(2000, 0, 1), end: Date = new Date()): Date {\n const date = new Date(this.number(start.getTime(), end.getTime()));\n\n return date;\n },\n\n /**\n * Generate ISO date string offset by days\n * @param daysAgo - Number of days to go back\n * @returns - ISO date string\n * @example\n * ```javascript\n * const isoDate = Simulation.rand.daysOffset(7);\n * console.log(isoDate); // e.g. \"2024-06-10T14:23:45.678Z\"\n *\n * const isoDate30 = Simulation.rand.daysOffset(30);\n * console.log(isoDate30); // e.g. \"2024-05-18T09:15:30.123Z\"\n * ```\n */\n daysOffset(daysAgo: number): string {\n const now = Date.now();\n const past = now - this.number(0, daysAgo * 24 * 60 * 60 * 1000);\n\n return new Date(past).toISOString();\n },\n\n /**\n * Generate UUID v4\n * @returns - UUID string\n * @example\n * ```javascript\n * const uuid = Simulation.rand.uuid();\n * console.log(uuid); // e.g. \"3b12f1df-5232-4e3a-9a0c-3f9f1b1b1b1b\"\n * ```\n */\n uuid(): string {\n return window.crypto && typeof crypto?.randomUUID === 'function'\n ? crypto.randomUUID()\n : '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) =>\n (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16),\n );\n },\n };\n\n type Modifier = (value: string, param: string | null | undefined, values: { amount?: number; count?: number }) => string;\n\n export const string = {\n /**\n * Replaces occurrences in a string based on a pattern with the result of an asynchronous callback function.\n * @param string - The input string to perform replacements on.\n * @param pattern - The pattern to match in the string (can be a string or a regular expression).\n * @param callback - An asynchronous callback function that takes the matched substring and any captured groups as arguments and returns the replacement string.\n * @returns A promise that resolves to the modified string with replacements applied.\n * @example\n * ```javascript\n * const result = await Simulation.string.replace(\"Hello World\", /World/, async (match) => {\n * return await fetchSomeData(match); // Assume this function fetches data asynchronously\n * });\n * console.log(result); // Output will depend on the fetched data\n * ```\n */\n async replace(string: string, pattern: string, callback: (match: string, ...groups: string[]) => Promise<string> | string): Promise<string> {\n const promises: Array<Promise<string>> = [];\n\n string.replace(pattern, (match: string, ...groups: string[]) => {\n const promise = typeof callback === 'function' ? callback(match, ...groups) : match;\n\n promises.push(Promise.resolve(promise));\n\n return match;\n });\n\n const replacements = await Promise.all(promises);\n\n return string.replace(pattern, () => replacements.shift() ?? '');\n },\n\n /**\n * Capitalizes the first letter of a given string.\n * @param string - The input string to be capitalized.\n * @returns The capitalized string.\n * @example\n * ```javascript\n * const result = Simulation.string.capitalize(\"hello world\");\n * console.log(result); // Output: \"Hello world\"\n * ```\n */\n capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n },\n\n /**\n * Composes a template string by replacing placeholders with corresponding values and applying optional modifiers.\n * @param template - The template string containing placeholders in the format {key} and optional modifiers in the format [MODIFIER:param=value].\n * @param values - An object containing key-value pairs to replace the placeholders in the template.\n * @param options - Optional settings for the composition process.\n * @returns The composed string with placeholders replaced and modifiers applied.\n * @example\n * ```javascript\n * const template = \"Hello, {username}! You have {amount} [UPPERCASE=messages] and your name is [CAPITALIZE=name].\";\n * const values = { username: \"john_doe\", amount: 5, name: \"john\" };\n * const result = Simulation.string.compose(template, values);\n * console.log(result); // Output: \"Hello, john_doe! You have 5 MESSAGES and your name is John.\"\n * ```\n */\n compose(\n template: string,\n values: Record<string, any> = {},\n options: {\n method?: 'loop' | 'index';\n html?: boolean;\n modifiers?: Record<string, Modifier>;\n aliases?: Record<string, string[]>;\n } = {\n method: 'index',\n html: false,\n modifiers: {},\n aliases: {},\n },\n ): string {\n const { mergeSpanStyles } = element;\n\n values.skip = '<br/>';\n values.newline = '<br/>';\n\n const flatten: Record<string, string> = Object.entries(object.flatten(values)).reduce(\n (acc, [k, v]) => {\n acc[k] = String(v);\n\n if (['username', 'name', 'nick', 'nickname', 'sender'].some((e) => k === e)) {\n const username = acc?.username || acc?.name || acc?.nick || acc?.nickname || acc?.sender;\n\n acc['username'] = acc.username || username;\n acc['usernameAt'] = `@${acc.username}`;\n acc['name'] = acc.name || username;\n acc['nick'] = acc.nick || username;\n acc['nickname'] = acc.nickname || username;\n acc['sender'] = acc.sender || username;\n acc['senderAt'] = `@${acc.sender}`;\n }\n\n if (['amount', 'count'].some((e) => k === e)) {\n acc['amount'] = String(amount);\n acc['count'] = String(acc?.count || amount);\n }\n\n acc['currency'] = acc.currency || window.client?.details.currency.symbol || '$';\n acc['currencyCode'] = acc.currencyCode || window.client?.details.currency.code || 'USD';\n\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const REGEX = {\n PLACEHOLDERS: /{([^}]+)}/g,\n MODIFIERS: /\\[(\\w+)(:[^=]+)?=([^\\]]+)\\]/g,\n };\n\n var amount = parseFloat(flatten?.amount ?? flatten?.count ?? 0);\n\n const HTML_MODIFIERS: Record<string, Modifier> = {\n COLOR: (value, param) => mergeSpanStyles(param && !!color.validate(param) ? `color: ${param}` : '', value),\n WEIGHT: (value, param) => mergeSpanStyles(param && !isNaN(parseInt(param)) ? `font-weight: ${param}` : '', value),\n BOLD: (value) => mergeSpanStyles('font-weight: bold', value),\n LIGHT: (value) => mergeSpanStyles('font-weight: lighter', value),\n STRONG: (value) => mergeSpanStyles('font-weight: bolder', value),\n ITALIC: (value) => mergeSpanStyles('font-style: italic', value),\n UNDERLINE: (value) => mergeSpanStyles('text-decoration: underline', value),\n STRIKETHROUGH: (value) => mergeSpanStyles('text-decoration: line-through', value),\n SUB: (value) => mergeSpanStyles('vertical-align: sub', value),\n SUP: (value) => mergeSpanStyles('vertical-align: super', value),\n LARGER: (value) => mergeSpanStyles('font-size: larger', value),\n SMALL: (value) => mergeSpanStyles('font-size: smaller', value),\n SHADOW: (value, param) => mergeSpanStyles(`text-shadow: ${param}`, value),\n SIZE: (value, param) => mergeSpanStyles(param ? `font-size: ${param}` : '', value),\n };\n\n const STRING_MODIFIERS: Record<string, Modifier> = {\n BT1: (value) => (amount > 1 ? value : ''),\n BT0: (value) => (amount > 0 ? value : ''),\n ST1: (value) => (amount < 1 ? value : ''),\n ST0: (value) => (amount < 0 ? value : ''),\n UPC: (value) => value.toUpperCase(),\n LOW: (value) => value.toLowerCase(),\n REV: (value) => value.split('').reverse().join(''),\n CAP: (value) => value.charAt(0).toUpperCase() + value.slice(1).toLowerCase(),\n FALLBACK: (value, param) => (value.length ? value : (param ?? value)),\n };\n\n const MODIFIERS: Record<string, Modifier> = {\n ...STRING_MODIFIERS,\n ...(options?.html ? HTML_MODIFIERS : {}),\n ...(options.modifiers ?? {}),\n };\n\n const ALIASES = {\n UPC: ['UPPERCASE', 'UPPER', 'UPP'],\n LOW: ['LOWERCASE', 'LOWER', 'LWC'],\n REV: ['REVERSE', 'RVS'],\n CAP: ['CAPITALIZE', 'CAPITAL'],\n BT1: ['BIGGER_THAN_1', 'GREATER_THAN_1', 'GT1'],\n BT0: ['BIGGER_THAN_0', 'GREATER_THAN_0', 'GT0'],\n ST1: ['SMALLER_THAN_1', 'LESS_THAN_1', 'LT1'],\n ST0: ['SMALLER_THAN_0', 'LESS_THAN_0', 'LT0'],\n COLOR: ['COLOUR', 'CLR', 'HIGHLIGHT'],\n BOLD: ['BOLDEN', 'B'],\n STRONG: ['STRONGEN', 'STRONG'],\n ITALIC: ['ITALICIZE', 'ITALIC', 'I'],\n UNDERLINE: ['U', 'INS', 'INSET', 'I'],\n STRIKETHROUGH: ['STRIKE', 'S', 'DELETE', 'D'],\n SUB: ['SUBSCRIPT', 'SUBS'],\n SUP: ['SUPERSCRIPT', 'SUPS'],\n LARGER: ['LARGER', 'LG'],\n SMALL: ['SMALLER', 'SM'],\n SHADOW: ['SHADOW', 'SHD'],\n FALLBACK: ['FALLBACK', 'FB'],\n ...(options.aliases ?? {}),\n };\n\n function applyModifier(value: string, name: string, param: string | null | undefined): string {\n const canonical = Object.entries(ALIASES).find(([key, aliases]) => {\n if (aliases.some((alias) => alias.toUpperCase() === name.toUpperCase())) return true;\n else if (key.toUpperCase() === name.toUpperCase()) return true;\n else return false;\n });\n const use = canonical ? canonical[0] : name.toUpperCase();\n\n if (MODIFIERS[use]) return MODIFIERS[use](value, typeof param === 'string' ? param.trim() : null, flatten);\n else return value;\n }\n\n function replaceAll(string: string): string {\n let str = string;\n let match;\n\n while ((match = REGEX.MODIFIERS.exec(str)) !== null) {\n const [fullMatch, modifier, param, value] = match;\n\n const newValue = applyModifier(replaceAll(value), modifier, param);\n\n str = str.replace(fullMatch, newValue ?? '');\n\n REGEX.MODIFIERS.lastIndex = 0;\n }\n\n return str;\n }\n\n function parseModifiers(str: string): string {\n let i = 0;\n const len = str.length;\n\n function parseText(stopChar?: string): string {\n let out = '';\n while (i < len) {\n if (str[i] === '\\\\') {\n if (i + 1 < len) {\n out += str[i + 1];\n i += 2;\n } else {\n i++;\n }\n } else if (str[i] === '[' && (!stopChar || stopChar !== '[')) {\n out += parseModifier();\n } else if (stopChar && str[i] === stopChar) {\n i++;\n break;\n } else {\n out += str[i++];\n }\n }\n return out;\n }\n\n function parseModifier(): string {\n i++;\n let name = '';\n while (i < len && /[A-Za-z0-9]/.test(str[i])) name += str[i++];\n let param: string | null = null;\n if (str[i] === ':') {\n i++;\n const paramStart = i;\n while (i < len && str[i] !== '=') i++;\n param = str.slice(paramStart, i);\n }\n if (str[i] === '=') i++;\n const value = parseText(']');\n return applyModifier(value, name, param);\n }\n\n return parseText();\n }\n\n let result = template.replace(REGEX.PLACEHOLDERS, (_, key: string) =>\n typeof flatten[key] === 'string' || typeof flatten[key] === 'number' ? String(flatten[key]) : (key ?? key),\n );\n\n result = options.method === 'loop' ? replaceAll(result) : parseModifiers(result);\n\n return result;\n },\n };\n\n export const number = {\n /**\n * Translate number to words\n * @param num - Number to translate\n * @param type - Translation type\n * @returns - Number in words\n * @example\n * ```javascript\n * const cardinal = Simulation.number.translate(42, 'cardinal');\n * console.log(cardinal); // \"forty-two\"\n * ```\n */\n translate(num: number, type: 'cardinal' | 'ordinal' | 'suffix' = 'cardinal'): string {\n const CARDINALS = {\n single: ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'],\n tens: ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'],\n decades: ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'],\n };\n const ORDINALS = {\n single: ['zeroth', 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth'],\n tens: ['tenth', 'eleventh', 'twelfth', 'thirteenth', 'fourteenth', 'fifteenth', 'sixteenth', 'seventeenth', 'eighteenth', 'nineteenth'],\n decades: ['twentieth', 'thirtieth', 'fortieth', 'fiftieth', 'sixtieth', 'seventieth', 'eightieth', 'ninetieth'],\n };\n const SUFFIXES = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th'];\n const SCALES = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion'];\n const SCALES_ORD = SCALES.map((s) => (s ? `${s}th` : ''));\n\n num = Math.abs(Math.floor(num));\n\n if (type === 'suffix') {\n const rem100 = num % 100;\n if (rem100 >= 11 && rem100 <= 13) return `${num}th`;\n const rem10 = num % 10;\n return `${num}${SUFFIXES[rem10]}`;\n }\n\n function below100(n: number, kind: 'cardinal' | 'ordinal'): string {\n if (n < 10) return kind === 'ordinal' ? ORDINALS.single[n] : CARDINALS.single[n];\n if (n < 20) return kind === 'ordinal' ? ORDINALS.tens[n - 10] : CARDINALS.tens[n - 10];\n const decade = Math.floor(n / 10);\n const single = n % 10;\n if (single === 0) return kind === 'ordinal' ? ORDINALS.decades[decade - 2] : CARDINALS.decades[decade - 2];\n const tensPart = CARDINALS.decades[decade - 2];\n const unitPart = kind === 'ordinal' ? ORDINALS.single[single] : CARDINALS.single[single];\n return `${tensPart}-${unitPart}`;\n }\n\n function below1000(n: number, kind: 'cardinal' | 'ordinal'): string {\n if (n === 0) return kind === 'ordinal' ? ORDINALS.single[0] : CARDINALS.single[0];\n const hundreds = Math.floor(n / 100);\n const rest = n % 100;\n const parts: string[] = [];\n if (hundreds > 0) {\n if (kind === 'ordinal' && rest === 0) parts.push(`${CARDINALS.single[hundreds]} hundredth`);\n else parts.push(`${CARDINALS.single[hundreds]} hundred`);\n }\n if (rest > 0) parts.push(below100(rest, kind));\n return parts.join(' ');\n }\n\n if (num < 1000) return below1000(num, type);\n\n const groups: number[] = [];\n let n = num;\n while (n > 0) {\n groups.push(n % 1000);\n n = Math.floor(n / 1000);\n }\n\n let lastNonZeroIndex = -1;\n for (let i = 0; i < groups.length; i++) if (groups[i] !== 0) lastNonZeroIndex = i;\n\n const parts: string[] = [];\n for (let i = groups.length - 1; i >= 0; i--) {\n const g = groups[i];\n if (g === 0) continue;\n const scale = SCALES[i];\n\n if (type === 'cardinal') {\n let segment = below1000(g, 'cardinal');\n if (scale) segment += ` ${scale}`;\n parts.push(segment);\n } else {\n const isLastNonZero = i === lastNonZeroIndex;\n if (isLastNonZero) {\n if (i > 0) {\n const segment = below1000(g, 'cardinal');\n const ordScale = SCALES_ORD[i];\n parts.push(segment ? `${segment} ${ordScale}` : ordScale);\n } else {\n const segment = below1000(g, 'ordinal');\n parts.push(segment);\n }\n } else {\n let segment = below1000(g, 'cardinal');\n if (scale) segment += ` ${scale}`;\n parts.push(segment);\n }\n }\n }\n\n return parts.join(', ');\n },\n\n /**\n * Balances a number within a specified range\n * @param amount - Number to balance\n * @param min - Minimum value\n * @param max - Maximum value\n * @returns - Balanced number\n * @example\n * ```javascript\n * const balancedValue = Simulation.number.balance(150, 0, 100);\n * console.log(balancedValue); // 100\n * ```\n */\n balance(amount: number, min: number = 0, max: number = 100) {\n return Math.min(Math.max(amount, min), max);\n },\n };\n\n export const element = {\n /**\n * Merges outer span styles with inner span styles in the provided HTML string.\n * @param outerStyle - The style string to be applied to the outer span.\n * @param innerHTML - The inner HTML string which may contain a span with its own styles.\n * @returns A new HTML string with merged styles applied to a single span.\n * @example\n * ```javascript\n * const result = Simulation.element.mergeSpanStyles(\"color: red; font-weight: bold;\", '<span style=\"font-size: 14px;\">Hello World</span>');\n * console.log(result); // Output: '<span style=\"font-size: 14px; color: red; font-weight: bold;\">Hello World</span>'\n * ```\n */\n mergeSpanStyles(outerStyle: string, innerHTML: string): string {\n const match = innerHTML.match(/^<span style=\"([^\"]*)\">(.*)<\\/span>$/s);\n\n if (match) {\n const innerStyle = match[1];\n const content = match[2];\n\n const mergedStyle = [innerStyle, outerStyle]\n .filter(Boolean)\n .join('; ')\n .replace(/\\s*;\\s*/g, '; ')\n .trim();\n\n return `<span style=\"${mergedStyle}\">${content}</span>`;\n } else {\n return `<span style=\"${outerStyle}\">${innerHTML}</span>`;\n }\n },\n\n /**\n * Scales an HTML element to fit within its parent element based on specified minimum and maximum scale factors.\n * @param element - The HTML element to be scaled.\n * @param min - Minimum scale factor (default is 0).\n * @param max - Maximum scale factor (default is 1).\n * @param options - Optional settings for scaling.\n * @returns - An object containing the new width, height, and scale factor, or void if not applied.\n * @example\n * ```javascript\n * const element = document.getElementById('myElement');\n * Simulation.element.scale(element, 0.5, 1, { return: false });\n * ```\n */\n scale(\n element: HTMLElement,\n min: number = 0,\n max: number = 1,\n options?: { return: boolean; parent: HTMLElement; base: 'width' | 'height' },\n ): { width: number; height: number; scale: number } | void {\n const { return: returnOnly = false, parent: customParent, base } = options || {};\n\n const parent = customParent || element.parentElement || document.body;\n\n if (!parent) {\n logger.warn('No parent element found for scaling');\n return;\n }\n\n const parentRect = parent.getBoundingClientRect();\n const elementWidth = element.offsetWidth;\n const elementHeight = element.offsetHeight;\n\n if (elementWidth === 0 || elementHeight === 0) {\n logger.warn('Element has zero width or height, cannot scale');\n return;\n }\n\n // Calculate scales for both dimensions\n const scaleX = (parentRect.width * max) / elementWidth;\n const scaleY = (parentRect.height * max) / elementHeight;\n\n // Determine final scale based on base option or use smaller scale\n let finalScale = base === 'width' ? scaleX : base === 'height' ? scaleY : Math.min(scaleX, scaleY);\n\n // Apply minimum constraint if needed\n if (min > 0) {\n const minScaleX = (parentRect.width * min) / elementWidth;\n const minScaleY = (parentRect.height * min) / elementHeight;\n const minScale = Math.max(minScaleX, minScaleY);\n\n finalScale = Math.max(minScale, finalScale);\n }\n\n const result = {\n width: elementWidth * finalScale,\n height: elementHeight * finalScale,\n scale: finalScale,\n };\n\n if (returnOnly) {\n return result;\n }\n\n element.style.transform = `scale(${finalScale})`;\n element.style.transformOrigin = 'center center';\n\n return result;\n },\n\n /**\n * Splits the text content of an HTML string into individual characters wrapped in span elements with a data-index attribute.\n * @param htmlString - The input HTML string to be processed.\n * @param startIndex - The starting index for the data-index attribute (default is 0).\n * @returns - A new HTML string with each character wrapped in a span element.\n * @example\n * ```javascript\n * const result = Simulation.element.splitTextToChars(\"<p>Hello</p>\", 0);\n * console.log(result);\n * // Output: '<p><span class=\"char\" data-index=\"0\">H</span><span class=\"char\" data-index=\"1\">e</span><span class=\"char\" data-index=\"2\">l</span><span class=\"char\" data-index=\"3\">l</span><span class=\"char\" data-index=\"4\">o</span></p>'\n * ```\n */\n splitTextToChars(htmlString: string, startIndex: number = 0): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n let charIndex = startIndex;\n\n function processNode(node: Node) {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent;\n\n const chars = text?.split('').map((char) => {\n const span = document.createElement('span');\n\n span.className = 'char';\n span.dataset.index = String(charIndex++);\n\n span.textContent = char;\n\n charIndex++;\n\n return span.outerHTML;\n });\n\n const wrapper = document.createElement('span');\n\n wrapper.innerHTML = chars?.join('') ?? '';\n\n return wrapper;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const clone = node.cloneNode(false);\n\n node.childNodes.forEach((child) => {\n const processed = processNode(child);\n\n if (processed instanceof Node) {\n Array.from(processed.childNodes).forEach((childNode) => {\n clone.appendChild(childNode);\n });\n }\n });\n\n return clone;\n }\n\n return node.cloneNode(true);\n }\n\n const body = doc.body;\n const processed = document.createElement('div');\n\n body.childNodes.forEach((node) => {\n const result = processNode(node);\n\n if (result instanceof Node) {\n processed.appendChild(result);\n }\n });\n\n return processed.innerHTML;\n },\n };\n\n export const object = {\n /**\n * Flattens a nested object into a single-level object with dot-separated keys.\n * @param obj - The nested object to be flattened.\n * @param prefix - The prefix to be added to each key (used for recursion).\n * @returns A flattened object with dot-separated keys.\n * @example\n * ```javascript\n * const nestedObj = { a: { b: 1, c: { d: 2 } }, e: [3, 4] };\n * const flatObj = Simulation.object.flatten(nestedObj);\n * console.log(flatObj);\n * // Output: { 'a.b': '1', 'a.c.d': '2', 'e:0': '3', 'e:1': '4' }\n * ```\n */\n flatten(obj: Record<string, any>, prefix: string = ''): Record<string, string> {\n const result = {} as Record<string, string>;\n\n for (const key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n\n const value = obj[key];\n const path = prefix ? `${prefix}.${key}` : key;\n\n // Handle null and undefined\n if (value === null || value === undefined) {\n result[path] = String(value);\n\n continue;\n }\n\n // Handle Date objects\n if (value instanceof Date) {\n result[path] = value.toISOString();\n\n continue;\n }\n\n // Handle Map objects\n if (value instanceof Map) {\n value.forEach((v, k) => {\n result[`${path}.${k}`] = JSON.stringify(v);\n });\n\n continue;\n }\n\n // Handle Array objects\n if (Array.isArray(value)) {\n value.forEach((v, i) => {\n const itemPath = `${path}:${i}`;\n\n if (typeof v === 'object') {\n Object.assign(result, this.flatten(v, itemPath));\n } else {\n result[itemPath] = String(v);\n }\n });\n\n continue;\n }\n\n // Handle nested objects\n if (typeof value === 'object') {\n Object.assign(result, this.flatten(value, path));\n\n continue;\n }\n\n // Handle primitive values (string, number, boolean, etc.)\n result[path] = String(value);\n }\n\n return result;\n },\n };\n\n export const generate = {\n session: {\n types: {\n name: { type: 'string', options: Simulation.data.names.filter((e) => e.length) },\n tier: { type: 'string', options: Simulation.data.tiers.filter((e) => e.length) },\n message: { type: 'string', options: Simulation.data.messages.filter((e) => e.length) },\n item: { type: 'array', options: Simulation.data.items },\n avatar: { type: 'string', options: Simulation.data.avatars.filter((e) => e.length) },\n } as Record<string, StreamElements.Session.Config.Any>,\n\n available(): StreamElements.Session.Config.Available.Data {\n const types = this.types;\n\n return {\n follower: {\n latest: { name: types.name },\n session: { count: { type: 'int', min: 50, max: 200 } },\n week: { count: { type: 'int', min: 200, max: 1000 } },\n month: { count: { type: 'int', min: 1000, max: 3000 } },\n goal: { amount: { type: 'int', min: 3000, max: 7000 } },\n total: { count: { type: 'int', min: 7000, max: 10000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: { name: types.name, createdAt: { type: 'date', range: 400 } },\n },\n },\n subscriber: {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n tier: types.tier,\n message: types.message,\n },\n 'new-latest': {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n message: types.message,\n },\n 'resub-latest': {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n message: types.message,\n },\n 'gifted-latest': {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n message: types.message,\n tier: types.tier,\n sender: types.name,\n },\n session: { count: { type: 'int', min: 10, max: 40 } },\n 'new-session': { count: { type: 'int', min: 10, max: 40 } },\n 'resub-session': { count: { type: 'int', min: 10, max: 40 } },\n 'gifted-session': { count: { type: 'int', min: 10, max: 40 } },\n week: { count: { type: 'int', min: 40, max: 100 } },\n month: { count: { type: 'int', min: 100, max: 200 } },\n goal: { amount: { type: 'int', min: 200, max: 300 } },\n total: { count: { type: 'int', min: 300, max: 400 } },\n points: { amount: { type: 'int', min: 100, max: 400 } },\n 'alltime-gifter': { name: types.name, amount: { type: 'int', min: 300, max: 400 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n tier: types.tier,\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n host: {\n latest: { name: types.name, amount: { type: 'int', min: 1, max: 10 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 1, max: 10 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n raid: {\n latest: { name: types.name, amount: { type: 'int', min: 0, max: 100 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n charityCampaignDonation: {\n latest: { name: types.name, amount: { type: 'int', min: 50, max: 150 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 50, max: 200 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 200, max: 500 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 500, max: 800 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 800, max: 1000 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 50, max: 200 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 200, max: 500 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 500, max: 800 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 800, max: 1000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 50, max: 150 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n cheer: {\n latest: { name: types.name, amount: { type: 'int', min: 200, max: 800 }, message: types.message },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 200, max: 1000 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 1000, max: 5000 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 5000, max: 12000 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 12000, max: 20000 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 200, max: 1000 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 1000, max: 5000 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 5000, max: 12000 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 12000, max: 20000 } },\n session: { amount: { type: 'int', min: 200, max: 1000 } },\n week: { amount: { type: 'int', min: 1000, max: 5000 } },\n month: { amount: { type: 'int', min: 5000, max: 12000 } },\n goal: { amount: { type: 'int', min: 12000, max: 18000 } },\n total: { amount: { type: 'int', min: 18000, max: 20000 } },\n count: { count: { type: 'int', min: 200, max: 1000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 200, max: 800 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n cheerPurchase: {\n latest: { name: types.name, amount: { type: 'int', min: 200, max: 400 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 200, max: 400 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 400, max: 800 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 800, max: 1500 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 1500, max: 2000 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 200, max: 400 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 400, max: 800 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 800, max: 1500 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 1500, max: 2000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 200, max: 400 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n superchat: {\n latest: { name: types.name, amount: { type: 'int', min: 100, max: 400 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n session: { amount: { type: 'int', min: 100, max: 500 } },\n week: { amount: { type: 'int', min: 500, max: 1000 } },\n month: { amount: { type: 'int', min: 1000, max: 2000 } },\n goal: { amount: { type: 'int', min: 2000, max: 2300 } },\n total: { amount: { type: 'int', min: 2300, max: 2500 } },\n count: { count: { type: 'int', min: 100, max: 500 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 100, max: 400 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n hypetrain: {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n active: { type: 'int', min: 0, max: 1 },\n level: { type: 'int', min: 5, max: 10 },\n levelChanged: { type: 'int', min: 0, max: 5 },\n _type: { type: 'array', options: ['follower', 'subscriber', 'cheer', 'donation'] },\n },\n 'level-goal': { amount: { type: 'int', min: 0, max: 100 } },\n 'level-progress': { amount: { type: 'int', min: 0, max: 100 }, percent: { type: 'int', min: 0, max: 100 } },\n total: { amount: { type: 'int', min: 0, max: 100 } },\n 'latest-top-contributors': { type: 'recent', amount: 25, value: { name: types.name } },\n },\n 'channel-points': {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n message: types.message,\n redemption: { type: 'array', options: ['Reward 1', 'Reward 2', 'Reward 3'] },\n },\n },\n tip: {\n latest: { name: types.name, amount: { type: 'int', min: 100, max: 400 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n session: { amount: { type: 'int', min: 100, max: 500 } },\n week: { amount: { type: 'int', min: 500, max: 1000 } },\n month: { amount: { type: 'int', min: 1000, max: 2000 } },\n goal: { amount: { type: 'int', min: 2000, max: 2300 } },\n total: { amount: { type: 'int', min: 2300, max: 2500 } },\n count: { count: { type: 'int', min: 100, max: 500 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 100, max: 400 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n merch: {\n latest: { name: types.name, amount: { type: 'int', min: 0, max: 100 }, items: types.item },\n 'goal-orders': { amount: { type: 'int', min: 0, max: 100 } },\n 'goal-items': { amount: { type: 'int', min: 0, max: 100 } },\n 'goal-total': { amount: { type: 'int', min: 0, max: 100 } },\n recent: { type: 'recent', amount: 25, value: { name: types.name } },\n },\n purchase: {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n items: types.item,\n avatar: types.avatar,\n message: types.message,\n },\n },\n };\n },\n\n async get(): Promise<StreamElements.Session.Data> {\n const available = this.available();\n\n const generate = (\n available: StreamElements.Session.Config.Available.Data | StreamElements.Session.Config.Available.Category | StreamElements.Session.Config.Any,\n ): any => {\n const generateRecentData = (config: StreamElements.Session.Config.Any): Array<any> => {\n if (!config || !('amount' in config)) return [];\n\n const items: Array<{ createdAt: string }> = [];\n\n for (let i = 0; i < config.amount; i++) {\n items.push(generate(config.value));\n }\n\n return items.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n };\n\n const generateObjectData = (config: Record<string, any>): Record<string, any> => {\n const result: Record<string, any> = {};\n\n for (const key in config) {\n const processedKey = key.replace('_type', 'type');\n\n result[processedKey] = generate(config[key]);\n }\n\n return result;\n };\n\n const processTypedConfig = (config: StreamElements.Session.Config.Any): any => {\n if (!config) return config;\n\n switch (config.type) {\n case 'int':\n return Simulation.rand.number(config.min, config.max);\n case 'string':\n return Simulation.rand.array(config.options)[0];\n case 'date':\n return Simulation.rand.daysOffset(config.range);\n case 'array':\n return Simulation.rand.array(config.options)[0];\n case 'recent':\n return generateRecentData(config);\n default:\n return config;\n }\n };\n\n // Main generation logic\n\n // Handle primitive values (non-objects)\n if (typeof available !== 'object' || available === null) {\n return available;\n }\n\n // Handle typed configurations (objects with a 'type' property)\n if ('type' in available && typeof available.type === 'string') {\n return processTypedConfig(available);\n }\n\n // Handle generic objects - recursively process each property\n return generateObjectData(available);\n };\n\n var session: StreamElements.Session.Data = Object.entries(generate(available)).reduce(\n (acc, [key, value]) => {\n Object.entries(value as any).forEach(\n ([subKey, subValue]) =>\n //\n (acc[`${key}-${subKey}`] = subValue),\n );\n\n return acc;\n },\n {} as Record<string, any>,\n ) as StreamElements.Session.Data;\n\n return session;\n },\n },\n event: {\n /**\n * Simulates the onWidgetLoad event for a widget.\n * @param fields - The field values to be included in the event.\n * @param session - The session data to be included in the event.\n * @param currency - The currency to be used (default is 'USD').\n * @returns A Promise that resolves to the simulated onWidgetLoad event data.\n */\n async onWidgetLoad(\n fields: Record<string, StreamElements.CustomField.Value>,\n session: StreamElements.Session.Data,\n currency: 'BRL' | 'USD' | 'EUR' = 'USD',\n ): Promise<StreamElements.Event.onWidgetLoad> {\n const currencies = {\n BRL: { code: 'BRL', name: 'Brazilian Real', symbol: 'R$' },\n USD: { code: 'USD', name: 'US Dollar', symbol: '$' },\n EUR: { code: 'EUR', name: 'Euro', symbol: '€' },\n };\n\n return {\n channel: {\n username: 'local',\n apiToken: '',\n id: '',\n providerId: '',\n avatar: '',\n },\n currency: currencies[currency] ?? currencies.USD,\n fieldData: fields,\n recents: [],\n session: {\n data: session,\n settings: {\n autoReset: false,\n calendar: false,\n resetOnStart: false,\n },\n },\n overlay: {\n isEditorMode: true,\n muted: false,\n },\n emulated: true,\n };\n },\n /**\n * Simulates the onSessionUpdate event for a widget.\n * @param session - The session data to be included in the event.\n * @returns A Promise that resolves to the simulated onSessionUpdate event data.\n */\n async onSessionUpdate(session?: StreamElements.Session.Data): Promise<StreamElements.Event.onSessionUpdate> {\n session ??= await Simulation.generate.session.get();\n\n return { session };\n },\n /**\n * Simulates the onEventReceived event for a widget.\n * @param provider - The provider of the event (default is 'random').\n * @param type - The type of event to simulate (default is 'random').\n * @param options - Additional options to customize the event data.\n * @returns A Promise that resolves to the simulated onEventReceived event data, or null if the event type is not supported.\n * @example\n * ```javascript\n * // Simulate a random event\n * const randomEvent = await Simulation.generate.event.onEventReceived();\n *\n * // Simulate a Twitch message event with custom options\n * const twitchMessageEvent = await Simulation.generate.event.onEventReceived('twitch', 'message', { name: 'Streamer', message: 'Hello World!' });\n * ```\n */\n async onEventReceived(\n provider: Provider | 'random' = 'random',\n type: StreamElements.Event.onEventReceived['listener'] | 'random' | 'tip' | 'cheer' | 'follower' | 'raid' | 'subscriber' = 'random',\n options: Record<string, string | number | boolean> = {},\n ): Promise<StreamElements.Event.onEventReceived | null> {\n const available: Record<Provider, string[]> = {\n twitch: ['message', 'follower-latest', 'cheer-latest', 'raid-latest', 'subscriber-latest'],\n streamelements: ['tip-latest'],\n youtube: ['message', 'superchat-latest', 'subscriber-latest', 'sponsor-latest'],\n kick: [],\n facebook: [],\n };\n\n switch (provider) {\n default:\n case 'random': {\n var randomProvider = Simulation.rand.array(Object.keys(available).filter((e) => available[e as Provider].length))[0] as Provider;\n var randomEvent = Simulation.rand.array(available[randomProvider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(randomProvider, randomEvent);\n }\n\n case 'twitch': {\n switch (type as StreamElements.Event.Provider.Twitch.Events['listener'] | 'random' | 'cheer' | 'follower' | 'raid' | 'subscriber') {\n default:\n case 'random': {\n var randomEvent = Simulation.rand.array(available[provider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(provider, randomEvent);\n }\n case 'message': {\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n var badges = await generateBadges((options?.badges as BadgeOptions) ?? [], provider);\n\n var emotes = findEmotesInText(message);\n var renderedText = replaceEmotesWithHTML(message, emotes);\n\n var color = (options?.color as string) ?? Simulation.rand.color('hex');\n var userId = (options?.userId as string) ?? Simulation.rand.number(10000000, 99999999).toString();\n var time = Date.now();\n\n const event: StreamElements.Event.Provider.Twitch.Message = {\n listener: 'message',\n event: {\n service: provider,\n data: {\n time: time,\n tags: {\n 'badge-info': `${badges.keys.map((key) => `${key}/${Simulation.rand.number(1, 5)}`).join(',')}`,\n 'badges': badges.keys.join('/1,'),\n\n 'mod': badges.keys.includes('moderator') ? '1' : '0',\n 'subscriber': badges.keys.includes('subscriber') ? '1' : '0',\n 'turbo': badges.keys.includes('turbo') ? '1' : '0',\n\n 'tmi-sent-ts': time.toString(),\n\n 'user-id': userId,\n 'user-type': '',\n\n 'color': color,\n 'display-name': name,\n 'emotes': '',\n\n 'client-nonce': Simulation.rand.string(16),\n 'flags': '',\n 'id': Simulation.rand.uuid(),\n 'first-msg': '0',\n 'returning-chatter': '0',\n },\n nick: name.toLowerCase(),\n displayName: name,\n displayColor: color,\n channel: 'local',\n text: message,\n isAction: false,\n userId: userId,\n msgId: Simulation.rand.uuid(),\n badges: badges.badges,\n emotes: emotes,\n },\n renderedText: renderedText,\n },\n };\n\n return event;\n }\n case 'cheer':\n case 'cheer-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(100, 10000);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.Twitch.Cheer & { event: { provider: Provider } } = {\n listener: 'cheer-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n message: message,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'cheer',\n originalEventName: 'cheer-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'follower':\n case 'follower-latest': {\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.Twitch.Follower & { event: { provider: Provider } } = {\n listener: 'follower-latest',\n event: {\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'follower',\n originalEventName: 'follower-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'raid':\n case 'raid-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(1, 100);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.Twitch.Raid & { event: { provider: Provider } } = {\n listener: 'raid-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'raid',\n originalEventName: 'raid-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'subscriber':\n case 'subscriber-latest': {\n var tier = (options?.tier as string) ?? Simulation.rand.array(['1000', '2000', '3000'])[0];\n var amount = (options?.amount as number) ?? Simulation.rand.number(1, 24);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var sender = (options?.sender as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length && e !== name))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n var addons = {\n default: {\n avatar,\n tier,\n playedAsCommunityGift: false,\n },\n gift: {\n sender,\n gifted: true,\n } as StreamElements.Event.Provider.Twitch.gift,\n community: {\n message,\n sender,\n bulkGifted: true,\n } as StreamElements.Event.Provider.Twitch.community,\n spam: {\n sender,\n gifted: true,\n isCommunityGift: true,\n } as StreamElements.Event.Provider.Twitch.spam,\n };\n\n var subTypes = ['default', 'gift', 'community', 'spam'];\n var subType = (options?.subType as string) ?? Simulation.rand.array(subTypes)[0];\n\n subType = subTypes.includes(subType) ? subType : 'default';\n\n const event: StreamElements.Event.Provider.Twitch.Subscriber & { event: { provider: Provider } } = {\n listener: 'subscriber-latest',\n event: {\n amount,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n\n ...addons.default,\n ...addons[subType as keyof typeof addons],\n\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'subscriber',\n originalEventName: 'subscriber-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'delete-message': {\n const event: StreamElements.Event.Provider.Twitch.DeleteMessage & { event: { provider: Provider } } = {\n listener: 'delete-message',\n event: {\n msgId: (options?.id as string) ?? Simulation.rand.uuid(),\n provider,\n },\n };\n\n return event;\n }\n case 'delete-messages': {\n const event: StreamElements.Event.Provider.Twitch.DeleteMessages & { event: { provider: Provider } } = {\n listener: 'delete-messages',\n event: {\n userId: (options?.id as string) ?? Simulation.rand.number(10000000, 99999999).toString(),\n provider,\n },\n };\n\n return event;\n }\n }\n }\n\n case 'streamelements': {\n switch (type as StreamElements.Event.Provider.StreamElements.Events['listener'] | 'random' | 'tip' | 'mute' | 'unmute' | 'skip') {\n default:\n case 'random': {\n var randomEvent = Simulation.rand.array(available[provider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(provider, randomEvent);\n }\n case 'tip':\n case 'tip-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(100, 4000);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.StreamElements.Tip & { event: { provider: Provider } } = {\n listener: 'tip-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'tip',\n originalEventName: 'tip-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'kvstore:update': {\n const event: StreamElements.Event.Provider.StreamElements.KVStore & { event: { provider: Provider } } = {\n listener: 'kvstore:update',\n event: {\n data: {\n key: `customWidget.${(options?.key as string) ?? 'sampleKey'}`,\n value: (options?.value as string) ?? 'sampleValue',\n },\n provider,\n },\n };\n\n return event;\n }\n case 'bot:counter': {\n const event: StreamElements.Event.Provider.StreamElements.BotCounter & { event: { provider: Provider } } = {\n listener: 'bot:counter',\n event: {\n counter: (options?.counter as string) ?? 'sampleCounter',\n value: (options?.value as number) ?? Simulation.rand.number(0, 100),\n provider,\n },\n };\n\n return event;\n }\n case 'mute':\n case 'unmute':\n case 'alertService:toggleSound': {\n var muted = (options?.muted as boolean) ?? !client.details.overlay.muted;\n\n const event: StreamElements.Event.Provider.StreamElements.AlertService & { event: { provider: Provider } } = {\n listener: 'alertService:toggleSound',\n event: {\n muted,\n provider,\n },\n };\n\n return event;\n }\n case 'skip':\n case 'event:skip': {\n const event: StreamElements.Event.Provider.StreamElements.EventSkip & { event: { provider: Provider } } = {\n listener: 'event:skip',\n event: {\n provider,\n },\n };\n\n return event;\n }\n }\n }\n\n case 'youtube': {\n switch (type as StreamElements.Event.Provider.YouTube.Events['listener'] | 'random' | 'message' | 'superchat' | 'subscriber' | 'sponsor') {\n default:\n case 'random': {\n var randomEvent = Simulation.rand.array(available[provider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(provider, randomEvent);\n }\n case 'message': {\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n const badges = await generateBadges((options?.badges as BadgeOptions) ?? [], provider);\n\n var emotes = findEmotesInText(message);\n var renderedText = replaceEmotesWithHTML(message, emotes);\n\n var color = (options?.color as string) ?? Simulation.rand.color('hex');\n var userId = (options?.userId as string) ?? Simulation.rand.number(10000000, 99999999).toString();\n var time = Date.now();\n\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n\n const event: StreamElements.Event.Provider.YouTube.Message = {\n listener: 'message',\n event: {\n service: provider,\n data: {\n kind: '',\n etag: '',\n id: '',\n snippet: {\n type: '',\n liveChatId: '',\n authorChannelId: 'local',\n publishedAt: new Date().toISOString(),\n hasDisplayContent: true,\n displayMessage: message,\n textMessageDetails: {\n messageText: message,\n },\n },\n authorDetails: {\n channelId: 'local',\n channelUrl: '',\n displayName: name,\n profileImageUrl: avatar,\n ...badges,\n },\n msgId: Simulation.rand.uuid(),\n userId: Simulation.rand.uuid(),\n nick: name.toLowerCase(),\n badges: [],\n displayName: name,\n isAction: false,\n time: Date.now(),\n tags: [],\n displayColor: Simulation.rand.color('hex'),\n channel: 'local',\n text: message,\n avatar: avatar,\n emotes: [],\n },\n renderedText: message,\n },\n };\n\n return event;\n }\n case 'subscriber':\n case 'subscriber-latest': {\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.YouTube.Subscriber & { event: { provider: Provider } } = {\n listener: 'subscriber-latest',\n event: {\n avatar,\n displayName: name,\n name: name.toLowerCase(),\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'subscriber',\n originalEventName: 'subscriber-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'superchat':\n case 'superchat-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(100, 4000);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.YouTube.Superchat & { event: { provider: Provider } } = {\n listener: 'superchat-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'superchat',\n originalEventName: 'superchat-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'sponsor':\n case 'sponsor-latest': {\n var tier = (options?.tier as string) ?? Simulation.rand.array(['1000', '2000', '3000'])[0];\n var amount = (options?.amount as number) ?? Simulation.rand.number(1, 24);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var sender = (options?.sender as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length && e !== name))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n var addons = {\n default: {\n avatar,\n tier,\n playedAsCommunityGift: false,\n },\n gift: {\n sender,\n gifted: true,\n } as StreamElements.Event.Provider.YouTube.gift,\n community: {\n message,\n sender,\n bulkGifted: true,\n } as StreamElements.Event.Provider.YouTube.community,\n spam: {\n sender,\n gifted: true,\n isCommunityGift: true,\n } as StreamElements.Event.Provider.YouTube.spam,\n };\n\n var subTypes = ['default', 'gift', 'community', 'spam'];\n var subType = (options?.subType as string) ?? Simulation.rand.array(subTypes)[0];\n\n subType = subTypes.includes(subType) ? subType : 'default';\n\n const event: StreamElements.Event.Provider.YouTube.Sponsor & { event: { provider: Provider } } = {\n listener: 'sponsor-latest',\n event: {\n amount,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n\n ...addons.default,\n ...addons[subType as keyof typeof addons],\n\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'sponsor',\n originalEventName: 'sponsor-latest',\n provider,\n },\n };\n\n return event;\n }\n }\n }\n }\n },\n },\n };\n\n export const emulate = {\n twitch: {\n message(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'message', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n follower(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'follower-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n raid(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'raid-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n cheer(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'cheer-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n subscriber(data: Record<string, string | number | boolean> & { subType?: 'default' | 'gift' | 'community' | 'spam' } = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'subscriber-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n },\n streamelements: {\n tip(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('streamelements', 'tip-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n },\n youtube: {\n message(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'message', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n subscriber(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'subscriber-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n superchat(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'superchat-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n sponsor(data: Record<string, string | number | boolean> & { subType?: 'default' | 'gift' | 'community' | 'spam' } = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'sponsor-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n },\n kick: {},\n facebook: {},\n\n send<T extends 'onEventReceived' | 'onSessionUpdate' | 'onWidgetLoad'>(\n listener: T,\n event: T extends 'onEventReceived'\n ? StreamElements.Event.onEventReceived\n : T extends 'onSessionUpdate'\n ? StreamElements.Event.onSessionUpdate\n : StreamElements.Event.onWidgetLoad,\n ): void {\n window.dispatchEvent(new CustomEvent(listener, { detail: event }));\n },\n };\n\n /**\n * Delays execution for a specified number of milliseconds.\n * @param ms - The number of milliseconds to delay.\n * @returns A Promise that resolves after the specified delay.\n */\n export function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n export function probability(items: Record<string, number>) {\n const total = Object.values(items).reduce((acc, val) => acc + val, 0);\n const sorted = Object.entries(items).sort((a, b) => b[1] - a[1]);\n const rand = Math.random() * total;\n\n let cumulative = 0;\n\n for (const [item, weight] of sorted) {\n cumulative += weight;\n\n if (rand < cumulative) {\n return item;\n }\n }\n }\n\n export async function start(\n fieldsFile: string[] = ['fields.json', 'cf.json', 'field.json', 'customfields.json'],\n dataFiles: string[] = ['data.json', 'fielddata.json', 'fd.json', 'DATA.json'],\n ) {\n const localFiles = {\n fields: fieldsFile.find((file) => {\n try {\n new URL('./' + file, window.location.href);\n return true;\n } catch (error) {\n return false;\n }\n }),\n data: dataFiles.find((file) => {\n try {\n new URL('./' + file, window.location.href);\n return true;\n } catch (error) {\n return false;\n }\n }),\n };\n\n const data: Record<string, string | number | boolean> = await fetch('./' + (localFiles.data ?? 'data.json'), {\n cache: 'no-store',\n })\n .then((res) => res.json())\n .catch(() => ({}));\n\n await fetch('./' + (localFiles.fields ?? 'fields.json'), {\n cache: 'no-store',\n })\n .then((res) => res.json())\n .then(async (customfields: Record<string, StreamElements.CustomField.Schema>) => {\n const fields = Object.entries(customfields)\n .filter(([_, { value }]) => value != undefined)\n .reduce(\n (acc, [key, { value }]) => {\n if (data && data[key] !== undefined) value = data[key];\n\n acc[key] = value;\n\n return acc;\n },\n {\n ...data,\n } as Record<string, StreamElements.CustomField.Value>,\n );\n\n const load = await Simulation.generate.event.onWidgetLoad(fields, await Simulation.generate.session.get());\n\n window.dispatchEvent(new CustomEvent('onWidgetLoad', { detail: load }));\n });\n }\n}\n","import { BttvEmote, SeventvEmote, TwitchEmote } from '../types/emote.js';\nimport { Simulation } from '../simulation/simulation.js';\nimport { Provider } from '../types/client.js';\nimport { Twitch } from '../types/twitch.js';\n\ntype Emote = TwitchEmote | BttvEmote | SeventvEmote;\n\n/**\n * Finds emotes in a given text.\n * @param text - The text to search for emotes.\n * @param emotes - An array of emotes to search for. Defaults to Simulation data emotes.\n * @returns An array of emotes found in the text with their positions.\n */\nexport function findEmotesInText(text: string, emotes: Emote[] = Simulation.data.emotes): Emote[] {\n const result: Emote[] = [];\n\n emotes.forEach((emote) => {\n const name = emote.name;\n\n let searchIndex = 0;\n let start = 0;\n\n while (searchIndex < text.length) {\n const index = text.indexOf(name, start);\n\n if (index === -1) break;\n\n const before = index > 0 ? text[index - 1] : ' ';\n const after = index + name.length < text.length ? text[index + name.length] : ' ';\n\n if (/\\s/.test(before) && /\\s/.test(after)) {\n result.push({ ...emote, start: index, end: index + name.length });\n }\n\n start = index + 1;\n }\n });\n\n return result.sort((a, b) => a.start - b.start);\n}\n\n/**\n * Replaces emotes in the text with corresponding HTML image tags.\n * @param text - The text containing emotes.\n * @param emotes - An array of emotes with their positions in the text.\n * @returns The text with emotes replaced by HTML image tags.\n */\nexport function replaceEmotesWithHTML(text: string, emotes: Emote[]): string {\n if (!emotes.length) return text;\n\n let result = '';\n let index = 0;\n\n emotes.forEach((emote) => {\n result += text.substring(index, emote.start);\n\n const emotesArray = Array.from({ ...emote.urls, length: 5 })\n .slice(1)\n .reverse()\n .filter(Boolean);\n\n const imgUrl = emotesArray[0] || emote.urls['1'];\n\n result += `<img src=\"${imgUrl}\" alt=\"${emote.name}\" class=\"emote\" style=\"width: auto; height: 1em; vertical-align: middle;\" />`;\n\n index = emote.end;\n });\n\n result += text.substring(index);\n\n return result;\n}\n\nexport function replaceYoutubeEmotesWithHTML(text: string, emotes = Simulation.data.youtube_emotes): string {\n const emoteCodesInside = Array.from(text.matchAll(/:(.*?):/gim), (x) => x[0]);\n\n emoteCodesInside.forEach((code) => {\n const emote = emotes.find((e) => e.shortcuts.includes(code) || e.searchTerms.includes(code.slice(1, -1)));\n\n if (emote) {\n const url = emote.image.thumbnails.at(-1)?.url;\n const alt = emote.image.accessibility.accessibilityData.label;\n\n if (url) {\n text = text.replace(code, `<img src=\"${url}\" alt=\"${alt}\" class=\"emote\" style=\"width: auto; height: 1em; vertical-align: middle;\" />`);\n }\n }\n });\n\n return text;\n}\n\ntype TwitchResult = {\n keys: Twitch.roles[];\n badges: Twitch.badge[];\n};\n\ntype YouTubeResult = {\n isVerified: boolean;\n isChatOwner: boolean;\n isChatSponsor: boolean;\n isChatModerator: boolean;\n};\n\nexport type BadgeOptions = Twitch.roles[] | Twitch.roles | `${Twitch.roles}, ${Twitch.roles}` | `${Twitch.roles}, ${Twitch.roles}, ${Twitch.roles}`;\n\n/**\n * Generates badge data based on the provided badges and platform.\n * @param badges - The badges to generate. Can be an array or a comma-separated string.\n * @param provider - The platform provider ('twitch' or 'youtube'). Defaults to 'twitch'.\n * @returns A promise that resolves to the generated badge data.\n * @example\n * ```javascript\n * // Generate Twitch badges\n * const twitchBadges = await generateBadges(['broadcaster', 'moderator'], 'twitch');\n * // Generate YouTube badges\n * const youtubeBadges = await generateBadges('sponsor, moderator', 'youtube');\n * ```\n */\nexport async function generateBadges(badges: BadgeOptions, provider: 'youtube'): Promise<YouTubeResult>;\nexport async function generateBadges(badges: BadgeOptions, provider: 'twitch'): Promise<TwitchResult>;\nexport async function generateBadges(badges: BadgeOptions = [], provider: Provider = 'twitch'): Promise<TwitchResult | YouTubeResult> {\n if (!Array.isArray(badges) && typeof badges === 'string') {\n badges = badges.split(',').map((e) => e.trim()) as Twitch.roles[];\n }\n\n if (!badges || !badges.length) {\n var max = Simulation.rand.number(1, 3);\n\n for await (const _ of Array.from({ length: max }, () => '')) {\n var current = Simulation.rand.array(Object.keys(Simulation.data.badges))[0] as Twitch.roles;\n\n if (!badges.includes(current) && Array.isArray(badges)) {\n badges.push(current);\n } else {\n badges = [current];\n }\n }\n }\n\n var result;\n\n switch (provider) {\n case 'twitch': {\n result = {\n keys: Array.from(badges).filter((e) => e in Simulation.data.badges) as Twitch.roles[],\n badges: Array.from(badges)\n .slice(0, 3)\n .map((badge) => Simulation.data.badges[badge])\n .filter(Boolean) as Twitch.badge[],\n };\n\n break;\n }\n\n case 'youtube': {\n var details = {\n 'verified': { isVerified: false },\n 'broadcaster': { isChatOwner: false },\n 'host': { isChatOwner: false },\n 'sponsor': { isChatSponsor: false },\n 'subscriber': { isChatSponsor: false },\n 'moderator': { isChatModerator: false },\n };\n\n result = Object.entries(badges).reduce(\n (acc, [key]) => {\n if (key in details) {\n Object.assign(acc, details[key as keyof typeof details]);\n }\n\n return acc;\n },\n {\n isVerified: false,\n isChatOwner: false,\n isChatSponsor: false,\n isChatModerator: false,\n } as {\n isVerified: boolean;\n isChatOwner: boolean;\n isChatSponsor: boolean;\n isChatModerator: boolean;\n },\n );\n\n break;\n }\n }\n\n return result as TwitchResult | YouTubeResult;\n}\n","import { StreamElements } from '../types/streamelements/main.js';\n\nconst LOCAL_SE_API: StreamElements.SE_API & { store: { list: Record<string, any> } } = {\n getOverlayStatus: () => {\n return {\n isEditorMode: false,\n muted: false,\n };\n },\n resumeQueue: () => {},\n responses: {} as Record<string, any>,\n sendMessage(message: string, data: object) {},\n counters: {\n get(key: string): number | null {\n return null;\n },\n },\n sanitize(message: string): string {\n return message;\n },\n cheerFilter(message: string): string {\n return message;\n },\n setField(key: string, value: string | number | boolean | undefined, reload: boolean) {},\n\n store: {\n set: function (name: string, obj: any) {\n this.list[name] = obj;\n\n localStorage.setItem('SE_API-STORE', JSON.stringify(LOCAL_SE_API.store.list));\n },\n get: async function (name: string) {\n if (this.list[name]) return this.list[name];\n else return null;\n },\n list: {} as Record<string, any>,\n },\n};\n\nexport async function initializeLocalSEAPI() {\n let lastStore = localStorage.getItem('SE_API-STORE') ?? '';\n\n let result = lastStore ? JSON.parse(lastStore) : {};\n\n LOCAL_SE_API.store.list = result;\n\n return LOCAL_SE_API;\n}\n","/**\n * EventProvider class for managing event listeners and emitters.\n * This class allows you to register event listeners, emit events, and manage event subscriptions.\n * @example\n * ```typescript\n * interface TestEvents {\n * load: [event: { type: 'load' }];\n * event: [event: { type: 'event' }];\n * };\n *\n * class Test extends EventProvider<TestEvents> {}\n *\n * const test = new Test();\n * test.once('load', (data) => {});\n * test.emit('load', { type: 'load' });\n *\n * test.on('event', (data) => {});\n * test.emit('event', { type: 'event' });\n * ```\n */\nexport class EventProvider<EventMap extends Record<string, any[]> = Record<string, any[]>> {\n /**\n * Stores registered event listeners.\n */\n private registeredEvents: { [K in keyof EventMap]?: Array<(this: this, ...args: EventMap[K]) => any> } = {};\n\n /**\n * Emits an event to all registered listeners.\n * Returns an array of return values from the listeners.\n * @param eventName The name of the event.\n * @param args Arguments to pass to the listeners.\n */\n emit<K extends keyof EventMap>(eventName: K, ...args: EventMap[K]): any[] {\n const listeners = this.registeredEvents[eventName] || [];\n\n return listeners.map((listener) => listener.apply(this, args));\n }\n\n /**\n * Registers an event listener.\n * @param eventName The name of the event.\n * @param callback The callback function.\n */\n on<K extends keyof EventMap>(eventName: K, callback: (this: this, ...args: EventMap[K]) => any): this {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function');\n }\n\n if (!this.registeredEvents[eventName]) {\n this.registeredEvents[eventName] = [];\n }\n\n this.registeredEvents[eventName]!.push(callback);\n\n return this;\n }\n\n /**\n * Removes a specific event listener.\n * @param eventName The name of the event.\n * @param callback The callback function to remove.\n */\n off<K extends keyof EventMap>(eventName: K, callback?: (this: this, ...args: EventMap[K]) => any): this {\n const listeners = this.registeredEvents[eventName] || [];\n\n if (!callback) {\n this.registeredEvents[eventName] = [];\n\n return this;\n }\n\n this.registeredEvents[eventName] = listeners.filter((fn) => fn !== callback);\n\n return this;\n }\n\n /**\n * Registers a listener that is executed only once.\n * @param eventName The name of the event.\n * @param callback The callback function.\n */\n once<K extends keyof EventMap>(eventName: K, callback: (this: this, ...args: EventMap[K]) => any): this {\n const wrapper = (...args: EventMap[K]) => {\n this.off(eventName, wrapper);\n callback.apply(this, args);\n };\n\n this.on(eventName, wrapper);\n\n return this;\n }\n\n /**\n * Removes all listeners for a specific event.\n * @param eventName The name of the event.\n */\n removeAllListeners<K extends keyof EventMap>(eventName: K): this {\n this.registeredEvents[eventName] = [];\n\n return this;\n }\n}\n","import { StreamElements } from '../types/streamelements/main.js';\nimport { EventProvider } from './EventProvider.js';\nimport { USE_SE_API } from '../index.js';\nimport { PathValue } from './helpers.js';\n\ntype UseStorageEvents<T> = {\n load: [T | null];\n update: [T];\n};\n\ntype UseStorageOptions<T> = {\n id?: string;\n data: T;\n};\n\nexport var usedStorages: Array<useStorage<any>> = [];\n\nexport class useStorage<T extends Record<string, any>> extends EventProvider<UseStorageEvents<T>> {\n /**\n * The unique identifier for the storage instance.\n */\n public id: string = 'default';\n\n public loaded: boolean = false;\n\n public data!: T;\n\n constructor(options: UseStorageOptions<T>) {\n super();\n\n this.id = options.id || this.id;\n this.data = options.data ?? ({} as T);\n\n usedStorages.push(this);\n\n this.start();\n }\n\n SE_API: StreamElements.SE_API | null = null;\n\n private start() {\n USE_SE_API?.then((se) => {\n this.SE_API = se;\n\n se!.store\n .get<T>(this.id)\n .then((save) => {\n this.data = save ?? this.data;\n\n this.loaded = true;\n\n this.emit('load', this.data);\n\n if (JSON.stringify(this.data) !== JSON.stringify(save)) {\n this.emit('update', this.data);\n }\n })\n .catch(() => {\n this.loaded = true;\n\n this.emit('load', this.data);\n });\n });\n\n // if (!USE_SE_API || !USE_SE_API.store) {\n // throw new Error('SE_API.store is not available');\n // }\n }\n\n /**\n * Saves the current data to storage.\n * @param data Data to save (defaults to current)\n */\n private save(data: T = this.data): void {\n if (this.loaded && this.SE_API) {\n this.data = data;\n\n this.SE_API.store.set<T>(this.id, this.data);\n\n this.emit('update', this.data);\n }\n }\n\n /**\n * Updates the storage data and emits an update event\n * @param data Data to update (defaults to current)\n */\n public update(data: T = this.data): void {\n if (this.loaded && JSON.stringify(this.data) !== JSON.stringify(data)) {\n this.data = { ...this.data, ...data };\n\n this.save(this.data);\n }\n }\n\n /**\n * Adds a value to the storage at the specified path.\n * @param path Path to add the value to\n * @param value Value to add\n */\n public add<P extends string>(path: P, value: PathValue<T, P>): void {\n if (!this.loaded) return;\n\n useStorage.setByPath(this.data, path, value);\n\n this.save(this.data);\n }\n\n /**\n * Clears all data from the storage.\n */\n public clear(): void {\n if (this.loaded) {\n this.data = {} as T;\n\n this.save(this.data);\n }\n }\n\n /**\n * Sets a value in the storage at the specified path.\n * @param obj The object to set the value in\n * @param path The path to set the value at\n * @param value The value to set\n * @returns The updated object\n */\n static setByPath<P extends string, T extends object>(obj: T, path: P, value: PathValue<T, P>): void {\n const keys = path.split('.');\n let current: any = obj;\n\n for (let i = 0; i < keys.length - 1; i++) {\n if (typeof current[keys[i]] !== 'object' || current[keys[i]] == null) {\n current[keys[i]] = {};\n }\n\n current = current[keys[i]];\n }\n\n current[keys[keys.length - 1]] = value;\n\n return current;\n }\n\n public override on<K extends keyof UseStorageEvents<T>>(eventName: K, callback: (this: useStorage<T>, ...args: UseStorageEvents<T>[K]) => void): this {\n if (eventName === 'load' && this.loaded) {\n callback.apply(this, [this.data]);\n\n return this;\n }\n\n super.on(eventName, callback);\n\n return this;\n }\n}\n","import { ClientEvents as events, Provider } from '../types/client.js';\nimport { StreamElements } from '../types/streamelements/main.js';\nimport { EventProvider } from '../utils/EventProvider.js';\nimport { useStorage } from '../utils/useStorage.js';\nimport { Command } from '../actions/command.js';\nimport { Button } from '../actions/button.js';\nimport { Alejo } from '../types/alejo.js';\n\ntype ClientEvents = {\n load: [event: StreamElements.Event.onWidgetLoad];\n action: [action: Button | Command, type: 'created' | 'executed' | 'removed'];\n session: [session: StreamElements.Session.Data];\n event:\n | [provider: 'streamelements', event: StreamElements.Event.Provider.StreamElements.Events]\n | [provider: 'twitch', event: StreamElements.Event.Provider.Twitch.Events]\n | [provider: 'youtube', event: StreamElements.Event.Provider.YouTube.Events]\n | [provider: 'kick', event: StreamElements.Event.Provider.Kick.Events]\n | [provider: 'facebook', event: StreamElements.Event.Provider.Facebook.Events];\n};\n\nexport type ClientStorageOptions<T> = {\n value: T;\n timestamp: number;\n expire: number;\n};\n\ntype ClientStorage = {\n user: Record<string, ClientStorageOptions<string>>;\n avatar: Record<string, ClientStorageOptions<string>>;\n pronoun: Record<string, ClientStorageOptions<Alejo.Pronouns.name>>;\n emote: Record<string, ClientStorageOptions<string>>;\n};\n\ntype ClientOptions = {\n id?: string;\n};\n\nexport class Client extends EventProvider<ClientEvents> {\n public id: string = 'default';\n\n public storage!: useStorage<ClientStorage>;\n\n public fields: StreamElements.Event.onWidgetLoad['fieldData'] = {};\n\n public session!: StreamElements.Session.Data;\n\n public loaded: boolean = false;\n\n constructor(options: ClientOptions) {\n super();\n\n this.id = options.id || this.id;\n\n this.storage = new useStorage({\n id: this.id,\n data: {\n user: {},\n avatar: {},\n pronoun: {},\n emote: {},\n },\n });\n\n window.client = this;\n }\n\n public actions: {\n commands: Command[];\n buttons: Button[];\n } = {\n commands: [],\n buttons: [],\n };\n\n public details!: {\n provider: Provider | 'local';\n user: StreamElements.Event.onWidgetLoad['channel'];\n currency: StreamElements.Event.onWidgetLoad['currency'];\n overlay: StreamElements.Event.onWidgetLoad['overlay'];\n };\n\n public cache: { avatar: number; pronoun: number; emote: number } = {\n avatar: 30,\n pronoun: 30,\n emote: 30,\n };\n\n override on<K extends keyof ClientEvents>(eventName: K, callback: (this: Client, ...args: ClientEvents[K]) => void): this {\n if (eventName === 'load' && this.loaded) {\n callback.apply(this, [\n {\n channel: this.details.user,\n currency: this.details.currency,\n fieldData: this.fields,\n recents: [],\n session: {\n data: this.session,\n settings: {\n autoReset: false,\n calendar: false,\n resetOnStart: false,\n },\n },\n overlay: this.details.overlay,\n emulated: false,\n } as StreamElements.Event.onWidgetLoad,\n ] as unknown as ClientEvents[K]);\n\n return this;\n }\n\n super.on(eventName, callback);\n\n return this;\n }\n}\n","import { StreamElements } from '../types/streamelements/main.js';\nimport { Client } from '../client/client.js';\nimport { logger } from '../index.js';\n\ninterface CommandOptions {\n prefix?: string;\n name: string;\n description?: string;\n arguments?: boolean;\n run: (this: Client, args: string[], event: CommandEvent) => void;\n test?: string;\n aliases?: string[];\n permissions?: string[];\n admins?: string[];\n}\n\ntype CommandEvent =\n | { provider: 'twitch'; data: StreamElements.Event.Provider.Twitch.Message }\n | { provider: 'youtube'; data: StreamElements.Event.Provider.YouTube.Message }\n | { provider: 'kick'; data: any };\n\nexport class Command {\n prefix: string = '!';\n\n name!: string;\n description!: string;\n\n arguments: boolean = false;\n\n test: string = `${this.prefix}${this.name} arg1 arg2`;\n\n aliases: string[] = [];\n permissions?: string[] | boolean = undefined;\n admins: string[] = [];\n\n constructor(options: CommandOptions) {\n if (!(window.client instanceof Client)) return;\n\n this.prefix = options.prefix ?? this.prefix;\n this.name = options.name;\n this.description = options.description ?? this.description;\n this.arguments = options.arguments ?? this.arguments;\n\n this.run = options.run;\n\n this.test = options.test ?? this.test;\n this.aliases = options.aliases ?? this.aliases;\n this.permissions = options.permissions ?? this.permissions;\n this.admins = options.admins ?? this.admins;\n\n // Register the command in the client actions\n window.client.actions.commands.push(this);\n\n window.client.emit('action', this, 'created');\n }\n\n run(this: Client, args: string[], event: CommandEvent): void {}\n\n verify(nickname: string, roles: string[], args: string[]): boolean {\n if (this.arguments === true && (!args || !args.length)) {\n return false;\n }\n\n if (this.admins.some((a) => nickname.toLocaleLowerCase() === a.toLocaleLowerCase())) {\n return true;\n }\n\n if (this.permissions === true || typeof this.permissions === 'undefined' || (Array.isArray(this.permissions) && !this.permissions.length)) {\n return false;\n }\n\n if (\n Array.isArray(this.permissions) &&\n this.permissions.some((p) => nickname.toLowerCase() === p.toLowerCase() || roles.map((r) => r.toLowerCase()).includes(p.toLowerCase()))\n ) {\n return true;\n }\n\n return false;\n }\n\n parse(text: string, event: CommandEvent): boolean {\n if (!(window.client instanceof Client)) return false;\n\n const args = text\n .replace(this.prefix, '')\n .split(' ')\n .slice(1)\n .map((a) => a.trim());\n\n var nickname: string = '';\n var roles: string[] = [];\n\n const rAliases = { bits: 'cheer', premium: 'prime' };\n\n switch (event.provider) {\n case 'twitch': {\n const data = event.data;\n\n nickname = data.event.data.nick || data.event.data.displayName;\n\n if (data.event.data.tags?.badges) {\n const tags = data.event.data.tags.badges.toString().replace(/\\/\\d+/g, '').split(',');\n\n roles = tags.map((t) => (t in rAliases ? rAliases[t as keyof typeof rAliases] : t));\n }\n\n break;\n }\n case 'youtube': {\n const data = event.data;\n\n const rMap = {\n isVerified: 'verified',\n isChatOwner: 'owner',\n isChatSponsor: 'sponsor',\n isChatModerator: 'moderator',\n };\n\n nickname = data.event.data.nick || data.event.data.displayName;\n\n roles = Object.entries(data.event.data.authorDetails)\n .filter(([k, v]) => k.startsWith('is') && v)\n .map(([k]) => rMap[k as keyof typeof rMap])\n .filter(Boolean);\n\n break;\n }\n case 'kick': {\n return false;\n\n break;\n }\n }\n\n const verify = this.verify(nickname, roles, args);\n\n if (verify === true) {\n this.run.apply(window.client, [args, event]);\n }\n\n return verify;\n }\n\n remove(): void {\n if (!(window.client instanceof Client)) return;\n\n const index = window.client.actions.commands.indexOf(this);\n\n if (index > -1) {\n window.client.actions.commands.splice(index, 1);\n window.client.emit('action', this, 'removed');\n }\n }\n\n static execute(received: CommandEvent): boolean {\n if (!(window.client instanceof Client)) return false;\n\n const data = received.data;\n\n try {\n if (window.client.actions.commands.length && window.client.actions.commands.some((c) => data.event.data.text.startsWith(c.prefix))) {\n const commands = window.client.actions.commands.filter((c) => {\n var nameAndAliases = [c.name, ...(c.aliases ?? [])];\n var commandMatch = data.event.data.text.replace(c.prefix, '').split(' ')[0];\n\n return nameAndAliases.includes(commandMatch);\n });\n\n if (commands.length && commands.every((command) => command instanceof Command)) {\n commands.forEach((command) => {\n command.parse(data.event.data.text, received);\n\n window.client.emit('action', command, 'executed');\n\n logger.received(`Command executed: ${data.event.data.text} by ${data.event.data.nick || data.event.data.displayName}`, data);\n });\n\n return true;\n }\n }\n } catch (error) {\n return false;\n } finally {\n return false;\n }\n }\n}\n","import { EventProvider } from './EventProvider.js';\nimport { Client } from '../client/client.js';\nimport { logger } from '../index.js';\n\ntype QueueEvents<T> = {\n load: [];\n cancel: [];\n update: [queue: QueueItem<T>[], priorityQueue: QueueItem<T>[], history: QueueItem<T>[], timeouts: Array<ReturnType<typeof setTimeout>>];\n process: [item: QueueItem<T>, queue: useQueue<T>];\n};\n\ntype QueueProps = {\n isoDate: string;\n isLoop: boolean;\n isPriority: boolean;\n isImmediate: boolean;\n};\n\ntype QueueItem<T> = { value: T } & QueueProps;\n\ntype QueueProcessor<T> = (item: T, queue: useQueue<T>) => Promise<any>;\n\ntype QueueDuration = number | boolean | undefined;\n\ninterface QueueOptions<T> {\n /**\n * Duration between processing each item in milliseconds. Set to `0` or `false` for immediate processing.\n */\n duration: QueueDuration;\n /**\n * Function to process each item in the queue.\n */\n processor: QueueProcessor<T>;\n}\n\nexport class useQueue<T> extends EventProvider<QueueEvents<T>> {\n queue: QueueItem<T>[] = [];\n priorityQueue: QueueItem<T>[] = [];\n history: QueueItem<T>[] = [];\n\n private timeouts: Array<ReturnType<typeof setTimeout>> = [];\n\n public running: boolean = false;\n\n public duration: QueueDuration = undefined;\n\n private loaded: boolean = false;\n\n public processor!: QueueProcessor<T>;\n\n constructor(options: QueueOptions<T>) {\n if (!(window.client instanceof Client)) return;\n\n super();\n\n this.duration = options.duration;\n this.processor = options.processor;\n\n window.client.on('load', () => {\n this.emit('load');\n\n this.loaded = true;\n });\n }\n\n public enqueue(value: T, options: Partial<QueueProps> = {}): this {\n const item: QueueItem<T> = {\n isoDate: new Date().toISOString(),\n isLoop: options?.isLoop ?? false,\n isPriority: options?.isPriority ?? false,\n isImmediate: options?.isImmediate ?? false,\n value,\n };\n\n const hasItems = this.hasItems();\n\n if (item.isPriority && item.isImmediate) {\n this.cancel();\n this.priorityQueue.unshift(item);\n } else {\n const targetQueue = item.isPriority ? this.priorityQueue : this.queue;\n\n targetQueue.push(item);\n }\n\n // Always process immediately if it's not running\n if (this.running === false && hasItems === false) {\n this.run();\n }\n\n this.emit('update', this.queue, this.priorityQueue, this.history, this.timeouts);\n\n return this;\n }\n\n private async run() {\n if (!this.hasItems()) {\n this.running = false;\n return;\n }\n\n this.running = true;\n\n await this.next();\n\n if (typeof this.duration === 'number' && this.duration > 0) {\n this.timeouts.push(setTimeout(() => this.run(), this.duration));\n } else if (this.duration === 0 || (this.duration !== -1 && this.duration !== false)) {\n this.run();\n }\n }\n\n private async next() {\n const nextItem = this.priorityQueue.length > 0 ? this.priorityQueue.shift() : this.queue.shift();\n\n if (!nextItem) {\n this.running = false;\n\n return;\n }\n\n try {\n await this.processor.apply(this, [nextItem.value, this]);\n\n this.emit('process', nextItem, this);\n } catch (error) {\n logger.error(`Error during item processing: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n this.history.push(nextItem);\n\n const targetQueue = nextItem.isPriority ? this.priorityQueue : this.queue;\n\n if (nextItem.isLoop) targetQueue.push(nextItem);\n }\n\n public resume() {\n if (this.running) {\n this.cancel();\n }\n\n if (this.hasItems()) this.run();\n\n return this;\n }\n\n public update(save: Partial<useQueue<T>>): this {\n this.queue = save.queue ?? this.queue;\n this.priorityQueue = save.priorityQueue ?? this.priorityQueue;\n this.history = save.history ?? this.history;\n\n if (this.hasItems() && this.running === false) {\n window.client?.on('load', () => this.run());\n }\n\n return this;\n }\n\n public cancel() {\n if (this.running) {\n this.timeouts.forEach((timeout) => clearTimeout(timeout));\n this.timeouts = [];\n this.running = false;\n\n this.emit('cancel');\n }\n }\n\n public hasItems(): boolean {\n return this.queue.length > 0 || this.priorityQueue.length > 0;\n }\n\n public override on<K extends keyof QueueEvents<T>>(eventName: K, callback: (this: useQueue<T>, ...args: QueueEvents<T>[K]) => void): this {\n if (eventName === 'load' && this.loaded) {\n callback.apply(this);\n\n return this;\n }\n\n super.on(eventName, callback);\n\n return this;\n }\n}\n","import { Client } from '../client/client.js';\nimport { logger } from '../index.js';\n\ninterface ButtonOptions {\n field: string | ((field: string, value: string | boolean | number) => boolean);\n template?: string;\n run: (field: string, value: string | boolean | number) => void;\n}\n\nexport class Button {\n field: ButtonOptions['field'] = 'button';\n\n template: string = 'button';\n\n run!: ButtonOptions['run'];\n\n constructor(options: ButtonOptions) {\n if (!(window.client instanceof Client)) return;\n\n this.field = options.field ?? this.field;\n this.template = options.template ?? this.template;\n\n this.run = options.run;\n\n // Register the button in the client actions\n window.client.actions.buttons.push(this);\n\n window.client.emit('action', this, 'created');\n }\n\n parse(field: string, value: string | boolean | number): Button {\n /**\n * Extract the actual field name by removing the template part from the provided field.\n * For example, if the template is \"button-{id}\" and the field is \"button-123\",\n * this will extract \"123\" as the actual field name.\n */\n var f = field.replace(typeof this.field === 'string' ? this.field : (this.template.replace(/\\{[^}]*\\}/g, '') ?? ''), '').trim();\n\n try {\n this.run.apply(window.client, [f.length ? f : (field ?? field), value]);\n } catch (error) {\n throw new Error(`Error running button \"${this.field}\": ${error instanceof Error ? error.message : error}`);\n }\n\n return this;\n }\n\n remove(): void {\n if (!(window.client instanceof Client)) return;\n\n const index = window.client.actions.buttons.indexOf(this);\n\n if (index > -1) {\n window.client.actions.buttons.splice(index, 1);\n window.client.emit('action', this, 'removed');\n }\n }\n\n static execute(field: string, value: string | boolean | number): boolean {\n try {\n if (!(window.client instanceof Client)) return false;\n\n if (window.client.actions.buttons.length) {\n const buttons = window.client.actions.buttons.filter((b) => {\n /**\n * Check if the button's field matches the provided field.\n */\n if (typeof b.field === 'string') return b.field === field;\n /**\n * If the button's field is a function, call it with the provided field and value to determine a match.\n */\n if (typeof b.field === 'function') return b.field(field, value);\n\n return false;\n });\n\n if (buttons.length && buttons.every((b) => b instanceof Button)) {\n buttons.forEach((button) => {\n try {\n button.parse(field, value);\n\n window.client.emit('action', button, 'executed');\n\n logger.received(`Button executed: ${field}${value ? ` with value: ${value}` : ''}`);\n } catch (error) {\n logger.error(`Error executing button \"${field}\": ${error instanceof Error ? error.message : error}`);\n }\n });\n\n return true;\n }\n }\n } catch (error) {\n return false;\n } finally {\n return false;\n }\n }\n}\n","interface Theme {\n color?: string;\n background?: string;\n bold?: boolean;\n italic?: boolean;\n fontSize?: number;\n icon?: string;\n}\n\ninterface Options {\n enabled?: boolean;\n prefix?: string;\n}\n\ntype LogMethod = (...args: unknown[]) => void;\n\nexport class Logger {\n private readonly enabled: boolean;\n private readonly prefix: string;\n\n readonly error = this.apply({\n color: '#721c24',\n background: '#f8d7da',\n bold: true,\n italic: false,\n icon: '✖',\n });\n\n readonly warn = this.apply({\n color: '#856404',\n background: '#fff3cd',\n bold: true,\n italic: false,\n fontSize: 20,\n });\n\n readonly success = this.apply({\n color: '#155724',\n background: '#d4edda',\n bold: true,\n italic: false,\n fontSize: 18,\n icon: '✔',\n });\n\n readonly info = this.apply({\n color: '#0c5460',\n background: '#d1ecf1',\n fontSize: 12,\n icon: 'ℹ',\n });\n\n readonly debug = this.apply({\n color: '#6c757d',\n background: 'transparent',\n fontSize: 11,\n icon: '●',\n });\n\n readonly alert = this.apply({\n color: '#856404',\n background: '#fff3cd',\n bold: true,\n italic: false,\n fontSize: 20,\n icon: '⚠',\n });\n\n readonly status = this.apply({\n color: '#0c5460',\n background: '#d1ecf1',\n bold: true,\n italic: false,\n fontSize: 12,\n icon: '·',\n });\n\n readonly received = this.apply({\n color: '#E6BBFF',\n background: 'transparent',\n bold: false,\n italic: false,\n fontSize: 14,\n icon: '⬇',\n });\n\n readonly simple = this.apply({\n color: '#f6c6cb',\n background: 'transparent',\n bold: false,\n italic: false,\n fontSize: 14,\n icon: '☼',\n });\n\n constructor(options: Options = {}) {\n this.enabled = options.enabled ?? true;\n this.prefix = options.prefix ? `[${options.prefix}]` : '';\n }\n\n public apply(theme: Theme): LogMethod {\n const style = this.style(theme);\n const icon = theme.icon ? `${theme.icon} ` : '';\n\n return (...args: unknown[]): void => {\n if (!this.enabled || typeof console === 'undefined') return;\n\n const prefix = this.prefix ? `${this.prefix} ` : '';\n\n const primitives: unknown[] = [];\n const objects: unknown[] = [];\n\n args.forEach((arg) => {\n if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {\n primitives.push(arg);\n } else {\n objects.push(arg);\n }\n });\n\n // Log with style\n\n if (primitives.length > 0) {\n const message = primitives.join(' ');\n console.log(`%c${icon}${prefix}${message}`, style, ...objects);\n } else if (objects.length > 0) {\n console.log(`%c${icon}${prefix}`, style, ...objects);\n }\n };\n }\n\n private style(theme: Theme): string {\n const styles: string[] = [];\n\n if (theme.background && theme.background !== 'transparent') {\n styles.push(`background: ${theme.background}`);\n styles.push('padding: 2px 6px');\n styles.push('border-radius: 3px');\n }\n if (theme.color) styles.push(`color: ${theme.color}`);\n if (theme.bold) styles.push('font-weight: bold');\n if (theme.italic) styles.push('font-style: italic');\n if (theme.fontSize) styles.push(`font-size: ${theme.fontSize}px`);\n\n return styles.join('; ');\n }\n\n public group(label: string): void {\n if (!this.enabled || !console.group) return;\n\n console.group(label);\n }\n\n public groupCollapsed(label: string): void {\n if (!this.enabled || !console.groupCollapsed) return;\n\n console.groupCollapsed(label);\n }\n\n public groupEnd(): void {\n if (!this.enabled || !console.groupEnd) return;\n\n console.groupEnd();\n }\n\n public table(data: unknown): void {\n if (!this.enabled || !console.table) return;\n\n console.table(data);\n }\n\n public time(label: string): void {\n if (!this.enabled || !console.time) return;\n\n console.time(label);\n }\n\n public timeEnd(label: string): void {\n if (!this.enabled || !console.timeEnd) return;\n\n console.timeEnd(label);\n }\n}\n","import { ClientEvents, Provider } from '../types/client.js';\nimport { Client, ClientStorageOptions } from './client.js';\nimport { usedStorages } from '../utils/useStorage.js';\nimport { Command } from '../actions/command.js';\nimport { Button } from '../actions/button.js';\n\nwindow.addEventListener('load', () => {\n if (window.client instanceof Client) {\n // Do nothing, just ensuring the client is initialized\n }\n});\n\nwindow.addEventListener('onWidgetLoad', async (data) => {\n const { detail } = data;\n\n if (window.client instanceof Client) {\n const client = window.client;\n\n client.fields = detail.fieldData;\n client.session = detail.session.data;\n\n client.details = {\n ...client.details,\n user: detail.channel,\n currency: detail.currency,\n overlay: detail.overlay,\n };\n\n if (detail.channel.id && !detail.emulated) {\n await fetch(`https://api.streamelements.com/kappa/v2/channels/${detail.channel.id}/`)\n .then((res) => res.json())\n .then((profile) => {\n if (profile.provider) {\n client.details.provider = profile.provider;\n\n return profile.provider;\n } else {\n client.details.provider = 'local';\n }\n })\n .catch(() => {\n client.details.provider = 'local';\n });\n } else {\n client.details.provider = 'local';\n }\n\n client.emit('load', detail);\n\n client.loaded = true;\n\n client.storage.on('load', (data) => {\n if (data) {\n const clearExpired = <T extends Record<string, ClientStorageOptions<string>>>(data: T) => {\n const now = Date.now();\n const cleanedData: any = {};\n\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const entry = data[key];\n\n if (entry.expire && entry.expire > now) {\n cleanedData[key] = entry;\n }\n }\n }\n\n return cleanedData as T;\n };\n\n const users = clearExpired(data['user'] || {});\n const avatars = clearExpired(data['avatar'] || {});\n const pronouns = clearExpired(data['pronoun'] || {});\n const emotes = clearExpired(data['emote'] || {});\n\n client.storage.update({\n user: users,\n avatar: avatars,\n pronoun: pronouns,\n emote: emotes,\n });\n }\n\n if (detail.channel.providerId.length) {\n client.storage.add(`avatar.${detail.channel.providerId.toLowerCase()}`, {\n value: detail.channel.avatar,\n timestamp: Date.now(),\n expire: Date.now() + client.cache.avatar * 60 * 60 * 1000,\n });\n }\n });\n }\n});\n\nwindow.addEventListener('onSessionUpdate', (data) => {\n const { detail } = data;\n\n if (window.client instanceof Client) {\n const client = window.client;\n\n client.session = detail.session;\n\n client.emit('session', detail.session);\n }\n});\n\nwindow.addEventListener('onEventReceived', ({ detail }) => {\n if (window.client instanceof Client) {\n // @ts-ignore\n var provider: Provider = detail.event?.provider || detail.event?.service || detail.event?.data?.provider || window.client.details.provider;\n\n const actAsStreamElements = ['kvstore:update', 'bot:counter', 'alertService:toggleSound', 'event:skip', 'tip-latest', 'event:test'];\n\n if (actAsStreamElements.some((l) => l === detail.listener)) provider = 'streamelements';\n\n const received = { provider: provider, data: detail } as ClientEvents;\n\n switch (received.provider) {\n case 'streamelements': {\n const data = received.data;\n\n switch (data.listener) {\n case 'tip-latest': {\n const event = data.event;\n\n break;\n }\n case 'event:skip': {\n const event = data.event;\n\n break;\n }\n case 'event:test': {\n switch (data.event.listener) {\n case 'widget-button': {\n const event = data.event;\n\n Button.execute(event.field, event.value);\n\n break;\n }\n case 'subscriber-latest': {\n const event = data.event;\n break;\n }\n\n // ... alot more\n }\n\n break;\n }\n case 'kvstore:update': {\n const event = data.event;\n\n if (usedStorages.length) {\n var storage = usedStorages.find((s) => s.id === event.data.key.replace('customWidget.', ''));\n\n if (storage) {\n storage.update(event.data.value);\n }\n }\n\n break;\n }\n case 'bot:counter': {\n const event = data.event;\n\n break;\n }\n case 'alertService:toggleSound': {\n const event = data.event;\n\n client.details.overlay.muted = Boolean(event.muted);\n\n break;\n }\n }\n\n window.client.emit('event', 'streamelements', received.data);\n\n break;\n }\n case 'twitch': {\n const data = received.data;\n\n switch (data.listener) {\n case 'delete-message': {\n const event = data.event;\n\n break;\n }\n case 'delete-messages': {\n const event = data.event;\n\n break;\n }\n case 'message': {\n const event = data.event;\n\n Command.execute({ provider: 'twitch', data: data });\n\n break;\n }\n case 'follower-latest': {\n const event = data.event;\n\n break;\n }\n case 'cheer-latest': {\n const event = data.event;\n\n break;\n }\n case 'subscriber-latest': {\n if (!data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // normal\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // gift\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && data.event.isCommunityGift) {\n // community gift spam\n const event = data.event;\n } else if (!data.event.gifted && data.event.bulkGifted && !data.event.isCommunityGift) {\n // community gift\n const event = data.event;\n }\n\n break;\n }\n case 'raid-latest': {\n const event = data.event;\n\n break;\n }\n }\n\n window.client.emit('event', 'twitch', received.data);\n\n break;\n }\n case 'youtube': {\n const data = received.data;\n\n switch (data.listener) {\n case 'message': {\n const event = data.event;\n\n Command.execute({ provider: 'youtube', data: data });\n\n break;\n }\n case 'subscriber-latest': {\n const event = data.event;\n\n break;\n }\n case 'sponsor-latest': {\n const event = data.event;\n\n if (!data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // normal\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // gift\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && data.event.isCommunityGift) {\n // community gift spam\n const event = data.event;\n } else if (!data.event.gifted && data.event.bulkGifted && !data.event.isCommunityGift) {\n // community gift\n const event = data.event;\n }\n\n break;\n }\n case 'superchat-latest': {\n const event = data.event;\n\n break;\n }\n }\n\n window.client.emit('event', 'youtube', received.data);\n\n break;\n }\n case 'kick': {\n const data = received.data;\n\n window.client.emit('event', 'kick', received.data);\n\n break;\n }\n case 'facebook': {\n const data = received.data;\n\n window.client.emit('event', 'facebook', received.data);\n\n break;\n }\n }\n }\n});\n","import { findEmotesInText, generateBadges, replaceEmotesWithHTML } from './utils/Message.js';\nimport { StreamElements } from './types/streamelements/main.js';\nimport { initializeLocalSEAPI } from './streamelements/api.js';\nimport { EventProvider } from './utils/EventProvider.js';\nimport { Simulation } from './simulation/simulation.js';\nimport { usedStorages, useStorage } from './utils/useStorage.js';\nimport { Command } from './actions/command.js';\nimport { useQueue } from './utils/useQueue.js';\nimport { Button } from './actions/button.js';\nimport { Client } from './client/client.js';\nimport { Logger } from './utils/Logger.js';\nimport './client/listener.js';\n\nexport * from './types/index.js';\n\nexport const USE_SE_API: Promise<StreamElements.SE_API> = typeof SE_API !== 'undefined' ? Promise.resolve(SE_API) : Promise.resolve(initializeLocalSEAPI());\n\nexport const logger = new Logger();\n\nexport const Tixyel = {\n USE_SE_API,\n Simulation,\n Client,\n logger,\n utils: { findEmotesInText, replaceEmotesWithHTML, generateBadges },\n modules: { Button, Command, EventProvider, useStorage, useQueue, Logger },\n data: { usedStorages },\n} as const;\n\ntype Main = typeof Tixyel;\n\ndeclare global {\n interface Window {\n Tixyel: Main;\n client: Client;\n }\n\n interface WindowEventMap {\n onWidgetLoad: CustomEvent<StreamElements.Event.onWidgetLoad>;\n onSessionUpdate: CustomEvent<StreamElements.Event.onSessionUpdate>;\n onEventReceived: CustomEvent<StreamElements.Event.onEventReceived>;\n }\n\n const Tixyel: Main;\n var client: Client;\n\n const SE_API: StreamElements.SE_API;\n}\n\nif (typeof window !== 'undefined') {\n window.Tixyel = Tixyel;\n}\n"],"names":["avatars","badges","emotes","acc","emote","e","messages","names","tts","items","tiers","css_color_names","youtube_emotes","Alejo","Pronouns","map","parseToRGBA","str","format","hex","r","g","b","a","match","h","s","l","hslToRgb","canvas","ctx","rgbaToHex","rgba","includeAlpha","toHex","n","rgbToHsl","max","min","delta","hue2rgb","p","q","t","findClosestColorName","cssColors","Simulation","closestColor","minDistance","colorName","cr","cg","cb","distance","opacity","color","result","decimal","percentage","valid","hsl","type","alpha","float","rand","threshold","length","chars","i","arr","index","start","end","daysAgo","past","c","string","pattern","callback","promises","groups","promise","replacements","template","values","options","mergeSpanStyles","flatten","k","v","username","amount","REGEX","HTML_MODIFIERS","value","param","MODIFIERS","ALIASES","applyModifier","name","canonical","key","aliases","alias","use","replaceAll","fullMatch","modifier","newValue","parseModifiers","len","parseText","stopChar","out","parseModifier","paramStart","_","num","CARDINALS","ORDINALS","SUFFIXES","SCALES","SCALES_ORD","rem100","rem10","below100","kind","decade","single","tensPart","unitPart","below1000","hundreds","rest","parts","lastNonZeroIndex","scale","segment","ordScale","outerStyle","innerHTML","innerStyle","content","element","returnOnly","customParent","base","parent","logger","parentRect","elementWidth","elementHeight","scaleX","scaleY","finalScale","minScaleX","minScaleY","minScale","htmlString","startIndex","doc","charIndex","processNode","node","char","span","wrapper","clone","child","processed","childNode","body","obj","prefix","path","itemPath","types","available","generate","generateRecentData","config","generateObjectData","processedKey","processTypedConfig","session","subKey","subValue","fields","currency","currencies","provider","randomProvider","randomEvent","message","generateBadges","findEmotesInText","renderedText","replaceEmotesWithHTML","userId","time","avatar","tier","sender","addons","subTypes","subType","muted","data","event","listener","delay","ms","resolve","probability","total","val","sorted","cumulative","item","weight","fieldsFile","dataFiles","localFiles","file","res","customfields","load","text","searchIndex","before","after","imgUrl","current","badge","details","LOCAL_SE_API","reload","initializeLocalSEAPI","lastStore","EventProvider","eventName","args","listeners","fn","usedStorages","useStorage","USE_SE_API","se","save","keys","Client","Command","nickname","roles","rAliases","rMap","verify","received","commands","nameAndAliases","commandMatch","command","useQueue","hasItems","nextItem","error","targetQueue","timeout","Button","field","f","buttons","button","Logger","theme","style","icon","primitives","objects","arg","styles","label","detail","client","profile","clearExpired","now","cleanedData","entry","users","pronouns","storage","Tixyel"],"mappings":"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,EAAK,6CACL,EAAK,6CACL,EAAK,4CAAA,EAEP,MAAS,IACT,IAAO,IACP,OAAU,CACR,EAAK,EACL,EAAK,EACL,MAAS,IACT,OAAU,GAAA,CACZ,CAEJ,CAAC,EAAE,OACD,CAACC,EAAKC,KACCD,EAAI,KAAME,GAAMA,EAAE,OAASD,EAAM,IAAI,GACxCD,EAAI,KAAK,CACP,GAAGC,EACH,MAAO,EACP,IAAK,CAAA,CACoC,EAGtCD,GAET,CAAA,CACF,ECt1CaG,GAAW,CACtB,kBACA,WACA,0BACA,uBACA,qBACA,MACA,8BACA,YACA,gCACA,iDACA,UACA,4BACA,qBACA,cACA,kCACA,gBACA,QACA,8BACA,sBACA,mCACA,8BACA,sCACA,kCACA,yBACA,0BACA,uBACA,qBACA,kCACA,4BACA,WACA,sCACA,wBACA,UACA,qCACA,kCACA,iBACA,YACA,mBACA,8CACA,+BACA,cACA,wBACA,SACA,kBACA,cACA,qBACA,gBACA,0BACA,gBACA,YACF,ECnDaC,GAAQ,CAAC,QAAS,SAAU,UAAW,WAAY,WAAY,WAAY,YAAY,ECAvFC,GAAM,CACjB,QACA,SACA,UACA,QACA,SACA,OACA,YACA,UACA,UACA,OACA,MACA,QACA,MACA,QACA,QACA,MACA,UACA,SACA,SACA,UACA,QACA,SACA,OACA,OACA,UACA,SACA,UACA,WACA,SACA,MACA,UACA,WACA,UACA,QACA,UACA,WACA,SACA,SACA,OACA,SACA,MACA,UACA,QACA,OACA,QACA,MACA,UACA,SACA,QACA,UACA,OACA,OACA,OACA,UACA,QACA,QACA,QACA,SACA,SACA,WACA,SACA,SACA,OACA,KACA,WACA,QACA,OACA,QACA,SACA,UACA,SACA,QACA,SACA,SACA,OACA,WACA,QACA,UACA,OACA,UACA,UACA,YACA,UACA,QACA,WACA,OACA,OACF,ECxFaC,GAAe,CAAA,ECAfC,GAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAO,ECAxCC,GAAkB,CAC7B,YACA,eACA,OACA,aACA,QACA,QACA,SACA,QACA,iBACA,OACA,aACA,QACA,YACA,YACA,aACA,YACA,QACA,iBACA,WACA,UACA,OACA,WACA,WACA,gBACA,WACA,YACA,WACA,YACA,cACA,iBACA,aACA,aACA,UACA,aACA,eACA,gBACA,gBACA,gBACA,gBACA,aACA,WACA,cACA,UACA,UACA,aACA,YACA,cACA,cACA,UACA,YACA,aACA,OACA,YACA,OACA,QACA,cACA,OACA,WACA,UACA,YACA,SACA,QACA,QACA,WACA,gBACA,YACA,eACA,YACA,aACA,YACA,uBACA,YACA,aACA,YACA,YACA,cACA,gBACA,eACA,iBACA,iBACA,iBACA,cACA,OACA,YACA,QACA,UACA,SACA,mBACA,aACA,eACA,eACA,iBACA,kBACA,oBACA,kBACA,kBACA,eACA,YACA,YACA,WACA,cACA,OACA,UACA,QACA,YACA,SACA,YACA,SACA,gBACA,YACA,gBACA,gBACA,aACA,YACA,OACA,OACA,OACA,aACA,SACA,gBACA,MACA,YACA,YACA,cACA,SACA,aACA,WACA,WACA,SACA,SACA,UACA,YACA,YACA,YACA,OACA,cACA,YACA,MACA,OACA,UACA,SACA,YACA,SACA,QACA,QACA,aACA,SACA,cACA,aACF,ECtJaC,GAAiB,CAC5B,CACE,QAAW,oDACX,UAAa,CAAC,8BAA8B,EAC5C,YAAe,CAAC,4BAA4B,EAC5C,MAAS,CACP,WAAc,CACZ,CACE,IAAO,8GACP,MAAS,GACT,OAAU,EAAA,EAEZ,CACE,IAAO,8GACP,MAAS,GACT,OAAU,EAAA,CACZ,EAEF,cAAiB,CACf,kBAAqB,CACnB,MAAS,4BAAA,CACX,CACF,EAEF,cAAiB,GACjB,MAAS,CAAA,EAEX,CACE,QAAW,mDACX,UAAa,CAAC,+BAA+B,EAC7C,YAAe,CAAC,6BAA6B,EAC7C,MAAS,CACP,WAAc,CACZ,CACE,IAAO,+GACP,MAAS,GACT,OAAU,EAAA,EAEZ,CACE,IAAO,+GACP,MAAS,GACT,OAAU,EAAA,CACZ,EAEF,cAAiB,CACf,kBAAqB,CACnB,MAAS,6BAAA,CACX,CAC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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/simulation/data/avatars.ts","../src/simulation/data/badges.ts","../src/simulation/data/emotes.ts","../src/simulation/data/messages.ts","../src/simulation/data/names.ts","../src/simulation/data/tts.ts","../src/simulation/data/items.ts","../src/simulation/data/tiers.ts","../src/simulation/data/css.ts","../src/simulation/data/youtube.ts","../src/utils/alejo.ts","../src/utils/color.ts","../src/simulation/simulation.ts","../src/utils/Message.ts","../src/streamelements/api.ts","../src/utils/EventProvider.ts","../src/utils/useStorage.ts","../src/client/client.ts","../src/actions/command.ts","../src/utils/useQueue.ts","../src/actions/button.ts","../src/utils/Logger.ts","../src/client/listener.ts","../src/index.ts"],"sourcesContent":["export const avatars = [\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/13e5fa74-defa-11e9-809c-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/dbdc9198-def8-11e9-8681-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/998f01ae-def8-11e9-b95c-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/de130ab0-def7-11e9-b668-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/ebe4cd89-b4f4-4cd9-adac-2f30151b4209-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/215b7342-def9-11e9-9a66-784f43822e80-profile_image-300x300.png',\n 'https://static-cdn.jtvnw.net/user-default-pictures-uv/ead5c8b2-a4c9-4724-b1dd-9f00b46cbd3d-profile_image-300x300.png',\n];\n","import { Twitch } from '../../types/twitch.js';\n\nexport const badges: Record<Twitch.roles, Twitch.badge> = {\n '100 bits': {\n type: '100 bits',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/09d93036-e7ce-431c-9a9e-7044297133f2/3',\n description: '100 bits badge',\n },\n 'no audio': {\n type: 'no audio',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/aef2cd08-f29b-45a1-8c12-d44d7fd5e6f0/3',\n description: 'Individuals with unreliable or no sound can select this badge',\n },\n 'no video': {\n type: 'no video',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/199a0dba-58f3-494e-a7fc-1fa0a1001fb8/3',\n description: 'Individuals with unreliable or no video can select this badge',\n },\n 'bot': {\n type: 'bot',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/df9095f6-a8a0-4cc2-bb33-d908c0adffb8/3',\n description: 'Twitch bot',\n },\n 'twitch staff': {\n type: 'twitch staff',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/d97c37bd-a6f5-4c38-8f57-4e4bef88af34/3',\n description: 'Twitch Staff',\n },\n 'admins': {\n type: 'admins',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/9ef7e029-4cdf-4d4d-a0d5-e2b3fb2583fe/3',\n description: 'Admins',\n },\n 'artist': {\n type: 'artist',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/4300a897-03dc-4e83-8c0e-c332fee7057f/3',\n description: 'Artist',\n },\n 'game developer': {\n type: 'game developer',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/85856a4a-eb7d-4e26-a43e-d204a977ade4/3',\n description: 'Game Developer',\n },\n 'prime': {\n type: 'prime',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/a1dd5073-19c3-4911-8cb4-c464a7bc1510/3',\n description: 'Prime',\n },\n 'turbo': {\n type: 'turbo',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/bd444ec6-8f34-4bf9-91f4-af1e3428d80f/3',\n description: 'Turbo',\n },\n 'subscriber': {\n type: 'subscriber',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3',\n description: 'Subscriber',\n },\n 'broadcaster': {\n type: 'broadcaster',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3',\n description: 'Broadcaster',\n },\n 'verified': {\n type: 'verified',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3',\n description: 'Verified',\n },\n 'moderator': {\n type: 'moderator',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3',\n description: 'Moderator',\n },\n 'vip': {\n type: 'vip',\n version: '1',\n url: 'https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3',\n description: 'VIP',\n },\n};\n","import { BttvEmote, SeventvEmote, TwitchEmote } from '../../types/emote.js';\n\nexport const emotes: Array<TwitchEmote | BttvEmote | SeventvEmote> = Object.values([\n {\n 'type': 'twitch',\n 'name': 'TheIlluminati',\n 'id': '145315',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/static/dark/3.0',\n },\n 'start': 0,\n 'end': 13,\n },\n {\n 'type': 'twitch',\n 'name': 'BrainSlug',\n 'id': '115233',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/115233/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/115233/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/115233/static/dark/3.0',\n },\n 'start': 14,\n 'end': 23,\n },\n {\n 'type': 'twitch',\n 'name': 'imGlitch',\n 'id': '112290',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/static/dark/3.0',\n },\n 'start': 24,\n 'end': 32,\n },\n {\n 'type': 'twitch',\n 'name': 'TakeNRG',\n 'id': '112292',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/112292/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/112292/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/112292/static/dark/3.0',\n },\n 'start': 33,\n 'end': 40,\n },\n {\n 'type': 'twitch',\n 'name': 'DxCat',\n 'id': '110734',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/110734/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/110734/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/110734/static/dark/3.0',\n },\n 'start': 41,\n 'end': 46,\n },\n {\n 'type': 'twitch',\n 'name': 'VoHiYo',\n 'id': '81274',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/81274/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/81274/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/81274/static/dark/3.0',\n },\n 'start': 47,\n 'end': 53,\n },\n {\n 'type': 'twitch',\n 'name': 'DoritosChip',\n 'id': '102242',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/static/dark/3.0',\n },\n 'start': 54,\n 'end': 65,\n },\n {\n 'type': 'twitch',\n 'name': 'KomodoHype',\n 'id': '81273',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/81273/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/81273/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/81273/static/dark/3.0',\n },\n 'start': 66,\n 'end': 76,\n },\n {\n 'type': 'twitch',\n 'name': 'duDudu',\n 'id': '62834',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/62834/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/62834/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/62834/static/dark/3.0',\n },\n 'start': 77,\n 'end': 83,\n },\n {\n 'type': 'twitch',\n 'name': 'CoolCat',\n 'id': '58127',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/58127/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/58127/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/58127/static/dark/3.0',\n },\n 'start': 84,\n 'end': 91,\n },\n {\n 'type': 'twitch',\n 'name': 'KappaPride',\n 'id': '55338',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/55338/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/55338/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/55338/static/dark/3.0',\n },\n 'start': 92,\n 'end': 102,\n },\n {\n 'type': 'twitch',\n 'name': 'BloodTrail',\n 'id': '69',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/69/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/69/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/69/static/dark/3.0',\n },\n 'start': 103,\n 'end': 113,\n },\n {\n 'type': 'twitch',\n 'name': 'PunchTrees',\n 'id': '47',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/47/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/47/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/47/static/dark/3.0',\n },\n 'start': 114,\n 'end': 124,\n },\n {\n 'type': 'twitch',\n 'name': 'SSSsss',\n 'id': '46',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/46/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/46/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/46/static/dark/3.0',\n },\n 'start': 125,\n 'end': 131,\n },\n {\n 'type': 'twitch',\n 'name': 'Kappa',\n 'id': '25',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/25/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/25/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/25/static/dark/3.0',\n },\n 'start': 132,\n 'end': 137,\n },\n {\n 'type': 'twitch',\n 'name': 'MrDestructoid',\n 'id': '28',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/28/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/28/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/28/static/dark/3.0',\n },\n 'start': 138,\n 'end': 151,\n },\n {\n 'type': 'twitch',\n 'name': '<3',\n 'id': '9',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0',\n },\n 'start': 152,\n 'end': 154,\n },\n {\n 'type': 'twitch',\n 'name': 'HSWP',\n 'id': '446979',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/446979/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/446979/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/446979/static/dark/3.0',\n },\n 'start': 155,\n 'end': 159,\n },\n {\n 'type': 'twitch',\n 'name': 'Shush',\n 'id': 'emotesv2_819621bcb8f44566a1bd8ea63d06c58f',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_819621bcb8f44566a1bd8ea63d06c58f/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_819621bcb8f44566a1bd8ea63d06c58f/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_819621bcb8f44566a1bd8ea63d06c58f/static/dark/3.0',\n },\n 'start': 160,\n 'end': 165,\n },\n {\n 'type': 'twitch',\n 'name': 'IronmouseLuv',\n 'id': 'emotesv2_54c53ae67ad746d2bc866b6fc779183c',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_54c53ae67ad746d2bc866b6fc779183c/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_54c53ae67ad746d2bc866b6fc779183c/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_54c53ae67ad746d2bc866b6fc779183c/static/dark/3.0',\n },\n 'start': 166,\n 'end': 178,\n },\n\n {\n 'type': 'twitch',\n 'name': 'KPOPTT',\n 'id': '304047269',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/304047269/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/304047269/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/304047269/default/dark/3.0',\n },\n 'start': 0,\n 'end': 5,\n },\n {\n 'type': 'twitch',\n 'name': 'FrogPonder',\n 'id': 'emotesv2_a3cdcbfcae9b41bb8215b012362eea35',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_a3cdcbfcae9b41bb8215b012362eea35/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_a3cdcbfcae9b41bb8215b012362eea35/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_a3cdcbfcae9b41bb8215b012362eea35/default/dark/3.0',\n },\n 'start': 7,\n 'end': 16,\n },\n {\n 'type': 'twitch',\n 'name': 'HypeCheer',\n 'id': 'emotesv2_dd4f4f9cea1a4039ad3390e20900abe4',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dd4f4f9cea1a4039ad3390e20900abe4/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dd4f4f9cea1a4039ad3390e20900abe4/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dd4f4f9cea1a4039ad3390e20900abe4/default/dark/3.0',\n },\n 'start': 18,\n 'end': 26,\n },\n {\n 'type': 'twitch',\n 'name': 'HypeFail',\n 'id': 'emotesv2_0330a84e75ad48c1821c1d29a7dadd4d',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_0330a84e75ad48c1821c1d29a7dadd4d/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_0330a84e75ad48c1821c1d29a7dadd4d/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_0330a84e75ad48c1821c1d29a7dadd4d/default/dark/3.0',\n },\n 'start': 28,\n 'end': 35,\n },\n {\n 'type': 'twitch',\n 'name': 'HypePopcorn',\n 'id': 'emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_7b8e74be7bd64601a2608c2ff5f6eb7a/default/dark/3.0',\n },\n 'start': 37,\n 'end': 47,\n },\n {\n 'type': 'twitch',\n 'name': 'TransgenderPride',\n 'id': '307827377',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/static/dark/3.0',\n },\n 'start': 49,\n 'end': 65,\n },\n {\n 'type': 'twitch',\n 'name': 'PansexualPride',\n 'id': '307827370',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/static/dark/3.0',\n },\n 'start': 66,\n 'end': 80,\n },\n {\n 'type': 'twitch',\n 'name': 'NonbinaryPride',\n 'id': '307827356',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/static/dark/3.0',\n },\n 'start': 81,\n 'end': 95,\n },\n {\n 'type': 'twitch',\n 'name': 'LesbianPride',\n 'id': '307827340',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/static/dark/3.0',\n },\n 'start': 96,\n 'end': 108,\n },\n {\n 'type': 'twitch',\n 'name': 'IntersexPride',\n 'id': '307827332',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/static/dark/3.0',\n },\n 'start': 109,\n 'end': 122,\n },\n {\n 'type': 'twitch',\n 'name': 'GenderFluidPride',\n 'id': '307827326',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/static/dark/3.0',\n },\n 'start': 123,\n 'end': 139,\n },\n {\n 'type': 'twitch',\n 'name': 'GayPride',\n 'id': '307827321',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/static/dark/3.0',\n },\n 'start': 140,\n 'end': 148,\n },\n {\n 'type': 'twitch',\n 'name': 'BisexualPride',\n 'id': '307827313',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/static/dark/3.0',\n },\n 'start': 149,\n 'end': 162,\n },\n {\n 'type': 'twitch',\n 'name': 'AsexualPride',\n 'id': '307827267',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/static/dark/3.0',\n },\n 'start': 163,\n 'end': 175,\n },\n {\n 'type': 'twitch',\n 'name': 'PogChamp',\n 'id': '305954156',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/static/dark/3.0',\n },\n 'start': 176,\n 'end': 184,\n },\n {\n 'type': 'twitch',\n 'name': 'GlitchCat',\n 'id': '304486301',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/static/dark/3.0',\n },\n 'start': 185,\n 'end': 194,\n },\n {\n 'type': 'twitch',\n 'name': 'SoonerLater',\n 'id': '2113050',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/2113050/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/2113050/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/2113050/static/dark/3.0',\n },\n 'start': 195,\n 'end': 206,\n },\n {\n 'type': 'twitch',\n 'name': 'FBCatch',\n 'id': '1441281',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/1441281/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/1441281/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/1441281/static/dark/3.0',\n },\n 'start': 207,\n 'end': 214,\n },\n {\n 'type': 'twitch',\n 'name': 'FBBlock',\n 'id': '1441276',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/1441276/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/1441276/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/1441276/static/dark/3.0',\n },\n 'start': 215,\n 'end': 222,\n },\n {\n 'type': 'twitch',\n 'name': 'PixelBob',\n 'id': '1547903',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/1547903/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/1547903/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/1547903/static/dark/3.0',\n },\n 'start': 223,\n 'end': 231,\n },\n {\n 'type': 'twitch',\n 'name': 'LUL',\n 'id': '425618',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/static/dark/3.0',\n },\n 'start': 232,\n 'end': 235,\n },\n {\n 'type': 'twitch',\n 'name': 'DarkMode',\n 'id': '461298',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/static/dark/3.0',\n },\n 'start': 236,\n 'end': 244,\n },\n {\n 'type': 'twitch',\n 'name': 'PopCorn',\n 'id': '724216',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/724216/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/724216/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/724216/static/dark/3.0',\n },\n 'start': 245,\n 'end': 252,\n },\n {\n 'type': 'twitch',\n 'name': 'EarthDay',\n 'id': '959018',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/959018/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/959018/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/959018/static/dark/3.0',\n },\n 'start': 253,\n 'end': 261,\n },\n {\n 'type': 'twitch',\n 'name': 'TwitchUnity',\n 'id': '196892',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/196892/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/196892/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/196892/static/dark/3.0',\n },\n 'start': 262,\n 'end': 273,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid4',\n 'id': '191767',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191767/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191767/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191767/static/dark/3.0',\n },\n 'start': 274,\n 'end': 280,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid3',\n 'id': '191764',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191764/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191764/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191764/static/dark/3.0',\n },\n 'start': 281,\n 'end': 287,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid2',\n 'id': '191763',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191763/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191763/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191763/static/dark/3.0',\n },\n 'start': 288,\n 'end': 294,\n },\n {\n 'type': 'twitch',\n 'name': 'Squid1',\n 'id': '191762',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191762/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191762/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191762/static/dark/3.0',\n },\n 'start': 295,\n 'end': 301,\n },\n {\n 'type': 'twitch',\n 'name': 'CrreamAwk',\n 'id': '191313',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/191313/static/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/191313/static/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/191313/static/dark/3.0',\n },\n 'start': 302,\n 'end': 311,\n },\n {\n 'type': 'twitch',\n 'name': 'DinoDance',\n 'id': 'emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7/animated/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7/animated/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_dcd06b30a5c24f6eb871e8f5edbd44f7/animated/dark/3.0',\n },\n 'start': 46,\n 'end': 55,\n },\n {\n 'type': 'twitch',\n 'name': 'PopNemo',\n 'id': 'emotesv2_5d523adb8bbb4786821cd7091e47da21',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_5d523adb8bbb4786821cd7091e47da21/animated/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_5d523adb8bbb4786821cd7091e47da21/animated/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_5d523adb8bbb4786821cd7091e47da21/animated/dark/3.0',\n },\n 'start': 56,\n 'end': 63,\n },\n {\n 'type': 'twitch',\n 'name': 'TransgenderPride',\n 'id': '307827377',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827377/default/dark/3.0',\n },\n 'start': 0,\n 'end': 15,\n },\n {\n 'type': 'twitch',\n 'name': 'PansexualPride',\n 'id': '307827370',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827370/default/dark/3.0',\n },\n 'start': 17,\n 'end': 30,\n },\n {\n 'type': 'twitch',\n 'name': 'NonbinaryPride',\n 'id': '307827356',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827356/default/dark/3.0',\n },\n 'start': 32,\n 'end': 45,\n },\n {\n 'type': 'twitch',\n 'name': 'LesbianPride',\n 'id': '307827340',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827340/default/dark/3.0',\n },\n 'start': 47,\n 'end': 58,\n },\n {\n 'type': 'twitch',\n 'name': 'IntersexPride',\n 'id': '307827332',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827332/default/dark/3.0',\n },\n 'start': 60,\n 'end': 72,\n },\n {\n 'type': 'twitch',\n 'name': 'GenderFluidPride',\n 'id': '307827326',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827326/default/dark/3.0',\n },\n 'start': 74,\n 'end': 89,\n },\n {\n 'type': 'twitch',\n 'name': 'GayPride',\n 'id': '307827321',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827321/default/dark/3.0',\n },\n 'start': 91,\n 'end': 98,\n },\n {\n 'type': 'twitch',\n 'name': 'BisexualPride',\n 'id': '307827313',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827313/default/dark/3.0',\n },\n 'start': 100,\n 'end': 112,\n },\n {\n 'type': 'twitch',\n 'name': 'AsexualPride',\n 'id': '307827267',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/307827267/default/dark/3.0',\n },\n 'start': 114,\n 'end': 125,\n },\n {\n 'type': 'twitch',\n 'name': 'PogChamp',\n 'id': '305954156',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/305954156/default/dark/3.0',\n },\n 'start': 127,\n 'end': 134,\n },\n {\n 'type': 'twitch',\n 'name': 'GlitchCat',\n 'id': '304486301',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/304486301/default/dark/3.0',\n },\n 'start': 136,\n 'end': 144,\n },\n {\n 'type': 'twitch',\n 'name': 'DarkMode',\n 'id': '461298',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/461298/default/dark/3.0',\n },\n 'start': 146,\n 'end': 153,\n },\n {\n 'type': 'twitch',\n 'name': 'LUL',\n 'id': '425618',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/3.0',\n },\n 'start': 155,\n 'end': 157,\n },\n {\n 'type': 'twitch',\n 'name': 'TheIlluminati',\n 'id': '145315',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/145315/default/dark/3.0',\n },\n 'start': 159,\n 'end': 171,\n },\n {\n 'type': 'twitch',\n 'name': 'imGlitch',\n 'id': '112290',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/112290/default/dark/3.0',\n },\n 'start': 173,\n 'end': 180,\n },\n {\n 'type': 'twitch',\n 'name': 'DoritosChip',\n 'id': '102242',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/102242/default/dark/3.0',\n },\n 'start': 182,\n 'end': 192,\n },\n {\n 'type': 'twitch',\n 'name': 'SSSsss',\n 'id': '46',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/46/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/46/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/46/default/dark/3.0',\n },\n 'start': 194,\n 'end': 199,\n },\n {\n 'type': 'twitch',\n 'name': 'PunchTrees',\n 'id': '47',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/47/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/47/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/47/default/dark/3.0',\n },\n 'start': 201,\n 'end': 210,\n },\n {\n 'type': 'twitch',\n 'name': 'BloodTrail',\n 'id': '69',\n 'gif': false,\n 'urls': {\n '1': 'https://static-cdn.jtvnw.net/emoticons/v2/69/default/dark/1.0',\n '2': 'https://static-cdn.jtvnw.net/emoticons/v2/69/default/dark/2.0',\n '4': 'https://static-cdn.jtvnw.net/emoticons/v2/69/default/dark/3.0',\n },\n 'start': 223,\n 'end': 232,\n },\n {\n 'type': '7tv',\n 'name': 'CookieTime',\n 'id': '635b0184ea9ce7391cbf77d6',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/1x.webp',\n '2': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/2x.webp',\n '3': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/3x.webp',\n '4': 'https://cdn.7tv.app/emote/635b0184ea9ce7391cbf77d6/4x.webp',\n },\n 'start': 0,\n 'end': 10,\n 'coords': {\n 'x': 0,\n 'y': 0,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'catJAM',\n 'id': '5f1b0186cf6d2144653d2970',\n 'gif': true,\n 'animated': true,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/5f1b0186cf6d2144653d2970/1x',\n '2': 'https://cdn.betterttv.net/emote/5f1b0186cf6d2144653d2970/2x',\n '4': 'https://cdn.betterttv.net/emote/5f1b0186cf6d2144653d2970/3x',\n },\n 'start': 0,\n 'end': 6,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': ':tf:',\n 'id': '54fa8f1401e468494b85b537',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fa8f1401e468494b85b537/1x',\n '2': 'https://cdn.betterttv.net/emote/54fa8f1401e468494b85b537/2x',\n '4': 'https://cdn.betterttv.net/emote/54fa8f1401e468494b85b537/3x',\n },\n 'start': 7,\n 'end': 11,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'AngelThump',\n 'id': '566ca1a365dbbdab32ec055b',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/566ca1a365dbbdab32ec055b/1x',\n '2': 'https://cdn.betterttv.net/emote/566ca1a365dbbdab32ec055b/2x',\n '4': 'https://cdn.betterttv.net/emote/566ca1a365dbbdab32ec055b/3x',\n },\n 'start': 12,\n 'end': 22,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 334,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'ariW',\n 'id': '56fa09f18eff3b595e93ac26',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/1x',\n '2': 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/2x',\n '4': 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/3x',\n },\n 'start': 23,\n 'end': 27,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'BroBalt',\n 'id': '54fbf00a01abde735115de5c',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fbf00a01abde735115de5c/1x',\n '2': 'https://cdn.betterttv.net/emote/54fbf00a01abde735115de5c/2x',\n '4': 'https://cdn.betterttv.net/emote/54fbf00a01abde735115de5c/3x',\n },\n 'start': 28,\n 'end': 35,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 184,\n 'height': 120,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'bttvNice',\n 'id': '54fab7d2633595ca4c713abf',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fab7d2633595ca4c713abf/1x',\n '2': 'https://cdn.betterttv.net/emote/54fab7d2633595ca4c713abf/2x',\n '4': 'https://cdn.betterttv.net/emote/54fab7d2633595ca4c713abf/3x',\n },\n 'start': 36,\n 'end': 44,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 168,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'bUrself',\n 'id': '566c9f3b65dbbdab32ec052e',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/566c9f3b65dbbdab32ec052e/1x',\n '2': 'https://cdn.betterttv.net/emote/566c9f3b65dbbdab32ec052e/2x',\n '4': 'https://cdn.betterttv.net/emote/566c9f3b65dbbdab32ec052e/3x',\n },\n 'start': 45,\n 'end': 52,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'c!',\n 'id': '6468f7acaee1f7f47567708e',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/6468f7acaee1f7f47567708e/1x',\n '2': 'https://cdn.betterttv.net/emote/6468f7acaee1f7f47567708e/2x',\n '4': 'https://cdn.betterttv.net/emote/6468f7acaee1f7f47567708e/3x',\n },\n 'start': 53,\n 'end': 55,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'CandianRage',\n 'id': '54fbf09c01abde735115de61',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fbf09c01abde735115de61/1x',\n '2': 'https://cdn.betterttv.net/emote/54fbf09c01abde735115de61/2x',\n '4': 'https://cdn.betterttv.net/emote/54fbf09c01abde735115de61/3x',\n },\n 'start': 56,\n 'end': 67,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'CiGrip',\n 'id': '54fa8fce01e468494b85b53c',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/54fa8fce01e468494b85b53c/1x',\n '2': 'https://cdn.betterttv.net/emote/54fa8fce01e468494b85b53c/2x',\n '4': 'https://cdn.betterttv.net/emote/54fa8fce01e468494b85b53c/3x',\n },\n 'start': 68,\n 'end': 74,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'ConcernDoge',\n 'id': '566c9f6365dbbdab32ec0532',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/566c9f6365dbbdab32ec0532/1x',\n '2': 'https://cdn.betterttv.net/emote/566c9f6365dbbdab32ec0532/2x',\n '4': 'https://cdn.betterttv.net/emote/566c9f6365dbbdab32ec0532/3x',\n },\n 'start': 75,\n 'end': 86,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 101,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'CruW',\n 'id': '55471c2789d53f2d12781713',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/55471c2789d53f2d12781713/1x',\n '2': 'https://cdn.betterttv.net/emote/55471c2789d53f2d12781713/2x',\n '4': 'https://cdn.betterttv.net/emote/55471c2789d53f2d12781713/3x',\n },\n 'start': 87,\n 'end': 91,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'cvHazmat',\n 'id': '5e76d338d6581c3724c0f0b2',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/5e76d338d6581c3724c0f0b2/1x',\n '2': 'https://cdn.betterttv.net/emote/5e76d338d6581c3724c0f0b2/2x',\n '4': 'https://cdn.betterttv.net/emote/5e76d338d6581c3724c0f0b2/3x',\n },\n 'start': 92,\n 'end': 100,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'D:',\n 'id': '55028cd2135896936880fdd7',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/55028cd2135896936880fdd7/1x',\n '2': 'https://cdn.betterttv.net/emote/55028cd2135896936880fdd7/2x',\n '4': 'https://cdn.betterttv.net/emote/55028cd2135896936880fdd7/3x',\n },\n 'start': 101,\n 'end': 103,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'haHAA',\n 'id': '555981336ba1901877765555',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/555981336ba1901877765555/1x',\n '2': 'https://cdn.betterttv.net/emote/555981336ba1901877765555/2x',\n '4': 'https://cdn.betterttv.net/emote/555981336ba1901877765555/3x',\n },\n 'start': 104,\n 'end': 109,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'LuL',\n 'id': '567b00c61ddbe1786688a633',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/567b00c61ddbe1786688a633/1x',\n '2': 'https://cdn.betterttv.net/emote/567b00c61ddbe1786688a633/2x',\n '4': 'https://cdn.betterttv.net/emote/567b00c61ddbe1786688a633/3x',\n },\n 'start': 110,\n 'end': 113,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 112,\n 'height': 112,\n },\n },\n {\n 'type': 'bttv',\n 'name': 'DuckerZ',\n 'id': '573d38b50ffbf6cc5cc38dc9',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.betterttv.net/emote/573d38b50ffbf6cc5cc38dc9/1x',\n '2': 'https://cdn.betterttv.net/emote/573d38b50ffbf6cc5cc38dc9/2x',\n '4': 'https://cdn.betterttv.net/emote/573d38b50ffbf6cc5cc38dc9/3x',\n },\n 'start': 114,\n 'end': 121,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 149,\n 'height': 112,\n },\n },\n {\n 'type': 'ffz',\n 'name': 'CatBag',\n 'id': '25927',\n 'gif': false,\n 'animated': false,\n 'urls': {\n '1': 'https://cdn.frankerfacez.com/emote/25927/1',\n '2': 'https://cdn.frankerfacez.com/emote/25927/2',\n '4': 'https://cdn.frankerfacez.com/emote/25927/4',\n },\n 'start': 122,\n 'end': 128,\n 'coords': {\n 'x': 0,\n 'y': 0,\n 'width': 143,\n 'height': 128,\n },\n },\n]).reduce(\n (acc, emote) => {\n if (!acc.some((e) => e.name === emote.name)) {\n acc.push({\n ...emote,\n start: 0,\n end: 0,\n } as TwitchEmote | BttvEmote | SeventvEmote);\n }\n\n return acc;\n },\n [] as Array<TwitchEmote | BttvEmote | SeventvEmote>,\n);\n","export const messages = [\n 'Hello everyone!',\n 'PogChamp',\n 'This stream is amazing!',\n 'catJAM catJAM catJAM',\n 'LUL that was funny',\n 'GG!',\n 'First time here, loving it!',\n 'DinoDance',\n 'Can we get some hype in chat?',\n 'TransgenderPride PansexualPride NonbinaryPride',\n 'POGGERS',\n 'I just followed! PogChamp',\n 'Great gameplay btw',\n 'LUL LUL LUL',\n 'This is so wholesome AngelThump',\n 'catJAM vibing',\n 'haHAA',\n 'Wait what just happened? D:',\n 'GlitchCat GlitchCat',\n 'Best stream on Twitch right now!',\n 'DarkMode gang where you at?',\n 'PogChamp PogChamp PogChamp PogChamp',\n 'Anyone else eating? DoritosChip',\n 'I love this community!',\n 'TheIlluminati confirmed',\n 'bUrself be yourself!',\n 'CookieTime nom nom',\n 'imGlitch technical difficulties',\n 'This music is fire catJAM',\n 'bttvNice',\n 'LesbianPride GayPride BisexualPride',\n 'SSSsss Minecraft time',\n 'PopNemo',\n 'Going to bed, good night everyone!',\n 'Just got here, what did I miss?',\n ':tf: trollface',\n 'ariW wave',\n 'BroBalt nice one',\n 'AsexualPride IntersexPride GenderFluidPride',\n 'This chat is moving so fast!',\n 'CandianRage',\n 'PunchTrees PunchTrees',\n 'CiGrip',\n 'ConcernDoge hmm',\n 'CruW salute',\n 'cvHazmat stay safe',\n 'DuckerZ quack',\n 'BloodTrail hunting time',\n 'CatBag kitty!',\n 'c! poggers',\n];\n","export const names = ['Local', 'Tixyel', 'Urie_s2', 'itzzcatt', 'BeniArts', 'Cupidiko', 'shy_madeit'];\n","export const tts = [\n 'Filiz',\n 'Astrid',\n 'Tatyana',\n 'Maxim',\n 'Carmen',\n 'Ines',\n 'Cristiano',\n 'Vitoria',\n 'Ricardo',\n 'Maja',\n 'Jan',\n 'Jacek',\n 'Ewa',\n 'Ruben',\n 'Lotte',\n 'Liv',\n 'Seoyeon',\n 'Takumi',\n 'Mizuki',\n 'Giorgio',\n 'Carla',\n 'Bianca',\n 'Karl',\n 'Dora',\n 'Mathieu',\n 'Celine',\n 'Chantal',\n 'Penelope',\n 'Miguel',\n 'Mia',\n 'Enrique',\n 'Conchita',\n 'Geraint',\n 'Salli',\n 'Matthew',\n 'Kimberly',\n 'Kendra',\n 'Justin',\n 'Joey',\n 'Joanna',\n 'Ivy',\n 'Raveena',\n 'Aditi',\n 'Emma',\n 'Brian',\n 'Amy',\n 'Russell',\n 'Nicole',\n 'Vicki',\n 'Marlene',\n 'Hans',\n 'Naja',\n 'Mads',\n 'Gwyneth',\n 'Zhiyu',\n 'Tracy',\n 'Danny',\n 'Huihui',\n 'Yaoyao',\n 'Kangkang',\n 'HanHan',\n 'Zhiwei',\n 'Asaf',\n 'An',\n 'Stefanos',\n 'Filip',\n 'Ivan',\n 'Heidi',\n 'Herena',\n 'Kalpana',\n 'Hemant',\n 'Matej',\n 'Andika',\n 'Rizwan',\n 'Lado',\n 'Valluvar',\n 'Linda',\n 'Heather',\n 'Sean',\n 'Michael',\n 'Karsten',\n 'Guillaume',\n 'Pattara',\n 'Jakub',\n 'Szabolcs',\n 'Hoda',\n 'Naayf',\n];\n","export const items: any[] = [];\n","export const tiers = ['1000', '2000', '3000', 'prime'];\n","export const css_color_names = [\n 'aliceblue',\n 'antiquewhite',\n 'aqua',\n 'aquamarine',\n 'azure',\n 'beige',\n 'bisque',\n 'black',\n 'blanchedalmond',\n 'blue',\n 'blueviolet',\n 'brown',\n 'burlywood',\n 'cadetblue',\n 'chartreuse',\n 'chocolate',\n 'coral',\n 'cornflowerblue',\n 'cornsilk',\n 'crimson',\n 'cyan',\n 'darkblue',\n 'darkcyan',\n 'darkgoldenrod',\n 'darkgray',\n 'darkgreen',\n 'darkgrey',\n 'darkkhaki',\n 'darkmagenta',\n 'darkolivegreen',\n 'darkorange',\n 'darkorchid',\n 'darkred',\n 'darksalmon',\n 'darkseagreen',\n 'darkslateblue',\n 'darkslategray',\n 'darkslategrey',\n 'darkturquoise',\n 'darkviolet',\n 'deeppink',\n 'deepskyblue',\n 'dimgray',\n 'dimgrey',\n 'dodgerblue',\n 'firebrick',\n 'floralwhite',\n 'forestgreen',\n 'fuchsia',\n 'gainsboro',\n 'ghostwhite',\n 'gold',\n 'goldenrod',\n 'gray',\n 'green',\n 'greenyellow',\n 'grey',\n 'honeydew',\n 'hotpink',\n 'indianred',\n 'indigo',\n 'ivory',\n 'khaki',\n 'lavender',\n 'lavenderblush',\n 'lawngreen',\n 'lemonchiffon',\n 'lightblue',\n 'lightcoral',\n 'lightcyan',\n 'lightgoldenrodyellow',\n 'lightgray',\n 'lightgreen',\n 'lightgrey',\n 'lightpink',\n 'lightsalmon',\n 'lightseagreen',\n 'lightskyblue',\n 'lightslategray',\n 'lightslategrey',\n 'lightsteelblue',\n 'lightyellow',\n 'lime',\n 'limegreen',\n 'linen',\n 'magenta',\n 'maroon',\n 'mediumaquamarine',\n 'mediumblue',\n 'mediumorchid',\n 'mediumpurple',\n 'mediumseagreen',\n 'mediumslateblue',\n 'mediumspringgreen',\n 'mediumturquoise',\n 'mediumvioletred',\n 'midnightblue',\n 'mintcream',\n 'mistyrose',\n 'moccasin',\n 'navajowhite',\n 'navy',\n 'oldlace',\n 'olive',\n 'olivedrab',\n 'orange',\n 'orangered',\n 'orchid',\n 'palegoldenrod',\n 'palegreen',\n 'paleturquoise',\n 'palevioletred',\n 'papayawhip',\n 'peachpuff',\n 'peru',\n 'pink',\n 'plum',\n 'powderblue',\n 'purple',\n 'rebeccapurple',\n 'red',\n 'rosybrown',\n 'royalblue',\n 'saddlebrown',\n 'salmon',\n 'sandybrown',\n 'seagreen',\n 'seashell',\n 'sienna',\n 'silver',\n 'skyblue',\n 'slateblue',\n 'slategray',\n 'slategrey',\n 'snow',\n 'springgreen',\n 'steelblue',\n 'tan',\n 'teal',\n 'thistle',\n 'tomato',\n 'turquoise',\n 'violet',\n 'wheat',\n 'white',\n 'whitesmoke',\n 'yellow',\n 'yellowgreen',\n 'transparent',\n];\n","export const youtube_emotes = [\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/flower-rainbow-heart-red',\n 'shortcuts': [':pride-flower-rainbow-heart:'],\n 'searchTerms': ['pride-flower-rainbow-heart'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/8cF4z9clPGshgty6vT3ImAtx_CUvz3TMY-SAu_UKw-x1Z9-2KzcK4OuyAIROrKhyvcabrw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/8cF4z9clPGshgty6vT3ImAtx_CUvz3TMY-SAu_UKw-x1Z9-2KzcK4OuyAIROrKhyvcabrw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-flower-rainbow-heart',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 0,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-green-earth-head',\n 'shortcuts': [':pride-person-earth-intersex:'],\n 'searchTerms': ['pride-person-earth-intersex'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Gr-3he7L8jjQFj7aI0kSY1eV4aIsy-vT7Hk5shdakigG9aAJO_uMBmV6haCtK1OHjTEjj1o=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Gr-3he7L8jjQFj7aI0kSY1eV4aIsy-vT7Hk5shdakigG9aAJO_uMBmV6haCtK1OHjTEjj1o=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-person-earth-intersex',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 1,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-yellow-heart-lesbian',\n 'shortcuts': [':pride-person-heart-lesbian:'],\n 'searchTerms': ['pride-person-heart-lesbian'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tKVZ2TfK5tMLvF88cnz2YNVwuHNgr0eDR9Ef8J0OCkZEHXLFUtH3f6-xSHhqhwd2sL3Tu4I=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tKVZ2TfK5tMLvF88cnz2YNVwuHNgr0eDR9Ef8J0OCkZEHXLFUtH3f6-xSHhqhwd2sL3Tu4I=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-person-heart-lesbian',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 2,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-yellow-flower-nonbinary',\n 'shortcuts': [':pride-person-flower-nonbinary:'],\n 'searchTerms': ['pride-person-flower-nonbinary'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/le1X4KHLOmK5K1s5xu-owmP_eZK4D0ExyjnMCS6UNqZa-Zh4uEzz3mZnU3jBlLfi14Zpngw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/le1X4KHLOmK5K1s5xu-owmP_eZK4D0ExyjnMCS6UNqZa-Zh4uEzz3mZnU3jBlLfi14Zpngw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-person-flower-nonbinary',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 3,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/flower-rainbow-heart-pansexual',\n 'shortcuts': [':pride-flower-pansexual:'],\n 'searchTerms': ['pride-flower-pansexual'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/blSdVv_UpdTn8BIWU6u9oCWhdtpc0-a-3dJeaRX9As6ftLc0OGPJ1PveQEJbUEDzf6by2Xi9=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/blSdVv_UpdTn8BIWU6u9oCWhdtpc0-a-3dJeaRX9As6ftLc0OGPJ1PveQEJbUEDzf6by2Xi9=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-flower-pansexual',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 4,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/heart-stripes-pride-flag',\n 'shortcuts': [':pride-heart-rainbow-philly:'],\n 'searchTerms': ['pride-heart-rainbow-philly'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7iYeXsmU2YMcKsKalaKJhirWdDASATIpl_c7Ib7akaRhvz8GChI4xpM0d0dtASjmmWPbg1NG=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7iYeXsmU2YMcKsKalaKJhirWdDASATIpl_c7Ib7akaRhvz8GChI4xpM0d0dtASjmmWPbg1NG=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-heart-rainbow-philly',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 5,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/symbol-turquoise-flowers-transgender',\n 'shortcuts': [':pride-flowers-turquoise-transgender:'],\n 'searchTerms': ['pride-flowers-turquoise-transgender'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/ovz1T6ay1D1GNFXwwYibZeu_rV5_iSRXWSHR2thQDLLWejVQMqWPUhsUWrMMw1tlBwllYA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/ovz1T6ay1D1GNFXwwYibZeu_rV5_iSRXWSHR2thQDLLWejVQMqWPUhsUWrMMw1tlBwllYA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-flowers-turquoise-transgender',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 6,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hand-rainbow-fan-open',\n 'shortcuts': [':pride-fan-rainbow-open:'],\n 'searchTerms': ['pride-fan-rainbow-open'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/lDH5aORWtlc42NxTwiP3aIUIjttLVvE4Q_xIJDuu55DKvYSLeDIysOEKtGuMmEtOLgvZ_zTX=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/lDH5aORWtlc42NxTwiP3aIUIjttLVvE4Q_xIJDuu55DKvYSLeDIysOEKtGuMmEtOLgvZ_zTX=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-fan-rainbow-open',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 7,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-pink-hair-earrings',\n 'shortcuts': [':pride-face-pink-earrings:'],\n 'searchTerms': ['pride-face-pink-earrings'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/utFog-w4fqgJ05xfQFjSdy8jvRBtFCeuWRkLH3IaVJ4WCBrdjDbXzXOprJA_h6MPOuksv0c=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/utFog-w4fqgJ05xfQFjSdy8jvRBtFCeuWRkLH3IaVJ4WCBrdjDbXzXOprJA_h6MPOuksv0c=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-face-pink-earrings',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 8,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/unicorn-white-rainbow-mane',\n 'shortcuts': [':pride-unicorn-rainbow-mane:'],\n 'searchTerms': ['pride-unicorn-rainbow-mane'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/fvdANfncTw5aDF8GBq20kHicN5rMVoCMTM3FY8MQbZH9sZXvHy5o48yvHZWN4No5rz8b7-0=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/fvdANfncTw5aDF8GBq20kHicN5rMVoCMTM3FY8MQbZH9sZXvHy5o48yvHZWN4No5rz8b7-0=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-unicorn-rainbow-mane',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 9,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/people-embracing-two',\n 'shortcuts': [':pride-people-embracing-two:'],\n 'searchTerms': ['pride-people-embracing-two'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/h1zJqFv2R4LzS3ZUpVyHhprCHQTIhbSecqu2Lid23byl5hD5cJdnshluOCyRdldYkWCUNg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/h1zJqFv2R4LzS3ZUpVyHhprCHQTIhbSecqu2Lid23byl5hD5cJdnshluOCyRdldYkWCUNg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-people-embracing-two',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 10,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-green-hair-tears',\n 'shortcuts': [':pride-face-green-tears:'],\n 'searchTerms': ['pride-face-green-tears'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2BNf4_qBG7mqt1sN-JwThp1srHlDr03xoya9hpIvbgS65HwLaaDz46r3A6dy8JnO2GtLNag=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2BNf4_qBG7mqt1sN-JwThp1srHlDr03xoya9hpIvbgS65HwLaaDz46r3A6dy8JnO2GtLNag=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-face-green-tears',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 11,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/megaphone-rainbow-handle',\n 'shortcuts': [':pride-megaphone-rainbow-handle:'],\n 'searchTerms': ['pride-megaphone-rainbow-handle'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cop1MU9YkEuUxbe8d1NhPl1S9uJ60YSVTMM1gelP7Cy0BICa6Ey_TpxEFFdYITtsUK1cSg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cop1MU9YkEuUxbe8d1NhPl1S9uJ60YSVTMM1gelP7Cy0BICa6Ey_TpxEFFdYITtsUK1cSg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-megaphone-rainbow-handle',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 12,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hand-brown-yellow-nails',\n 'shortcuts': [':pride-hand-yellow-nails:'],\n 'searchTerms': ['pride-hand-yellow-nails'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/1dEPlxkQ1RdZkPo5CLgYvneMQ-BBo63b3nnASEAXoccnVktMjgviKqMj1pjPiK2zTPTc7g=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/1dEPlxkQ1RdZkPo5CLgYvneMQ-BBo63b3nnASEAXoccnVktMjgviKqMj1pjPiK2zTPTc7g=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-hand-yellow-nails',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 13,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-orange-hair-flowing',\n 'shortcuts': [':pride-face-orange-flowing:'],\n 'searchTerms': ['pride-face-orange-flowing'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/RuhTeU8YiT0_NaOYjMmXv77eEw5eO5Bdzfr7ouS0u3ZAK2J4coKGe5g4fN8mJV85jC63hw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/RuhTeU8YiT0_NaOYjMmXv77eEw5eO5Bdzfr7ouS0u3ZAK2J4coKGe5g4fN8mJV85jC63hw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pride-face-orange-flowing',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 14,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/CIW60IPp_dYCFcuqTgodEu4IlQ',\n 'shortcuts': [':yt:'],\n 'searchTerms': ['yt'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/IkpeJf1g9Lq0WNjvSa4XFq4LVNZ9IP5FKW8yywXb12djo1OGdJtziejNASITyq4L0itkMNw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/IkpeJf1g9Lq0WNjvSa4XFq4LVNZ9IP5FKW8yywXb12djo1OGdJtziejNASITyq4L0itkMNw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'yt',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 15,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/CN2m5cKr49sCFYbFggodDFEKrg',\n 'shortcuts': [':oops:'],\n 'searchTerms': ['oops'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/PFoVIqIiFRS3aFf5-bt_tTC0WrDm_ylhF4BKKwgqAASNb7hVgx_adFP-XVhFiJLXdRK0EQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/PFoVIqIiFRS3aFf5-bt_tTC0WrDm_ylhF4BKKwgqAASNb7hVgx_adFP-XVhFiJLXdRK0EQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'oops',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 16,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/X_zdXMHgJaPa8gTGt4f4Ag',\n 'shortcuts': [':buffering:'],\n 'searchTerms': ['buffering'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/5gfMEfdqO9CiLwhN9Mq7VI6--T2QFp8AXNNy5Fo7btfY6fRKkThWq35SCZ6SPMVCjg-sUA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/5gfMEfdqO9CiLwhN9Mq7VI6--T2QFp8AXNNy5Fo7btfY6fRKkThWq35SCZ6SPMVCjg-sUA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'buffering',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 17,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/1v50XorRJ8GQ8gTz_prwAg',\n 'shortcuts': [':stayhome:'],\n 'searchTerms': ['stayhome'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/_1FGHypiub51kuTiNBX1a0H3NyFih3TnHX7bHU06j_ajTzT0OQfMLl9RI1SiQoxtgA2Grg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/_1FGHypiub51kuTiNBX1a0H3NyFih3TnHX7bHU06j_ajTzT0OQfMLl9RI1SiQoxtgA2Grg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'stayhome',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 18,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/8P50XuS9Oo7h8wSqtIagBA',\n 'shortcuts': [':dothefive:'],\n 'searchTerms': ['dothefive'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/-nM0DOd49969h3GNcl705Ti1fIf1ZG_E3JxcOUVV-qPfCW6jY8xZ98caNLHkVSGRTSEb7Y9y=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/-nM0DOd49969h3GNcl705Ti1fIf1ZG_E3JxcOUVV-qPfCW6jY8xZ98caNLHkVSGRTSEb7Y9y=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'dothefive',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 19,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Fv90Xq-vJcPq8gTqzreQAQ',\n 'shortcuts': [':elbowbump:'],\n 'searchTerms': ['elbowbump'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2ou58X5XuhTrxjtIM2wew1f-HKRhN_T5SILQgHE-WD9dySzzJdGwL4R1gpKiJXcbtq6sjQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2ou58X5XuhTrxjtIM2wew1f-HKRhN_T5SILQgHE-WD9dySzzJdGwL4R1gpKiJXcbtq6sjQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'elbowbump',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 20,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Iv90XouTLuOR8gSxxrToBA',\n 'shortcuts': [':goodvibes:'],\n 'searchTerms': ['goodvibes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2CvFOwgKpL29mW_C51XvaWa7Eixtv-3tD1XvZa1_WemaDDL2AqevKbTZ1rdV0OWcnOZRag=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2CvFOwgKpL29mW_C51XvaWa7Eixtv-3tD1XvZa1_WemaDDL2AqevKbTZ1rdV0OWcnOZRag=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'goodvibes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 21,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Rf90XtDbG8GQ8gTz_prwAg',\n 'shortcuts': [':thanksdoc:'],\n 'searchTerms': ['thanksdoc'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/bUnO_VwXW2hDf-Da8D64KKv6nBJDYUBuo13RrOg141g2da8pi9-KClJYlUDuqIwyPBfvOO8=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/bUnO_VwXW2hDf-Da8D64KKv6nBJDYUBuo13RrOg141g2da8pi9-KClJYlUDuqIwyPBfvOO8=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'thanksdoc',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 22,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/VP90Xv_wG82o8wTCi7CQAw',\n 'shortcuts': [':videocall:'],\n 'searchTerms': ['videocall'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/k5v_oxUzRWmTOXP0V6WJver6xdS1lyHMPcMTfxn23Md6rmixoR5RZUusFbZi1uZwjF__pv4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/k5v_oxUzRWmTOXP0V6WJver6xdS1lyHMPcMTfxn23Md6rmixoR5RZUusFbZi1uZwjF__pv4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'videocall',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 23,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/dv90XtfhAurw8gTgzar4DA',\n 'shortcuts': [':virtualhug:'],\n 'searchTerms': ['virtualhug'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/U1TjOZlqtS58NGqQhE8VWDptPSrmJNkrbVRp_8jI4f84QqIGflq2Ibu7YmuOg5MmVYnpevc=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/U1TjOZlqtS58NGqQhE8VWDptPSrmJNkrbVRp_8jI4f84QqIGflq2Ibu7YmuOg5MmVYnpevc=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'virtualhug',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 24,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hf90Xv-jHeOR8gSxxrToBA',\n 'shortcuts': [':yougotthis:'],\n 'searchTerms': ['yougotthis'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/s3uOe4lUx3iPIt1h901SlMp_sKCTp3oOVj1JV8izBw_vDVLxFqk5dq-3NX-nK_gnUwVEXld3=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/s3uOe4lUx3iPIt1h901SlMp_sKCTp3oOVj1JV8izBw_vDVLxFqk5dq-3NX-nK_gnUwVEXld3=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'yougotthis',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 25,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/lP90XvOhCZGl8wSO1JmgAw',\n 'shortcuts': [':sanitizer:'],\n 'searchTerms': ['sanitizer'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EJ_8vc4Gl-WxCWBurHwwWROAHrPzxgePodoNfkRY1U_I8L1O2zlqf7-wfUtTeyzq2qHNnocZ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EJ_8vc4Gl-WxCWBurHwwWROAHrPzxgePodoNfkRY1U_I8L1O2zlqf7-wfUtTeyzq2qHNnocZ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'sanitizer',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 26,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/uP90Xq6wNYrK8gTUoo3wAg',\n 'shortcuts': [':takeout:'],\n 'searchTerms': ['takeout'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/FizHI5IYMoNql9XeP7TV3E0ffOaNKTUSXbjtJe90e1OUODJfZbWU37VqBbTh-vpyFHlFIS0=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/FizHI5IYMoNql9XeP7TV3E0ffOaNKTUSXbjtJe90e1OUODJfZbWU37VqBbTh-vpyFHlFIS0=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'takeout',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 27,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/fAF1XtDQMIrK8gTUoo3wAg',\n 'shortcuts': [':hydrate:'],\n 'searchTerms': ['hydrate'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tpgZgmhX8snKniye36mnrDVfTnlc44EK92EPeZ0m9M2EPizn1vKEGJzNYdp7KQy6iNZlYDc1=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tpgZgmhX8snKniye36mnrDVfTnlc44EK92EPeZ0m9M2EPizn1vKEGJzNYdp7KQy6iNZlYDc1=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hydrate',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 28,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/vQF1XpyaG_XG8gTs77bACQ',\n 'shortcuts': [':chillwcat:'],\n 'searchTerms': ['chillwcat'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/y03dFcPc1B7CO20zgQYzhcRPka5Bhs6iSg57MaxJdhaLidFvvXBLf_i4_SHG7zJ_2VpBMNs=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/y03dFcPc1B7CO20zgQYzhcRPka5Bhs6iSg57MaxJdhaLidFvvXBLf_i4_SHG7zJ_2VpBMNs=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'chillwcat',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 29,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCw',\n 'shortcuts': [':chillwdog:'],\n 'searchTerms': ['chillwdog'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Ir9mDxzUi0mbqyYdJ3N9Lq7bN5Xdt0Q7fEYFngN3GYAcJT_tccH1as1PKmInnpt2cbWOam4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Ir9mDxzUi0mbqyYdJ3N9Lq7bN5Xdt0Q7fEYFngN3GYAcJT_tccH1as1PKmInnpt2cbWOam4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'chillwdog',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 30,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/8gF1Xp_zK8jk8gSDrI2wCw',\n 'shortcuts': [':elbowcough:'],\n 'searchTerms': ['elbowcough'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DTR9bZd1HOqpRJyz9TKiLb0cqe5Hb84Yi_79A6LWlN1tY-5kXqLDXRmtYVKE9rcqzEghmw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DTR9bZd1HOqpRJyz9TKiLb0cqe5Hb84Yi_79A6LWlN1tY-5kXqLDXRmtYVKE9rcqzEghmw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'elbowcough',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 31,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/EAJ1XrS7PMGQ8gTz_prwAg',\n 'shortcuts': [':learning:'],\n 'searchTerms': ['learning'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/ZuBuz8GAQ6IEcQc7CoJL8IEBTYbXEvzhBeqy1AiytmhuAT0VHjpXEjd-A5GfR4zDin1L53Q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/ZuBuz8GAQ6IEcQc7CoJL8IEBTYbXEvzhBeqy1AiytmhuAT0VHjpXEjd-A5GfR4zDin1L53Q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'learning',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 32,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/JAJ1XpGpJYnW8wTupZu4Cw',\n 'shortcuts': [':washhands:'],\n 'searchTerms': ['washhands'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/qXUeUW0KpKBc9Z3AqUqr_0B7HbW1unAv4qmt7-LJGUK_gsFBIaHISWJNt4n3yvmAnQNZHE-u=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/qXUeUW0KpKBc9Z3AqUqr_0B7HbW1unAv4qmt7-LJGUK_gsFBIaHISWJNt4n3yvmAnQNZHE-u=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'washhands',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 33,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/PAJ1XsOOI4fegwOo57ewAg',\n 'shortcuts': [':socialdist:'],\n 'searchTerms': ['socialdist'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/igBNi55-TACUi1xQkqMAor-IEXmt8He56K7pDTG5XoTsbM-rVswNzUfC5iwnfrpunWihrg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/igBNi55-TACUi1xQkqMAor-IEXmt8He56K7pDTG5XoTsbM-rVswNzUfC5iwnfrpunWihrg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'socialdist',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 34,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/egJ1XufTKYfegwOo57ewAg',\n 'shortcuts': [':shelterin:'],\n 'searchTerms': ['shelterin'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/gjC5x98J4BoVSEPfFJaoLtc4tSBGSEdIlfL2FV4iJG9uGNykDP9oJC_QxAuBTJy6dakPxVeC=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/gjC5x98J4BoVSEPfFJaoLtc4tSBGSEdIlfL2FV4iJG9uGNykDP9oJC_QxAuBTJy6dakPxVeC=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'shelterin',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 35,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/G8AfY6yWGuKuhL0PlbiA2AE',\n 'shortcuts': [':hand-pink-waving:'],\n 'searchTerms': ['hand-pink-waving'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/KOxdr_z3A5h1Gb7kqnxqOCnbZrBmxI2B_tRQ453BhTWUhYAlpg5ZP8IKEBkcvRoY8grY91Q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/KOxdr_z3A5h1Gb7kqnxqOCnbZrBmxI2B_tRQ453BhTWUhYAlpg5ZP8IKEBkcvRoY8grY91Q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-pink-waving',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 36,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/KsIfY6LzFoLM6AKanYDQAg',\n 'shortcuts': [':face-blue-smiling:'],\n 'searchTerms': ['face-blue-smiling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cktIaPxFwnrPwn-alHvnvedHLUJwbHi8HCK3AgbHpphrMAW99qw0bDfxuZagSY5ieE9BBrA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cktIaPxFwnrPwn-alHvnvedHLUJwbHi8HCK3AgbHpphrMAW99qw0bDfxuZagSY5ieE9BBrA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-smiling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 37,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/W8IfY_bwAfiPq7IPvNCA2AU',\n 'shortcuts': [':face-red-droopy-eyes:'],\n 'searchTerms': ['face-red-droopy-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/oih9s26MOYPWC_uL6tgaeOlXSGBv8MMoDrWzBt-80nEiVSL9nClgnuzUAKqkU9_TWygF6CI=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/oih9s26MOYPWC_uL6tgaeOlXSGBv8MMoDrWzBt-80nEiVSL9nClgnuzUAKqkU9_TWygF6CI=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-red-droopy-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 38,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/b8IfY7zOK9iVkNAP_I2A-AY',\n 'shortcuts': [':face-purple-crying:'],\n 'searchTerms': ['face-purple-crying'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/g6_km98AfdHbN43gvEuNdZ2I07MmzVpArLwEvNBwwPqpZYzszqhRzU_DXALl11TchX5_xFE=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/g6_km98AfdHbN43gvEuNdZ2I07MmzVpArLwEvNBwwPqpZYzszqhRzU_DXALl11TchX5_xFE=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-crying',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 39,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hcIfY57lBJXp6AKBx4CoCA',\n 'shortcuts': [':text-green-game-over:'],\n 'searchTerms': ['text-green-game-over'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cr36FHhSiMAJUSpO9XzjbOgxhtrdJNTVJUlMJeOOfLOFzKleAKT2SEkZwbqihBqfTXYCIg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cr36FHhSiMAJUSpO9XzjbOgxhtrdJNTVJUlMJeOOfLOFzKleAKT2SEkZwbqihBqfTXYCIg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'text-green-game-over',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 40,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ssIfY7OFG5OykQOpn4CQCw',\n 'shortcuts': [':person-turqouise-waving:'],\n 'searchTerms': ['person-turqouise-waving'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/uNSzQ2M106OC1L3VGzrOsGNjopboOv-m1bnZKFGuh0DxcceSpYHhYbuyggcgnYyaF3o-AQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/uNSzQ2M106OC1L3VGzrOsGNjopboOv-m1bnZKFGuh0DxcceSpYHhYbuyggcgnYyaF3o-AQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turqouise-waving',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 41,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/xsIfY4OqCd2T29sP54iAsAw',\n 'shortcuts': [':face-green-smiling:'],\n 'searchTerms': ['face-green-smiling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/G061SAfXg2bmG1ZXbJsJzQJpN8qEf_W3f5cb5nwzBYIV58IpPf6H90lElDl85iti3HgoL3o=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/G061SAfXg2bmG1ZXbJsJzQJpN8qEf_W3f5cb5nwzBYIV58IpPf6H90lElDl85iti3HgoL3o=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-green-smiling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 42,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/2sIfY8vIG8z96ALulYDQDQ',\n 'shortcuts': [':face-orange-frowning:'],\n 'searchTerms': ['face-orange-frowning'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Ar8jaEIxzfiyYmB7ejDOHba2kUMdR37MHn_R39mtxqO5CD4aYGvjDFL22DW_Cka6LKzhGDk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Ar8jaEIxzfiyYmB7ejDOHba2kUMdR37MHn_R39mtxqO5CD4aYGvjDFL22DW_Cka6LKzhGDk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-frowning',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 43,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/7cIfY5niDOmSkNAP08CA6A4',\n 'shortcuts': [':eyes-purple-crying:'],\n 'searchTerms': ['eyes-purple-crying'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/FrYgdeZPpvXs-6Mp305ZiimWJ0wV5bcVZctaUy80mnIdwe-P8HRGYAm0OyBtVx8EB9_Dxkc=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/FrYgdeZPpvXs-6Mp305ZiimWJ0wV5bcVZctaUy80mnIdwe-P8HRGYAm0OyBtVx8EB9_Dxkc=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'eyes-purple-crying',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 44,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/A8MfY-_pEIKNr8oP78-AGA',\n 'shortcuts': [':face-fuchsia-wide-eyes:'],\n 'searchTerms': ['face-fuchsia-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/zdcOC1SMmyXJOAddl9DYeEFN9YYcn5mHemJCdRFQMtDuS0V-IyE-5YjNUL1tduX1zs17tQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/zdcOC1SMmyXJOAddl9DYeEFN9YYcn5mHemJCdRFQMtDuS0V-IyE-5YjNUL1tduX1zs17tQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 45,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/E8MfY5u7JPSXkNAP95GAmAE',\n 'shortcuts': [':cat-orange-whistling:'],\n 'searchTerms': ['cat-orange-whistling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/0ocqEmuhrKCK87_J21lBkvjW70wRGC32-Buwk6TP4352CgcNjL6ug8zcsel6JiPbE58xhq5g=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/0ocqEmuhrKCK87_J21lBkvjW70wRGC32-Buwk6TP4352CgcNjL6ug8zcsel6JiPbE58xhq5g=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'cat-orange-whistling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 46,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/LsMfY8P6G-yckNAPjoWA8AI',\n 'shortcuts': [':face-blue-wide-eyes:'],\n 'searchTerms': ['face-blue-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2Ht4KImoWDlCddiDQVuzSJwpEb59nZJ576ckfaMh57oqz2pUkkgVTXV8osqUOgFHZdUISJM=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2Ht4KImoWDlCddiDQVuzSJwpEb59nZJ576ckfaMh57oqz2pUkkgVTXV8osqUOgFHZdUISJM=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 47,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Z8MfY8mzLbnovwK5roC4Bg',\n 'shortcuts': [':face-orange-raised-eyebrow:'],\n 'searchTerms': ['face-orange-raised-eyebrow'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/JbCfmOgYI-mO17LPw8e_ycqbBGESL8AVP6i7ZsBOVLd3PEpgrfEuJ9rEGpP_unDcqgWSCg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/JbCfmOgYI-mO17LPw8e_ycqbBGESL8AVP6i7ZsBOVLd3PEpgrfEuJ9rEGpP_unDcqgWSCg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-raised-eyebrow',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 48,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hcMfY5_zAbbxvwKLooCoCA',\n 'shortcuts': [':face-fuchsia-tongue-out:'],\n 'searchTerms': ['face-fuchsia-tongue-out'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EURfJZi_heNulV3mfHzXBk8PIs9XmZ9lOOYi5za6wFMCGrps4i2BJX9j-H2gK6LIhW6h7sY=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EURfJZi_heNulV3mfHzXBk8PIs9XmZ9lOOYi5za6wFMCGrps4i2BJX9j-H2gK6LIhW6h7sY=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-tongue-out',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 49,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCx',\n 'shortcuts': [':face-orange-biting-nails:'],\n 'searchTerms': ['face-orange-biting-nails'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/HmsXEgqUogkQOnL5LP_FdPit9Z909RJxby-uYcPxBLNhaPyqPTcGwvGaGPk2hzB_cC0hs_pV=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/HmsXEgqUogkQOnL5LP_FdPit9Z909RJxby-uYcPxBLNhaPyqPTcGwvGaGPk2hzB_cC0hs_pV=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-biting-nails',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 50,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/m8MfY4jbFsWJhL0PyouA2Ak',\n 'shortcuts': [':face-red-heart-shape:'],\n 'searchTerms': ['face-red-heart-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/I0Mem9dU_IZ4a9cQPzR0pUJ8bH-882Eg0sDQjBmPcHA6Oq0uXOZcsjPvPbtormx91Ha2eRA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/I0Mem9dU_IZ4a9cQPzR0pUJ8bH-882Eg0sDQjBmPcHA6Oq0uXOZcsjPvPbtormx91Ha2eRA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-red-heart-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 51,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/6_cfY8HJH8bV5QS5yYDYDg',\n 'shortcuts': [':face-fuchsia-poop-shape:'],\n 'searchTerms': ['face-fuchsia-poop-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/_xlyzvSimqMzhdhODyqUBLXIGA6F_d5en2bq-AIfc6fc3M7tw2jucuXRIo5igcW3g9VVe3A=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/_xlyzvSimqMzhdhODyqUBLXIGA6F_d5en2bq-AIfc6fc3M7tw2jucuXRIo5igcW3g9VVe3A=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-poop-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 52,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/DfgfY9LaNdmMq7IPuI2AaA',\n 'shortcuts': [':face-purple-wide-eyes:'],\n 'searchTerms': ['face-purple-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/5RDrtjmzRQKuVYE_FKPUHiGh7TNtX5eSNe6XzcSytMsHirXYKunxpyAsVacTFMg0jmUGhQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/5RDrtjmzRQKuVYE_FKPUHiGh7TNtX5eSNe6XzcSytMsHirXYKunxpyAsVacTFMg0jmUGhQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 53,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/HvgfY93GEYmqvwLUuYDwAQ',\n 'shortcuts': [':glasses-purple-yellow-diamond:'],\n 'searchTerms': ['glasses-purple-yellow-diamond'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EnDBiuksboKsLkxp_CqMWlTcZtlL77QBkbjz_rLedMSDzrHmy_6k44YWFy2rk4I0LG6K2KI=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EnDBiuksboKsLkxp_CqMWlTcZtlL77QBkbjz_rLedMSDzrHmy_6k44YWFy2rk4I0LG6K2KI=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'glasses-purple-yellow-diamond',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 54,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/NvgfY9aeC_OFvOMPkrOAsAM',\n 'shortcuts': [':face-pink-tears:'],\n 'searchTerms': ['face-pink-tears'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/RL5QHCNcO_Mc98SxFEblXZt9FNoh3bIgsjm0Kj8kmeQJWMeTu7JX_NpICJ6KKwKT0oVHhAA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/RL5QHCNcO_Mc98SxFEblXZt9FNoh3bIgsjm0Kj8kmeQJWMeTu7JX_NpICJ6KKwKT0oVHhAA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-pink-tears',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 55,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/UvgfY_vqE92T29sPvqiAkAU',\n 'shortcuts': [':body-blue-raised-arms:'],\n 'searchTerms': ['body-blue-raised-arms'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/2Jds3I9UKOfgjid97b_nlDU4X2t5MgjTof8yseCp7M-6ZhOhRkPGSPfYwmE9HjCibsfA1Uzo=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/2Jds3I9UKOfgjid97b_nlDU4X2t5MgjTof8yseCp7M-6ZhOhRkPGSPfYwmE9HjCibsfA1Uzo=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'body-blue-raised-arms',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 56,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/YvgfY-LIBpjChgHKyYCQBg',\n 'shortcuts': [':hand-orange-covering-eyes:'],\n 'searchTerms': ['hand-orange-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/y8ppa6GcJoRUdw7GwmjDmTAnSkeIkUptZMVQuFmFaTlF_CVIL7YP7hH7hd0TJbd8p9w67IM=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/y8ppa6GcJoRUdw7GwmjDmTAnSkeIkUptZMVQuFmFaTlF_CVIL7YP7hH7hd0TJbd8p9w67IM=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-orange-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 57,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/ePgfY-K2Kp6Mr8oP1oqAwAc',\n 'shortcuts': [':trophy-yellow-smiling:'],\n 'searchTerms': ['trophy-yellow-smiling'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7tf3A_D48gBg9g2N0Rm6HWs2aqzshHU4CuVubTXVxh1BP7YDBRC6pLBoC-ibvr-zCl_Lgg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7tf3A_D48gBg9g2N0Rm6HWs2aqzshHU4CuVubTXVxh1BP7YDBRC6pLBoC-ibvr-zCl_Lgg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'trophy-yellow-smiling',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 58,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/jPgfY5j2IIud29sP3ZeA4Ag',\n 'shortcuts': [':eyes-pink-heart-shape:'],\n 'searchTerms': ['eyes-pink-heart-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/5vzlCQfQQdzsG7nlQzD8eNjtyLlnATwFwGvrMpC8dgLcosNhWLXu8NN9qIS3HZjJYd872dM=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/5vzlCQfQQdzsG7nlQzD8eNjtyLlnATwFwGvrMpC8dgLcosNhWLXu8NN9qIS3HZjJYd872dM=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'eyes-pink-heart-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 59,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/oPgfY_DoKfSXkNAPq8-AgAo',\n 'shortcuts': [':face-turquoise-covering-eyes:'],\n 'searchTerms': ['face-turquoise-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/H2HNPRO8f4SjMmPNh5fl10okSETW7dLTZtuE4jh9D6pSmaUiLfoZJ2oiY-qWU3Owfm1IsXg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/H2HNPRO8f4SjMmPNh5fl10okSETW7dLTZtuE4jh9D6pSmaUiLfoZJ2oiY-qWU3Owfm1IsXg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 60,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/tPgfY7mSO4XovQKzmYCgCw',\n 'shortcuts': [':hand-green-crystal-ball:'],\n 'searchTerms': ['hand-green-crystal-ball'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/qZfJrWDEmR03FIak7PMNRNpMjNsCnOzD9PqK8mOpAp4Kacn_uXRNJNb99tE_1uyEbvgJReF2=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/qZfJrWDEmR03FIak7PMNRNpMjNsCnOzD9PqK8mOpAp4Kacn_uXRNJNb99tE_1uyEbvgJReF2=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-green-crystal-ball',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 61,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/zPgfY66lCJGRhL0Pz6iA4Aw',\n 'shortcuts': [':face-turquoise-drinking-coffee:'],\n 'searchTerms': ['face-turquoise-drinking-coffee'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/myqoI1MgFUXQr5fuWTC9mz0BCfgf3F8GSDp06o1G7w6pTz48lwARjdG8vj0vMxADvbwA1dA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/myqoI1MgFUXQr5fuWTC9mz0BCfgf3F8GSDp06o1G7w6pTz48lwARjdG8vj0vMxADvbwA1dA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-drinking-coffee',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 62,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/4PgfY73cJprKCq-_gIAO',\n 'shortcuts': [':body-green-covering-eyes:'],\n 'searchTerms': ['body-green-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/UR8ydcU3gz360bzDsprB6d1klFSQyVzgn-Fkgu13dIKPj3iS8OtG1bhBUXPdj9pMwtM00ro=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/UR8ydcU3gz360bzDsprB6d1klFSQyVzgn-Fkgu13dIKPj3iS8OtG1bhBUXPdj9pMwtM00ro=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'body-green-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 63,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/-fgfY9DIGYjbhgHLzoDIDw',\n 'shortcuts': [':goat-turquoise-white-horns:'],\n 'searchTerms': ['goat-turquoise-white-horns'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/jMnX4lu5GnjBRgiPtX5FwFmEyKTlWFrr5voz-Auko35oP0t3-zhPxR3PQMYa-7KhDeDtrv4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/jMnX4lu5GnjBRgiPtX5FwFmEyKTlWFrr5voz-Auko35oP0t3-zhPxR3PQMYa-7KhDeDtrv4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'goat-turquoise-white-horns',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 64,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/EvkfY6uNC5OykQOewoCQAQ',\n 'shortcuts': [':hand-purple-blue-peace:'],\n 'searchTerms': ['hand-purple-blue-peace'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/-sC8wj6pThd7FNdslEoJlG4nB9SIbrJG3CRGh7-bNV0RVfcrJuwiWHoUZ6UmcVs7sQjxTg4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/-sC8wj6pThd7FNdslEoJlG4nB9SIbrJG3CRGh7-bNV0RVfcrJuwiWHoUZ6UmcVs7sQjxTg4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hand-purple-blue-peace',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 65,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/LfkfY_zhH4GFr8oP4aKA6AI',\n 'shortcuts': [':face-blue-question-mark:'],\n 'searchTerms': ['face-blue-question-mark'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Wx4PMqTwG3f4gtR7J9Go1s8uozzByGWLSXHzrh3166ixaYRinkH_F05lslfsRUsKRvHXrDk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Wx4PMqTwG3f4gtR7J9Go1s8uozzByGWLSXHzrh3166ixaYRinkH_F05lslfsRUsKRvHXrDk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-question-mark',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 66,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/RPkfY8TPGsCakNAP-JWAoAQ',\n 'shortcuts': [':face-blue-covering-eyes:'],\n 'searchTerms': ['face-blue-covering-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/kj3IgbbR6u-mifDkBNWVcdOXC-ut-tiFbDpBMGVeW79c2c54n5vI-HNYCOC6XZ9Bzgupc10=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/kj3IgbbR6u-mifDkBNWVcdOXC-ut-tiFbDpBMGVeW79c2c54n5vI-HNYCOC6XZ9Bzgupc10=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-covering-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 67,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Mm5IY53bH7SEq7IP-MWAkAM',\n 'shortcuts': [':face-purple-smiling-fangs:'],\n 'searchTerms': ['face-purple-smiling-fangs'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/k1vqi6xoHakGUfa0XuZYWHOv035807ARP-ZLwFmA-_NxENJMxsisb-kUgkSr96fj5baBOZE=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/k1vqi6xoHakGUfa0XuZYWHOv035807ARP-ZLwFmA-_NxENJMxsisb-kUgkSr96fj5baBOZE=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-smiling-fangs',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 68,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/UW5IY-ibBqa8jgTymoCIBQ',\n 'shortcuts': [':face-purple-sweating:'],\n 'searchTerms': ['face-purple-sweating'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tRnrCQtEKlTM9YLPo0vaxq9mDvlT0mhDld2KI7e_nDRbhta3ULKSoPVHZ1-bNlzQRANmH90=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tRnrCQtEKlTM9YLPo0vaxq9mDvlT0mhDld2KI7e_nDRbhta3ULKSoPVHZ1-bNlzQRANmH90=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-sweating',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 69,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/Ym5IY7-0LoqA29sPq9CAkAY',\n 'shortcuts': [':face-purple-smiling-tears:'],\n 'searchTerms': ['face-purple-smiling-tears'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/MJV1k3J5s0hcUfuo78Y6MKi-apDY5NVDjO9Q7hL8fU4i0cIBgU-cU4rq4sHessJuvuGpDOjJ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/MJV1k3J5s0hcUfuo78Y6MKi-apDY5NVDjO9Q7hL8fU4i0cIBgU-cU4rq4sHessJuvuGpDOjJ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-smiling-tears',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 70,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/dG5IY-mhEof9jgSykoCgBw',\n 'shortcuts': [':face-blue-star-eyes:'],\n 'searchTerms': ['face-blue-star-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/m_ANavMhp6cQ1HzX0HCTgp_er_yO2UA28JPbi-0HElQgnQ4_q5RUhgwueTpH-st8L3MyTA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/m_ANavMhp6cQ1HzX0HCTgp_er_yO2UA28JPbi-0HElQgnQ4_q5RUhgwueTpH-st8L3MyTA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-star-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 71,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hm5IY4W-H9SO5QS6n4CwCA',\n 'shortcuts': [':face-blue-heart-eyes:'],\n 'searchTerms': ['face-blue-heart-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/M9tzKd64_r3hvgpTSgca7K3eBlGuyiqdzzhYPp7ullFAHMgeFoNLA0uQ1dGxj3fXgfcHW4w=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/M9tzKd64_r3hvgpTSgca7K3eBlGuyiqdzzhYPp7ullFAHMgeFoNLA0uQ1dGxj3fXgfcHW4w=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-heart-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 72,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/mW5IY47PMcSnkMkPo6OAyAk',\n 'shortcuts': [':face-blue-three-eyes:'],\n 'searchTerms': ['face-blue-three-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/nSQHitVplLe5uZC404dyAwv1f58S3PN-U_799fvFzq-6b3bv-MwENO-Zs1qQI4oEXCbOJg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/nSQHitVplLe5uZC404dyAwv1f58S3PN-U_799fvFzq-6b3bv-MwENO-Zs1qQI4oEXCbOJg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-three-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 73,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/rW5IY_26FryOq7IPlL2A6Ao',\n 'shortcuts': [':face-blue-droopy-eyes:'],\n 'searchTerms': ['face-blue-droopy-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/hGPqMUCiXGt6zuX4dHy0HRZtQ-vZmOY8FM7NOHrJTta3UEJksBKjOcoE6ZUAW9sz7gIF_nk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/hGPqMUCiXGt6zuX4dHy0HRZtQ-vZmOY8FM7NOHrJTta3UEJksBKjOcoE6ZUAW9sz7gIF_nk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-droopy-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 74,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/v25IY7KcJIGOr8oPz4OA-As',\n 'shortcuts': [':planet-orange-purple-ring:'],\n 'searchTerms': ['planet-orange-purple-ring'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/xkaLigm3P4_1g4X1JOtkymcC7snuJu_C5YwIFAyQlAXK093X0IUjaSTinMTLKeRZ6280jXg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/xkaLigm3P4_1g4X1JOtkymcC7snuJu_C5YwIFAyQlAXK093X0IUjaSTinMTLKeRZ6280jXg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'planet-orange-purple-ring',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 75,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-yellow-podium-blue',\n 'shortcuts': [':person-yellow-podium-blue:'],\n 'searchTerms': ['person-yellow-podium-blue'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/N28nFDm82F8kLPAa-jY_OySFsn3Ezs_2Bl5kdxC8Yxau5abkj_XZHYsS3uYKojs8qy8N-9w=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/N28nFDm82F8kLPAa-jY_OySFsn3Ezs_2Bl5kdxC8Yxau5abkj_XZHYsS3uYKojs8qy8N-9w=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-yellow-podium-blue',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 76,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/baseball-white-cap-out',\n 'shortcuts': [':baseball-white-cap-out:'],\n 'searchTerms': ['baseball-white-cap-out'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/8DaGaXfaBN0c-ZsZ-1WqPJ6H9TsJOlUUQQEoXvmdROphZE9vdRtN0867Gb2YZcm2x38E9Q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/8DaGaXfaBN0c-ZsZ-1WqPJ6H9TsJOlUUQQEoXvmdROphZE9vdRtN0867Gb2YZcm2x38E9Q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'baseball-white-cap-out',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 77,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/whistle-red-blow',\n 'shortcuts': [':whistle-red-blow:'],\n 'searchTerms': ['whistle-red-blow'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DBu1ZfPJTnX9S1RyKKdBY-X_CEmj7eF6Uzl71j5jVBz5y4k9JcKnoiFtImAbeu4u8M2X8tU=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DBu1ZfPJTnX9S1RyKKdBY-X_CEmj7eF6Uzl71j5jVBz5y4k9JcKnoiFtImAbeu4u8M2X8tU=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'whistle-red-blow',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 78,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-crowd-surf',\n 'shortcuts': [':person-turquoise-crowd-surf:'],\n 'searchTerms': ['person-turquoise-crowd-surf'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Q0wFvHZ5h54xGSTo-JeGst6InRU3yR6NdBRoyowaqGY66LPzdcrV2t-wBN21kBIdb2TeNA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Q0wFvHZ5h54xGSTo-JeGst6InRU3yR6NdBRoyowaqGY66LPzdcrV2t-wBN21kBIdb2TeNA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-crowd-surf',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 79,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/finger-red-number-one',\n 'shortcuts': [':finger-red-number-one:'],\n 'searchTerms': ['finger-red-number-one'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/Hbk0wxBzPTBCDvD_y4qdcHL5_uu7SeOnaT2B7gl9GLB4u8Ecm9OaXCGSMMUBFeNGl5Q3fHJ2=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/Hbk0wxBzPTBCDvD_y4qdcHL5_uu7SeOnaT2B7gl9GLB4u8Ecm9OaXCGSMMUBFeNGl5Q3fHJ2=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'finger-red-number-one',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 80,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/text-yellow-goal',\n 'shortcuts': [':text-yellow-goal:'],\n 'searchTerms': ['text-yellow-goal'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tnHp8rHjXecGbGrWNcs7xss_aVReaYE6H-QWRCXYg_aaYszHXnbP_pVADnibUiimspLvgX0L=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tnHp8rHjXecGbGrWNcs7xss_aVReaYE6H-QWRCXYg_aaYszHXnbP_pVADnibUiimspLvgX0L=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'text-yellow-goal',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 81,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/medal-yellow-first-red',\n 'shortcuts': [':medal-yellow-first-red:'],\n 'searchTerms': ['medal-yellow-first-red'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EEHiiIalCBKuWDPtNOjjvmEZ-KRkf5dlgmhe5rbLn8aZQl-pNz_paq5UjxNhCrI019TWOQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EEHiiIalCBKuWDPtNOjjvmEZ-KRkf5dlgmhe5rbLn8aZQl-pNz_paq5UjxNhCrI019TWOQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'medal-yellow-first-red',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 82,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-wheelchair-race',\n 'shortcuts': [':person-blue-wheelchair-race:'],\n 'searchTerms': ['person-blue-wheelchair-race'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/ZepxPGk5TwzrKAP9LUkzmKmEkbaF5OttNyybwok6mJENw3p0lxDXkD1X2_rAwGcUM0L-D04=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/ZepxPGk5TwzrKAP9LUkzmKmEkbaF5OttNyybwok6mJENw3p0lxDXkD1X2_rAwGcUM0L-D04=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-wheelchair-race',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 83,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/card-red-penalty',\n 'shortcuts': [':card-red-penalty:'],\n 'searchTerms': ['card-red-penalty'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/uRDUMIeAHnNsaIaShtRkQ6hO0vycbNH_BQT7i3PWetFJb09q88RTjxwzToBy9Cez20D7hA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/uRDUMIeAHnNsaIaShtRkQ6hO0vycbNH_BQT7i3PWetFJb09q88RTjxwzToBy9Cez20D7hA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'card-red-penalty',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 84,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/stopwatch-blue-hand-timer',\n 'shortcuts': [':stopwatch-blue-hand-timer:'],\n 'searchTerms': ['stopwatch-blue-hand-timer'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DCvefDAiskRfACgolTlvV1kMfiZVcG50UrmpnRrg3k0udFWG2Uo9zFMaJrJMSJYwcx6fMgk=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DCvefDAiskRfACgolTlvV1kMfiZVcG50UrmpnRrg3k0udFWG2Uo9zFMaJrJMSJYwcx6fMgk=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'stopwatch-blue-hand-timer',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 85,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-speaker-shape',\n 'shortcuts': [':face-turquoise-speaker-shape:'],\n 'searchTerms': ['face-turquoise-speaker-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/WTFFqm70DuMxSC6ezQ5Zs45GaWD85Xwrd9Sullxt54vErPUKb_o0NJQ4kna5m7rvjbRMgr3A=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/WTFFqm70DuMxSC6ezQ5Zs45GaWD85Xwrd9Sullxt54vErPUKb_o0NJQ4kna5m7rvjbRMgr3A=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-speaker-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 86,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/octopus-red-waving',\n 'shortcuts': [':octopus-red-waving:'],\n 'searchTerms': ['octopus-red-waving'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/L9Wo5tLT_lRQX36iZO_fJqLJR4U74J77tJ6Dg-QmPmSC_zhVQ-NodMRc9T0ozwvRXRaT43o=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/L9Wo5tLT_lRQX36iZO_fJqLJR4U74J77tJ6Dg-QmPmSC_zhVQ-NodMRc9T0ozwvRXRaT43o=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'octopus-red-waving',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 87,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/pillow-turquoise-hot-chocolate',\n 'shortcuts': [':pillow-turquoise-hot-chocolate:'],\n 'searchTerms': ['pillow-turquoise-hot-chocolate'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/cAR4cehRxbn6dPbxKIb-7ShDdWnMxbaBqy2CXzBW4aRL3IqXs3rxG0UdS7IU71OEU7LSd20q=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/cAR4cehRxbn6dPbxKIb-7ShDdWnMxbaBqy2CXzBW4aRL3IqXs3rxG0UdS7IU71OEU7LSd20q=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'pillow-turquoise-hot-chocolate',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 88,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hourglass-purple-sand-orange',\n 'shortcuts': [':hourglass-purple-sand-orange:'],\n 'searchTerms': ['hourglass-purple-sand-orange'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/MFDLjasPt5cuSM_tK5Fnjaz_k08lKHdX_Mf7JkI6awaHriC3rGL7J_wHxyG6PPhJ8CJ6vsQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/MFDLjasPt5cuSM_tK5Fnjaz_k08lKHdX_Mf7JkI6awaHriC3rGL7J_wHxyG6PPhJ8CJ6vsQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hourglass-purple-sand-orange',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 89,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/fish-orange-wide-eyes',\n 'shortcuts': [':fish-orange-wide-eyes:'],\n 'searchTerms': ['fish-orange-wide-eyes'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/iQLKgKs7qL3091VHgVgpaezc62uPewy50G_DoI0dMtVGmQEX5pflZrUxWfYGmRfzfUOOgJs=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/iQLKgKs7qL3091VHgVgpaezc62uPewy50G_DoI0dMtVGmQEX5pflZrUxWfYGmRfzfUOOgJs=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'fish-orange-wide-eyes',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 90,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/popcorn-yellow-striped-smile',\n 'shortcuts': [':popcorn-yellow-striped-smile:'],\n 'searchTerms': ['popcorn-yellow-striped-smile'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/TW_GktV5uVYviPDtkCRCKRDrGlUc3sJ5OHO81uqdMaaHrIQ5-sXXwJfDI3FKPyv4xtGpOlg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/TW_GktV5uVYviPDtkCRCKRDrGlUc3sJ5OHO81uqdMaaHrIQ5-sXXwJfDI3FKPyv4xtGpOlg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'popcorn-yellow-striped-smile',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 91,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/penguin-blue-waving-tear',\n 'shortcuts': [':penguin-blue-waving-tear:'],\n 'searchTerms': ['penguin-blue-waving-tear'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/p2u7dcfZau4_bMOMtN7Ma8mjHX_43jOjDwITf4U9adT44I-y-PT7ddwPKkfbW6Wx02BTpNoC=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/p2u7dcfZau4_bMOMtN7Ma8mjHX_43jOjDwITf4U9adT44I-y-PT7ddwPKkfbW6Wx02BTpNoC=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'penguin-blue-waving-tear',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 92,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/clock-turquoise-looking-up',\n 'shortcuts': [':clock-turquoise-looking-up:'],\n 'searchTerms': ['clock-turquoise-looking-up'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/tDnDkDZykkJTrsWEJPlRF30rmbek2wcDcAIymruOvSLTsUFIZHoAiYTRe9OtO-80lDfFGvo=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/tDnDkDZykkJTrsWEJPlRF30rmbek2wcDcAIymruOvSLTsUFIZHoAiYTRe9OtO-80lDfFGvo=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'clock-turquoise-looking-up',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 93,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-red-smiling-live',\n 'shortcuts': [':face-red-smiling-live:'],\n 'searchTerms': ['face-red-smiling-live'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/14Pb--7rVcqnHvM7UlrYnV9Rm4J-uojX1B1kiXYvv1my-eyu77pIoPR5sH28-eNIFyLaQHs=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/14Pb--7rVcqnHvM7UlrYnV9Rm4J-uojX1B1kiXYvv1my-eyu77pIoPR5sH28-eNIFyLaQHs=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-red-smiling-live',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 94,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/hands-yellow-heart-red',\n 'shortcuts': [':hands-yellow-heart-red:'],\n 'searchTerms': ['hands-yellow-heart-red'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/qWSu2zrgOKLKgt_E-XUP9e30aydT5aF3TnNjvfBL55cTu1clP8Eoh5exN3NDPEVPYmasmoA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/qWSu2zrgOKLKgt_E-XUP9e30aydT5aF3TnNjvfBL55cTu1clP8Eoh5exN3NDPEVPYmasmoA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'hands-yellow-heart-red',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 95,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/volcano-green-lava-orange',\n 'shortcuts': [':volcano-green-lava-orange:'],\n 'searchTerms': ['volcano-green-lava-orange'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/_IWOdMxapt6IBY5Cb6LFVkA3J77dGQ7P2fuvYYv1-ahigpVfBvkubOuGLSCyFJ7jvis-X8I=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/_IWOdMxapt6IBY5Cb6LFVkA3J77dGQ7P2fuvYYv1-ahigpVfBvkubOuGLSCyFJ7jvis-X8I=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'volcano-green-lava-orange',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 96,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-waving-speech',\n 'shortcuts': [':person-turquoise-waving-speech:'],\n 'searchTerms': ['person-turquoise-waving-speech'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/gafhCE49PH_9q-PuigZaDdU6zOKD6grfwEh1MM7fYVs7smAS_yhYCBipq8gEiW73E0apKTzi=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/gafhCE49PH_9q-PuigZaDdU6zOKD6grfwEh1MM7fYVs7smAS_yhYCBipq8gEiW73E0apKTzi=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-waving-speech',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 97,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-orange-tv-shape',\n 'shortcuts': [':face-orange-tv-shape:'],\n 'searchTerms': ['face-orange-tv-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/EVK0ik6dL5mngojX9I9Juw4iFh053emP0wcUjZH0whC_LabPq-DZxN4Jg-tpMcEVfJ0QpcJ4=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/EVK0ik6dL5mngojX9I9Juw4iFh053emP0wcUjZH0whC_LabPq-DZxN4Jg-tpMcEVfJ0QpcJ4=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-orange-tv-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 98,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-blue-spam-shape',\n 'shortcuts': [':face-blue-spam-shape:'],\n 'searchTerms': ['face-blue-spam-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/hpwvR5UgJtf0bGkUf8Rn-jTlD6DYZ8FPOFY7rhZZL-JHj_7OPDr7XUOesilRPxlf-aW42Zg=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/hpwvR5UgJtf0bGkUf8Rn-jTlD6DYZ8FPOFY7rhZZL-JHj_7OPDr7XUOesilRPxlf-aW42Zg=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-blue-spam-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 99,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-fuchsia-flower-shape',\n 'shortcuts': [':face-fuchsia-flower-shape:'],\n 'searchTerms': ['face-fuchsia-flower-shape'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/o9kq4LQ0fE_x8yxj29ZeLFZiUFpHpL_k2OivHbjZbttzgQytU49Y8-VRhkOP18jgH1dQNSVz=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/o9kq4LQ0fE_x8yxj29ZeLFZiUFpHpL_k2OivHbjZbttzgQytU49Y8-VRhkOP18jgH1dQNSVz=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-fuchsia-flower-shape',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 100,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-holding-pencil',\n 'shortcuts': [':person-blue-holding-pencil:'],\n 'searchTerms': ['person-blue-holding-pencil'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/TKgph5IHIHL-A3fgkrGzmiNXzxJkibB4QWRcf_kcjIofhwcUK_pWGUFC4xPXoimmne3h8eQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/TKgph5IHIHL-A3fgkrGzmiNXzxJkibB4QWRcf_kcjIofhwcUK_pWGUFC4xPXoimmne3h8eQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-holding-pencil',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 101,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/body-turquoise-yoga-pose',\n 'shortcuts': [':body-turquoise-yoga-pose:'],\n 'searchTerms': ['body-turquoise-yoga-pose'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/GW3otW7CmWpuayb7Ddo0ux5c-OvmPZ2K3vaytJi8bHFjcn-ulT8vcHMNcqVqMp1j2lit2Vw=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/GW3otW7CmWpuayb7Ddo0ux5c-OvmPZ2K3vaytJi8bHFjcn-ulT8vcHMNcqVqMp1j2lit2Vw=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'body-turquoise-yoga-pose',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 102,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/location-yellow-teal-bars',\n 'shortcuts': [':location-yellow-teal-bars:'],\n 'searchTerms': ['location-yellow-teal-bars'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/YgeWJsRspSlAp3BIS5HMmwtpWtMi8DqLg9fH7DwUZaf5kG4yABfE1mObAvjCh0xKX_HoIR23=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/YgeWJsRspSlAp3BIS5HMmwtpWtMi8DqLg9fH7DwUZaf5kG4yABfE1mObAvjCh0xKX_HoIR23=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'location-yellow-teal-bars',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 103,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-writing-headphones',\n 'shortcuts': [':person-turquoise-writing-headphones:'],\n 'searchTerms': ['person-turquoise-writing-headphones'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/DC4KrwzNkVxLZa2_KbKyjZTUyB9oIvH5JuEWAshsMv9Ctz4lEUVK0yX5PaMsTK3gGS-r9w=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/DC4KrwzNkVxLZa2_KbKyjZTUyB9oIvH5JuEWAshsMv9Ctz4lEUVK0yX5PaMsTK3gGS-r9w=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-writing-headphones',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 104,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-wizard-wand',\n 'shortcuts': [':person-turquoise-wizard-wand:'],\n 'searchTerms': ['person-turquoise-wizard-wand'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/OiZeNvmELg2PQKbT5UCS0xbmsGbqRBSbaRVSsKnRS9gvJPw7AzPp-3ysVffHFbSMqlWKeQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/OiZeNvmELg2PQKbT5UCS0xbmsGbqRBSbaRVSsKnRS9gvJPw7AzPp-3ysVffHFbSMqlWKeQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-turquoise-wizard-wand',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 105,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-eating-spaghetti',\n 'shortcuts': [':person-blue-eating-spaghetti:'],\n 'searchTerms': ['person-blue-eating-spaghetti'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/AXZ8POmCHoxXuBaRxX6-xlT5M-nJZmO1AeUNo0t4o7xxT2Da2oGy347sHpMM8shtUs7Xxh0=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/AXZ8POmCHoxXuBaRxX6-xlT5M-nJZmO1AeUNo0t4o7xxT2Da2oGy347sHpMM8shtUs7Xxh0=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-eating-spaghetti',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 106,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-music-note',\n 'shortcuts': [':face-turquoise-music-note:'],\n 'searchTerms': ['face-turquoise-music-note'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/-K6oRITFKVU8V4FedrqXGkV_vTqUufVCQpBpyLK6w3chF4AS1kzT0JVfJxhtlfIAw5jrNco=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/-K6oRITFKVU8V4FedrqXGkV_vTqUufVCQpBpyLK6w3chF4AS1kzT0JVfJxhtlfIAw5jrNco=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-turquoise-music-note',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 107,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-pink-swaying-hair',\n 'shortcuts': [':person-pink-swaying-hair:'],\n 'searchTerms': ['person-pink-swaying-hair'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/L8cwo8hEoVhB1k1TopQaeR7oPTn7Ypn5IOae5NACgQT0E9PNYkmuENzVqS7dk2bYRthNAkQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/L8cwo8hEoVhB1k1TopQaeR7oPTn7Ypn5IOae5NACgQT0E9PNYkmuENzVqS7dk2bYRthNAkQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-pink-swaying-hair',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 108,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-blue-speaking-microphone',\n 'shortcuts': [':person-blue-speaking-microphone:'],\n 'searchTerms': ['person-blue-speaking-microphone'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/FMaw3drKKGyc6dk3DvtHbkJ1Ki2uD0FLqSIiFDyuChc1lWcA9leahX3mCFMBIWviN2o8eyc=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/FMaw3drKKGyc6dk3DvtHbkJ1Ki2uD0FLqSIiFDyuChc1lWcA9leahX3mCFMBIWviN2o8eyc=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-blue-speaking-microphone',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 109,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/rocket-red-countdown-liftoff',\n 'shortcuts': [':rocket-red-countdown-liftoff:'],\n 'searchTerms': ['rocket-red-countdown-liftoff'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/lQZFYAeWe5-SJ_fz6dCAFYz1MjBnEek8DvioGxhlj395UFTSSHqYAmfhJN2i0rz3fDD5DQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/lQZFYAeWe5-SJ_fz6dCAFYz1MjBnEek8DvioGxhlj395UFTSSHqYAmfhJN2i0rz3fDD5DQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'rocket-red-countdown-liftoff',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 110,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-purple-rain-drops',\n 'shortcuts': [':face-purple-rain-drops:'],\n 'searchTerms': ['face-purple-rain-drops'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/woHW5Jl2RD0qxijnl_4vx4ZhP0Zp65D4Ve1DM_HrwJW-Kh6bQZoRjesGnEwjde8F4LynrQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/woHW5Jl2RD0qxijnl_4vx4ZhP0Zp65D4Ve1DM_HrwJW-Kh6bQZoRjesGnEwjde8F4LynrQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-rain-drops',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 111,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-pink-drinking-tea',\n 'shortcuts': [':face-pink-drinking-tea:'],\n 'searchTerms': ['face-pink-drinking-tea'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/WRLIgKpnClgYOZyAwnqP-Edrdxu6_N19qa8gsB9P_6snZJYIMu5YBJX8dlM81YG6H307KA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/WRLIgKpnClgYOZyAwnqP-Edrdxu6_N19qa8gsB9P_6snZJYIMu5YBJX8dlM81YG6H307KA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-pink-drinking-tea',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 112,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/person-purple-stage-event',\n 'shortcuts': [':person-purple-stage-event:'],\n 'searchTerms': ['person-purple-stage-event'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/YeVVscOyRcDJAhKo2bMwMz_B6127_7lojqafTZECTR9NSEunYO5zEi7R7RqxBD7LYLxfNnXe=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/YeVVscOyRcDJAhKo2bMwMz_B6127_7lojqafTZECTR9NSEunYO5zEi7R7RqxBD7LYLxfNnXe=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'person-purple-stage-event',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 113,\n },\n {\n 'emojiId': 'UCkszU2WH9gy1mb0dV-11UJg/face-purple-open-box',\n 'shortcuts': [':face-purple-open-box:'],\n 'searchTerms': ['face-purple-open-box'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7lJM2sLrozPtNLagPTcN0xlcStWpAuZEmO2f4Ej5kYgSp3woGdq3tWFrTH30S3mD2PyjlQ=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7lJM2sLrozPtNLagPTcN0xlcStWpAuZEmO2f4Ej5kYgSp3woGdq3tWFrTH30S3mD2PyjlQ=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'face-purple-open-box',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 114,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/COLRg9qOwdQCFce-qgodrbsLaA',\n 'shortcuts': [':awesome:'],\n 'searchTerms': ['awesome'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/xqqFxk7nC5nYnjy0oiSPpeWX4yu4I-ysb3QJMOuVml8dHWz82FvF8bhGVjlosZRIG_XxHA=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/xqqFxk7nC5nYnjy0oiSPpeWX4yu4I-ysb3QJMOuVml8dHWz82FvF8bhGVjlosZRIG_XxHA=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'awesome',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 115,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CMKC7uKOwdQCFce-qgodqbsLaA',\n 'shortcuts': [':gar:'],\n 'searchTerms': ['gar'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/pxQTF9D-uxlSIgoopRcS8zAZnBBEPp2R9bwo5qIc3kc7PF2k18so72-ohINWPa6OvWudEcsC=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/pxQTF9D-uxlSIgoopRcS8zAZnBBEPp2R9bwo5qIc3kc7PF2k18so72-ohINWPa6OvWudEcsC=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'gar',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 116,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CJiQ8uiOwdQCFcx9qgodysAOHg',\n 'shortcuts': [':jakepeter:'],\n 'searchTerms': ['jakepeter'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/iq0g14tKRcLwmfdpHULRMeUGfpWUlUyJWr0adf1K1-dStgPOguOe8eo5bKrxmCqIOlu-J18=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/iq0g14tKRcLwmfdpHULRMeUGfpWUlUyJWr0adf1K1-dStgPOguOe8eo5bKrxmCqIOlu-J18=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'jakepeter',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 117,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CI3h3uDJitgCFdARTgodejsFWg',\n 'shortcuts': [':wormRedBlue:'],\n 'searchTerms': ['wormRedBlue'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/QrjYSGexvrRfCVpWrgctyB3shVRAgKmXtctM1vUnA78taji1zYNWwrHs1GKBpdpG5A6yK_k=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/QrjYSGexvrRfCVpWrgctyB3shVRAgKmXtctM1vUnA78taji1zYNWwrHs1GKBpdpG5A6yK_k=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'wormRedBlue',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 118,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CI69oYTKitgCFdaPTgodsHsP5g',\n 'shortcuts': [':wormOrangeGreen:'],\n 'searchTerms': ['wormOrangeGreen'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/S-L8lYTuP13Ds9TJZ2UlxdjDiwNRFPnj0o4x6DAecyJLXDdQ941upYRhxalbjzpJn5USU_k=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/S-L8lYTuP13Ds9TJZ2UlxdjDiwNRFPnj0o4x6DAecyJLXDdQ941upYRhxalbjzpJn5USU_k=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'wormOrangeGreen',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 119,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CKzQr47KitgCFdCITgodq6EJZg',\n 'shortcuts': [':wormYellowRed:'],\n 'searchTerms': ['wormYellowRed'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/L9TQqjca5x7TE8ZB-ifFyU51xWXArz47rJFU7Pg2KgWMut5th9qsU-pCu1zIF98szO5wNXE=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/L9TQqjca5x7TE8ZB-ifFyU51xWXArz47rJFU7Pg2KgWMut5th9qsU-pCu1zIF98szO5wNXE=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'wormYellowRed',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 120,\n },\n {\n 'emojiId': 'UCzC5CNksIBaiT-NdMJjJNOQ/CPGD8Iu8kN4CFREChAod9OkLmg',\n 'shortcuts': [':ytg:'],\n 'searchTerms': ['ytg'],\n 'image': {\n 'thumbnails': [\n {\n 'url': 'https://yt3.ggpht.com/7PgbidnZLTC-38qeoqYensfXg7s7EC1Dudv9q9l8aIjqLgnfvpfhnEBH_7toCmVmqhIe4I45=w24-h24-c-k-nd',\n 'width': 24,\n 'height': 24,\n },\n {\n 'url': 'https://yt3.ggpht.com/7PgbidnZLTC-38qeoqYensfXg7s7EC1Dudv9q9l8aIjqLgnfvpfhnEBH_7toCmVmqhIe4I45=w48-h48-c-k-nd',\n 'width': 48,\n 'height': 48,\n },\n ],\n 'accessibility': {\n 'accessibilityData': {\n 'label': 'ytg',\n },\n },\n },\n 'isCustomEmoji': true,\n 'index': 121,\n },\n];\n","export namespace Alejo {\n export namespace Pronouns {\n export type name =\n | 'hehim'\n | 'sheher'\n | 'theythem'\n | 'shethem'\n | 'hethem'\n | 'heshe'\n | 'xexem'\n | 'faefaer'\n | 'vever'\n | 'aeaer'\n | 'ziehir'\n | 'perper'\n | 'eem'\n | 'itits';\n\n export type display =\n | 'He/Him'\n | 'She/Her'\n | 'They/Them'\n | 'She/They'\n | 'He/They'\n | 'He/She'\n | 'Xe/Xem'\n | 'Fae/Faer'\n | 'Ve/Ver'\n | 'Ae/Aer'\n | 'Zie/Hir'\n | 'Per/Per'\n | 'E/Em'\n | 'It/Its';\n\n export enum map {\n hehim = 'He/Him',\n sheher = 'She/Her',\n theythem = 'They/Them',\n shethem = 'She/They',\n hethem = 'He/They',\n heshe = 'He/She',\n xexem = 'Xe/Xem',\n faefaer = 'Fae/Faer',\n vever = 'Ve/Ver',\n aeaer = 'Ae/Aer',\n ziehir = 'Zie/Hir',\n perper = 'Per/Per',\n eem = 'E/Em',\n itits = 'It/Its',\n }\n }\n export async function list(): Promise<typeof Pronouns.map> {\n try {\n const data = (await fetch('https://pronouns.alejo.io/api/pronouns').then((res) => res.json())) as {\n display: Pronouns.display;\n name: Pronouns.name;\n }[];\n\n if (Array.isArray(data) && data.length) {\n const built = Object.fromEntries(data.map(({ name, display }) => [name, display] as const)) as Record<Pronouns.name, Pronouns.display>;\n\n return { ...Pronouns.map, ...built } as typeof Pronouns.map;\n }\n } catch {}\n\n return { ...Pronouns.map } as typeof Pronouns.map;\n }\n\n export type user = {\n id: string;\n login: string;\n pronoun_id: Pronouns.name;\n };\n\n export async function get(username: string) {\n if (!username) throw new Error('Username is required to fetch Alejo data.');\n\n username = username.toLowerCase();\n\n if (username in client.storage.data.pronoun && client.storage.data.pronoun[username].expire > Date.now()) {\n return client.storage.data.pronoun[username].value;\n } else {\n try {\n const data = await fetch(`https://pronouns.alejo.io/api/users/${username}`)\n .then((res) => res.json())\n .then(([data]) => data as Alejo.user | undefined);\n\n if (data) {\n client.storage.add(`pronoun.${username}`, {\n value: data.pronoun_id,\n timestamp: Date.now(),\n expire: Date.now() + client.cache.pronoun * 60 * 1000,\n });\n\n return client.storage.data.pronoun[username].value ?? data.pronoun_id;\n }\n } catch (error) {\n throw new Error(`Failed to fetch pronoun data for user \"${username}\": ${error instanceof Error ? error.message : error}`);\n }\n }\n }\n}\n","import { Simulation } from '../simulation/simulation.js';\n\n/**\n * Parse a color string to RGBA components\n * @param str - color string\n * @param format - format of the input color string\n * @returns - RGBA components or null if parsing fails\n */\nexport function parseToRGBA(str: string, format: string | false): { r: number; g: number; b: number; a: number } | null {\n if (!format) return null;\n\n switch (format) {\n case 'hex': {\n const hex = str.replace('#', '');\n let r = 0,\n g = 0,\n b = 0,\n a = 1;\n\n if (hex.length === 3) {\n r = parseInt(hex[0] + hex[0], 16);\n g = parseInt(hex[1] + hex[1], 16);\n b = parseInt(hex[2] + hex[2], 16);\n } else if (hex.length === 6) {\n r = parseInt(hex.slice(0, 2), 16);\n g = parseInt(hex.slice(2, 4), 16);\n b = parseInt(hex.slice(4, 6), 16);\n } else if (hex.length === 4) {\n r = parseInt(hex[0] + hex[0], 16);\n g = parseInt(hex[1] + hex[1], 16);\n b = parseInt(hex[2] + hex[2], 16);\n a = parseInt(hex[3] + hex[3], 16) / 255;\n } else if (hex.length === 8) {\n r = parseInt(hex.slice(0, 2), 16);\n g = parseInt(hex.slice(2, 4), 16);\n b = parseInt(hex.slice(4, 6), 16);\n a = parseInt(hex.slice(6, 8), 16) / 255;\n }\n\n return { r, g, b, a };\n }\n\n case 'rgb':\n case 'rgba': {\n const match = str.match(/rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)/);\n if (!match) return null;\n\n return {\n r: parseInt(match[1]),\n g: parseInt(match[2]),\n b: parseInt(match[3]),\n a: match[4] ? parseFloat(match[4]) : 1,\n };\n }\n\n case 'hsl':\n case 'hsla': {\n const match = str.match(/hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%(?:\\s*,\\s*([\\d.]+))?\\s*\\)/);\n if (!match) return null;\n\n const h = parseInt(match[1]);\n const s = parseInt(match[2]);\n const l = parseInt(match[3]);\n const a = match[4] ? parseFloat(match[4]) : 1;\n\n const rgb = hslToRgb(h, s, l);\n return { ...rgb, a };\n }\n\n case 'css-color-name': {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n const ctx = canvas.getContext('2d');\n if (!ctx) return null;\n\n ctx.fillStyle = str;\n ctx.fillRect(0, 0, 1, 1);\n const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;\n\n return { r, g, b, a: 1 };\n }\n\n default:\n return null;\n }\n}\n\n/**\n * Convert RGBA to Hex\n * @param rgba - RGBA components\n * @param includeAlpha - Whether to include alpha in the hex string\n * @returns Hex color string\n */\nexport function rgbaToHex(rgba: { r: number; g: number; b: number; a: number }, includeAlpha: boolean = true): string {\n const toHex = (n: number) => Math.round(n).toString(16).padStart(2, '0');\n\n let hex = `#${toHex(rgba.r)}${toHex(rgba.g)}${toHex(rgba.b)}`;\n\n if (includeAlpha && rgba.a < 1) {\n hex += toHex(rgba.a * 255);\n }\n\n return hex;\n}\n\n/**\n * Convert RGB to HSL\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns HSL components\n */\nexport function rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n switch (max) {\n case r:\n h = ((g - b) / delta + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / delta + 2) / 6;\n break;\n case b:\n h = ((r - g) / delta + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\n/**\n * Convert HSL to RGB\n * @param h - Hue (0-360)\n * @param s - Saturation (0-100)\n * @param l - Lightness (0-100)\n * @returns RGB components\n */\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n h /= 360;\n s /= 100;\n l /= 100;\n\n let r: number, g: number, b: number;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n };\n}\n\n/**\n * Find the closest CSS color name to the given RGB values\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns Closest CSS color name\n */\nexport function findClosestColorName(r: number, g: number, b: number): string {\n const cssColors = Simulation.data.css_color_names;\n\n let closestColor = cssColors[0];\n let minDistance = Infinity;\n\n for (const colorName of cssColors) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n const ctx = canvas.getContext('2d');\n if (!ctx) continue;\n\n ctx.fillStyle = colorName;\n ctx.fillRect(0, 0, 1, 1);\n const [cr, cg, cb] = ctx.getImageData(0, 0, 1, 1).data;\n\n const distance = Math.sqrt(Math.pow(r - cr, 2) + Math.pow(g - cg, 2) + Math.pow(b - cb, 2));\n\n if (distance < minDistance) {\n minDistance = distance;\n closestColor = colorName;\n }\n\n if (distance === 0) break;\n }\n\n return closestColor;\n}\n","import { type BadgeOptions, findEmotesInText, generateBadges, replaceEmotesWithHTML } from '../utils/Message.js';\nimport { names, messages, avatars, emotes, badges, tts, items, tiers, css_color_names, youtube_emotes } from './data/index.js';\nimport { StreamElements } from '../types/streamelements/main.js';\nimport type { Provider } from '../types/client.js';\nimport { Alejo } from '../utils/alejo.js';\nimport { logger } from '../index.js';\nimport { findClosestColorName, parseToRGBA, rgbaToHex, rgbToHsl } from '../utils/color.js';\n\nexport namespace Simulation {\n export const data = {\n names,\n messages,\n tiers,\n avatars,\n emotes,\n youtube_emotes,\n badges,\n items,\n tts,\n pronouns: Alejo.Pronouns.map,\n css_color_names,\n };\n\n export const color = {\n /**\n * Generate opacity hex value\n * @param opacity - Opacity value from 0 to 100\n * @param color - Hex color code\n * @returns - Hex color code with opacity\n */\n opacity(opacity: number = 100, color: string = '') {\n color = color.length > 7 ? color?.substring(0, 6) : color;\n opacity = opacity > 1 ? opacity / 100 : opacity;\n\n let result = Math.round(Math.min(Math.max(opacity, 0), 1) * 255)\n .toString(16)\n .toLowerCase()\n .padStart(2, '0');\n\n return color + result;\n },\n\n /**\n * Extract color and opacity from hex code\n * @param hex - Hex color code\n * @returns - Object with color and opacity\n */\n extract(hex: string) {\n if (!hex.startsWith('#') || hex.length <= 7) {\n return {\n color: hex,\n opacity: 100,\n };\n }\n\n var color = hex.slice(-2);\n var decimal = parseInt(color, 16) / 255;\n var percentage = Math.round(decimal * 100);\n var color = hex.length > 7 ? hex.slice(0, 7) : hex;\n\n return {\n color: color,\n opacity: percentage,\n };\n },\n\n validate(str: string) {\n if (typeof str !== 'string' || !String(str).trim().length) return false;\n\n const s = str.trim();\n\n // HEX (#FFF, #FFFFFF, #FFFFFFFF)\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(s) || /^#([A-Fa-f0-9]{4}|[A-Fa-f0-9]{8})$/.test(s)) {\n return 'hex';\n }\n\n // rgb(255, 255, 255)\n if (/^rgb\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)$/.test(s)) {\n return 'rgb';\n }\n\n // rgba(255, 255, 255, 0.5)\n if (/^rgba\\(\\s*(?:\\d{1,3}\\s*,\\s*){3}(?:0|1|0?\\.\\d+)\\s*\\)$/.test(s)) {\n return 'rgba';\n }\n\n // hsl(360, 100%, 100%)\n if (/^hsl\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*\\)$/.test(s)) {\n return 'hsl';\n }\n\n // hsla(360, 100%, 100%, 0.5)\n if (/^hsla\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*,\\s*(?:0|1|0?\\.\\d+)\\s*\\)$/.test(s)) {\n return 'hsla';\n }\n\n if (data.css_color_names.includes(s.toLowerCase())) {\n return 'css-color-name';\n }\n\n return false;\n },\n\n /**\n * Convert color to different format\n * @param str - Color string to convert (e.g. \"#FF5733\", \"rgb(255, 87, 51)\")\n * @param format - Target format\n * @returns - Converted color string\n * @example\n * ```javascript\n * const hexColor = Simulation.color.convert(\"rgb(255, 87, 51)\", \"hex\"); // \"#FF5733\"\n * const rgbColor = Simulation.color.convert(\"#FF5733\", \"rgb\"); // \"rgb(255, 87, 51)\"\n * const hslColor = Simulation.color.convert(\"#FF5733\", \"hsl\"); // \"hsl(14, 100%, 60%)\"\n * const colorName = Simulation.color.convert(\"#FF5733\", \"css-color-name\"); // \"orangered\"\n * ```\n */\n convert(str: string, format: 'hex' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'css-color-name'): string | null {\n const valid = this.validate(str);\n\n if (!valid) {\n throw new Error(`Invalid color format: ${str}`);\n }\n\n if (valid === format) {\n throw new Error(`Color is already in the desired format: ${format}`);\n }\n\n const rgba = parseToRGBA(str.trim(), valid);\n\n if (!rgba) {\n throw new Error(`Failed to parse color: ${str}`);\n }\n\n switch (format) {\n case 'hex': {\n return rgbaToHex(rgba, false);\n }\n case 'rgb': {\n return `rgb(${rgba.r}, ${rgba.g}, ${rgba.b})`;\n }\n case 'rgba': {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n }\n case 'hsl': {\n const hsl = rgbToHsl(rgba.r, rgba.g, rgba.b);\n return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n }\n case 'hsla': {\n const hsl = rgbToHsl(rgba.r, rgba.g, rgba.b);\n return `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${rgba.a})`;\n }\n case 'css-color-name': {\n return findClosestColorName(rgba.r, rgba.g, rgba.b);\n }\n default: {\n return null;\n }\n }\n },\n };\n\n export const rand = {\n /**\n * Generate random color\n * @param type - Color format\n * @returns - Random color in specified format\n * @example\n * ```javascript\n * const hexColor = Simulation.rand.color('hex');\n * console.log(hexColor); // e.g. #3e92cc\n *\n * const rgbColor = Simulation.rand.color('rgb');\n * console.log(rgbColor); // e.g. rgb(62, 146, 204)\n * ```\n */\n color(type: 'hex' | 'hexa' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'css-color-name' = 'hex') {\n switch (type) {\n default:\n case 'hex': {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padStart(6, '0')}`;\n }\n case 'hexa': {\n const hex = `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padStart(6, '0')}`;\n\n const alpha = Math.floor(Math.random() * 256)\n .toString(16)\n .padStart(2, '0');\n\n return hex + alpha;\n }\n case 'rgb': {\n const r = Math.floor(Math.random() * 256);\n const g = Math.floor(Math.random() * 256);\n const b = Math.floor(Math.random() * 256);\n\n return `rgb(${r}, ${g}, ${b})`;\n }\n case 'rgba': {\n const r = Math.floor(Math.random() * 256);\n const g = Math.floor(Math.random() * 256);\n const b = Math.floor(Math.random() * 256);\n const a = Math.random().toFixed(2);\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n case 'hsl': {\n const h = Math.floor(Math.random() * 361);\n const s = Math.floor(Math.random() * 101);\n const l = Math.floor(Math.random() * 101);\n\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n case 'hsla': {\n const h = Math.floor(Math.random() * 361);\n const s = Math.floor(Math.random() * 101);\n const l = Math.floor(Math.random() * 101);\n const a = Math.random().toFixed(2);\n\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n case 'css-color-name': {\n var names = data.css_color_names;\n\n return this.array(names)[0];\n }\n }\n },\n\n /**\n * Generate random number\n * @param min - Minimum value\n * @param max - Maximum value\n * @param float - Number of decimal places (0 for integer)\n * @returns - Random number\n * @example\n * ```javascript\n * const intNumber = Simulation.rand.number(1, 10);\n * console.log(intNumber); // e.g. 7\n *\n * const floatNumber = Simulation.rand.number(1, 10, 2);\n * console.log(floatNumber); // e.g. 3.14\n * ```\n */\n number(min: number, max: number, float: number = 0): number {\n if (min > max) [min, max] = [max, min];\n\n const rand = Math.random() * (max - min) + min;\n return float ? Number(rand.toFixed(float)) : Math.round(rand);\n },\n\n /**\n * Generate random boolean\n * @param threshold - Threshold between 0 and 1\n * @returns - Random boolean\n * @example\n * ```javascript\n * const boolValue = Simulation.rand.boolean(0.7);\n * console.log(boolValue); // e.g. true (70% chance)\n * ```\n */\n boolean(threshold: number = 0.5): boolean {\n return Math.random() > threshold;\n },\n\n /**\n * Generate random string\n * @param length - Length of the string\n * @param chars - Characters to use\n * @returns - Random string\n * @example\n * ```javascript\n * const randString = Simulation.rand.string(10);\n * console.log(randString); // e.g. \"aZ3bT9xYqP\"\n * ```\n */\n string(length: number, chars: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'): string {\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return result;\n },\n\n /**\n * Pick random element from array\n * @param arr - Array to pick from\n * @returns - Random element and its index\n * @example\n * ```javascript\n * const [element, index] = Simulation.rand.array(['apple', 'banana', 'cherry']);\n * console.log(element, index); // e.g. \"banana\", 1\n * ```\n */\n array<T>(arr: T[]): [value: T, index: number] {\n const index = this.number(0, arr.length - 1);\n\n return [arr[index], index];\n },\n\n /**\n * Generate random date\n * @param start - Start date\n * @param end - End date\n * @returns - Random date between start and end\n * @example\n * ```javascript\n * const randDate = Simulation.rand.date(new Date(2020, 0, 1), new Date());\n * console.log(randDate); // e.g. 2022-05-15T10:30:00.000Z\n * ```\n */\n date(start: Date = new Date(2000, 0, 1), end: Date = new Date()): Date {\n const date = new Date(this.number(start.getTime(), end.getTime()));\n\n return date;\n },\n\n /**\n * Generate ISO date string offset by days\n * @param daysAgo - Number of days to go back\n * @returns - ISO date string\n * @example\n * ```javascript\n * const isoDate = Simulation.rand.daysOffset(7);\n * console.log(isoDate); // e.g. \"2024-06-10T14:23:45.678Z\"\n *\n * const isoDate30 = Simulation.rand.daysOffset(30);\n * console.log(isoDate30); // e.g. \"2024-05-18T09:15:30.123Z\"\n * ```\n */\n daysOffset(daysAgo: number): string {\n const now = Date.now();\n const past = now - this.number(0, daysAgo * 24 * 60 * 60 * 1000);\n\n return new Date(past).toISOString();\n },\n\n /**\n * Generate UUID v4\n * @returns - UUID string\n * @example\n * ```javascript\n * const uuid = Simulation.rand.uuid();\n * console.log(uuid); // e.g. \"3b12f1df-5232-4e3a-9a0c-3f9f1b1b1b1b\"\n * ```\n */\n uuid(): string {\n return window.crypto && typeof crypto?.randomUUID === 'function'\n ? crypto.randomUUID()\n : '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) =>\n (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16),\n );\n },\n };\n\n type Modifier = (value: string, param: string | null | undefined, values: { amount?: number; count?: number }) => string;\n\n export const string = {\n /**\n * Replaces occurrences in a string based on a pattern with the result of an asynchronous callback function.\n * @param string - The input string to perform replacements on.\n * @param pattern - The pattern to match in the string (can be a string or a regular expression).\n * @param callback - An asynchronous callback function that takes the matched substring and any captured groups as arguments and returns the replacement string.\n * @returns A promise that resolves to the modified string with replacements applied.\n * @example\n * ```javascript\n * const result = await Simulation.string.replace(\"Hello World\", /World/, async (match) => {\n * return await fetchSomeData(match); // Assume this function fetches data asynchronously\n * });\n * console.log(result); // Output will depend on the fetched data\n * ```\n */\n async replace(string: string, pattern: string, callback: (match: string, ...groups: string[]) => Promise<string> | string): Promise<string> {\n const promises: Array<Promise<string>> = [];\n\n string.replace(pattern, (match: string, ...groups: string[]) => {\n const promise = typeof callback === 'function' ? callback(match, ...groups) : match;\n\n promises.push(Promise.resolve(promise));\n\n return match;\n });\n\n const replacements = await Promise.all(promises);\n\n return string.replace(pattern, () => replacements.shift() ?? '');\n },\n\n /**\n * Capitalizes the first letter of a given string.\n * @param string - The input string to be capitalized.\n * @returns The capitalized string.\n * @example\n * ```javascript\n * const result = Simulation.string.capitalize(\"hello world\");\n * console.log(result); // Output: \"Hello world\"\n * ```\n */\n capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n },\n\n /**\n * Composes a template string by replacing placeholders with corresponding values and applying optional modifiers.\n * @param template - The template string containing placeholders in the format {key} and optional modifiers in the format [MODIFIER:param=value].\n * @param values - An object containing key-value pairs to replace the placeholders in the template.\n * @param options - Optional settings for the composition process.\n * @returns The composed string with placeholders replaced and modifiers applied.\n * @example\n * ```javascript\n * const template = \"Hello, {username}! You have {amount} [UPPERCASE=messages] and your name is [CAPITALIZE=name].\";\n * const values = { username: \"john_doe\", amount: 5, name: \"john\" };\n * const result = Simulation.string.compose(template, values);\n * console.log(result); // Output: \"Hello, john_doe! You have 5 MESSAGES and your name is John.\"\n * ```\n */\n compose(\n template: string,\n values: Record<string, any> = {},\n options: {\n method?: 'loop' | 'index';\n html?: boolean;\n modifiers?: Record<string, Modifier>;\n aliases?: Record<string, string[]>;\n } = {\n method: 'index',\n html: false,\n modifiers: {},\n aliases: {},\n },\n ): string {\n const { mergeSpanStyles } = element;\n\n values.skip = '<br/>';\n values.newline = '<br/>';\n\n const flatten: Record<string, string> = Object.entries(object.flatten(values)).reduce(\n (acc, [k, v]) => {\n acc[k] = String(v);\n\n if (['username', 'name', 'nick', 'nickname', 'sender'].some((e) => k === e)) {\n const username = acc?.username || acc?.name || acc?.nick || acc?.nickname || acc?.sender;\n\n acc['username'] = acc.username || username;\n acc['usernameAt'] = `@${acc.username}`;\n acc['name'] = acc.name || username;\n acc['nick'] = acc.nick || username;\n acc['nickname'] = acc.nickname || username;\n acc['sender'] = acc.sender || username;\n acc['senderAt'] = `@${acc.sender}`;\n }\n\n if (['amount', 'count'].some((e) => k === e)) {\n acc['amount'] = String(amount);\n acc['count'] = String(acc?.count || amount);\n }\n\n acc['currency'] = acc.currency || window.client?.details.currency.symbol || '$';\n acc['currencyCode'] = acc.currencyCode || window.client?.details.currency.code || 'USD';\n\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const REGEX = {\n PLACEHOLDERS: /{([^}]+)}/g,\n MODIFIERS: /\\[(\\w+)(:[^=]+)?=([^\\]]+)\\]/g,\n };\n\n var amount = parseFloat(flatten?.amount ?? flatten?.count ?? 0);\n\n const HTML_MODIFIERS: Record<string, Modifier> = {\n COLOR: (value, param) => mergeSpanStyles(param && !!color.validate(param) ? `color: ${param}` : '', value),\n WEIGHT: (value, param) => mergeSpanStyles(param && !isNaN(parseInt(param)) ? `font-weight: ${param}` : '', value),\n BOLD: (value) => mergeSpanStyles('font-weight: bold', value),\n LIGHT: (value) => mergeSpanStyles('font-weight: lighter', value),\n STRONG: (value) => mergeSpanStyles('font-weight: bolder', value),\n ITALIC: (value) => mergeSpanStyles('font-style: italic', value),\n UNDERLINE: (value) => mergeSpanStyles('text-decoration: underline', value),\n STRIKETHROUGH: (value) => mergeSpanStyles('text-decoration: line-through', value),\n SUB: (value) => mergeSpanStyles('vertical-align: sub', value),\n SUP: (value) => mergeSpanStyles('vertical-align: super', value),\n LARGER: (value) => mergeSpanStyles('font-size: larger', value),\n SMALL: (value) => mergeSpanStyles('font-size: smaller', value),\n SHADOW: (value, param) => mergeSpanStyles(`text-shadow: ${param}`, value),\n SIZE: (value, param) => mergeSpanStyles(param ? `font-size: ${param}` : '', value),\n };\n\n const STRING_MODIFIERS: Record<string, Modifier> = {\n BT1: (value) => (amount > 1 ? value : ''),\n BT0: (value) => (amount > 0 ? value : ''),\n ST1: (value) => (amount < 1 ? value : ''),\n ST0: (value) => (amount < 0 ? value : ''),\n UPC: (value) => value.toUpperCase(),\n LOW: (value) => value.toLowerCase(),\n REV: (value) => value.split('').reverse().join(''),\n CAP: (value) => value.charAt(0).toUpperCase() + value.slice(1).toLowerCase(),\n FALLBACK: (value, param) => (value.length ? value : (param ?? value)),\n };\n\n const MODIFIERS: Record<string, Modifier> = {\n ...STRING_MODIFIERS,\n ...(options?.html ? HTML_MODIFIERS : {}),\n ...(options.modifiers ?? {}),\n };\n\n const ALIASES = {\n UPC: ['UPPERCASE', 'UPPER', 'UPP'],\n LOW: ['LOWERCASE', 'LOWER', 'LWC'],\n REV: ['REVERSE', 'RVS'],\n CAP: ['CAPITALIZE', 'CAPITAL'],\n BT1: ['BIGGER_THAN_1', 'GREATER_THAN_1', 'GT1'],\n BT0: ['BIGGER_THAN_0', 'GREATER_THAN_0', 'GT0'],\n ST1: ['SMALLER_THAN_1', 'LESS_THAN_1', 'LT1'],\n ST0: ['SMALLER_THAN_0', 'LESS_THAN_0', 'LT0'],\n COLOR: ['COLOUR', 'CLR', 'HIGHLIGHT'],\n BOLD: ['BOLDEN', 'B'],\n STRONG: ['STRONGEN', 'STRONG'],\n ITALIC: ['ITALICIZE', 'ITALIC', 'I'],\n UNDERLINE: ['U', 'INS', 'INSET', 'I'],\n STRIKETHROUGH: ['STRIKE', 'S', 'DELETE', 'D'],\n SUB: ['SUBSCRIPT', 'SUBS'],\n SUP: ['SUPERSCRIPT', 'SUPS'],\n LARGER: ['LARGER', 'LG'],\n SMALL: ['SMALLER', 'SM'],\n SHADOW: ['SHADOW', 'SHD'],\n FALLBACK: ['FALLBACK', 'FB'],\n ...(options.aliases ?? {}),\n };\n\n function applyModifier(value: string, name: string, param: string | null | undefined): string {\n const canonical = Object.entries(ALIASES).find(([key, aliases]) => {\n if (aliases.some((alias) => alias.toUpperCase() === name.toUpperCase())) return true;\n else if (key.toUpperCase() === name.toUpperCase()) return true;\n else return false;\n });\n const use = canonical ? canonical[0] : name.toUpperCase();\n\n if (MODIFIERS[use]) return MODIFIERS[use](value, typeof param === 'string' ? param.trim() : null, flatten);\n else return value;\n }\n\n function replaceAll(string: string): string {\n let str = string;\n let match;\n\n while ((match = REGEX.MODIFIERS.exec(str)) !== null) {\n const [fullMatch, modifier, param, value] = match;\n\n const newValue = applyModifier(replaceAll(value), modifier, param);\n\n str = str.replace(fullMatch, newValue ?? '');\n\n REGEX.MODIFIERS.lastIndex = 0;\n }\n\n return str;\n }\n\n function parseModifiers(str: string): string {\n let i = 0;\n const len = str.length;\n\n function parseText(stopChar?: string): string {\n let out = '';\n while (i < len) {\n if (str[i] === '\\\\') {\n if (i + 1 < len) {\n out += str[i + 1];\n i += 2;\n } else {\n i++;\n }\n } else if (str[i] === '[' && (!stopChar || stopChar !== '[')) {\n out += parseModifier();\n } else if (stopChar && str[i] === stopChar) {\n i++;\n break;\n } else {\n out += str[i++];\n }\n }\n return out;\n }\n\n function parseModifier(): string {\n i++;\n let name = '';\n while (i < len && /[A-Za-z0-9]/.test(str[i])) name += str[i++];\n let param: string | null = null;\n if (str[i] === ':') {\n i++;\n const paramStart = i;\n while (i < len && str[i] !== '=') i++;\n param = str.slice(paramStart, i);\n }\n if (str[i] === '=') i++;\n const value = parseText(']');\n return applyModifier(value, name, param);\n }\n\n return parseText();\n }\n\n let result = template.replace(REGEX.PLACEHOLDERS, (_, key: string) =>\n typeof flatten[key] === 'string' || typeof flatten[key] === 'number' ? String(flatten[key]) : (key ?? key),\n );\n\n result = options.method === 'loop' ? replaceAll(result) : parseModifiers(result);\n\n return result;\n },\n };\n\n export const number = {\n /**\n * Translate number to words\n * @param num - Number to translate\n * @param type - Translation type\n * @returns - Number in words\n * @example\n * ```javascript\n * const cardinal = Simulation.number.translate(42, 'cardinal');\n * console.log(cardinal); // \"forty-two\"\n * ```\n */\n translate(num: number, type: 'cardinal' | 'ordinal' | 'suffix' = 'cardinal'): string {\n const CARDINALS = {\n single: ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'],\n tens: ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'],\n decades: ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'],\n };\n const ORDINALS = {\n single: ['zeroth', 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth'],\n tens: ['tenth', 'eleventh', 'twelfth', 'thirteenth', 'fourteenth', 'fifteenth', 'sixteenth', 'seventeenth', 'eighteenth', 'nineteenth'],\n decades: ['twentieth', 'thirtieth', 'fortieth', 'fiftieth', 'sixtieth', 'seventieth', 'eightieth', 'ninetieth'],\n };\n const SUFFIXES = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th'];\n const SCALES = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion'];\n const SCALES_ORD = SCALES.map((s) => (s ? `${s}th` : ''));\n\n num = Math.abs(Math.floor(num));\n\n if (type === 'suffix') {\n const rem100 = num % 100;\n if (rem100 >= 11 && rem100 <= 13) return `${num}th`;\n const rem10 = num % 10;\n return `${num}${SUFFIXES[rem10]}`;\n }\n\n function below100(n: number, kind: 'cardinal' | 'ordinal'): string {\n if (n < 10) return kind === 'ordinal' ? ORDINALS.single[n] : CARDINALS.single[n];\n if (n < 20) return kind === 'ordinal' ? ORDINALS.tens[n - 10] : CARDINALS.tens[n - 10];\n const decade = Math.floor(n / 10);\n const single = n % 10;\n if (single === 0) return kind === 'ordinal' ? ORDINALS.decades[decade - 2] : CARDINALS.decades[decade - 2];\n const tensPart = CARDINALS.decades[decade - 2];\n const unitPart = kind === 'ordinal' ? ORDINALS.single[single] : CARDINALS.single[single];\n return `${tensPart}-${unitPart}`;\n }\n\n function below1000(n: number, kind: 'cardinal' | 'ordinal'): string {\n if (n === 0) return kind === 'ordinal' ? ORDINALS.single[0] : CARDINALS.single[0];\n const hundreds = Math.floor(n / 100);\n const rest = n % 100;\n const parts: string[] = [];\n if (hundreds > 0) {\n if (kind === 'ordinal' && rest === 0) parts.push(`${CARDINALS.single[hundreds]} hundredth`);\n else parts.push(`${CARDINALS.single[hundreds]} hundred`);\n }\n if (rest > 0) parts.push(below100(rest, kind));\n return parts.join(' ');\n }\n\n if (num < 1000) return below1000(num, type);\n\n const groups: number[] = [];\n let n = num;\n while (n > 0) {\n groups.push(n % 1000);\n n = Math.floor(n / 1000);\n }\n\n let lastNonZeroIndex = -1;\n for (let i = 0; i < groups.length; i++) if (groups[i] !== 0) lastNonZeroIndex = i;\n\n const parts: string[] = [];\n for (let i = groups.length - 1; i >= 0; i--) {\n const g = groups[i];\n if (g === 0) continue;\n const scale = SCALES[i];\n\n if (type === 'cardinal') {\n let segment = below1000(g, 'cardinal');\n if (scale) segment += ` ${scale}`;\n parts.push(segment);\n } else {\n const isLastNonZero = i === lastNonZeroIndex;\n if (isLastNonZero) {\n if (i > 0) {\n const segment = below1000(g, 'cardinal');\n const ordScale = SCALES_ORD[i];\n parts.push(segment ? `${segment} ${ordScale}` : ordScale);\n } else {\n const segment = below1000(g, 'ordinal');\n parts.push(segment);\n }\n } else {\n let segment = below1000(g, 'cardinal');\n if (scale) segment += ` ${scale}`;\n parts.push(segment);\n }\n }\n }\n\n return parts.join(', ');\n },\n\n /**\n * Balances a number within a specified range\n * @param amount - Number to balance\n * @param min - Minimum value\n * @param max - Maximum value\n * @returns - Balanced number\n * @example\n * ```javascript\n * const balancedValue = Simulation.number.balance(150, 0, 100);\n * console.log(balancedValue); // 100\n * ```\n */\n balance(amount: number, min: number = 0, max: number = 100) {\n return Math.min(Math.max(amount, min), max);\n },\n };\n\n export const element = {\n /**\n * Merges outer span styles with inner span styles in the provided HTML string.\n * @param outerStyle - The style string to be applied to the outer span.\n * @param innerHTML - The inner HTML string which may contain a span with its own styles.\n * @returns A new HTML string with merged styles applied to a single span.\n * @example\n * ```javascript\n * const result = Simulation.element.mergeSpanStyles(\"color: red; font-weight: bold;\", '<span style=\"font-size: 14px;\">Hello World</span>');\n * console.log(result); // Output: '<span style=\"font-size: 14px; color: red; font-weight: bold;\">Hello World</span>'\n * ```\n */\n mergeSpanStyles(outerStyle: string, innerHTML: string): string {\n const match = innerHTML.match(/^<span style=\"([^\"]*)\">(.*)<\\/span>$/s);\n\n if (match) {\n const innerStyle = match[1];\n const content = match[2];\n\n const mergedStyle = [innerStyle, outerStyle]\n .filter(Boolean)\n .join('; ')\n .replace(/\\s*;\\s*/g, '; ')\n .trim();\n\n return `<span style=\"${mergedStyle}\">${content}</span>`;\n } else {\n return `<span style=\"${outerStyle}\">${innerHTML}</span>`;\n }\n },\n\n /**\n * Scales an HTML element to fit within its parent element based on specified minimum and maximum scale factors.\n * @param element - The HTML element to be scaled.\n * @param min - Minimum scale factor (default is 0).\n * @param max - Maximum scale factor (default is 1).\n * @param options - Optional settings for scaling.\n * @returns - An object containing the new width, height, and scale factor, or void if not applied.\n * @example\n * ```javascript\n * const element = document.getElementById('myElement');\n * Simulation.element.scale(element, 0.5, 1, { return: false });\n * ```\n */\n scale(\n element: HTMLElement,\n min: number = 0,\n max: number = 1,\n options?: { return: boolean; parent: HTMLElement; base: 'width' | 'height' },\n ): { width: number; height: number; scale: number } | void {\n const { return: returnOnly = false, parent: customParent, base } = options || {};\n\n const parent = customParent || element.parentElement || document.body;\n\n if (!parent) {\n logger.warn('No parent element found for scaling');\n return;\n }\n\n const parentRect = parent.getBoundingClientRect();\n const elementWidth = element.offsetWidth;\n const elementHeight = element.offsetHeight;\n\n if (elementWidth === 0 || elementHeight === 0) {\n logger.warn('Element has zero width or height, cannot scale');\n return;\n }\n\n // Calculate scales for both dimensions\n const scaleX = (parentRect.width * max) / elementWidth;\n const scaleY = (parentRect.height * max) / elementHeight;\n\n // Determine final scale based on base option or use smaller scale\n let finalScale = base === 'width' ? scaleX : base === 'height' ? scaleY : Math.min(scaleX, scaleY);\n\n // Apply minimum constraint if needed\n if (min > 0) {\n const minScaleX = (parentRect.width * min) / elementWidth;\n const minScaleY = (parentRect.height * min) / elementHeight;\n const minScale = Math.max(minScaleX, minScaleY);\n\n finalScale = Math.max(minScale, finalScale);\n }\n\n const result = {\n width: elementWidth * finalScale,\n height: elementHeight * finalScale,\n scale: finalScale,\n };\n\n if (returnOnly) {\n return result;\n }\n\n element.style.transform = `scale(${finalScale})`;\n element.style.transformOrigin = 'center center';\n\n return result;\n },\n\n /**\n * Splits the text content of an HTML string into individual characters wrapped in span elements with a data-index attribute.\n * @param htmlString - The input HTML string to be processed.\n * @param startIndex - The starting index for the data-index attribute (default is 0).\n * @returns - A new HTML string with each character wrapped in a span element.\n * @example\n * ```javascript\n * const result = Simulation.element.splitTextToChars(\"<p>Hello</p>\", 0);\n * console.log(result);\n * // Output: '<p><span class=\"char\" data-index=\"0\">H</span><span class=\"char\" data-index=\"1\">e</span><span class=\"char\" data-index=\"2\">l</span><span class=\"char\" data-index=\"3\">l</span><span class=\"char\" data-index=\"4\">o</span></p>'\n * ```\n */\n splitTextToChars(htmlString: string, startIndex: number = 0): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n let charIndex = startIndex;\n\n function processNode(node: Node) {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent;\n\n const chars = text?.split('').map((char) => {\n const span = document.createElement('span');\n\n span.className = 'char';\n span.dataset.index = String(charIndex++);\n\n span.textContent = char;\n\n charIndex++;\n\n return span.outerHTML;\n });\n\n const wrapper = document.createElement('span');\n\n wrapper.innerHTML = chars?.join('') ?? '';\n\n return wrapper;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const clone = node.cloneNode(false);\n\n node.childNodes.forEach((child) => {\n const processed = processNode(child);\n\n if (processed instanceof Node) {\n Array.from(processed.childNodes).forEach((childNode) => {\n clone.appendChild(childNode);\n });\n }\n });\n\n return clone;\n }\n\n return node.cloneNode(true);\n }\n\n const body = doc.body;\n const processed = document.createElement('div');\n\n body.childNodes.forEach((node) => {\n const result = processNode(node);\n\n if (result instanceof Node) {\n processed.appendChild(result);\n }\n });\n\n return processed.innerHTML;\n },\n };\n\n export const object = {\n /**\n * Flattens a nested object into a single-level object with dot-separated keys.\n * @param obj - The nested object to be flattened.\n * @param prefix - The prefix to be added to each key (used for recursion).\n * @returns A flattened object with dot-separated keys.\n * @example\n * ```javascript\n * const nestedObj = { a: { b: 1, c: { d: 2 } }, e: [3, 4] };\n * const flatObj = Simulation.object.flatten(nestedObj);\n * console.log(flatObj);\n * // Output: { 'a.b': '1', 'a.c.d': '2', 'e:0': '3', 'e:1': '4' }\n * ```\n */\n flatten(obj: Record<string, any>, prefix: string = ''): Record<string, string> {\n const result = {} as Record<string, string>;\n\n for (const key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n\n const value = obj[key];\n const path = prefix ? `${prefix}.${key}` : key;\n\n // Handle null and undefined\n if (value === null || value === undefined) {\n result[path] = String(value);\n\n continue;\n }\n\n // Handle Date objects\n if (value instanceof Date) {\n result[path] = value.toISOString();\n\n continue;\n }\n\n // Handle Map objects\n if (value instanceof Map) {\n value.forEach((v, k) => {\n result[`${path}.${k}`] = JSON.stringify(v);\n });\n\n continue;\n }\n\n // Handle Array objects\n if (Array.isArray(value)) {\n value.forEach((v, i) => {\n const itemPath = `${path}:${i}`;\n\n if (typeof v === 'object') {\n Object.assign(result, this.flatten(v, itemPath));\n } else {\n result[itemPath] = String(v);\n }\n });\n\n continue;\n }\n\n // Handle nested objects\n if (typeof value === 'object') {\n Object.assign(result, this.flatten(value, path));\n\n continue;\n }\n\n // Handle primitive values (string, number, boolean, etc.)\n result[path] = String(value);\n }\n\n return result;\n },\n };\n\n export const generate = {\n session: {\n types: {\n name: { type: 'string', options: Simulation.data.names.filter((e) => e.length) },\n tier: { type: 'string', options: Simulation.data.tiers.filter((e) => e.length) },\n message: { type: 'string', options: Simulation.data.messages.filter((e) => e.length) },\n item: { type: 'array', options: Simulation.data.items },\n avatar: { type: 'string', options: Simulation.data.avatars.filter((e) => e.length) },\n } as Record<string, StreamElements.Session.Config.Any>,\n\n available(): StreamElements.Session.Config.Available.Data {\n const types = this.types;\n\n return {\n follower: {\n latest: { name: types.name },\n session: { count: { type: 'int', min: 50, max: 200 } },\n week: { count: { type: 'int', min: 200, max: 1000 } },\n month: { count: { type: 'int', min: 1000, max: 3000 } },\n goal: { amount: { type: 'int', min: 3000, max: 7000 } },\n total: { count: { type: 'int', min: 7000, max: 10000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: { name: types.name, createdAt: { type: 'date', range: 400 } },\n },\n },\n subscriber: {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n tier: types.tier,\n message: types.message,\n },\n 'new-latest': {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n message: types.message,\n },\n 'resub-latest': {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n message: types.message,\n },\n 'gifted-latest': {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n message: types.message,\n tier: types.tier,\n sender: types.name,\n },\n session: { count: { type: 'int', min: 10, max: 40 } },\n 'new-session': { count: { type: 'int', min: 10, max: 40 } },\n 'resub-session': { count: { type: 'int', min: 10, max: 40 } },\n 'gifted-session': { count: { type: 'int', min: 10, max: 40 } },\n week: { count: { type: 'int', min: 40, max: 100 } },\n month: { count: { type: 'int', min: 100, max: 200 } },\n goal: { amount: { type: 'int', min: 200, max: 300 } },\n total: { count: { type: 'int', min: 300, max: 400 } },\n points: { amount: { type: 'int', min: 100, max: 400 } },\n 'alltime-gifter': { name: types.name, amount: { type: 'int', min: 300, max: 400 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 10, max: 30 },\n tier: types.tier,\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n host: {\n latest: { name: types.name, amount: { type: 'int', min: 1, max: 10 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 1, max: 10 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n raid: {\n latest: { name: types.name, amount: { type: 'int', min: 0, max: 100 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n charityCampaignDonation: {\n latest: { name: types.name, amount: { type: 'int', min: 50, max: 150 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 50, max: 200 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 200, max: 500 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 500, max: 800 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 800, max: 1000 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 50, max: 200 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 200, max: 500 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 500, max: 800 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 800, max: 1000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 50, max: 150 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n cheer: {\n latest: { name: types.name, amount: { type: 'int', min: 200, max: 800 }, message: types.message },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 200, max: 1000 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 1000, max: 5000 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 5000, max: 12000 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 12000, max: 20000 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 200, max: 1000 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 1000, max: 5000 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 5000, max: 12000 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 12000, max: 20000 } },\n session: { amount: { type: 'int', min: 200, max: 1000 } },\n week: { amount: { type: 'int', min: 1000, max: 5000 } },\n month: { amount: { type: 'int', min: 5000, max: 12000 } },\n goal: { amount: { type: 'int', min: 12000, max: 18000 } },\n total: { amount: { type: 'int', min: 18000, max: 20000 } },\n count: { count: { type: 'int', min: 200, max: 1000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 200, max: 800 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n cheerPurchase: {\n latest: { name: types.name, amount: { type: 'int', min: 200, max: 400 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 200, max: 400 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 400, max: 800 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 800, max: 1500 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 1500, max: 2000 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 200, max: 400 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 400, max: 800 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 800, max: 1500 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 1500, max: 2000 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 200, max: 400 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n superchat: {\n latest: { name: types.name, amount: { type: 'int', min: 100, max: 400 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n session: { amount: { type: 'int', min: 100, max: 500 } },\n week: { amount: { type: 'int', min: 500, max: 1000 } },\n month: { amount: { type: 'int', min: 1000, max: 2000 } },\n goal: { amount: { type: 'int', min: 2000, max: 2300 } },\n total: { amount: { type: 'int', min: 2300, max: 2500 } },\n count: { count: { type: 'int', min: 100, max: 500 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 100, max: 400 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n hypetrain: {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n active: { type: 'int', min: 0, max: 1 },\n level: { type: 'int', min: 5, max: 10 },\n levelChanged: { type: 'int', min: 0, max: 5 },\n _type: { type: 'array', options: ['follower', 'subscriber', 'cheer', 'donation'] },\n },\n 'level-goal': { amount: { type: 'int', min: 0, max: 100 } },\n 'level-progress': { amount: { type: 'int', min: 0, max: 100 }, percent: { type: 'int', min: 0, max: 100 } },\n total: { amount: { type: 'int', min: 0, max: 100 } },\n 'latest-top-contributors': { type: 'recent', amount: 25, value: { name: types.name } },\n },\n 'channel-points': {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n message: types.message,\n redemption: { type: 'array', options: ['Reward 1', 'Reward 2', 'Reward 3'] },\n },\n },\n tip: {\n latest: { name: types.name, amount: { type: 'int', min: 100, max: 400 } },\n 'session-top-donation': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donation': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donation': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donation': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n 'session-top-donator': { name: types.name, amount: { type: 'int', min: 100, max: 500 } },\n 'weekly-top-donator': { name: types.name, amount: { type: 'int', min: 500, max: 1000 } },\n 'monthly-top-donator': { name: types.name, amount: { type: 'int', min: 1000, max: 2000 } },\n 'alltime-top-donator': { name: types.name, amount: { type: 'int', min: 2000, max: 2500 } },\n session: { amount: { type: 'int', min: 100, max: 500 } },\n week: { amount: { type: 'int', min: 500, max: 1000 } },\n month: { amount: { type: 'int', min: 1000, max: 2000 } },\n goal: { amount: { type: 'int', min: 2000, max: 2300 } },\n total: { amount: { type: 'int', min: 2300, max: 2500 } },\n count: { count: { type: 'int', min: 100, max: 500 } },\n recent: {\n type: 'recent',\n amount: 25,\n value: {\n name: types.name,\n amount: { type: 'int', min: 100, max: 400 },\n createdAt: { type: 'date', range: 400 },\n },\n },\n },\n merch: {\n latest: { name: types.name, amount: { type: 'int', min: 0, max: 100 }, items: types.item },\n 'goal-orders': { amount: { type: 'int', min: 0, max: 100 } },\n 'goal-items': { amount: { type: 'int', min: 0, max: 100 } },\n 'goal-total': { amount: { type: 'int', min: 0, max: 100 } },\n recent: { type: 'recent', amount: 25, value: { name: types.name } },\n },\n purchase: {\n latest: {\n name: types.name,\n amount: { type: 'int', min: 0, max: 100 },\n items: types.item,\n avatar: types.avatar,\n message: types.message,\n },\n },\n };\n },\n\n async get(): Promise<StreamElements.Session.Data> {\n const available = this.available();\n\n const generate = (\n available: StreamElements.Session.Config.Available.Data | StreamElements.Session.Config.Available.Category | StreamElements.Session.Config.Any,\n ): any => {\n const generateRecentData = (config: StreamElements.Session.Config.Any): Array<any> => {\n if (!config || !('amount' in config)) return [];\n\n const items: Array<{ createdAt: string }> = [];\n\n for (let i = 0; i < config.amount; i++) {\n items.push(generate(config.value));\n }\n\n return items.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n };\n\n const generateObjectData = (config: Record<string, any>): Record<string, any> => {\n const result: Record<string, any> = {};\n\n for (const key in config) {\n const processedKey = key.replace('_type', 'type');\n\n result[processedKey] = generate(config[key]);\n }\n\n return result;\n };\n\n const processTypedConfig = (config: StreamElements.Session.Config.Any): any => {\n if (!config) return config;\n\n switch (config.type) {\n case 'int':\n return Simulation.rand.number(config.min, config.max);\n case 'string':\n return Simulation.rand.array(config.options)[0];\n case 'date':\n return Simulation.rand.daysOffset(config.range);\n case 'array':\n return Simulation.rand.array(config.options)[0];\n case 'recent':\n return generateRecentData(config);\n default:\n return config;\n }\n };\n\n // Main generation logic\n\n // Handle primitive values (non-objects)\n if (typeof available !== 'object' || available === null) {\n return available;\n }\n\n // Handle typed configurations (objects with a 'type' property)\n if ('type' in available && typeof available.type === 'string') {\n return processTypedConfig(available);\n }\n\n // Handle generic objects - recursively process each property\n return generateObjectData(available);\n };\n\n var session: StreamElements.Session.Data = Object.entries(generate(available)).reduce(\n (acc, [key, value]) => {\n Object.entries(value as any).forEach(\n ([subKey, subValue]) =>\n //\n (acc[`${key}-${subKey}`] = subValue),\n );\n\n return acc;\n },\n {} as Record<string, any>,\n ) as StreamElements.Session.Data;\n\n return session;\n },\n },\n event: {\n /**\n * Simulates the onWidgetLoad event for a widget.\n * @param fields - The field values to be included in the event.\n * @param session - The session data to be included in the event.\n * @param currency - The currency to be used (default is 'USD').\n * @returns A Promise that resolves to the simulated onWidgetLoad event data.\n */\n async onWidgetLoad(\n fields: Record<string, StreamElements.CustomField.Value>,\n session: StreamElements.Session.Data,\n currency: 'BRL' | 'USD' | 'EUR' = 'USD',\n ): Promise<StreamElements.Event.onWidgetLoad> {\n const currencies = {\n BRL: { code: 'BRL', name: 'Brazilian Real', symbol: 'R$' },\n USD: { code: 'USD', name: 'US Dollar', symbol: '$' },\n EUR: { code: 'EUR', name: 'Euro', symbol: '€' },\n };\n\n return {\n channel: {\n username: 'local',\n apiToken: '',\n id: '',\n providerId: '',\n avatar: '',\n },\n currency: currencies[currency] ?? currencies.USD,\n fieldData: fields,\n recents: [],\n session: {\n data: session,\n settings: {\n autoReset: false,\n calendar: false,\n resetOnStart: false,\n },\n },\n overlay: {\n isEditorMode: true,\n muted: false,\n },\n emulated: true,\n };\n },\n /**\n * Simulates the onSessionUpdate event for a widget.\n * @param session - The session data to be included in the event.\n * @returns A Promise that resolves to the simulated onSessionUpdate event data.\n */\n async onSessionUpdate(session?: StreamElements.Session.Data): Promise<StreamElements.Event.onSessionUpdate> {\n session ??= await Simulation.generate.session.get();\n\n return { session };\n },\n /**\n * Simulates the onEventReceived event for a widget.\n * @param provider - The provider of the event (default is 'random').\n * @param type - The type of event to simulate (default is 'random').\n * @param options - Additional options to customize the event data.\n * @returns A Promise that resolves to the simulated onEventReceived event data, or null if the event type is not supported.\n * @example\n * ```javascript\n * // Simulate a random event\n * const randomEvent = await Simulation.generate.event.onEventReceived();\n *\n * // Simulate a Twitch message event with custom options\n * const twitchMessageEvent = await Simulation.generate.event.onEventReceived('twitch', 'message', { name: 'Streamer', message: 'Hello World!' });\n * ```\n */\n async onEventReceived(\n provider: Provider | 'random' = 'random',\n type: StreamElements.Event.onEventReceived['listener'] | 'random' | 'tip' | 'cheer' | 'follower' | 'raid' | 'subscriber' = 'random',\n options: Record<string, string | number | boolean> = {},\n ): Promise<StreamElements.Event.onEventReceived | null> {\n const available: Record<Provider, string[]> = {\n twitch: ['message', 'follower-latest', 'cheer-latest', 'raid-latest', 'subscriber-latest'],\n streamelements: ['tip-latest'],\n youtube: ['message', 'superchat-latest', 'subscriber-latest', 'sponsor-latest'],\n kick: [],\n facebook: [],\n };\n\n switch (provider) {\n default:\n case 'random': {\n var randomProvider = Simulation.rand.array(Object.keys(available).filter((e) => available[e as Provider].length))[0] as Provider;\n var randomEvent = Simulation.rand.array(available[randomProvider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(randomProvider, randomEvent);\n }\n\n case 'twitch': {\n switch (type as StreamElements.Event.Provider.Twitch.Events['listener'] | 'random' | 'cheer' | 'follower' | 'raid' | 'subscriber') {\n default:\n case 'random': {\n var randomEvent = Simulation.rand.array(available[provider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(provider, randomEvent);\n }\n case 'message': {\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n var badges = await generateBadges((options?.badges as BadgeOptions) ?? [], provider);\n\n var emotes = findEmotesInText(message);\n var renderedText = replaceEmotesWithHTML(message, emotes);\n\n var color = (options?.color as string) ?? Simulation.rand.color('hex');\n var userId = (options?.userId as string) ?? Simulation.rand.number(10000000, 99999999).toString();\n var time = Date.now();\n\n const event: StreamElements.Event.Provider.Twitch.Message = {\n listener: 'message',\n event: {\n service: provider,\n data: {\n time: time,\n tags: {\n 'badge-info': `${badges.keys.map((key) => `${key}/${Simulation.rand.number(1, 5)}`).join(',')}`,\n 'badges': badges.keys.join('/1,'),\n\n 'mod': badges.keys.includes('moderator') ? '1' : '0',\n 'subscriber': badges.keys.includes('subscriber') ? '1' : '0',\n 'turbo': badges.keys.includes('turbo') ? '1' : '0',\n\n 'tmi-sent-ts': time.toString(),\n\n 'user-id': userId,\n 'user-type': '',\n\n 'color': color,\n 'display-name': name,\n 'emotes': '',\n\n 'client-nonce': Simulation.rand.string(16),\n 'flags': '',\n 'id': Simulation.rand.uuid(),\n 'first-msg': '0',\n 'returning-chatter': '0',\n },\n nick: name.toLowerCase(),\n displayName: name,\n displayColor: color,\n channel: 'local',\n text: message,\n isAction: false,\n userId: userId,\n msgId: Simulation.rand.uuid(),\n badges: badges.badges,\n emotes: emotes,\n },\n renderedText: renderedText,\n },\n };\n\n return event;\n }\n case 'cheer':\n case 'cheer-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(100, 10000);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.Twitch.Cheer & { event: { provider: Provider } } = {\n listener: 'cheer-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n message: message,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'cheer',\n originalEventName: 'cheer-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'follower':\n case 'follower-latest': {\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.Twitch.Follower & { event: { provider: Provider } } = {\n listener: 'follower-latest',\n event: {\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'follower',\n originalEventName: 'follower-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'raid':\n case 'raid-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(1, 100);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.Twitch.Raid & { event: { provider: Provider } } = {\n listener: 'raid-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'raid',\n originalEventName: 'raid-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'subscriber':\n case 'subscriber-latest': {\n var tier = (options?.tier as string) ?? Simulation.rand.array(['1000', '2000', '3000'])[0];\n var amount = (options?.amount as number) ?? Simulation.rand.number(1, 24);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var sender = (options?.sender as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length && e !== name))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n var addons = {\n default: {\n avatar,\n tier,\n playedAsCommunityGift: false,\n },\n gift: {\n sender,\n gifted: true,\n } as StreamElements.Event.Provider.Twitch.gift,\n community: {\n message,\n sender,\n bulkGifted: true,\n } as StreamElements.Event.Provider.Twitch.community,\n spam: {\n sender,\n gifted: true,\n isCommunityGift: true,\n } as StreamElements.Event.Provider.Twitch.spam,\n };\n\n var subTypes = ['default', 'gift', 'community', 'spam'];\n var subType = (options?.subType as string) ?? Simulation.rand.array(subTypes)[0];\n\n subType = subTypes.includes(subType) ? subType : 'default';\n\n const event: StreamElements.Event.Provider.Twitch.Subscriber & { event: { provider: Provider } } = {\n listener: 'subscriber-latest',\n event: {\n amount,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n\n ...addons.default,\n ...addons[subType as keyof typeof addons],\n\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'subscriber',\n originalEventName: 'subscriber-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'delete-message': {\n const event: StreamElements.Event.Provider.Twitch.DeleteMessage & { event: { provider: Provider } } = {\n listener: 'delete-message',\n event: {\n msgId: (options?.id as string) ?? Simulation.rand.uuid(),\n provider,\n },\n };\n\n return event;\n }\n case 'delete-messages': {\n const event: StreamElements.Event.Provider.Twitch.DeleteMessages & { event: { provider: Provider } } = {\n listener: 'delete-messages',\n event: {\n userId: (options?.id as string) ?? Simulation.rand.number(10000000, 99999999).toString(),\n provider,\n },\n };\n\n return event;\n }\n }\n }\n\n case 'streamelements': {\n switch (type as StreamElements.Event.Provider.StreamElements.Events['listener'] | 'random' | 'tip' | 'mute' | 'unmute' | 'skip') {\n default:\n case 'random': {\n var randomEvent = Simulation.rand.array(available[provider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(provider, randomEvent);\n }\n case 'tip':\n case 'tip-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(100, 4000);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.StreamElements.Tip & { event: { provider: Provider } } = {\n listener: 'tip-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'tip',\n originalEventName: 'tip-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'kvstore:update': {\n const event: StreamElements.Event.Provider.StreamElements.KVStore & { event: { provider: Provider } } = {\n listener: 'kvstore:update',\n event: {\n data: {\n key: `customWidget.${(options?.key as string) ?? 'sampleKey'}`,\n value: (options?.value as string) ?? 'sampleValue',\n },\n provider,\n },\n };\n\n return event;\n }\n case 'bot:counter': {\n const event: StreamElements.Event.Provider.StreamElements.BotCounter & { event: { provider: Provider } } = {\n listener: 'bot:counter',\n event: {\n counter: (options?.counter as string) ?? 'sampleCounter',\n value: (options?.value as number) ?? Simulation.rand.number(0, 100),\n provider,\n },\n };\n\n return event;\n }\n case 'mute':\n case 'unmute':\n case 'alertService:toggleSound': {\n var muted = (options?.muted as boolean) ?? !client.details.overlay.muted;\n\n const event: StreamElements.Event.Provider.StreamElements.AlertService & { event: { provider: Provider } } = {\n listener: 'alertService:toggleSound',\n event: {\n muted,\n provider,\n },\n };\n\n return event;\n }\n case 'skip':\n case 'event:skip': {\n const event: StreamElements.Event.Provider.StreamElements.EventSkip & { event: { provider: Provider } } = {\n listener: 'event:skip',\n event: {\n provider,\n },\n };\n\n return event;\n }\n }\n }\n\n case 'youtube': {\n switch (type as StreamElements.Event.Provider.YouTube.Events['listener'] | 'random' | 'message' | 'superchat' | 'subscriber' | 'sponsor') {\n default:\n case 'random': {\n var randomEvent = Simulation.rand.array(available[provider])[0] as StreamElements.Event.onEventReceived['listener'];\n\n return this.onEventReceived(provider, randomEvent);\n }\n case 'message': {\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n const badges = await generateBadges((options?.badges as BadgeOptions) ?? [], provider);\n\n var emotes = findEmotesInText(message);\n var renderedText = replaceEmotesWithHTML(message, emotes);\n\n var color = (options?.color as string) ?? Simulation.rand.color('hex');\n var userId = (options?.userId as string) ?? Simulation.rand.number(10000000, 99999999).toString();\n var time = Date.now();\n\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n\n const event: StreamElements.Event.Provider.YouTube.Message = {\n listener: 'message',\n event: {\n service: provider,\n data: {\n kind: '',\n etag: '',\n id: '',\n snippet: {\n type: '',\n liveChatId: '',\n authorChannelId: 'local',\n publishedAt: new Date().toISOString(),\n hasDisplayContent: true,\n displayMessage: message,\n textMessageDetails: {\n messageText: message,\n },\n },\n authorDetails: {\n channelId: 'local',\n channelUrl: '',\n displayName: name,\n profileImageUrl: avatar,\n ...badges,\n },\n msgId: Simulation.rand.uuid(),\n userId: Simulation.rand.uuid(),\n nick: name.toLowerCase(),\n badges: [],\n displayName: name,\n isAction: false,\n time: Date.now(),\n tags: [],\n displayColor: Simulation.rand.color('hex'),\n channel: 'local',\n text: message,\n avatar: avatar,\n emotes: [],\n },\n renderedText: message,\n },\n };\n\n return event;\n }\n case 'subscriber':\n case 'subscriber-latest': {\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.YouTube.Subscriber & { event: { provider: Provider } } = {\n listener: 'subscriber-latest',\n event: {\n avatar,\n displayName: name,\n name: name.toLowerCase(),\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'subscriber',\n originalEventName: 'subscriber-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'superchat':\n case 'superchat-latest': {\n var amount = (options?.amount as number) ?? Simulation.rand.number(100, 4000);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n\n const event: StreamElements.Event.Provider.YouTube.Superchat & { event: { provider: Provider } } = {\n listener: 'superchat-latest',\n event: {\n amount,\n avatar,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'superchat',\n originalEventName: 'superchat-latest',\n provider,\n },\n };\n\n return event;\n }\n case 'sponsor':\n case 'sponsor-latest': {\n var tier = (options?.tier as string) ?? Simulation.rand.array(['1000', '2000', '3000'])[0];\n var amount = (options?.amount as number) ?? Simulation.rand.number(1, 24);\n var avatar = (options?.avatar as string) ?? Simulation.rand.array(Simulation.data.avatars)[0];\n var name = (options?.name as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length))[0];\n var sender = (options?.sender as string) ?? Simulation.rand.array(Simulation.data.names.filter((e) => e.length && e !== name))[0];\n var message = (options?.message as string) ?? Simulation.rand.array(Simulation.data.messages.filter((e) => e.length))[0];\n\n var addons = {\n default: {\n avatar,\n tier,\n playedAsCommunityGift: false,\n },\n gift: {\n sender,\n gifted: true,\n } as StreamElements.Event.Provider.YouTube.gift,\n community: {\n message,\n sender,\n bulkGifted: true,\n } as StreamElements.Event.Provider.YouTube.community,\n spam: {\n sender,\n gifted: true,\n isCommunityGift: true,\n } as StreamElements.Event.Provider.YouTube.spam,\n };\n\n var subTypes = ['default', 'gift', 'community', 'spam'];\n var subType = (options?.subType as string) ?? Simulation.rand.array(subTypes)[0];\n\n subType = subTypes.includes(subType) ? subType : 'default';\n\n const event: StreamElements.Event.Provider.YouTube.Sponsor & { event: { provider: Provider } } = {\n listener: 'sponsor-latest',\n event: {\n amount,\n name: name.toLowerCase(),\n displayName: name,\n providerId: '',\n\n ...addons.default,\n ...addons[subType as keyof typeof addons],\n\n _id: Simulation.rand.uuid(),\n sessionTop: false,\n type: 'sponsor',\n originalEventName: 'sponsor-latest',\n provider,\n },\n };\n\n return event;\n }\n }\n }\n }\n },\n },\n };\n\n export const emulate = {\n twitch: {\n message(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'message', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n follower(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'follower-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n raid(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'raid-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n cheer(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'cheer-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n subscriber(data: Record<string, string | number | boolean> & { subType?: 'default' | 'gift' | 'community' | 'spam' } = {}) {\n Simulation.generate.event.onEventReceived('twitch', 'subscriber-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n },\n streamelements: {\n tip(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('streamelements', 'tip-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n },\n youtube: {\n message(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'message', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n subscriber(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'subscriber-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n superchat(data: Record<string, string | number | boolean> = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'superchat-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n sponsor(data: Record<string, string | number | boolean> & { subType?: 'default' | 'gift' | 'community' | 'spam' } = {}) {\n Simulation.generate.event.onEventReceived('youtube', 'sponsor-latest', data).then((event) => {\n if (event) {\n Simulation.emulate.send('onEventReceived', event);\n }\n });\n },\n },\n kick: {},\n facebook: {},\n\n send<T extends 'onEventReceived' | 'onSessionUpdate' | 'onWidgetLoad'>(\n listener: T,\n event: T extends 'onEventReceived'\n ? StreamElements.Event.onEventReceived\n : T extends 'onSessionUpdate'\n ? StreamElements.Event.onSessionUpdate\n : StreamElements.Event.onWidgetLoad,\n ): void {\n window.dispatchEvent(new CustomEvent(listener, { detail: event }));\n },\n };\n\n /**\n * Delays execution for a specified number of milliseconds.\n * @param ms - The number of milliseconds to delay.\n * @returns A Promise that resolves after the specified delay.\n */\n export function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n export function probability(items: Record<string, number>) {\n const total = Object.values(items).reduce((acc, val) => acc + val, 0);\n const sorted = Object.entries(items).sort((a, b) => b[1] - a[1]);\n const rand = Math.random() * total;\n\n let cumulative = 0;\n\n for (const [item, weight] of sorted) {\n cumulative += weight;\n\n if (rand < cumulative) {\n return item;\n }\n }\n }\n\n export async function start(\n fieldsFile: string[] = ['fields.json', 'cf.json', 'field.json', 'customfields.json'],\n dataFiles: string[] = ['data.json', 'fielddata.json', 'fd.json', 'DATA.json'],\n ) {\n const localFiles = {\n fields: fieldsFile.find((file) => {\n try {\n new URL('./' + file, window.location.href);\n return true;\n } catch (error) {\n return false;\n }\n }),\n data: dataFiles.find((file) => {\n try {\n new URL('./' + file, window.location.href);\n return true;\n } catch (error) {\n return false;\n }\n }),\n };\n\n const data: Record<string, string | number | boolean> = await fetch('./' + (localFiles.data ?? 'data.json'), {\n cache: 'no-store',\n })\n .then((res) => res.json())\n .catch(() => ({}));\n\n await fetch('./' + (localFiles.fields ?? 'fields.json'), {\n cache: 'no-store',\n })\n .then((res) => res.json())\n .then(async (customfields: Record<string, StreamElements.CustomField.Schema>) => {\n const fields = Object.entries(customfields)\n .filter(([_, { value }]) => value != undefined)\n .reduce(\n (acc, [key, { value }]) => {\n if (data && data[key] !== undefined) value = data[key];\n\n acc[key] = value;\n\n return acc;\n },\n {\n ...data,\n } as Record<string, StreamElements.CustomField.Value>,\n );\n\n const load = await Simulation.generate.event.onWidgetLoad(fields, await Simulation.generate.session.get());\n\n window.dispatchEvent(new CustomEvent('onWidgetLoad', { detail: load }));\n });\n }\n}\n","import { BttvEmote, SeventvEmote, TwitchEmote } from '../types/emote.js';\nimport { Simulation } from '../simulation/simulation.js';\nimport { Provider } from '../types/client.js';\nimport { Twitch } from '../types/twitch.js';\n\ntype Emote = TwitchEmote | BttvEmote | SeventvEmote;\n\n/**\n * Finds emotes in a given text.\n * @param text - The text to search for emotes.\n * @param emotes - An array of emotes to search for. Defaults to Simulation data emotes.\n * @returns An array of emotes found in the text with their positions.\n */\nexport function findEmotesInText(text: string, emotes: Emote[] = Simulation.data.emotes): Emote[] {\n const result: Emote[] = [];\n\n emotes.forEach((emote) => {\n const name = emote.name;\n\n let searchIndex = 0;\n let start = 0;\n\n while (searchIndex < text.length) {\n const index = text.indexOf(name, start);\n\n if (index === -1) break;\n\n const before = index > 0 ? text[index - 1] : ' ';\n const after = index + name.length < text.length ? text[index + name.length] : ' ';\n\n if (/\\s/.test(before) && /\\s/.test(after)) {\n result.push({ ...emote, start: index, end: index + name.length });\n }\n\n start = index + 1;\n }\n });\n\n return result.sort((a, b) => a.start - b.start);\n}\n\n/**\n * Replaces emotes in the text with corresponding HTML image tags.\n * @param text - The text containing emotes.\n * @param emotes - An array of emotes with their positions in the text.\n * @returns The text with emotes replaced by HTML image tags.\n */\nexport function replaceEmotesWithHTML(text: string, emotes: Emote[]): string {\n if (!emotes.length) return text;\n\n let result = '';\n let index = 0;\n\n emotes.forEach((emote) => {\n result += text.substring(index, emote.start);\n\n const emotesArray = Array.from({ ...emote.urls, length: 5 })\n .slice(1)\n .reverse()\n .filter(Boolean);\n\n const imgUrl = emotesArray[0] || emote.urls['1'];\n\n result += `<img src=\"${imgUrl}\" alt=\"${emote.name}\" class=\"emote\" style=\"width: auto; height: 1em; vertical-align: middle;\" />`;\n\n index = emote.end;\n });\n\n result += text.substring(index);\n\n return result;\n}\n\nexport function replaceYoutubeEmotesWithHTML(text: string, emotes = Simulation.data.youtube_emotes): string {\n const emoteCodesInside = Array.from(text.matchAll(/:(.*?):/gim), (x) => x[0]);\n\n emoteCodesInside.forEach((code) => {\n const emote = emotes.find((e) => e.shortcuts.includes(code) || e.searchTerms.includes(code.slice(1, -1)));\n\n if (emote) {\n const url = emote.image.thumbnails.at(-1)?.url;\n const alt = emote.image.accessibility.accessibilityData.label;\n\n if (url) {\n text = text.replace(code, `<img src=\"${url}\" alt=\"${alt}\" class=\"emote\" style=\"width: auto; height: 1em; vertical-align: middle;\" />`);\n }\n }\n });\n\n return text;\n}\n\ntype TwitchResult = {\n keys: Twitch.roles[];\n badges: Twitch.badge[];\n};\n\ntype YouTubeResult = {\n isVerified: boolean;\n isChatOwner: boolean;\n isChatSponsor: boolean;\n isChatModerator: boolean;\n};\n\nexport type BadgeOptions = Twitch.roles[] | Twitch.roles | `${Twitch.roles}, ${Twitch.roles}` | `${Twitch.roles}, ${Twitch.roles}, ${Twitch.roles}`;\n\n/**\n * Generates badge data based on the provided badges and platform.\n * @param badges - The badges to generate. Can be an array or a comma-separated string.\n * @param provider - The platform provider ('twitch' or 'youtube'). Defaults to 'twitch'.\n * @returns A promise that resolves to the generated badge data.\n * @example\n * ```javascript\n * // Generate Twitch badges\n * const twitchBadges = await generateBadges(['broadcaster', 'moderator'], 'twitch');\n * // Generate YouTube badges\n * const youtubeBadges = await generateBadges('sponsor, moderator', 'youtube');\n * ```\n */\nexport async function generateBadges(badges: BadgeOptions, provider: 'youtube'): Promise<YouTubeResult>;\nexport async function generateBadges(badges: BadgeOptions, provider: 'twitch'): Promise<TwitchResult>;\nexport async function generateBadges(badges: BadgeOptions = [], provider: Provider = 'twitch'): Promise<TwitchResult | YouTubeResult> {\n if (!Array.isArray(badges) && typeof badges === 'string') {\n badges = badges.split(',').map((e) => e.trim()) as Twitch.roles[];\n }\n\n if (!badges || !badges.length) {\n var max = Simulation.rand.number(1, 3);\n\n for await (const _ of Array.from({ length: max }, () => '')) {\n var current = Simulation.rand.array(Object.keys(Simulation.data.badges))[0] as Twitch.roles;\n\n if (!badges.includes(current) && Array.isArray(badges)) {\n badges.push(current);\n } else {\n badges = [current];\n }\n }\n }\n\n var result;\n\n switch (provider) {\n case 'twitch': {\n result = {\n keys: Array.from(badges).filter((e) => e in Simulation.data.badges) as Twitch.roles[],\n badges: Array.from(badges)\n .slice(0, 3)\n .map((badge) => Simulation.data.badges[badge])\n .filter(Boolean) as Twitch.badge[],\n };\n\n break;\n }\n\n case 'youtube': {\n var details = {\n 'verified': { isVerified: false },\n 'broadcaster': { isChatOwner: false },\n 'host': { isChatOwner: false },\n 'sponsor': { isChatSponsor: false },\n 'subscriber': { isChatSponsor: false },\n 'moderator': { isChatModerator: false },\n };\n\n result = Object.entries(badges).reduce(\n (acc, [key]) => {\n if (key in details) {\n Object.assign(acc, details[key as keyof typeof details]);\n }\n\n return acc;\n },\n {\n isVerified: false,\n isChatOwner: false,\n isChatSponsor: false,\n isChatModerator: false,\n } as {\n isVerified: boolean;\n isChatOwner: boolean;\n isChatSponsor: boolean;\n isChatModerator: boolean;\n },\n );\n\n break;\n }\n }\n\n return result as TwitchResult | YouTubeResult;\n}\n","import { StreamElements } from '../types/streamelements/main.js';\n\nconst LOCAL_SE_API: StreamElements.SE_API & { store: { list: Record<string, any> } } = {\n getOverlayStatus: () => {\n return {\n isEditorMode: false,\n muted: false,\n };\n },\n resumeQueue: () => {},\n responses: {} as Record<string, any>,\n sendMessage(message: string, data: object) {},\n counters: {\n get(key: string): number | null {\n return null;\n },\n },\n sanitize(message: string): string {\n return message;\n },\n cheerFilter(message: string): string {\n return message;\n },\n setField(key: string, value: string | number | boolean | undefined, reload: boolean) {},\n\n store: {\n set: function (name: string, obj: any) {\n this.list[name] = obj;\n\n localStorage.setItem('SE_API-STORE', JSON.stringify(LOCAL_SE_API.store.list));\n },\n get: async function (name: string) {\n if (this.list[name]) return this.list[name];\n else return null;\n },\n list: {} as Record<string, any>,\n },\n};\n\nexport async function initializeLocalSEAPI() {\n let lastStore = localStorage.getItem('SE_API-STORE') ?? '';\n\n let result = lastStore ? JSON.parse(lastStore) : {};\n\n LOCAL_SE_API.store.list = result;\n\n return LOCAL_SE_API;\n}\n","/**\n * EventProvider class for managing event listeners and emitters.\n * This class allows you to register event listeners, emit events, and manage event subscriptions.\n * @example\n * ```typescript\n * interface TestEvents {\n * load: [event: { type: 'load' }];\n * event: [event: { type: 'event' }];\n * };\n *\n * class Test extends EventProvider<TestEvents> {}\n *\n * const test = new Test();\n * test.once('load', (data) => {});\n * test.emit('load', { type: 'load' });\n *\n * test.on('event', (data) => {});\n * test.emit('event', { type: 'event' });\n * ```\n */\nexport class EventProvider<EventMap extends Record<string, any[]> = Record<string, any[]>> {\n /**\n * Stores registered event listeners.\n */\n private registeredEvents: { [K in keyof EventMap]?: Array<(this: this, ...args: EventMap[K]) => any> } = {};\n\n /**\n * Emits an event to all registered listeners.\n * Returns an array of return values from the listeners.\n * @param eventName The name of the event.\n * @param args Arguments to pass to the listeners.\n */\n emit<K extends keyof EventMap>(eventName: K, ...args: EventMap[K]): any[] {\n const listeners = this.registeredEvents[eventName] || [];\n\n return listeners.map((listener) => listener.apply(this, args));\n }\n\n /**\n * Registers an event listener.\n * @param eventName The name of the event.\n * @param callback The callback function.\n */\n on<K extends keyof EventMap>(eventName: K, callback: (this: this, ...args: EventMap[K]) => any): this {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function');\n }\n\n if (!this.registeredEvents[eventName]) {\n this.registeredEvents[eventName] = [];\n }\n\n this.registeredEvents[eventName]!.push(callback);\n\n return this;\n }\n\n /**\n * Removes a specific event listener.\n * @param eventName The name of the event.\n * @param callback The callback function to remove.\n */\n off<K extends keyof EventMap>(eventName: K, callback?: (this: this, ...args: EventMap[K]) => any): this {\n const listeners = this.registeredEvents[eventName] || [];\n\n if (!callback) {\n this.registeredEvents[eventName] = [];\n\n return this;\n }\n\n this.registeredEvents[eventName] = listeners.filter((fn) => fn !== callback);\n\n return this;\n }\n\n /**\n * Registers a listener that is executed only once.\n * @param eventName The name of the event.\n * @param callback The callback function.\n */\n once<K extends keyof EventMap>(eventName: K, callback: (this: this, ...args: EventMap[K]) => any): this {\n const wrapper = (...args: EventMap[K]) => {\n this.off(eventName, wrapper);\n callback.apply(this, args);\n };\n\n this.on(eventName, wrapper);\n\n return this;\n }\n\n /**\n * Removes all listeners for a specific event.\n * @param eventName The name of the event.\n */\n removeAllListeners<K extends keyof EventMap>(eventName: K): this {\n this.registeredEvents[eventName] = [];\n\n return this;\n }\n}\n","import { StreamElements } from '../types/streamelements/main.js';\nimport { EventProvider } from './EventProvider.js';\nimport { USE_SE_API } from '../index.js';\nimport { PathValue } from './helpers.js';\n\ntype UseStorageEvents<T> = {\n load: [T | null];\n update: [T];\n};\n\ntype UseStorageOptions<T> = {\n id?: string;\n data: T;\n};\n\nexport var usedStorages: Array<useStorage<any>> = [];\n\nexport class useStorage<T extends Record<string, any>> extends EventProvider<UseStorageEvents<T>> {\n /**\n * The unique identifier for the storage instance.\n */\n public id: string = 'default';\n\n public loaded: boolean = false;\n\n public data!: T;\n\n constructor(options: UseStorageOptions<T>) {\n super();\n\n this.id = options.id || this.id;\n this.data = options.data ?? ({} as T);\n\n usedStorages.push(this);\n\n this.start();\n }\n\n SE_API: StreamElements.SE_API | null = null;\n\n private start() {\n USE_SE_API?.then((se) => {\n this.SE_API = se;\n\n se!.store\n .get<T>(this.id)\n .then((save) => {\n this.data = save ?? this.data;\n\n this.loaded = true;\n\n this.emit('load', this.data);\n\n if (JSON.stringify(this.data) !== JSON.stringify(save)) {\n this.emit('update', this.data);\n }\n })\n .catch(() => {\n this.loaded = true;\n\n this.emit('load', this.data);\n });\n });\n\n // if (!USE_SE_API || !USE_SE_API.store) {\n // throw new Error('SE_API.store is not available');\n // }\n }\n\n /**\n * Saves the current data to storage.\n * @param data Data to save (defaults to current)\n */\n private save(data: T = this.data): void {\n if (this.loaded && this.SE_API) {\n this.data = data;\n\n this.SE_API.store.set<T>(this.id, this.data);\n\n this.emit('update', this.data);\n }\n }\n\n /**\n * Updates the storage data and emits an update event\n * @param data Data to update (defaults to current)\n */\n public update(data: T = this.data): void {\n if (this.loaded && JSON.stringify(this.data) !== JSON.stringify(data)) {\n this.data = { ...this.data, ...data };\n\n this.save(this.data);\n }\n }\n\n /**\n * Adds a value to the storage at the specified path.\n * @param path Path to add the value to\n * @param value Value to add\n */\n public add<P extends string>(path: P, value: PathValue<T, P>): void {\n if (!this.loaded) return;\n\n useStorage.setByPath(this.data, path, value);\n\n this.save(this.data);\n }\n\n /**\n * Clears all data from the storage.\n */\n public clear(): void {\n if (this.loaded) {\n this.data = {} as T;\n\n this.save(this.data);\n }\n }\n\n /**\n * Sets a value in the storage at the specified path.\n * @param obj The object to set the value in\n * @param path The path to set the value at\n * @param value The value to set\n * @returns The updated object\n */\n static setByPath<P extends string, T extends object>(obj: T, path: P, value: PathValue<T, P>): void {\n const keys = path.split('.');\n let current: any = obj;\n\n for (let i = 0; i < keys.length - 1; i++) {\n if (typeof current[keys[i]] !== 'object' || current[keys[i]] == null) {\n current[keys[i]] = {};\n }\n\n current = current[keys[i]];\n }\n\n current[keys[keys.length - 1]] = value;\n\n return current;\n }\n\n public override on<K extends keyof UseStorageEvents<T>>(eventName: K, callback: (this: useStorage<T>, ...args: UseStorageEvents<T>[K]) => void): this {\n if (eventName === 'load' && this.loaded) {\n callback.apply(this, [this.data]);\n\n return this;\n }\n\n super.on(eventName, callback);\n\n return this;\n }\n}\n","import { ClientEvents as events, Provider } from '../types/client.js';\nimport { StreamElements } from '../types/streamelements/main.js';\nimport { EventProvider } from '../utils/EventProvider.js';\nimport { useStorage } from '../utils/useStorage.js';\nimport { Command } from '../actions/command.js';\nimport { Button } from '../actions/button.js';\nimport { Alejo } from '../utils/alejo.js';\n\ntype ClientEvents = {\n load: [event: StreamElements.Event.onWidgetLoad];\n action: [action: Button | Command, type: 'created' | 'executed' | 'removed'];\n session: [session: StreamElements.Session.Data];\n event:\n | [provider: 'streamelements', event: StreamElements.Event.Provider.StreamElements.Events]\n | [provider: 'twitch', event: StreamElements.Event.Provider.Twitch.Events]\n | [provider: 'youtube', event: StreamElements.Event.Provider.YouTube.Events]\n | [provider: 'kick', event: StreamElements.Event.Provider.Kick.Events]\n | [provider: 'facebook', event: StreamElements.Event.Provider.Facebook.Events];\n};\n\nexport type ClientStorageOptions<T> = {\n value: T;\n timestamp: number;\n expire: number;\n};\n\ntype ClientStorage = {\n user: Record<string, ClientStorageOptions<string>>;\n avatar: Record<string, ClientStorageOptions<string>>;\n pronoun: Record<string, ClientStorageOptions<Alejo.Pronouns.name>>;\n emote: Record<string, ClientStorageOptions<string>>;\n};\n\ntype ClientOptions = {\n id?: string;\n};\n\nexport class Client extends EventProvider<ClientEvents> {\n public id: string = 'default';\n\n public storage!: useStorage<ClientStorage>;\n\n public fields: StreamElements.Event.onWidgetLoad['fieldData'] = {};\n\n public session!: StreamElements.Session.Data;\n\n public loaded: boolean = false;\n\n constructor(options: ClientOptions) {\n super();\n\n this.id = options.id || this.id;\n\n this.storage = new useStorage({\n id: this.id,\n data: {\n user: {},\n avatar: {},\n pronoun: {},\n emote: {},\n },\n });\n\n window.client = this;\n }\n\n public actions: {\n commands: Command[];\n buttons: Button[];\n } = {\n commands: [],\n buttons: [],\n };\n\n public details!: {\n provider: Provider | 'local';\n user: StreamElements.Event.onWidgetLoad['channel'];\n currency: StreamElements.Event.onWidgetLoad['currency'];\n overlay: StreamElements.Event.onWidgetLoad['overlay'];\n };\n\n public cache: {\n /**\n * Avatar cache duration in minutes.\n */\n avatar: number;\n /**\n * Pronoun cache duration in minutes.\n */\n pronoun: number;\n /**\n * Emote cache duration in minutes.\n */\n emote: number;\n } = {\n avatar: 30,\n pronoun: 60,\n emote: 120,\n };\n\n override on<K extends keyof ClientEvents>(eventName: K, callback: (this: Client, ...args: ClientEvents[K]) => void): this {\n if (eventName === 'load' && this.loaded) {\n callback.apply(this, [\n {\n channel: this.details.user,\n currency: this.details.currency,\n fieldData: this.fields,\n recents: [],\n session: {\n data: this.session,\n settings: {\n autoReset: false,\n calendar: false,\n resetOnStart: false,\n },\n },\n overlay: this.details.overlay,\n emulated: false,\n } as StreamElements.Event.onWidgetLoad,\n ] as unknown as ClientEvents[K]);\n\n return this;\n }\n\n super.on(eventName, callback);\n\n return this;\n }\n}\n","import { StreamElements } from '../types/streamelements/main.js';\nimport { Client } from '../client/client.js';\nimport { logger } from '../index.js';\n\ninterface CommandOptions {\n prefix?: string;\n name: string;\n description?: string;\n arguments?: boolean;\n run: (this: Client, args: string[], event: CommandEvent) => void;\n test?: string;\n aliases?: string[];\n permissions?: string[];\n admins?: string[];\n}\n\ntype CommandEvent =\n | { provider: 'twitch'; data: StreamElements.Event.Provider.Twitch.Message }\n | { provider: 'youtube'; data: StreamElements.Event.Provider.YouTube.Message }\n | { provider: 'kick'; data: any };\n\nexport class Command {\n prefix: string = '!';\n\n name!: string;\n description!: string;\n\n arguments: boolean = false;\n\n test: string = `${this.prefix}${this.name} arg1 arg2`;\n\n aliases: string[] = [];\n permissions?: string[] | boolean = undefined;\n admins: string[] = [];\n\n constructor(options: CommandOptions) {\n if (!(window.client instanceof Client)) return;\n\n this.prefix = options.prefix ?? this.prefix;\n this.name = options.name;\n this.description = options.description ?? this.description;\n this.arguments = options.arguments ?? this.arguments;\n\n this.run = options.run;\n\n this.test = options.test ?? this.test;\n this.aliases = options.aliases ?? this.aliases;\n this.permissions = options.permissions ?? this.permissions;\n this.admins = options.admins ?? this.admins;\n\n // Register the command in the client actions\n window.client.actions.commands.push(this);\n\n window.client.emit('action', this, 'created');\n }\n\n run(this: Client, args: string[], event: CommandEvent): void {}\n\n verify(nickname: string, roles: string[], args: string[]): boolean {\n if (this.arguments === true && (!args || !args.length)) {\n return false;\n }\n\n if (this.admins.some((a) => nickname.toLocaleLowerCase() === a.toLocaleLowerCase())) {\n return true;\n }\n\n if (this.permissions === true || typeof this.permissions === 'undefined' || (Array.isArray(this.permissions) && !this.permissions.length)) {\n return false;\n }\n\n if (\n Array.isArray(this.permissions) &&\n this.permissions.some((p) => nickname.toLowerCase() === p.toLowerCase() || roles.map((r) => r.toLowerCase()).includes(p.toLowerCase()))\n ) {\n return true;\n }\n\n return false;\n }\n\n parse(text: string, event: CommandEvent): boolean {\n if (!(window.client instanceof Client)) return false;\n\n const args = text\n .replace(this.prefix, '')\n .split(' ')\n .slice(1)\n .map((a) => a.trim());\n\n var nickname: string = '';\n var roles: string[] = [];\n\n const rAliases = { bits: 'cheer', premium: 'prime' };\n\n switch (event.provider) {\n case 'twitch': {\n const data = event.data;\n\n nickname = data.event.data.nick || data.event.data.displayName;\n\n if (data.event.data.tags?.badges) {\n const tags = data.event.data.tags.badges.toString().replace(/\\/\\d+/g, '').split(',');\n\n roles = tags.map((t) => (t in rAliases ? rAliases[t as keyof typeof rAliases] : t));\n }\n\n break;\n }\n case 'youtube': {\n const data = event.data;\n\n const rMap = {\n isVerified: 'verified',\n isChatOwner: 'owner',\n isChatSponsor: 'sponsor',\n isChatModerator: 'moderator',\n };\n\n nickname = data.event.data.nick || data.event.data.displayName;\n\n roles = Object.entries(data.event.data.authorDetails)\n .filter(([k, v]) => k.startsWith('is') && v)\n .map(([k]) => rMap[k as keyof typeof rMap])\n .filter(Boolean);\n\n break;\n }\n case 'kick': {\n return false;\n\n break;\n }\n }\n\n const verify = this.verify(nickname, roles, args);\n\n if (verify === true) {\n this.run.apply(window.client, [args, event]);\n }\n\n return verify;\n }\n\n remove(): void {\n if (!(window.client instanceof Client)) return;\n\n const index = window.client.actions.commands.indexOf(this);\n\n if (index > -1) {\n window.client.actions.commands.splice(index, 1);\n window.client.emit('action', this, 'removed');\n }\n }\n\n static execute(received: CommandEvent): boolean {\n if (!(window.client instanceof Client)) return false;\n\n const data = received.data;\n\n try {\n if (window.client.actions.commands.length && window.client.actions.commands.some((c) => data.event.data.text.startsWith(c.prefix))) {\n const commands = window.client.actions.commands.filter((c) => {\n var nameAndAliases = [c.name, ...(c.aliases ?? [])];\n var commandMatch = data.event.data.text.replace(c.prefix, '').split(' ')[0];\n\n return nameAndAliases.includes(commandMatch);\n });\n\n if (commands.length && commands.every((command) => command instanceof Command)) {\n commands.forEach((command) => {\n command.parse(data.event.data.text, received);\n\n window.client.emit('action', command, 'executed');\n\n logger.received(`Command executed: ${data.event.data.text} by ${data.event.data.nick || data.event.data.displayName}`, data);\n });\n\n return true;\n }\n }\n } catch (error) {\n return false;\n } finally {\n return false;\n }\n }\n}\n","import { EventProvider } from './EventProvider.js';\nimport { Client } from '../client/client.js';\nimport { logger } from '../index.js';\n\ntype QueueEvents<T> = {\n load: [];\n cancel: [];\n update: [queue: QueueItem<T>[], priorityQueue: QueueItem<T>[], history: QueueItem<T>[], timeouts: Array<ReturnType<typeof setTimeout>>];\n process: [item: QueueItem<T>, queue: useQueue<T>];\n};\n\ntype QueueProps = {\n isoDate: string;\n isLoop: boolean;\n isPriority: boolean;\n isImmediate: boolean;\n};\n\ntype QueueItem<T> = { value: T } & QueueProps;\n\ntype QueueProcessor<T> = (item: T, queue: useQueue<T>) => Promise<any>;\n\ntype QueueDuration = number | boolean | undefined;\n\ninterface QueueOptions<T> {\n /**\n * Duration between processing each item in milliseconds. Set to `0` or `false` for immediate processing.\n */\n duration: QueueDuration;\n /**\n * Function to process each item in the queue.\n */\n processor: QueueProcessor<T>;\n}\n\nexport class useQueue<T> extends EventProvider<QueueEvents<T>> {\n queue: QueueItem<T>[] = [];\n priorityQueue: QueueItem<T>[] = [];\n history: QueueItem<T>[] = [];\n\n private timeouts: Array<ReturnType<typeof setTimeout>> = [];\n\n public running: boolean = false;\n\n public duration: QueueDuration = undefined;\n\n private loaded: boolean = false;\n\n public processor!: QueueProcessor<T>;\n\n constructor(options: QueueOptions<T>) {\n if (!(window.client instanceof Client)) return;\n\n super();\n\n this.duration = options.duration;\n this.processor = options.processor;\n\n window.client.on('load', () => {\n this.emit('load');\n\n this.loaded = true;\n });\n }\n\n public enqueue(value: T, options: Partial<QueueProps> = {}): this {\n const item: QueueItem<T> = {\n isoDate: new Date().toISOString(),\n isLoop: options?.isLoop ?? false,\n isPriority: options?.isPriority ?? false,\n isImmediate: options?.isImmediate ?? false,\n value,\n };\n\n const hasItems = this.hasItems();\n\n if (item.isPriority && item.isImmediate) {\n this.cancel();\n this.priorityQueue.unshift(item);\n } else {\n const targetQueue = item.isPriority ? this.priorityQueue : this.queue;\n\n targetQueue.push(item);\n }\n\n // Always process immediately if it's not running\n if (this.running === false && hasItems === false) {\n this.run();\n }\n\n this.emit('update', this.queue, this.priorityQueue, this.history, this.timeouts);\n\n return this;\n }\n\n private async run() {\n if (!this.hasItems()) {\n this.running = false;\n return;\n }\n\n this.running = true;\n\n await this.next();\n\n if (typeof this.duration === 'number' && this.duration > 0) {\n this.timeouts.push(setTimeout(() => this.run(), this.duration));\n } else if (this.duration === 0 || (this.duration !== -1 && this.duration !== false)) {\n this.run();\n }\n }\n\n private async next() {\n const nextItem = this.priorityQueue.length > 0 ? this.priorityQueue.shift() : this.queue.shift();\n\n if (!nextItem) {\n this.running = false;\n\n return;\n }\n\n try {\n await this.processor.apply(this, [nextItem.value, this]);\n\n this.emit('process', nextItem, this);\n } catch (error) {\n logger.error(`Error during item processing: ${error instanceof Error ? error.message : String(error)}`);\n }\n\n this.history.push(nextItem);\n\n const targetQueue = nextItem.isPriority ? this.priorityQueue : this.queue;\n\n if (nextItem.isLoop) targetQueue.push(nextItem);\n }\n\n public resume() {\n if (this.running) {\n this.cancel();\n }\n\n if (this.hasItems()) this.run();\n\n return this;\n }\n\n public update(save: Partial<useQueue<T>>): this {\n this.queue = save.queue ?? this.queue;\n this.priorityQueue = save.priorityQueue ?? this.priorityQueue;\n this.history = save.history ?? this.history;\n\n if (this.hasItems() && this.running === false) {\n window.client?.on('load', () => this.run());\n }\n\n return this;\n }\n\n public cancel() {\n if (this.running) {\n this.timeouts.forEach((timeout) => clearTimeout(timeout));\n this.timeouts = [];\n this.running = false;\n\n this.emit('cancel');\n }\n }\n\n public hasItems(): boolean {\n return this.queue.length > 0 || this.priorityQueue.length > 0;\n }\n\n public override on<K extends keyof QueueEvents<T>>(eventName: K, callback: (this: useQueue<T>, ...args: QueueEvents<T>[K]) => void): this {\n if (eventName === 'load' && this.loaded) {\n callback.apply(this);\n\n return this;\n }\n\n super.on(eventName, callback);\n\n return this;\n }\n}\n","import { Client } from '../client/client.js';\nimport { logger } from '../index.js';\n\ninterface ButtonOptions {\n field: string | ((field: string, value: string | boolean | number) => boolean);\n template?: string;\n run: (field: string, value: string | boolean | number) => void;\n}\n\nexport class Button {\n field: ButtonOptions['field'] = 'button';\n\n template: string = 'button';\n\n run!: ButtonOptions['run'];\n\n constructor(options: ButtonOptions) {\n if (!(window.client instanceof Client)) return;\n\n this.field = options.field ?? this.field;\n this.template = options.template ?? this.template;\n\n this.run = options.run;\n\n // Register the button in the client actions\n window.client.actions.buttons.push(this);\n\n window.client.emit('action', this, 'created');\n }\n\n parse(field: string, value: string | boolean | number): Button {\n /**\n * Extract the actual field name by removing the template part from the provided field.\n * For example, if the template is \"button-{id}\" and the field is \"button-123\",\n * this will extract \"123\" as the actual field name.\n */\n var f = field.replace(typeof this.field === 'string' ? this.field : (this.template.replace(/\\{[^}]*\\}/g, '') ?? ''), '').trim();\n\n try {\n this.run.apply(window.client, [f.length ? f : (field ?? field), value]);\n } catch (error) {\n throw new Error(`Error running button \"${this.field}\": ${error instanceof Error ? error.message : error}`);\n }\n\n return this;\n }\n\n remove(): void {\n if (!(window.client instanceof Client)) return;\n\n const index = window.client.actions.buttons.indexOf(this);\n\n if (index > -1) {\n window.client.actions.buttons.splice(index, 1);\n window.client.emit('action', this, 'removed');\n }\n }\n\n static execute(field: string, value: string | boolean | number): boolean {\n try {\n if (!(window.client instanceof Client)) return false;\n\n if (window.client.actions.buttons.length) {\n const buttons = window.client.actions.buttons.filter((b) => {\n /**\n * Check if the button's field matches the provided field.\n */\n if (typeof b.field === 'string') return b.field === field;\n /**\n * If the button's field is a function, call it with the provided field and value to determine a match.\n */\n if (typeof b.field === 'function') return b.field(field, value);\n\n return false;\n });\n\n if (buttons.length && buttons.every((b) => b instanceof Button)) {\n buttons.forEach((button) => {\n try {\n button.parse(field, value);\n\n window.client.emit('action', button, 'executed');\n\n logger.received(`Button executed: ${field}${value ? ` with value: ${value}` : ''}`);\n } catch (error) {\n logger.error(`Error executing button \"${field}\": ${error instanceof Error ? error.message : error}`);\n }\n });\n\n return true;\n }\n }\n } catch (error) {\n return false;\n } finally {\n return false;\n }\n }\n}\n","interface Theme {\n color?: string;\n background?: string;\n bold?: boolean;\n italic?: boolean;\n fontSize?: number;\n icon?: string;\n}\n\ninterface Options {\n enabled?: boolean;\n prefix?: string;\n}\n\ntype LogMethod = (...args: unknown[]) => void;\n\nexport class Logger {\n private readonly enabled: boolean;\n private readonly prefix: string;\n\n readonly error = this.apply({\n color: '#721c24',\n background: '#f8d7da',\n bold: true,\n italic: false,\n icon: '✖',\n });\n\n readonly warn = this.apply({\n color: '#856404',\n background: '#fff3cd',\n bold: true,\n italic: false,\n fontSize: 20,\n });\n\n readonly success = this.apply({\n color: '#155724',\n background: '#d4edda',\n bold: true,\n italic: false,\n fontSize: 18,\n icon: '✔',\n });\n\n readonly info = this.apply({\n color: '#0c5460',\n background: '#d1ecf1',\n fontSize: 12,\n icon: 'ℹ',\n });\n\n readonly debug = this.apply({\n color: '#6c757d',\n background: 'transparent',\n fontSize: 11,\n icon: '●',\n });\n\n readonly alert = this.apply({\n color: '#856404',\n background: '#fff3cd',\n bold: true,\n italic: false,\n fontSize: 20,\n icon: '⚠',\n });\n\n readonly status = this.apply({\n color: '#0c5460',\n background: '#d1ecf1',\n bold: true,\n italic: false,\n fontSize: 12,\n icon: '·',\n });\n\n readonly received = this.apply({\n color: '#E6BBFF',\n background: 'transparent',\n bold: false,\n italic: false,\n fontSize: 14,\n icon: '⬇',\n });\n\n readonly simple = this.apply({\n color: '#f6c6cb',\n background: 'transparent',\n bold: false,\n italic: false,\n fontSize: 14,\n icon: '☼',\n });\n\n constructor(options: Options = {}) {\n this.enabled = options.enabled ?? true;\n this.prefix = options.prefix ? `[${options.prefix}]` : '';\n }\n\n public apply(theme: Theme): LogMethod {\n const style = this.style(theme);\n const icon = theme.icon ? `${theme.icon} ` : '';\n\n return (...args: unknown[]): void => {\n if (!this.enabled || typeof console === 'undefined') return;\n\n const prefix = this.prefix ? `${this.prefix} ` : '';\n\n const primitives: unknown[] = [];\n const objects: unknown[] = [];\n\n args.forEach((arg) => {\n if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {\n primitives.push(arg);\n } else {\n objects.push(arg);\n }\n });\n\n // Log with style\n\n if (primitives.length > 0) {\n const message = primitives.join(' ');\n console.log(`%c${icon}${prefix}${message}`, style, ...objects);\n } else if (objects.length > 0) {\n console.log(`%c${icon}${prefix}`, style, ...objects);\n }\n };\n }\n\n private style(theme: Theme): string {\n const styles: string[] = [];\n\n if (theme.background && theme.background !== 'transparent') {\n styles.push(`background: ${theme.background}`);\n styles.push('padding: 2px 6px');\n styles.push('border-radius: 3px');\n }\n if (theme.color) styles.push(`color: ${theme.color}`);\n if (theme.bold) styles.push('font-weight: bold');\n if (theme.italic) styles.push('font-style: italic');\n if (theme.fontSize) styles.push(`font-size: ${theme.fontSize}px`);\n\n return styles.join('; ');\n }\n\n public group(label: string): void {\n if (!this.enabled || !console.group) return;\n\n console.group(label);\n }\n\n public groupCollapsed(label: string): void {\n if (!this.enabled || !console.groupCollapsed) return;\n\n console.groupCollapsed(label);\n }\n\n public groupEnd(): void {\n if (!this.enabled || !console.groupEnd) return;\n\n console.groupEnd();\n }\n\n public table(data: unknown): void {\n if (!this.enabled || !console.table) return;\n\n console.table(data);\n }\n\n public time(label: string): void {\n if (!this.enabled || !console.time) return;\n\n console.time(label);\n }\n\n public timeEnd(label: string): void {\n if (!this.enabled || !console.timeEnd) return;\n\n console.timeEnd(label);\n }\n}\n","import { ClientEvents, Provider } from '../types/client.js';\nimport { Client, ClientStorageOptions } from './client.js';\nimport { usedStorages } from '../utils/useStorage.js';\nimport { Command } from '../actions/command.js';\nimport { Button } from '../actions/button.js';\n\nwindow.addEventListener('load', () => {\n if (window.client instanceof Client) {\n // Do nothing, just ensuring the client is initialized\n }\n});\n\nwindow.addEventListener('onWidgetLoad', async (data) => {\n const { detail } = data;\n\n if (window.client instanceof Client) {\n const client = window.client;\n\n client.fields = detail.fieldData;\n client.session = detail.session.data;\n\n client.details = {\n ...client.details,\n user: detail.channel,\n currency: detail.currency,\n overlay: detail.overlay,\n };\n\n if (detail.channel.id && !detail.emulated) {\n await fetch(`https://api.streamelements.com/kappa/v2/channels/${detail.channel.id}/`)\n .then((res) => res.json())\n .then((profile) => {\n if (profile.provider) {\n client.details.provider = profile.provider;\n\n return profile.provider;\n } else {\n client.details.provider = 'local';\n }\n })\n .catch(() => {\n client.details.provider = 'local';\n });\n } else {\n client.details.provider = 'local';\n }\n\n client.emit('load', detail);\n\n client.loaded = true;\n\n client.storage.on('load', (data) => {\n if (data) {\n const clearExpired = <T extends Record<string, ClientStorageOptions<string>>>(data: T) => {\n const now = Date.now();\n const cleanedData: any = {};\n\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const entry = data[key];\n\n if (entry.expire && entry.expire > now) {\n cleanedData[key] = entry;\n }\n }\n }\n\n return cleanedData as T;\n };\n\n const users = clearExpired(data['user'] || {});\n const avatars = clearExpired(data['avatar'] || {});\n const pronouns = clearExpired(data['pronoun'] || {});\n const emotes = clearExpired(data['emote'] || {});\n\n client.storage.update({\n user: users,\n avatar: avatars,\n pronoun: pronouns,\n emote: emotes,\n });\n }\n\n if (detail.channel.providerId.length) {\n client.storage.add(`avatar.${detail.channel.providerId.toLowerCase()}`, {\n value: detail.channel.avatar,\n timestamp: Date.now(),\n expire: Date.now() + client.cache.avatar * 60 * 1000,\n });\n }\n });\n }\n});\n\nwindow.addEventListener('onSessionUpdate', (data) => {\n const { detail } = data;\n\n if (window.client instanceof Client) {\n const client = window.client;\n\n client.session = detail.session;\n\n client.emit('session', detail.session);\n }\n});\n\nwindow.addEventListener('onEventReceived', ({ detail }) => {\n if (window.client instanceof Client) {\n // @ts-ignore\n var provider: Provider = detail.event?.provider || detail.event?.service || detail.event?.data?.provider || window.client.details.provider;\n\n const actAsStreamElements = ['kvstore:update', 'bot:counter', 'alertService:toggleSound', 'event:skip', 'tip-latest', 'event:test'];\n\n if (actAsStreamElements.some((l) => l === detail.listener)) provider = 'streamelements';\n\n const received = { provider: provider, data: detail } as ClientEvents;\n\n switch (received.provider) {\n case 'streamelements': {\n const data = received.data;\n\n switch (data.listener) {\n case 'tip-latest': {\n const event = data.event;\n\n break;\n }\n case 'event:skip': {\n const event = data.event;\n\n break;\n }\n case 'event:test': {\n switch (data.event.listener) {\n case 'widget-button': {\n const event = data.event;\n\n Button.execute(event.field, event.value);\n\n break;\n }\n case 'subscriber-latest': {\n const event = data.event;\n break;\n }\n\n // ... alot more\n }\n\n break;\n }\n case 'kvstore:update': {\n const event = data.event;\n\n if (usedStorages.length) {\n var storage = usedStorages.find((s) => s.id === event.data.key.replace('customWidget.', ''));\n\n if (storage) {\n storage.update(event.data.value);\n }\n }\n\n break;\n }\n case 'bot:counter': {\n const event = data.event;\n\n break;\n }\n case 'alertService:toggleSound': {\n const event = data.event;\n\n client.details.overlay.muted = Boolean(event.muted);\n\n break;\n }\n }\n\n window.client.emit('event', 'streamelements', received.data);\n\n break;\n }\n case 'twitch': {\n const data = received.data;\n\n switch (data.listener) {\n case 'delete-message': {\n const event = data.event;\n\n break;\n }\n case 'delete-messages': {\n const event = data.event;\n\n break;\n }\n case 'message': {\n const event = data.event;\n\n Command.execute({ provider: 'twitch', data: data });\n\n break;\n }\n case 'follower-latest': {\n const event = data.event;\n\n break;\n }\n case 'cheer-latest': {\n const event = data.event;\n\n break;\n }\n case 'subscriber-latest': {\n if (!data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // normal\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // gift\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && data.event.isCommunityGift) {\n // community gift spam\n const event = data.event;\n } else if (!data.event.gifted && data.event.bulkGifted && !data.event.isCommunityGift) {\n // community gift\n const event = data.event;\n }\n\n break;\n }\n case 'raid-latest': {\n const event = data.event;\n\n break;\n }\n }\n\n window.client.emit('event', 'twitch', received.data);\n\n break;\n }\n case 'youtube': {\n const data = received.data;\n\n switch (data.listener) {\n case 'message': {\n const event = data.event;\n\n Command.execute({ provider: 'youtube', data: data });\n\n break;\n }\n case 'subscriber-latest': {\n const event = data.event;\n\n break;\n }\n case 'sponsor-latest': {\n const event = data.event;\n\n if (!data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // normal\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && !data.event.isCommunityGift) {\n // gift\n const event = data.event;\n } else if (data.event.gifted && !data.event.bulkGifted && data.event.isCommunityGift) {\n // community gift spam\n const event = data.event;\n } else if (!data.event.gifted && data.event.bulkGifted && !data.event.isCommunityGift) {\n // community gift\n const event = data.event;\n }\n\n break;\n }\n case 'superchat-latest': {\n const event = data.event;\n\n break;\n }\n }\n\n window.client.emit('event', 'youtube', received.data);\n\n break;\n }\n case 'kick': {\n const data = received.data;\n\n window.client.emit('event', 'kick', received.data);\n\n break;\n }\n case 'facebook': {\n const data = received.data;\n\n window.client.emit('event', 'facebook', received.data);\n\n break;\n }\n }\n }\n});\n","import { findEmotesInText, generateBadges, replaceEmotesWithHTML, replaceYoutubeEmotesWithHTML } from './utils/Message.js';\nimport { StreamElements } from './types/streamelements/main.js';\nimport { initializeLocalSEAPI } from './streamelements/api.js';\nimport { EventProvider } from './utils/EventProvider.js';\nimport { Simulation } from './simulation/simulation.js';\nimport { usedStorages, useStorage } from './utils/useStorage.js';\nimport { Command } from './actions/command.js';\nimport { useQueue } from './utils/useQueue.js';\nimport { Button } from './actions/button.js';\nimport { Client } from './client/client.js';\nimport { Logger } from './utils/Logger.js';\nimport { Alejo } from './utils/alejo.js';\nimport './client/listener.js';\n\nexport type * from './types/index.js';\nexport type * from './utils/alejo.js';\n\nexport const USE_SE_API: Promise<StreamElements.SE_API> = typeof SE_API !== 'undefined' ? Promise.resolve(SE_API) : Promise.resolve(initializeLocalSEAPI());\n\nexport const logger = new Logger();\n\nexport const Tixyel = {\n Client,\n\n USE_SE_API,\n Simulation,\n logger,\n Alejo,\n\n utils: {\n findEmotesInText,\n replaceEmotesWithHTML,\n replaceYoutubeEmotesWithHTML,\n generateBadges,\n },\n\n modules: {\n Button,\n Command,\n EventProvider,\n useStorage,\n useQueue,\n Logger,\n },\n\n data: {\n usedStorages,\n },\n} as const;\n\ntype Main = typeof Tixyel;\n\ndeclare global {\n interface Window {\n Tixyel: Main;\n client: Client;\n }\n\n interface WindowEventMap {\n onWidgetLoad: CustomEvent<StreamElements.Event.onWidgetLoad>;\n onSessionUpdate: CustomEvent<StreamElements.Event.onSessionUpdate>;\n onEventReceived: CustomEvent<StreamElements.Event.onEventReceived>;\n }\n\n const Tixyel: Main;\n var client: Client;\n\n const SE_API: StreamElements.SE_API;\n}\n\nif (typeof window !== 'undefined') {\n window.Tixyel = Tixyel;\n}\n"],"names":["avatars","badges","emotes","acc","emote","e","messages","names","tts","items","tiers","css_color_names","youtube_emotes","Alejo","Pronouns","map","list","data","res","built","name","display","get","username","error","parseToRGBA","str","format","hex","r","g","b","a","match","h","s","l","hslToRgb","canvas","ctx","rgbaToHex","rgba","includeAlpha","toHex","n","rgbToHsl","max","min","delta","hue2rgb","p","q","t","findClosestColorName","cssColors","Simulation","closestColor","minDistance","colorName","cr","cg","cb","distance","opacity","color","result","decimal","percentage","valid","hsl","type","alpha","float","rand","threshold","length","chars","i","arr","index","start","end","daysAgo","past","c","string","pattern","callback","promises","groups","promise","replacements","template","values","options","mergeSpanStyles","flatten","k","v","amount","REGEX","HTML_MODIFIERS","value","param","MODIFIERS","ALIASES","applyModifier","canonical","key","aliases","alias","use","replaceAll","fullMatch","modifier","newValue","parseModifiers","len","parseText","stopChar","out","parseModifier","paramStart","_","num","CARDINALS","ORDINALS","SUFFIXES","SCALES","SCALES_ORD","rem100","rem10","below100","kind","decade","single","tensPart","unitPart","below1000","hundreds","rest","parts","lastNonZeroIndex","scale","segment","ordScale","outerStyle","innerHTML","innerStyle","content","element","returnOnly","customParent","base","parent","logger","parentRect","elementWidth","elementHeight","scaleX","scaleY","finalScale","minScaleX","minScaleY","minScale","htmlString","startIndex","doc","charIndex","processNode","node","char","span","wrapper","clone","child","processed","childNode","body","obj","prefix","path","itemPath","types","available","generate","generateRecentData","config","generateObjectData","processedKey","processTypedConfig","session","subKey","subValue","fields","currency","currencies","provider","randomProvider","randomEvent","message","generateBadges","findEmotesInText","renderedText","replaceEmotesWithHTML","userId","time","avatar","tier","sender","addons","subTypes","subType","muted","event","listener","delay","ms","resolve","probability","total","val","sorted","cumulative","item","weight","fieldsFile","dataFiles","localFiles","file","customfields","load","text","searchIndex","before","after","imgUrl","replaceYoutubeEmotesWithHTML","x","code","url","alt","current","badge","details","LOCAL_SE_API","reload","initializeLocalSEAPI","lastStore","EventProvider","eventName","args","listeners","fn","usedStorages","useStorage","USE_SE_API","se","save","keys","Client","Command","nickname","roles","rAliases","rMap","verify","received","commands","nameAndAliases","commandMatch","command","useQueue","hasItems","nextItem","targetQueue","timeout","Button","field","f","buttons","button","Logger","theme","style","icon","primitives","objects","arg","styles","label","detail","client","profile","clearExpired","now","cleanedData","entry","users","pronouns","storage","Tixyel"],"mappings":"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,EAAK,6CACL,EAAK,6CACL,EAAK,4CAAA,EAEP,MAAS,IACT,IAAO,IACP,OAAU,CACR,EAAK,EACL,EAAK,EACL,MAAS,IACT,OAAU,GAAA,CACZ,CAEJ,CAAC,EAAE,OACD,CAACC,EAAKC,KACCD,EAAI,KAAME,GAAMA,EAAE,OAASD,EAAM,IAAI,GACxCD,EAAI,KAAK,CACP,GAAGC,EACH,MAAO,EACP,IAAK,CAAA,CACoC,EAGtCD,GAET,CAAA,CACF,ECt1CaG,GAAW,CACtB,kBACA,WACA,0BACA,uBACA,qBACA,MACA,8BACA,YACA,gCACA,iDACA,UACA,4BACA,qBACA,cACA,kCACA,gBACA,QACA,8BACA,sBACA,mCACA,8BACA,sCACA,kCACA,yBACA,0BACA,uBACA,qBACA,kCACA,4BACA,WACA,sCACA,wBACA,UACA,qCACA,kCACA,iBACA,YACA,mBACA,8CACA,+BACA,cACA,wBACA,SACA,kBACA,cACA,qBACA,gBACA,0BACA,gBACA,YACF,ECnDaC,GAAQ,CAAC,QAAS,SAAU,UAAW,WAAY,WAAY,WAAY,YAAY,ECAvFC,GAAM,CACjB,QACA,SACA,UACA,QACA,SACA,OACA,YACA,UACA,UACA,OACA,MACA,QACA,MACA,QACA,QACA,MACA,UACA,SACA,SACA,UACA,QACA,SACA,OACA,OACA,UACA,SACA,UACA,WACA,SACA,MACA,UACA,WACA,UACA,QACA,UACA,WACA,SACA,SACA,OACA,SACA,MACA,UACA,QACA,OACA,QACA,MACA,UACA,SACA,QACA,UACA,OACA,OACA,OACA,UACA,QACA,QACA,QACA,SACA,SACA,WACA,SACA,SACA,OACA,KACA,WACA,QACA,OACA,QACA,SACA,UACA,SACA,QACA,SACA,SACA,OACA,WACA,QACA,UACA,OACA,UACA,UACA,YACA,UACA,QACA,WACA,OACA,OACF,ECxFaC,GAAe,CAAA,ECAfC,GAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAO,ECAxCC,GAAkB,CAC7B,YACA,eACA,OACA,aACA,QACA,QACA,SACA,QACA,iBACA,OACA,aACA,QACA,YACA,YACA,aACA,YACA,QACA,iBACA,WACA,UACA,OACA,WACA,WACA,gBACA,WACA,YACA,WACA,YACA,cACA,iBACA,aACA,aACA,UACA,aACA,eACA,gBACA,gBACA,gBACA,gBACA,aACA,WACA,cACA,UACA,UACA,aACA,YACA,cACA,cACA,UACA,YACA,aACA,OACA,YACA,OACA,QACA,cACA,OACA,WACA,UACA,YACA,SACA,QACA,QACA,WACA,gBACA,YACA,eACA,YACA,aACA,YACA,uBACA,YACA,aACA,YACA,YACA,cACA,gBACA,eACA,iBACA,iBACA,iBACA,cACA,OACA,YACA,QACA,UACA,SACA,mBACA,aACA,eACA,eACA,iBACA,kBACA,oBACA,kBACA,kBACA,eACA,YACA,YACA,WACA,cACA,OACA,UACA,QACA,YACA,SACA,YACA,SACA,gBACA,YACA,gBACA,gBACA,aACA,YACA,OACA,OACA,OACA,aACA,SACA,gBACA,MACA,YACA,YACA,cACA,SACA,aACA,WACA,WACA,SACA,SACA,UACA,YACA,YACA,YACA,OACA,cACA,YACA,MACA,OACA,UACA,SACA,YACA,SACA,QACA,QACA,aACA,SACA,cACA,aACF,ECtJaC,GAAiB,CAC5B,CACE,QAAW,oDACX,UAAa,CAAC,8BAA8B,EAC5C,YAAe,CAAC,4BAA4B,EAC5C,MAAS,CACP,WAAc,CACZ,CACE,IAAO,8GACP,MAAS,GACT,OAAU,EAAA,EAEZ,CACE,IAAO,8GACP,MAAS,GACT,OAAU,EAAA,CACZ,EAEF,cAAiB,CACf,kBAAqB,CACnB,MAAS,4BAAA,CACX,CACF,EAEF,cAAiB,GACjB,MAAS,CAAA,EAEX,CACE,QAAW,mDACX,UAAa,CAAC,+BAA+B,EAC7C,YAAe,CAAC,6BAA6B,EAC7C,MAAS,CACP,WAAc,CACZ,CACE,IAAO,+GACP,MAAS,GACT,OAAU,EAAA,EAEZ,CACE,IAAO,+GACP,MAAS,GACT,OAAU,EAAA,CACZ,EAEF,cAAiB,CACf,kBAAqB,CACnB,MAAS,6BAAA,CACX,CAC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"}