diff --git a/src/python/move_emojis/scripts/generate_code.py b/src/python/move_emojis/scripts/generate_code.py index c65ca658c..0119972f0 100644 --- a/src/python/move_emojis/scripts/generate_code.py +++ b/src/python/move_emojis/scripts/generate_code.py @@ -29,11 +29,11 @@ ) TYPESCRIPT_SYMBOL_EMOJIS_PATH = os.path.join( TYPESCRIPT_PATH_DIR, - "symbol-emojis.json", + "symbol-emojis.ts", ) TYPESCRIPT_CHAT_EMOJIS_PATH = os.path.join( TYPESCRIPT_PATH_DIR, - "chat-emojis.json", + "chat-emojis.ts", ) TYPESCRIPT_SYMBOL_NAMES_PATH = os.path.join( TYPESCRIPT_PATH_DIR, @@ -125,11 +125,11 @@ def ensure_write_to_file(data: str | dict[str, Any] | list[str], fp: str): fp_obj = pathlib.Path(fp) pathlib.Path(fp_obj.parent).mkdir(exist_ok=True) - with open(fp, "w") as outfile: + with open(fp, "w", encoding="utf-8") as outfile: if isinstance(data, str): _ = outfile.write(data) else: - json.dump(data, outfile, indent=2) + json.dump(data, outfile, indent=2, ensure_ascii=False) if __name__ == "__main__": @@ -159,12 +159,8 @@ def ensure_write_to_file(data: str | dict[str, Any] | list[str], fp: str): ensure_write_to_file(symbol_emojis, SYMBOL_EMOJIS_ALL_DATA_PATH) typescript_symbol_emojis = as_emoji_to_name_dict(symbol_emojis) typescript_chat_emojis = as_emoji_to_name_dict(extended_emojis) - typescript_symbol_names = {k: None for k in typescript_symbol_emojis.values()} - typescript_chat_names = {k: None for k in typescript_chat_emojis.values()} ensure_write_to_file(typescript_symbol_emojis, TYPESCRIPT_SYMBOL_EMOJIS_PATH) - ensure_write_to_file(typescript_symbol_names, TYPESCRIPT_SYMBOL_NAMES_PATH) ensure_write_to_file(typescript_chat_emojis, TYPESCRIPT_CHAT_EMOJIS_PATH) - ensure_write_to_file(typescript_chat_names, TYPESCRIPT_CHAT_NAMES_PATH) # The rust processor uses the `symbol-emojis.json` data at build time, so if the # path for the directory exists, output the data there as well. if pathlib.Path(RUST_JSON_PATH).parent.exists(): diff --git a/src/typescript/frontend/src/components/pages/home/components/table-card/LinkOrAnimationTrigger.tsx b/src/typescript/frontend/src/components/pages/home/components/table-card/LinkOrAnimationTrigger.tsx index 26a71d45b..aec2c0036 100644 --- a/src/typescript/frontend/src/components/pages/home/components/table-card/LinkOrAnimationTrigger.tsx +++ b/src/typescript/frontend/src/components/pages/home/components/table-card/LinkOrAnimationTrigger.tsx @@ -1,59 +1,17 @@ import { type SymbolEmojiData } from "@sdk/emoji_data/types"; -import { useGenerateEvent } from "../../test-generate-event/use-generate-event"; import { type PropsWithChildren } from "react"; import { ROUTES } from "router/routes"; import { emojiNamesToPath } from "utils/pathname-helpers"; import Link from "next/link"; -import { VERCEL } from "@sdk/const"; import React from "react"; -/** - * To facilitate easy visual testing, we swap out the link on the grid table card with a div that triggers a - * random event when clicked. Note that the test click div will never render in Vercel build mode or in - * production. You also have to set a specific environment variable to true. - * - * We put this component in the grid table card component so that when the user clicks on the card, it will - * trigger the event (or navigate to the market page if not in test mode). - * - * @returns {JSX.Element} The link that goes to the market page, or if in test, the div that emulates triggering a - * random event in our event state store. - */ -export const GenerateEventComponent = ({ +export const EmojiMarketPageLink = ({ emojis, - marketID, ...props -}: { emojis: SymbolEmojiData[]; marketID: number } & PropsWithChildren) => { - // Note that without `stateOnly: true`, the event could conflict with other events. This may cause - // visual artifacts that won't actually appear with real data. - const generateEvent = useGenerateEvent({ marketID, emojis, stateOnly: true }); +}: { emojis: SymbolEmojiData[] } & PropsWithChildren) => ( + x.name))}`}> + {props.children} + +); - return ( - <> -
{props.children}
- - ); -}; - -export const LinkOrAnimationTrigger = ({ - emojis, - marketID, - ...props -}: { emojis: SymbolEmojiData[]; marketID: number } & PropsWithChildren) => { - return ( - <> - {VERCEL || - process.env.NODE_ENV === "production" || - process.env.NEXT_PUBLIC_ANIMATION_TEST !== "true" ? ( - x.name))}`}> - {props.children} - - ) : ( - - {props.children} - - )} - - ); -}; - -export default React.memo(LinkOrAnimationTrigger); +export default React.memo(EmojiMarketPageLink); diff --git a/src/typescript/frontend/src/components/pages/home/components/table-card/TableCard.tsx b/src/typescript/frontend/src/components/pages/home/components/table-card/TableCard.tsx index 52c965075..3ebca81d4 100644 --- a/src/typescript/frontend/src/components/pages/home/components/table-card/TableCard.tsx +++ b/src/typescript/frontend/src/components/pages/home/components/table-card/TableCard.tsx @@ -23,7 +23,7 @@ import { LAYOUT_DURATION, tableCardVariants, } from "./animation-variants/grid-variants"; -import LinkOrAnimationTrigger from "./LinkOrAnimationTrigger"; +import EmojiMarketPageLink from "./LinkOrAnimationTrigger"; import { type SymbolEmojiData } from "@sdk/emoji_data"; import { Emoji } from "utils/emoji"; import { SortMarketsBy } from "@sdk/indexer-v2/types/common"; @@ -205,7 +205,7 @@ const TableCard = ({ }} {...props} > - + - + ); }; diff --git a/src/typescript/frontend/src/components/pages/home/test-generate-event/event-generator.ts b/src/typescript/frontend/src/components/pages/home/test-generate-event/event-generator.ts deleted file mode 100644 index 406ae5ffb..000000000 --- a/src/typescript/frontend/src/components/pages/home/test-generate-event/event-generator.ts +++ /dev/null @@ -1,358 +0,0 @@ -import { - Ed25519Account, - AccountAddress, - type AccountAddressInput, - type Uint8, -} from "@aptos-labs/ts-sdk"; -import { - toEmojicoinEvent, - type Types, - type AnyNumberString, - type AnyEmojicoinEvent, -} from "@sdk-types"; -import { triggerEnumToRawTrigger, Trigger } from "@sdk/const"; -import { getRandomSymbolEmoji, type EmojicoinSymbol, generateRandomSymbol } from "@sdk/emoji_data"; -import { getEmojicoinData } from "@sdk/markets/utils"; -import type JsonTypes from "@sdk/types/json-types"; -import { STRUCT_STRINGS } from "@sdk/utils"; -import { INTEGRATOR_ADDRESS, INTEGRATOR_FEE_RATE_BPS } from "lib/env"; -import Big from "big.js"; -import { getEventsAsProcessorModels } from "@sdk/mini-processor"; -import { createEmptyEvents, type Events } from "@sdk/emojicoin_dot_fun/events"; - -/** - * Note that this data is generated solely for animation purposes. It isn't logically consistent - * and a lot of the fields are incorrect or inconsistent in terms of what could actually exist - * on-chain. - */ - -type AnimationTriggers = - | Trigger.MarketRegistration - | Trigger.SwapBuy - | Trigger.SwapSell - | Trigger.ProvideLiquidity - | Trigger.RemoveLiquidity - | Trigger.Chat; - -const getRandomAnimationTrigger = () => { - const triggers = [ - Trigger.MarketRegistration, - Trigger.SwapBuy, - Trigger.SwapSell, - Trigger.ProvideLiquidity, - Trigger.RemoveLiquidity, - Trigger.Chat, - ] as const; - return triggers[Math.floor(Math.random() * triggers.length)]; -}; - -const triggerToStructString = (trigger: AnimationTriggers) => { - if (trigger === Trigger.MarketRegistration) return STRUCT_STRINGS.MarketRegistrationEvent; - if (trigger === Trigger.SwapBuy) return STRUCT_STRINGS.SwapEvent; - if (trigger === Trigger.SwapSell) return STRUCT_STRINGS.SwapEvent; - if (trigger === Trigger.ProvideLiquidity) return STRUCT_STRINGS.LiquidityEvent; - if (trigger === Trigger.RemoveLiquidity) return STRUCT_STRINGS.LiquidityEvent; - if (trigger === Trigger.Chat) return STRUCT_STRINGS.ChatEvent; - throw new Error(`Invalid trigger: ${trigger}`); -}; - -export type RandomEventArgs = { - marketID: AnyNumberString; - time?: AnyNumberString; - marketNonce?: AnyNumberString; - emojis?: EmojicoinSymbol; - trigger?: AnimationTriggers; - version?: AnyNumberString; -}; - -let nonce = 0; - -export const generateRandomEvent = ({ - marketID, - version, - time = Date.now() * 1000, - marketNonce = nonce++, - emojis = generateRandomSymbol().emojis, - trigger = getRandomAnimationTrigger(), -}: RandomEventArgs) => { - const args = { - marketID, - time, - marketNonce, - emojis, - }; - const eventType = triggerToStructString(trigger); - const events: Events = createEmptyEvents(); - const t = eventType; - const v = Number(version); - let ev: AnyEmojicoinEvent; - switch (trigger) { - case Trigger.MarketRegistration: - ev = toEmojicoinEvent(t, generateMarketRegistrationJSON(args), v); - events.marketRegistrationEvents.push(ev as Types["MarketRegistrationEvent"]); - break; - case Trigger.SwapBuy: - ev = toEmojicoinEvent(t, generateSwapJSON({ ...args, isSell: false }), v); - events.swapEvents.push(ev as Types["SwapEvent"]); - break; - case Trigger.SwapSell: - ev = toEmojicoinEvent(t, generateSwapJSON({ ...args, isSell: true }), v); - events.swapEvents.push(ev as Types["SwapEvent"]); - break; - case Trigger.ProvideLiquidity: - ev = toEmojicoinEvent(t, generateLiquidityJSON({ ...args, liquidityProvided: true }), v); - events.liquidityEvents.push(ev as Types["LiquidityEvent"]); - break; - case Trigger.RemoveLiquidity: - ev = toEmojicoinEvent(t, generateLiquidityJSON({ ...args, liquidityProvided: false }), v); - events.liquidityEvents.push(ev as Types["LiquidityEvent"]); - break; - case Trigger.Chat: - ev = toEmojicoinEvent(t, generateChatJSON(args), v); - events.chatEvents.push(ev as Types["ChatEvent"]); - break; - default: - throw new Error(`Invalid trigger: ${trigger}`); - } - const stateJSON = generateStateJSON({ ...args, trigger: triggerEnumToRawTrigger(trigger) }); - const stateEvent = toEmojicoinEvent( - STRUCT_STRINGS.StateEvent, - stateJSON, - Number(version) - ) as Types["StateEvent"]; - events.stateEvents.push(stateEvent); - - const models = getEventsAsProcessorModels(events, { - sender: "0x0123", - entryFunction: "0x1234::some_contract::function", - version: BigInt(version ?? 7777777), - time: 0n, - }); - - const triggeringEvent = (() => { - switch (trigger) { - case Trigger.MarketRegistration: - return models.marketRegistrationEvents.pop(); - case Trigger.SwapBuy: - return models.swapEvents.pop(); - case Trigger.SwapSell: - return models.swapEvents.pop(); - case Trigger.ProvideLiquidity: - return models.liquidityEvents.pop(); - case Trigger.RemoveLiquidity: - return models.liquidityEvents.pop(); - case Trigger.Chat: - return models.chatEvents.pop(); - default: - throw new Error(`Invalid trigger: ${trigger}`); - } - })(); - - const stateEventModel = models.marketLatestStateEvents.pop(); - - if (!triggeringEvent || !stateEventModel) { - throw new Error("Something went wrong and the events were parsed incorrectly."); - } - - return { - triggeringEvent, - stateEvent: stateEventModel, - }; -}; - -const generateMarketRegistrationJSON = ({ - marketID, - emojis, - time, - registrant = AccountAddress.from(Ed25519Account.generate().accountAddress), -}: { - marketID: AnyNumberString; - emojis: EmojicoinSymbol; - time: AnyNumberString; - registrant?: AccountAddressInput; -}): JsonTypes["MarketRegistrationEvent"] => { - const { marketAddress, symbolBytes } = getEmojicoinData(emojis); - return { - integrator: INTEGRATOR_ADDRESS, - integrator_fee: "0", - market_metadata: { - emoji_bytes: symbolBytes, - market_address: marketAddress.toString(), - market_id: marketID.toString(), - }, - registrant: AccountAddress.from(registrant).toString(), - time: time.toString(), - }; -}; - -const generateLiquidityJSON = ({ - marketID, - marketNonce, - time = Date.now() * 1000, - liquidityProvided, -}: { - marketID: AnyNumberString; - marketNonce: AnyNumberString; - time?: AnyNumberString; - liquidityProvided: boolean; -}): JsonTypes["LiquidityEvent"] => ({ - base_amount: "1524336998", - liquidity_provided: liquidityProvided, - lp_coin_amount: "1212122424", - market_id: marketID.toString(), - market_nonce: marketNonce.toString(), - base_donation_claim_amount: "0", - quote_donation_claim_amount: "0", - provider: "0xbad225596d685895aa64d92f4f0e14d2f9d8075d3b8adf1e90ae6037f1fcbabe", - quote_amount: "1200000000", - time: time.toString(), -}); - -const generateStateJSON = ({ - marketID, - marketNonce, - trigger, - emojis, - time = Date.now() * 1000, - lastSwapNonce = marketNonce, - lastSwapTime = Date.now() * 1000, - isSell = Math.random() > 0.5, -}: { - marketID: AnyNumberString; - marketNonce: AnyNumberString; - trigger: Uint8; - emojis: EmojicoinSymbol; - time?: AnyNumberString; - lastSwapNonce?: AnyNumberString; - lastSwapTime?: AnyNumberString; - isSell?: boolean; -}): JsonTypes["StateEvent"] => { - const { marketAddress, symbolBytes } = getEmojicoinData(emojis); - return { - clamm_virtual_reserves: { - base: "49000000000000000", - quote: "400000000000", - }, - cpamm_real_reserves: { - base: "0", - quote: "0", - }, - cumulative_stats: { - base_volume: "0", - integrator_fees: "100000000", - n_chat_messages: "3", - n_swaps: "0", - pool_fees_base: "0", - pool_fees_quote: "0", - quote_volume: "0", - }, - instantaneous_stats: { - fully_diluted_value: "367346938775", - market_cap: "0", - total_quote_locked: "0", - total_value_locked: "0", - }, - last_swap: { - avg_execution_price_q64: "0", - base_volume: "0", - is_sell: isSell, - nonce: lastSwapNonce.toString(), - quote_volume: "0", - time: lastSwapTime.toString(), - }, - lp_coin_supply: "0", - market_metadata: { - emoji_bytes: symbolBytes, - market_address: marketAddress.toString(), - market_id: marketID.toString(), - }, - state_metadata: { - bump_time: time.toString(), - market_nonce: marketNonce.toString(), - trigger, - }, - }; -}; - -const generateSwapJSON = ({ - isSell, - marketID, - marketNonce, - inputAmount = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(), - time = Date.now() * 1000, - swapper = AccountAddress.from(Ed25519Account.generate().accountAddress), - resultsInStateTransition = false, - startsInBondingCurve = true, -}: { - isSell: boolean; - marketID: AnyNumberString; - marketNonce: AnyNumberString; - inputAmount?: AnyNumberString; - time?: AnyNumberString; - resultsInStateTransition?: boolean; - startsInBondingCurve?: boolean; - swapper?: AccountAddressInput; -}): JsonTypes["SwapEvent"] => { - return { - // The ratios here are based on a random swap in the contract generated on-chain. - avg_execution_price_q64: Big(153481808316888) - .div(17302124) - .mul(inputAmount.toString()) - .round() - .toString(), - // prettier-ignore - base_volume: Big(2079515851811) - .div(17302124) - .mul(inputAmount.toString()) - .round() - .toString(), - input_amount: inputAmount.toString(), - integrator: INTEGRATOR_ADDRESS, - integrator_fee: "0", - integrator_fee_rate_bps: INTEGRATOR_FEE_RATE_BPS, - is_sell: isSell, - market_id: marketID.toString(), - market_nonce: marketNonce.toString(), - net_proceeds: "2079515851811", - pool_fee: "0", - quote_volume: "17302124", - results_in_state_transition: resultsInStateTransition, - starts_in_bonding_curve: startsInBondingCurve, - swapper: AccountAddress.from(swapper).toString(), - time: time.toString(), - balance_as_fraction_of_circulating_supply_before_q64: "0", - balance_as_fraction_of_circulating_supply_after_q64: "0", - }; -}; - -const generateChatJSON = ({ - marketID, - time = Date.now() * 1000, - marketNonce, - emojis, - user = AccountAddress.from(Ed25519Account.generate().accountAddress), -}: { - marketID: AnyNumberString; - marketNonce: AnyNumberString; - user?: AccountAddressInput; - emojis: EmojicoinSymbol; - time?: AnyNumberString; -}): JsonTypes["ChatEvent"] => { - const { marketAddress, symbolBytes } = getEmojicoinData(emojis); - return { - balance_as_fraction_of_circulating_supply_q64: "0", - circulating_supply: "0", - emit_market_nonce: marketNonce.toString(), - emit_time: time.toString(), - market_metadata: { - emoji_bytes: symbolBytes, - market_address: marketAddress.toString(), - market_id: marketID.toString(), - }, - message: Array.from({ length: Math.random() * 10 }) - .map(() => getRandomSymbolEmoji().emoji) - .join(""), - user: AccountAddress.from(user).toString(), - user_emojicoin_balance: "0", - }; -}; diff --git a/src/typescript/frontend/src/components/pages/home/test-generate-event/use-generate-event.ts b/src/typescript/frontend/src/components/pages/home/test-generate-event/use-generate-event.ts deleted file mode 100644 index a95710ee3..000000000 --- a/src/typescript/frontend/src/components/pages/home/test-generate-event/use-generate-event.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useEventStore } from "context/event-store-context"; -import { generateRandomEvent, type RandomEventArgs } from "./event-generator"; - -/** - * Use this hook to generate a random event and store it in state on the client. - * We can use this to drive and debug animations for visual testing purposes. - */ -export const useGenerateEvent = (args: RandomEventArgs & { stateOnly?: boolean }) => { - const pushEvent = useEventStore((s) => s.pushEventFromClient); - - const { triggeringEvent, stateEvent } = generateRandomEvent({ ...args, emojis: undefined }); - - return () => { - pushEvent(triggeringEvent); - if (!args.stateOnly) { - pushEvent(stateEvent); - } - }; -}; diff --git a/src/typescript/frontend/src/components/pages/launch-emojicoin/ClientLaunchEmojicoinPage.tsx b/src/typescript/frontend/src/components/pages/launch-emojicoin/ClientLaunchEmojicoinPage.tsx index 0eb3c9fb6..1c8b1469c 100644 --- a/src/typescript/frontend/src/components/pages/launch-emojicoin/ClientLaunchEmojicoinPage.tsx +++ b/src/typescript/frontend/src/components/pages/launch-emojicoin/ClientLaunchEmojicoinPage.tsx @@ -6,8 +6,6 @@ import { startTransition, useCallback, useEffect, useRef, useState } from "react import { useSearchParams } from "next/navigation"; import { getEmojisInString } from "@sdk/emoji_data"; import { useAptos } from "context/wallet-context/AptosContextProvider"; -import { revalidateTagAction } from "lib/queries/cache-utils/revalidate"; -import { TAGS } from "lib/queries/cache-utils/tags"; import { ROUTES } from "router/routes"; import { useRouter } from "next/navigation"; import path from "path"; @@ -69,14 +67,6 @@ const ClientLaunchEmojicoinPage = () => { const handleLoading = useCallback(async () => { const marketRegistrationEvent = lastResponse.current; if (marketRegistrationEvent) { - // NOTE: revalidateTagAction may cause a flicker in the loading animation because the server - // rerenders and sends the RSC components again. To avoid this we'll probably need to finish the animation - // orchestration with a different animation or cover it up somehow, otherwise I'm not sure how to fix it in a - // clean way. - - // Revalidate the registered markets tag. - revalidateTagAction(TAGS.RegisteredMarkets); - startTransition(() => { // Parse the emojis from the market registration event. // We do this in case the emojis are somehow cleared before the response is received. This ensures that diff --git a/src/typescript/frontend/src/context/providers.tsx b/src/typescript/frontend/src/context/providers.tsx index fb39e3310..deda0bb23 100644 --- a/src/typescript/frontend/src/context/providers.tsx +++ b/src/typescript/frontend/src/context/providers.tsx @@ -69,9 +69,6 @@ const ThemedApp = ({ children }) => { [] ); - // Load the data from the emoji picker library and then extract the valid chat emojis from it. - // This is why it's not necessary to build/import a `chat-emojis.json` set, even though there is `symbol-emojis.json`. - // NOTE: We don't verify that the length of this set is equal to the number of valid chat emojis in the Move contract. useEffect(() => { data.then((d) => { init({ set: "native", data: d }); diff --git a/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx b/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx index bda443eb0..d52c4493e 100644 --- a/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx +++ b/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx @@ -31,13 +31,13 @@ import { import { useEventStore } from "context/event-store-context"; import { type TypeTagInput } from "@sdk/emojicoin_dot_fun"; import { DEFAULT_TOAST_CONFIG } from "const"; -import { sleep, UnitOfTime } from "@sdk/utils"; +import { sleep } from "@sdk/utils"; import { useWalletBalance } from "lib/hooks/queries/use-wallet-balance"; import { getAptBalanceFromChanges, getCoinBalanceFromChanges, } from "@sdk/utils/parse-changes-for-balances"; -import { getEventsAsProcessorModelsFromResponse } from "@sdk/mini-processor"; +import { getEventsAsProcessorModelsFromResponse } from "@sdk/indexer-v2/mini-processor"; import { emoji } from "utils"; import useIsUserGeoblocked from "@hooks/use-is-user-geoblocked"; import { getAptosClient } from "@sdk/utils/aptos-client"; @@ -222,9 +222,7 @@ export function AptosContextProvider({ children }: PropsWithChildren) { error: null, }); setLastResponseStoredAt(Date.now()); - sleep(DEFAULT_TOAST_CONFIG.autoClose, UnitOfTime.Milliseconds).then(() => { - setStatus("idle"); - }); + sleep(DEFAULT_TOAST_CONFIG.autoClose).then(() => setStatus("idle")); } } catch (e: unknown) { if (e instanceof AptosApiError) { diff --git a/src/typescript/frontend/src/lib/env.ts b/src/typescript/frontend/src/lib/env.ts index e1410dbfc..8cc4ea1b3 100644 --- a/src/typescript/frontend/src/lib/env.ts +++ b/src/typescript/frontend/src/lib/env.ts @@ -12,9 +12,8 @@ export type Links = { const network = process.env.NEXT_PUBLIC_APTOS_NETWORK; const APTOS_NETWORK = network as Network; -// NOTE: We must check it this way instead of with `NetworkToNetworkName[APTOS_NETWORK]` because -// otherwise the @aptos-labs/ts-sdk package is included in the middleware.ts function and the edge -// runtime won't build properly. +// NOTE: Don't use `NetworkToNetworkName[APTOS_NETWORK]` here or the @aptos-labs/ts-sdk package is +// included in the middleware.ts function in the frontend and the edge runtime won't build properly. if (!["local", "devnet", "testnet", "mainnet", "custom"].includes(APTOS_NETWORK)) { throw new Error(`Invalid network: ${network}`); } diff --git a/src/typescript/frontend/src/lib/hooks/queries/use-grace-period.ts b/src/typescript/frontend/src/lib/hooks/queries/use-grace-period.ts index 344fb4dd8..f71021368 100644 --- a/src/typescript/frontend/src/lib/hooks/queries/use-grace-period.ts +++ b/src/typescript/frontend/src/lib/hooks/queries/use-grace-period.ts @@ -6,9 +6,7 @@ import { useAptos } from "context/wallet-context/AptosContextProvider"; import { useEffect, useMemo, useState } from "react"; // ------------------------------------------------------------------------------------------------- -// // Utilities for calculating the number of seconds left. -// // ------------------------------------------------------------------------------------------------- const nowSeconds = () => Math.floor(new Date().getTime() / 1000); @@ -26,9 +24,7 @@ const formattedTimeLeft = (secondsRemaining: number) => { }; // ------------------------------------------------------------------------------------------------- -// // Hook to force the component to re-render on an interval basis. -// // ------------------------------------------------------------------------------------------------- const useDisplayTimeLeft = (marketRegistrationTime?: bigint) => { const [timeLeft, setTimeLeft] = useState>(); @@ -51,9 +47,7 @@ const useDisplayTimeLeft = (marketRegistrationTime?: bigint) => { }; // ------------------------------------------------------------------------------------------------- -// // `useQuery` hook that fetches the grace period status on an interval basis. -// // ------------------------------------------------------------------------------------------------- const useGracePeriod = (symbol: string, hasSwaps: boolean) => { const { aptos } = useAptos(); @@ -80,9 +74,7 @@ const useGracePeriod = (symbol: string, hasSwaps: boolean) => { }; // ------------------------------------------------------------------------------------------------- -// // The actual hook to be used in a component to display the amount of seconds left. -// // ------------------------------------------------------------------------------------------------- export const useCanTradeMarket = (symbol: string) => { const { account } = useAptos(); diff --git a/src/typescript/frontend/src/lib/mqtt.ts b/src/typescript/frontend/src/lib/mqtt.ts deleted file mode 100644 index 9b880cfee..000000000 --- a/src/typescript/frontend/src/lib/mqtt.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { STRUCT_STRINGS } from "../../../sdk/src/utils/type-tags"; -import { type AnyNumberString } from "@sdk-types"; -export class TopicBuilder { - /** - * Build an MQTT topic. - * - * Null values will be replaced by a wildcard. - * - * Examples: - * - * ```ts - * // Get all chat events on market 3 - * let a = buildTopic(STRUCT_STRINGS.ChatEvent, 3) - * assertEq(a, "0x…::emojicoin_dot_fun::Chat/3") - * // Get all events on market 2 - * let b = buildTopic(null, 2, '#') - * assertEq(a, "+/2/#") - * // Get periodic state events on market 4 with period 60000000 - * let c = buildTopic(STRUCT_STRINGS.MarketRegistrationEvent, 4, '60000000') - * assertEq(c, "0x…::emojicoin_dot_fun::MarketRegistration/4/60000000") - * ``` - * - * Note: some events will have a 3-level topic (e.g.: periodic events which - * have EVENT_TYPE/MARKET_ID/PERIOD), these will not be matched by "+/MARKET_ID", - * but will be by "+/MARKET_ID/+" or "+/MARKET_ID/#". Others have 2-level topic - * (e.g.: market registrations which have EVENT_TYPE/MARKET_ID), these will be - * matched by "+/MARKET_ID" and "+/MARKET_ID/#" but not by "+/MARKET_ID/+". - * **Calling this function with only two arguments, like buildTopic(…, …) will - * thus only subscribe to events with a 2-level topic, and not all topics.** - */ - public static build( - eventType: string | null, - possibleMarketID: AnyNumberString | null, - ...args: string[] - ): string { - const marketID = possibleMarketID ? possibleMarketID.toString() : null; - let topic = `${eventType !== null ? eventType : "+"}/${marketID !== null ? marketID : "+"}`; - for (const arg of args) { - topic = `${topic}/${arg}`; - } - return topic; - } - - /** - * Build an MQTT topic for PeriodicState events. - * - * Null values will be replaced by a wildcard. - */ - public static periodicState(marketID: AnyNumberString | null, period: number | null) { - return TopicBuilder.build( - STRUCT_STRINGS.PeriodicStateEvent, - marketID, - period !== null ? `${period}` : "+" - ); - } - - /** - * Build an MQTT topic for Swap events. - * - * Null values will be replaced by a wildcard. - */ - public static swapTopic( - marketID: AnyNumberString | null, - resultsInStateTransition: boolean | null - ) { - return TopicBuilder.build( - STRUCT_STRINGS.SwapEvent, - marketID, - resultsInStateTransition !== null ? `${resultsInStateTransition}` : "+" - ); - } - - /** - * Build an MQTT topic for MarketRegistration events. - * - * Null values will be replaced by a wildcard. - */ - public static marketRegistrationTopic(marketID: AnyNumberString | null) { - return TopicBuilder.build(STRUCT_STRINGS.MarketRegistrationEvent, marketID); - } - - /** - * Build an MQTT topic for Chat events. - * - * Null values will be replaced by a wildcard. - */ - public static chatTopic(marketID: AnyNumberString | null) { - return TopicBuilder.build(STRUCT_STRINGS.ChatEvent, marketID); - } - - /** - * Build an MQTT topic for State events. - * - * Null values will be replaced by a wildcard. - */ - public static stateTopic(marketID: AnyNumberString | null) { - return TopicBuilder.build(STRUCT_STRINGS.StateEvent, marketID); - } - - /** - * Build an MQTT topic for Liquidity events. - * - * Null values will be replaced by a wildcard. - */ - public static liquidityTopic(marketID: AnyNumberString | null) { - return TopicBuilder.build(STRUCT_STRINGS.LiquidityEvent, marketID); - } - - /** - * Build an MQTT topic for Global State events. - */ - public static globalStateTopic() { - return TopicBuilder.build(STRUCT_STRINGS.GlobalStateEvent, null); - } -} diff --git a/src/typescript/frontend/src/lib/queries/cache-utils/cached.ts b/src/typescript/frontend/src/lib/queries/cache-utils/cached.ts deleted file mode 100644 index 9e8e817eb..000000000 --- a/src/typescript/frontend/src/lib/queries/cache-utils/cached.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { unstable_cache } from "next/cache"; - -export const cached = unstable_cache; -export default cached; diff --git a/src/typescript/frontend/src/lib/queries/cache-utils/revalidate.ts b/src/typescript/frontend/src/lib/queries/cache-utils/revalidate.ts deleted file mode 100644 index d5b241e1b..000000000 --- a/src/typescript/frontend/src/lib/queries/cache-utils/revalidate.ts +++ /dev/null @@ -1,8 +0,0 @@ -"use server"; - -import { revalidateTag } from "next/cache"; -import { type TAGS } from "./tags"; - -export const revalidateTagAction = async (tag: TAGS) => { - revalidateTag(tag); -}; diff --git a/src/typescript/frontend/src/lib/queries/cache-utils/tags.ts b/src/typescript/frontend/src/lib/queries/cache-utils/tags.ts deleted file mode 100644 index 576b2a2ac..000000000 --- a/src/typescript/frontend/src/lib/queries/cache-utils/tags.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Revalidation tags. - */ -export enum TAGS { - RegisteredMarkets = "registered-markets", - SortedMarkets = "sorted-markets", - FeaturedMarket = "featured-market", -} diff --git a/src/typescript/frontend/src/lib/queries/graphql/README.md b/src/typescript/frontend/src/lib/queries/graphql/README.md deleted file mode 100644 index 5808e1c6f..000000000 --- a/src/typescript/frontend/src/lib/queries/graphql/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Fallback graphql queries - -In case our indexer isn't working or is down, we provide fallback queries -using the GraphQL endpoint. - -This endpoint is automatically resolved based on the network type, relying on -the Aptos Labs hosted GraphQL endpoints or the local endpoint if running on -localhost. diff --git a/src/typescript/frontend/src/lib/queries/initial/cache-helper.ts b/src/typescript/frontend/src/lib/queries/initial/cache-helper.ts deleted file mode 100644 index a99e8f888..000000000 --- a/src/typescript/frontend/src/lib/queries/initial/cache-helper.ts +++ /dev/null @@ -1,27 +0,0 @@ -"use server"; - -import { UnitOfTime, getTime } from "@sdk/utils/misc"; -import { cache } from "react"; - -/** - * A helper function to either cache data or fetch it from a static source, because the production - * endpoint is not set up yet. - */ -export const fetchInitialWithFallback = async ({ - functionArgs, - queryFunction, -}: { - functionArgs: T2; - queryFunction: (args: T2) => Promise; -}) => { - const currentMinute = Math.floor(getTime(UnitOfTime.Minutes)); - const cachedFunction = cache( - async (args: { time: number; functionArgs: T2 }) => await queryFunction(args.functionArgs) - ); - return await cachedFunction({ - time: currentMinute, - functionArgs, - }); -}; - -export default fetchInitialWithFallback; diff --git a/src/typescript/frontend/src/lib/queries/sorting/types.ts b/src/typescript/frontend/src/lib/queries/sorting/types.ts index 29c2d822e..bec969da1 100644 --- a/src/typescript/frontend/src/lib/queries/sorting/types.ts +++ b/src/typescript/frontend/src/lib/queries/sorting/types.ts @@ -1,6 +1,4 @@ import { DEFAULT_SORT_BY, SortMarketsBy } from "@sdk/indexer-v2/types/common"; -import { type ORDER_BY } from "@sdk/queries/const"; -import { type ValueOf } from "@sdk/utils/utility-types"; export type MarketDataSortByHomePage = | SortMarketsBy.MarketCap @@ -8,23 +6,6 @@ export type MarketDataSortByHomePage = | SortMarketsBy.DailyVolume | SortMarketsBy.AllTimeVolume; -export type GetSortedMarketDataQueryArgs = { - limit?: number; - page: number; - orderBy: ValueOf; - sortBy: SortMarketsBy | SortByPostgrestQueryParams; - inBondingCurve?: boolean; - exactCount?: boolean; - searchBytes?: string; -}; - -export type GetMySortedMarketDataQueryArgs = Omit< - GetSortedMarketDataQueryArgs, - "exactCount" | "inBondingCurve" -> & { - account?: string; -}; - export const sortByFilters = { [SortMarketsBy.MarketCap]: { forPageQueryParams: "market_cap", @@ -73,18 +54,6 @@ export type SortByPostgrestQueryParams = | "one_day_tvl_per_lp_coin_growth_q64" | "cpamm_real_reserves_quote"; -export const toPageQueryParam = ( - sortBy: SortByPostgrestQueryParams | SortMarketsBy | SortByPageQueryParams -): SortByPageQueryParams => { - return sortByFilters[sortBy].forPageQueryParams ?? sortBy; -}; - -export const toPostgrestQueryParam = ( - sortBy: SortByPageQueryParams | SortMarketsBy | SortByPostgrestQueryParams -): SortByPostgrestQueryParams => { - return sortByFilters[sortBy]?.forPostgrestQuery ?? sortBy; -}; - export const toMarketDataSortBy = ( sortBy?: SortByPostgrestQueryParams | SortMarketsBy | SortByPageQueryParams ): SortMarketsBy => { diff --git a/src/typescript/frontend/src/lib/store/market-data.ts b/src/typescript/frontend/src/lib/store/market-data.ts deleted file mode 100644 index 1be7975a2..000000000 --- a/src/typescript/frontend/src/lib/store/market-data.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { createStore } from "zustand/vanilla"; -import { immer } from "zustand/middleware/immer"; - -export type MarketDataState = { - numMarkets: number; -}; - -export type MarketDataActions = { - setNumMarkets: (numMarkets: number) => void; -}; - -export type MarketDataStore = MarketDataState & MarketDataActions; - -export const createMarketDataStore = (initial?: MarketDataStore) => { - return createStore()( - immer((set) => ({ - numMarkets: initial?.numMarkets ?? 0, - setNumMarkets: (numMarkets: number) => - set((state) => { - state.numMarkets = numMarkets; - }), - })) - ); -}; diff --git a/src/typescript/frontend/src/lib/utils/prettify-emoji-name.ts b/src/typescript/frontend/src/lib/utils/prettify-emoji-name.ts deleted file mode 100644 index 2f0822126..000000000 --- a/src/typescript/frontend/src/lib/utils/prettify-emoji-name.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const prettifyEmojiName = (name: string) => { - return name - .replace(/: (light|medium-light|medium|medium-dark|dark|) skin tone/g, "") - .replace(/, beard/g, ": beard") - .replace(/flag: /g, ""); -}; diff --git a/src/typescript/frontend/tests/e2e/global.setup.ts b/src/typescript/frontend/tests/e2e/global.setup.ts index d9ef2c102..5674c8fab 100644 --- a/src/typescript/frontend/tests/e2e/global.setup.ts +++ b/src/typescript/frontend/tests/e2e/global.setup.ts @@ -1,5 +1,5 @@ import { test as setup } from "@playwright/test"; -import { DockerTestHarness } from "../../../sdk/src/utils/test/docker/docker-test-harness"; +import { DockerTestHarness } from "../../../sdk/tests/utils/docker/docker-test-harness"; setup("setup the Docker containers", async ({}) => { // Five minute timeout. diff --git a/src/typescript/frontend/tests/e2e/global.teardown.ts b/src/typescript/frontend/tests/e2e/global.teardown.ts index f77c20353..46e67dad3 100644 --- a/src/typescript/frontend/tests/e2e/global.teardown.ts +++ b/src/typescript/frontend/tests/e2e/global.teardown.ts @@ -1,5 +1,5 @@ /* eslint-disable no-underscore-dangle */ -import { DockerTestHarness } from "../../../sdk/src/utils/test/docker/docker-test-harness"; +import { DockerTestHarness } from "../../../sdk/tests/utils/docker/docker-test-harness"; export default async function postTest() { await DockerTestHarness.stop({ frontend: true }); diff --git a/src/typescript/frontend/tests/e2e/market-order.spec.ts b/src/typescript/frontend/tests/e2e/market-order.spec.ts index 2bdf913a3..aa56df24d 100644 --- a/src/typescript/frontend/tests/e2e/market-order.spec.ts +++ b/src/typescript/frontend/tests/e2e/market-order.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from "@playwright/test"; import { EmojicoinClient } from "../../../sdk/src/client/emojicoin-client"; -import { getFundedAccount } from "../../../sdk/src/utils/test/test-accounts"; +import { getFundedAccount } from "../../../sdk/tests/utils/test-accounts"; import { ONE_APT_BIGINT, sleep, SYMBOL_EMOJI_DATA } from "../../../sdk/src"; test("check sorting order", async ({ page }) => { diff --git a/src/typescript/frontend/tests/e2e/search.spec.ts b/src/typescript/frontend/tests/e2e/search.spec.ts index 1bf140705..2c396ddfe 100644 --- a/src/typescript/frontend/tests/e2e/search.spec.ts +++ b/src/typescript/frontend/tests/e2e/search.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from "@playwright/test"; import { EmojicoinClient } from "../../../sdk/src/client/emojicoin-client"; -import { getFundedAccount } from "../../../sdk/src/utils/test/test-accounts"; +import { getFundedAccount } from "../../../sdk/tests/utils/test-accounts"; import { SYMBOL_EMOJI_DATA } from "../../../sdk/src"; test("check search results", async ({ page }) => { diff --git a/src/typescript/pnpm-lock.yaml b/src/typescript/pnpm-lock.yaml index ed468d443..71910c475 100644 --- a/src/typescript/pnpm-lock.yaml +++ b/src/typescript/pnpm-lock.yaml @@ -298,16 +298,19 @@ importers: version: 8.57.1 eslint-config-airbnb-base: specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint@8.57.1) + version: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1))(eslint@8.57.1) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint@8.57.1) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1))(eslint@8.57.1) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.1) + eslint-import-resolver-typescript: + specifier: ^3.7.0 + version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.2.1 version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3) @@ -2558,6 +2561,19 @@ packages: eslint-plugin-import-x: optional: true + eslint-import-resolver-typescript@3.7.0: + resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + eslint-module-utils@2.12.0: resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} @@ -4122,6 +4138,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stack-generator@2.0.10: resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} @@ -7142,21 +7161,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.1 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint@8.57.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - eslint-plugin-import @@ -7211,6 +7230,22 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.7 + enhanced-resolve: 5.17.1 + eslint: 8.57.1 + fast-glob: 3.3.2 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 + is-glob: 4.0.3 + stable-hash: 0.0.4 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 @@ -7222,6 +7257,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 @@ -7251,6 +7297,35 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1): dependencies: aria-query: 5.1.3 @@ -8996,6 +9071,8 @@ snapshots: sprintf-js@1.0.3: {} + stable-hash@0.0.4: {} + stack-generator@2.0.10: dependencies: stackframe: 1.3.4 diff --git a/src/typescript/sdk/.eslintrc.js b/src/typescript/sdk/.eslintrc.js index 9e08c2931..1760e7f2a 100644 --- a/src/typescript/sdk/.eslintrc.js +++ b/src/typescript/sdk/.eslintrc.js @@ -5,7 +5,7 @@ module.exports = { jest: true, node: true, }, - ignorePatterns: ["dist/**", "node_modules/**", ".eslintrc.js"], + ignorePatterns: ["dist/**", "node_modules/**", ".eslintrc.js", "jest.config.js"], extends: [ "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", @@ -74,9 +74,15 @@ module.exports = { ], }, settings: { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"], + }, "import/resolver": { + typescript: { + project: ["tsconfig.json", "tests/tsconfig.json"], + }, node: { - extensions: [".js", ".jsx", ".ts", ".tsx"], + project: ["tsconfig.json", "tests/tsconfig.json"], }, }, }, diff --git a/src/typescript/sdk/jest.config.js b/src/typescript/sdk/jest.config.js index e216581d3..2d8c93f02 100644 --- a/src/typescript/sdk/jest.config.js +++ b/src/typescript/sdk/jest.config.js @@ -10,7 +10,7 @@ module.exports = { customExportConditions: ["react-server", "node", "node-addons"], }, coveragePathIgnorePatterns: [], - testPathIgnorePatterns: ["dist/*"], + testPathIgnorePatterns: ["dist/*", "tests/utils/*"], collectCoverage: false, coverageThreshold: { global: { diff --git a/src/typescript/sdk/package.json b/src/typescript/sdk/package.json index 3aeda850e..a3afa11b0 100644 --- a/src/typescript/sdk/package.json +++ b/src/typescript/sdk/package.json @@ -27,6 +27,7 @@ "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unused-imports": "^3.2.0", @@ -43,20 +44,15 @@ "node": ">=v20.12.2" }, "exports": { - ".": { - "source": "./src/index.ts", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } + ".": "./src/*" }, "files": [ - "dist", - "src" + "dist" ], "homepage": "https://github.com/econia-labs/emojicoin-dot-fun#readme", "license": "Apache-2.0", "main": "dist/index.js", - "module": "dist/index.mjs", + "module": "dist/esm/index.mjs", "name": "@econia-labs/emojicoin-sdk", "packageManager": "pnpm@9.4.0+sha512.f549b8a52c9d2b8536762f99c0722205efc5af913e77835dbccc3b0b0b2ca9e7dc8022b78062c17291c48e88749c70ce88eb5a74f1fa8c4bf5e18bb46c8bd83a", "repository": "github:econia-labs/emojicoin-dot-fun", @@ -65,6 +61,7 @@ "build": "tsc", "build:debug": "BUILD_DEBUG=true pnpm run build", "build:no-checks": "tsc --skipLibCheck", + "build:publish": "tsc -p tsconfig.prod.json", "check": "tsc -p tests/tsconfig.json --noEmit", "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", "e2e:testnet": "pnpm load-test-env -v NO_TEST_SETUP=true -- pnpm jest tests/e2e/queries/testnet", @@ -75,6 +72,7 @@ "pre-commit": "pnpm run pre-commit:install && pnpm run pre-commit:run", "pre-commit:install": "pre-commit install -c ../../../cfg/pre-commit-config.yaml", "pre-commit:run": "pre-commit run --all-files -c ../../../cfg/pre-commit-config.yaml", + "prepublishOnly": "pnpm clean && pnpm i && pnpm check && pnpm build:publish", "test": "pnpm run test:sdk:parallel && pnpm run test:sdk:sequential && pnpm run test:unit", "test:e2e": "pnpm run test:sdk:parallel && pnpm run test:sdk:sequential", "test:sdk:parallel": "pnpm jest --testPathIgnorePatterns=tests/e2e/broker", @@ -82,5 +80,5 @@ "test:unit": "pnpm jest tests/unit" }, "typings": "dist/index.d.ts", - "version": "0.1.0" + "version": "0.2.0-rc.3" } diff --git a/src/typescript/sdk/src/client/emojicoin-client.ts b/src/typescript/sdk/src/client/emojicoin-client.ts index b64335992..e0f768447 100644 --- a/src/typescript/sdk/src/client/emojicoin-client.ts +++ b/src/typescript/sdk/src/client/emojicoin-client.ts @@ -21,7 +21,7 @@ import { } from "../emojicoin_dot_fun/emojicoin-dot-fun"; import { type Events } from "../emojicoin_dot_fun/events"; import { getEmojicoinMarketAddressAndTypeTags } from "../markets"; -import { type EventsModels, getEventsAsProcessorModelsFromResponse } from "../mini-processor"; +import { type EventsModels, getEventsAsProcessorModelsFromResponse } from "../indexer-v2"; import { APTOS_CONFIG, getAptosClient } from "../utils/aptos-client"; import { toChatMessageEntryFunctionArgs } from "../emoji_data"; import customExpect from "./expect"; @@ -78,6 +78,9 @@ const waitForEventProcessed = async ( * * The `utils` functions provides several commonly used utility functions. * + * @param alwaysWaitForIndexer whether or not each transaction should wait for the indexer to + * process the event before returning. + * * @example * ```typescript * const emojis: MarketSymbolEmojis = ["🌊"]; diff --git a/src/typescript/sdk/src/client/index.ts b/src/typescript/sdk/src/client/index.ts new file mode 100644 index 000000000..962991f6c --- /dev/null +++ b/src/typescript/sdk/src/client/index.ts @@ -0,0 +1 @@ +export * from "./emojicoin-client"; diff --git a/src/typescript/sdk/src/emoji_data/README.md b/src/typescript/sdk/src/emoji_data/README.md index 10c06a101..35fe448d5 100644 --- a/src/typescript/sdk/src/emoji_data/README.md +++ b/src/typescript/sdk/src/emoji_data/README.md @@ -1,6 +1,6 @@ -# Reproducing the TypeScript `symbol-emojis.json` data +# Reproducing the TypeScript `*-emojis.ts` data -To reproduce the data in the TypeScript JSON data file `symbol-emojis.json` +To reproduce the data in the TypeScript data files `*-emojis.ts` `cd` to the root of the repo then run the following commands. ```shell @@ -9,7 +9,25 @@ poetry install poetry run python -m scripts.generate_code ``` -Note that the `symbol-names.json` and `chat-names.json` are not duplicated data; -they're merely used for type resolution in TypeScript, since TypeScript can't -resolve to actual values when resolving to the value field in an imported JSON -`[key]: value` type. +Then alter the file such that it's prepended with a `const` declaration: + +```json +{ + "🥇": "1st place medal", + "🥈": "2nd place medal", + ... +} +``` + +Becomes: + +```typescript +const SYMBOL_EMOJIS = { + "🥇": "1st place medal", + "🥈": "2nd place medal", + ... +} as const; +``` + +Note the `as const;` at the end of the object. It _must_ be there for the types +to be resolved correctly. diff --git a/src/typescript/sdk/src/emoji_data/chat-emojis.json b/src/typescript/sdk/src/emoji_data/chat-emojis.json deleted file mode 100644 index c6eee6633..000000000 --- a/src/typescript/sdk/src/emoji_data/chat-emojis.json +++ /dev/null @@ -1,1213 +0,0 @@ -{ - "\u26d3\ufe0f\u200d\ud83d\udca5": "broken chain", - "\u26f9\ufe0f\u200d\u2640\ufe0f": "woman bouncing ball", - "\u26f9\ufe0f\u200d\u2642\ufe0f": "man bouncing ball", - "\u26f9\ud83c\udffb\u200d\u2640\ufe0f": "woman bouncing ball: light skin tone", - "\u26f9\ud83c\udffb\u200d\u2642\ufe0f": "man bouncing ball: light skin tone", - "\u26f9\ud83c\udffc\u200d\u2640\ufe0f": "woman bouncing ball: medium-light skin tone", - "\u26f9\ud83c\udffc\u200d\u2642\ufe0f": "man bouncing ball: medium-light skin tone", - "\u26f9\ud83c\udffd\u200d\u2640\ufe0f": "woman bouncing ball: medium skin tone", - "\u26f9\ud83c\udffd\u200d\u2642\ufe0f": "man bouncing ball: medium skin tone", - "\u26f9\ud83c\udffe\u200d\u2640\ufe0f": "woman bouncing ball: medium-dark skin tone", - "\u26f9\ud83c\udffe\u200d\u2642\ufe0f": "man bouncing ball: medium-dark skin tone", - "\u26f9\ud83c\udfff\u200d\u2640\ufe0f": "woman bouncing ball: dark skin tone", - "\u26f9\ud83c\udfff\u200d\u2642\ufe0f": "man bouncing ball: dark skin tone", - "\u2764\ufe0f\u200d\ud83d\udd25": "heart on fire", - "\u2764\ufe0f\u200d\ud83e\ude79": "mending heart", - "\ud83c\udf44\u200d\ud83d\udfeb": "brown mushroom", - "\ud83c\udf4b\u200d\ud83d\udfe9": "lime", - "\ud83c\udfc3\u200d\u2640\ufe0f": "woman running", - "\ud83c\udfc3\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman running facing right", - "\ud83c\udfc3\u200d\u2642\ufe0f": "man running", - "\ud83c\udfc3\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man running facing right", - "\ud83c\udfc3\u200d\u27a1\ufe0f": "person running facing right", - "\ud83c\udfc3\ud83c\udffb\u200d\u2640\ufe0f": "woman running: light skin tone", - "\ud83c\udfc3\ud83c\udffb\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman running facing right: light skin tone", - "\ud83c\udfc3\ud83c\udffb\u200d\u2642\ufe0f": "man running: light skin tone", - "\ud83c\udfc3\ud83c\udffb\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man running facing right: light skin tone", - "\ud83c\udfc3\ud83c\udffb\u200d\u27a1\ufe0f": "person running facing right: light skin tone", - "\ud83c\udfc3\ud83c\udffc\u200d\u2640\ufe0f": "woman running: medium-light skin tone", - "\ud83c\udfc3\ud83c\udffc\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman running facing right: medium-light skin tone", - "\ud83c\udfc3\ud83c\udffc\u200d\u2642\ufe0f": "man running: medium-light skin tone", - "\ud83c\udfc3\ud83c\udffc\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man running facing right: medium-light skin tone", - "\ud83c\udfc3\ud83c\udffc\u200d\u27a1\ufe0f": "person running facing right: medium-light skin tone", - "\ud83c\udfc3\ud83c\udffd\u200d\u2640\ufe0f": "woman running: medium skin tone", - "\ud83c\udfc3\ud83c\udffd\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman running facing right: medium skin tone", - "\ud83c\udfc3\ud83c\udffd\u200d\u2642\ufe0f": "man running: medium skin tone", - "\ud83c\udfc3\ud83c\udffd\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man running facing right: medium skin tone", - "\ud83c\udfc3\ud83c\udffd\u200d\u27a1\ufe0f": "person running facing right: medium skin tone", - "\ud83c\udfc3\ud83c\udffe\u200d\u2640\ufe0f": "woman running: medium-dark skin tone", - "\ud83c\udfc3\ud83c\udffe\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman running facing right: medium-dark skin tone", - "\ud83c\udfc3\ud83c\udffe\u200d\u2642\ufe0f": "man running: medium-dark skin tone", - "\ud83c\udfc3\ud83c\udffe\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man running facing right: medium-dark skin tone", - "\ud83c\udfc3\ud83c\udffe\u200d\u27a1\ufe0f": "person running facing right: medium-dark skin tone", - "\ud83c\udfc3\ud83c\udfff\u200d\u2640\ufe0f": "woman running: dark skin tone", - "\ud83c\udfc3\ud83c\udfff\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman running facing right: dark skin tone", - "\ud83c\udfc3\ud83c\udfff\u200d\u2642\ufe0f": "man running: dark skin tone", - "\ud83c\udfc3\ud83c\udfff\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man running facing right: dark skin tone", - "\ud83c\udfc3\ud83c\udfff\u200d\u27a1\ufe0f": "person running facing right: dark skin tone", - "\ud83c\udfc4\u200d\u2640\ufe0f": "woman surfing", - "\ud83c\udfc4\u200d\u2642\ufe0f": "man surfing", - "\ud83c\udfc4\ud83c\udffb\u200d\u2640\ufe0f": "woman surfing: light skin tone", - "\ud83c\udfc4\ud83c\udffb\u200d\u2642\ufe0f": "man surfing: light skin tone", - "\ud83c\udfc4\ud83c\udffc\u200d\u2640\ufe0f": "woman surfing: medium-light skin tone", - "\ud83c\udfc4\ud83c\udffc\u200d\u2642\ufe0f": "man surfing: medium-light skin tone", - "\ud83c\udfc4\ud83c\udffd\u200d\u2640\ufe0f": "woman surfing: medium skin tone", - "\ud83c\udfc4\ud83c\udffd\u200d\u2642\ufe0f": "man surfing: medium skin tone", - "\ud83c\udfc4\ud83c\udffe\u200d\u2640\ufe0f": "woman surfing: medium-dark skin tone", - "\ud83c\udfc4\ud83c\udffe\u200d\u2642\ufe0f": "man surfing: medium-dark skin tone", - "\ud83c\udfc4\ud83c\udfff\u200d\u2640\ufe0f": "woman surfing: dark skin tone", - "\ud83c\udfc4\ud83c\udfff\u200d\u2642\ufe0f": "man surfing: dark skin tone", - "\ud83c\udfca\u200d\u2640\ufe0f": "woman swimming", - "\ud83c\udfca\u200d\u2642\ufe0f": "man swimming", - "\ud83c\udfca\ud83c\udffb\u200d\u2640\ufe0f": "woman swimming: light skin tone", - "\ud83c\udfca\ud83c\udffb\u200d\u2642\ufe0f": "man swimming: light skin tone", - "\ud83c\udfca\ud83c\udffc\u200d\u2640\ufe0f": "woman swimming: medium-light skin tone", - "\ud83c\udfca\ud83c\udffc\u200d\u2642\ufe0f": "man swimming: medium-light skin tone", - "\ud83c\udfca\ud83c\udffd\u200d\u2640\ufe0f": "woman swimming: medium skin tone", - "\ud83c\udfca\ud83c\udffd\u200d\u2642\ufe0f": "man swimming: medium skin tone", - "\ud83c\udfca\ud83c\udffe\u200d\u2640\ufe0f": "woman swimming: medium-dark skin tone", - "\ud83c\udfca\ud83c\udffe\u200d\u2642\ufe0f": "man swimming: medium-dark skin tone", - "\ud83c\udfca\ud83c\udfff\u200d\u2640\ufe0f": "woman swimming: dark skin tone", - "\ud83c\udfca\ud83c\udfff\u200d\u2642\ufe0f": "man swimming: dark skin tone", - "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f": "woman lifting weights", - "\ud83c\udfcb\ufe0f\u200d\u2642\ufe0f": "man lifting weights", - "\ud83c\udfcb\ud83c\udffb\u200d\u2640\ufe0f": "woman lifting weights: light skin tone", - "\ud83c\udfcb\ud83c\udffb\u200d\u2642\ufe0f": "man lifting weights: light skin tone", - "\ud83c\udfcb\ud83c\udffc\u200d\u2640\ufe0f": "woman lifting weights: medium-light skin tone", - "\ud83c\udfcb\ud83c\udffc\u200d\u2642\ufe0f": "man lifting weights: medium-light skin tone", - "\ud83c\udfcb\ud83c\udffd\u200d\u2640\ufe0f": "woman lifting weights: medium skin tone", - "\ud83c\udfcb\ud83c\udffd\u200d\u2642\ufe0f": "man lifting weights: medium skin tone", - "\ud83c\udfcb\ud83c\udffe\u200d\u2640\ufe0f": "woman lifting weights: medium-dark skin tone", - "\ud83c\udfcb\ud83c\udffe\u200d\u2642\ufe0f": "man lifting weights: medium-dark skin tone", - "\ud83c\udfcb\ud83c\udfff\u200d\u2640\ufe0f": "woman lifting weights: dark skin tone", - "\ud83c\udfcb\ud83c\udfff\u200d\u2642\ufe0f": "man lifting weights: dark skin tone", - "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f": "woman golfing", - "\ud83c\udfcc\ufe0f\u200d\u2642\ufe0f": "man golfing", - "\ud83c\udfcc\ud83c\udffb\u200d\u2640\ufe0f": "woman golfing: light skin tone", - "\ud83c\udfcc\ud83c\udffb\u200d\u2642\ufe0f": "man golfing: light skin tone", - "\ud83c\udfcc\ud83c\udffc\u200d\u2640\ufe0f": "woman golfing: medium-light skin tone", - "\ud83c\udfcc\ud83c\udffc\u200d\u2642\ufe0f": "man golfing: medium-light skin tone", - "\ud83c\udfcc\ud83c\udffd\u200d\u2640\ufe0f": "woman golfing: medium skin tone", - "\ud83c\udfcc\ud83c\udffd\u200d\u2642\ufe0f": "man golfing: medium skin tone", - "\ud83c\udfcc\ud83c\udffe\u200d\u2640\ufe0f": "woman golfing: medium-dark skin tone", - "\ud83c\udfcc\ud83c\udffe\u200d\u2642\ufe0f": "man golfing: medium-dark skin tone", - "\ud83c\udfcc\ud83c\udfff\u200d\u2640\ufe0f": "woman golfing: dark skin tone", - "\ud83c\udfcc\ud83c\udfff\u200d\u2642\ufe0f": "man golfing: dark skin tone", - "\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f": "transgender flag", - "\ud83c\udff3\ufe0f\u200d\ud83c\udf08": "rainbow flag", - "\ud83c\udff4\u200d\u2620\ufe0f": "pirate flag", - "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f": "flag: England", - "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f": "flag: Scotland", - "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f": "flag: Wales", - "\ud83d\udc15\u200d\ud83e\uddba": "service dog", - "\ud83d\udc26\u200d\ud83d\udd25": "phoenix", - "\ud83d\udc3b\u200d\u2744\ufe0f": "polar bear", - "\ud83d\udc41\ufe0f\u200d\ud83d\udde8\ufe0f": "eye in speech bubble", - "\ud83d\udc68\u200d\u2695\ufe0f": "man health worker", - "\ud83d\udc68\u200d\u2696\ufe0f": "man judge", - "\ud83d\udc68\u200d\u2708\ufe0f": "man pilot", - "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68": "couple with heart: man, man", - "\ud83d\udc68\u200d\ud83c\udf3e": "man farmer", - "\ud83d\udc68\u200d\ud83c\udf73": "man cook", - "\ud83d\udc68\u200d\ud83c\udf7c": "man feeding baby", - "\ud83d\udc68\u200d\ud83c\udf93": "man student", - "\ud83d\udc68\u200d\ud83c\udfa4": "man singer", - "\ud83d\udc68\u200d\ud83c\udfa8": "man artist", - "\ud83d\udc68\u200d\ud83c\udfeb": "man teacher", - "\ud83d\udc68\u200d\ud83c\udfed": "man factory worker", - "\ud83d\udc68\u200d\ud83d\udc66": "family: man, boy", - "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66": "family: man, boy, boy", - "\ud83d\udc68\u200d\ud83d\udc67": "family: man, girl", - "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66": "family: man, girl, boy", - "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67": "family: man, girl, girl", - "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66": "family: man, man, boy", - "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66": "family: man, man, boy, boy", - "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67": "family: man, man, girl", - "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66": "family: man, man, girl, boy", - "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67": "family: man, man, girl, girl", - "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66": "family: man, woman, boy", - "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66": "family: man, woman, boy, boy", - "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67": "family: man, woman, girl", - "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66": "family: man, woman, girl, boy", - "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67": "family: man, woman, girl, girl", - "\ud83d\udc68\u200d\ud83d\udcbb": "man technologist", - "\ud83d\udc68\u200d\ud83d\udcbc": "man office worker", - "\ud83d\udc68\u200d\ud83d\udd27": "man mechanic", - "\ud83d\udc68\u200d\ud83d\udd2c": "man scientist", - "\ud83d\udc68\u200d\ud83d\ude80": "man astronaut", - "\ud83d\udc68\u200d\ud83d\ude92": "man firefighter", - "\ud83d\udc68\u200d\ud83e\uddaf": "man with white cane", - "\ud83d\udc68\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "man with white cane facing right", - "\ud83d\udc68\u200d\ud83e\uddb0": "man: red hair", - "\ud83d\udc68\u200d\ud83e\uddb1": "man: curly hair", - "\ud83d\udc68\u200d\ud83e\uddb2": "man: bald", - "\ud83d\udc68\u200d\ud83e\uddb3": "man: white hair", - "\ud83d\udc68\u200d\ud83e\uddbc": "man in motorized wheelchair", - "\ud83d\udc68\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "man in motorized wheelchair facing right", - "\ud83d\udc68\u200d\ud83e\uddbd": "man in manual wheelchair", - "\ud83d\udc68\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "man in manual wheelchair facing right", - "\ud83d\udc68\ud83c\udffb\u200d\u2695\ufe0f": "man health worker: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\u2696\ufe0f": "man judge: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\u2708\ufe0f": "man pilot: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf3e": "man farmer: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf73": "man cook: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf7c": "man feeding baby: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf93": "man student: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfa4": "man singer: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfa8": "man artist: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfeb": "man teacher: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfed": "man factory worker: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83d\udcbb": "man technologist: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83d\udcbc": "man office worker: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83d\udd27": "man mechanic: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83d\udd2c": "man scientist: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83d\ude80": "man astronaut: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83d\ude92": "man firefighter: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddaf": "man with white cane: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "man with white cane facing right: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb0": "man: light skin tone, red hair", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb1": "man: light skin tone, curly hair", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb2": "man: light skin tone, bald", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb3": "man: light skin tone, white hair", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddbc": "man in motorized wheelchair: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "man in motorized wheelchair facing right: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddbd": "man in manual wheelchair: light skin tone", - "\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "man in manual wheelchair facing right: light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\u2695\ufe0f": "man health worker: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\u2696\ufe0f": "man judge: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\u2708\ufe0f": "man pilot: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf3e": "man farmer: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf73": "man cook: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf7c": "man feeding baby: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf93": "man student: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfa4": "man singer: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfa8": "man artist: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfeb": "man teacher: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfed": "man factory worker: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbb": "man technologist: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbc": "man office worker: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83d\udd27": "man mechanic: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83d\udd2c": "man scientist: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83d\ude80": "man astronaut: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83d\ude92": "man firefighter: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddaf": "man with white cane: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "man with white cane facing right: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb0": "man: medium-light skin tone, red hair", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb1": "man: medium-light skin tone, curly hair", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb2": "man: medium-light skin tone, bald", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb3": "man: medium-light skin tone, white hair", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddbc": "man in motorized wheelchair: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "man in motorized wheelchair facing right: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddbd": "man in manual wheelchair: medium-light skin tone", - "\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "man in manual wheelchair facing right: medium-light skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\u2695\ufe0f": "man health worker: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\u2696\ufe0f": "man judge: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\u2708\ufe0f": "man pilot: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf3e": "man farmer: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf73": "man cook: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf7c": "man feeding baby: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf93": "man student: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfa4": "man singer: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfa8": "man artist: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfeb": "man teacher: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfed": "man factory worker: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83d\udcbb": "man technologist: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83d\udcbc": "man office worker: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83d\udd27": "man mechanic: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83d\udd2c": "man scientist: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83d\ude80": "man astronaut: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83d\ude92": "man firefighter: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddaf": "man with white cane: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "man with white cane facing right: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb0": "man: medium skin tone, red hair", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb1": "man: medium skin tone, curly hair", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb2": "man: medium skin tone, bald", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb3": "man: medium skin tone, white hair", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddbc": "man in motorized wheelchair: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "man in motorized wheelchair facing right: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddbd": "man in manual wheelchair: medium skin tone", - "\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "man in manual wheelchair facing right: medium skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\u2695\ufe0f": "man health worker: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\u2696\ufe0f": "man judge: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\u2708\ufe0f": "man pilot: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf3e": "man farmer: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf73": "man cook: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf7c": "man feeding baby: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf93": "man student: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfa4": "man singer: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfa8": "man artist: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfeb": "man teacher: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfed": "man factory worker: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83d\udcbb": "man technologist: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83d\udcbc": "man office worker: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83d\udd27": "man mechanic: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83d\udd2c": "man scientist: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83d\ude80": "man astronaut: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83d\ude92": "man firefighter: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddaf": "man with white cane: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "man with white cane facing right: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb0": "man: medium-dark skin tone, red hair", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb1": "man: medium-dark skin tone, curly hair", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb2": "man: medium-dark skin tone, bald", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb3": "man: medium-dark skin tone, white hair", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddbc": "man in motorized wheelchair: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "man in motorized wheelchair facing right: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddbd": "man in manual wheelchair: medium-dark skin tone", - "\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "man in manual wheelchair facing right: medium-dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\u2695\ufe0f": "man health worker: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\u2696\ufe0f": "man judge: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\u2708\ufe0f": "man pilot: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf3e": "man farmer: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf73": "man cook: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf7c": "man feeding baby: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf93": "man student: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfa4": "man singer: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfa8": "man artist: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfeb": "man teacher: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfed": "man factory worker: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83d\udcbb": "man technologist: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83d\udcbc": "man office worker: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83d\udd27": "man mechanic: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83d\udd2c": "man scientist: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83d\ude80": "man astronaut: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83d\ude92": "man firefighter: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddaf": "man with white cane: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "man with white cane facing right: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb0": "man: dark skin tone, red hair", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb1": "man: dark skin tone, curly hair", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb2": "man: dark skin tone, bald", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb3": "man: dark skin tone, white hair", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddbc": "man in motorized wheelchair: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "man in motorized wheelchair facing right: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddbd": "man in manual wheelchair: dark skin tone", - "\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "man in manual wheelchair facing right: dark skin tone", - "\ud83d\udc69\u200d\u2695\ufe0f": "woman health worker", - "\ud83d\udc69\u200d\u2696\ufe0f": "woman judge", - "\ud83d\udc69\u200d\u2708\ufe0f": "woman pilot", - "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc68": "couple with heart: woman, man", - "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69": "couple with heart: woman, woman", - "\ud83d\udc69\u200d\ud83c\udf3e": "woman farmer", - "\ud83d\udc69\u200d\ud83c\udf73": "woman cook", - "\ud83d\udc69\u200d\ud83c\udf7c": "woman feeding baby", - "\ud83d\udc69\u200d\ud83c\udf93": "woman student", - "\ud83d\udc69\u200d\ud83c\udfa4": "woman singer", - "\ud83d\udc69\u200d\ud83c\udfa8": "woman artist", - "\ud83d\udc69\u200d\ud83c\udfeb": "woman teacher", - "\ud83d\udc69\u200d\ud83c\udfed": "woman factory worker", - "\ud83d\udc69\u200d\ud83d\udc66": "family: woman, boy", - "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66": "family: woman, boy, boy", - "\ud83d\udc69\u200d\ud83d\udc67": "family: woman, girl", - "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66": "family: woman, girl, boy", - "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67": "family: woman, girl, girl", - "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66": "family: woman, woman, boy", - "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66": "family: woman, woman, boy, boy", - "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67": "family: woman, woman, girl", - "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66": "family: woman, woman, girl, boy", - "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67": "family: woman, woman, girl, girl", - "\ud83d\udc69\u200d\ud83d\udcbb": "woman technologist", - "\ud83d\udc69\u200d\ud83d\udcbc": "woman office worker", - "\ud83d\udc69\u200d\ud83d\udd27": "woman mechanic", - "\ud83d\udc69\u200d\ud83d\udd2c": "woman scientist", - "\ud83d\udc69\u200d\ud83d\ude80": "woman astronaut", - "\ud83d\udc69\u200d\ud83d\ude92": "woman firefighter", - "\ud83d\udc69\u200d\ud83e\uddaf": "woman with white cane", - "\ud83d\udc69\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "woman with white cane facing right", - "\ud83d\udc69\u200d\ud83e\uddb0": "woman: red hair", - "\ud83d\udc69\u200d\ud83e\uddb1": "woman: curly hair", - "\ud83d\udc69\u200d\ud83e\uddb2": "woman: bald", - "\ud83d\udc69\u200d\ud83e\uddb3": "woman: white hair", - "\ud83d\udc69\u200d\ud83e\uddbc": "woman in motorized wheelchair", - "\ud83d\udc69\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "woman in motorized wheelchair facing right", - "\ud83d\udc69\u200d\ud83e\uddbd": "woman in manual wheelchair", - "\ud83d\udc69\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "woman in manual wheelchair facing right", - "\ud83d\udc69\ud83c\udffb\u200d\u2695\ufe0f": "woman health worker: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\u2696\ufe0f": "woman judge: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\u2708\ufe0f": "woman pilot: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf3e": "woman farmer: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf73": "woman cook: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf7c": "woman feeding baby: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf93": "woman student: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfa4": "woman singer: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfa8": "woman artist: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfeb": "woman teacher: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfed": "woman factory worker: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83d\udcbb": "woman technologist: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83d\udcbc": "woman office worker: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83d\udd27": "woman mechanic: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83d\udd2c": "woman scientist: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83d\ude80": "woman astronaut: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83d\ude92": "woman firefighter: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc": "woman and man holding hands: light skin tone, medium-light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd": "woman and man holding hands: light skin tone, medium skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe": "woman and man holding hands: light skin tone, medium-dark skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff": "woman and man holding hands: light skin tone, dark skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddaf": "woman with white cane: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "woman with white cane facing right: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb0": "woman: light skin tone, red hair", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb1": "woman: light skin tone, curly hair", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb2": "woman: light skin tone, bald", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb3": "woman: light skin tone, white hair", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddbc": "woman in motorized wheelchair: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "woman in motorized wheelchair facing right: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddbd": "woman in manual wheelchair: light skin tone", - "\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "woman in manual wheelchair facing right: light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\u2695\ufe0f": "woman health worker: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\u2696\ufe0f": "woman judge: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\u2708\ufe0f": "woman pilot: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf3e": "woman farmer: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf73": "woman cook: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf7c": "woman feeding baby: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf93": "woman student: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfa4": "woman singer: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfa8": "woman artist: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfeb": "woman teacher: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfed": "woman factory worker: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83d\udcbb": "woman technologist: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83d\udcbc": "woman office worker: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83d\udd27": "woman mechanic: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83d\udd2c": "woman scientist: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83d\ude80": "woman astronaut: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83d\ude92": "woman firefighter: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb": "woman and man holding hands: medium-light skin tone, light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd": "woman and man holding hands: medium-light skin tone, medium skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe": "woman and man holding hands: medium-light skin tone, medium-dark skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff": "woman and man holding hands: medium-light skin tone, dark skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddaf": "woman with white cane: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "woman with white cane facing right: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb0": "woman: medium-light skin tone, red hair", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb1": "woman: medium-light skin tone, curly hair", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb2": "woman: medium-light skin tone, bald", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb3": "woman: medium-light skin tone, white hair", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddbc": "woman in motorized wheelchair: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "woman in motorized wheelchair facing right: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddbd": "woman in manual wheelchair: medium-light skin tone", - "\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "woman in manual wheelchair facing right: medium-light skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\u2695\ufe0f": "woman health worker: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\u2696\ufe0f": "woman judge: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\u2708\ufe0f": "woman pilot: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf3e": "woman farmer: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf73": "woman cook: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf7c": "woman feeding baby: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf93": "woman student: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfa4": "woman singer: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfa8": "woman artist: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfeb": "woman teacher: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfed": "woman factory worker: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83d\udcbb": "woman technologist: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83d\udcbc": "woman office worker: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83d\udd27": "woman mechanic: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83d\udd2c": "woman scientist: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83d\ude80": "woman astronaut: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83d\ude92": "woman firefighter: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb": "woman and man holding hands: medium skin tone, light skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc": "woman and man holding hands: medium skin tone, medium-light skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe": "woman and man holding hands: medium skin tone, medium-dark skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff": "woman and man holding hands: medium skin tone, dark skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddaf": "woman with white cane: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "woman with white cane facing right: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb0": "woman: medium skin tone, red hair", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb1": "woman: medium skin tone, curly hair", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb2": "woman: medium skin tone, bald", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb3": "woman: medium skin tone, white hair", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddbc": "woman in motorized wheelchair: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "woman in motorized wheelchair facing right: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddbd": "woman in manual wheelchair: medium skin tone", - "\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "woman in manual wheelchair facing right: medium skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\u2695\ufe0f": "woman health worker: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\u2696\ufe0f": "woman judge: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\u2708\ufe0f": "woman pilot: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf3e": "woman farmer: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf73": "woman cook: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf7c": "woman feeding baby: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf93": "woman student: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfa4": "woman singer: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfa8": "woman artist: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfeb": "woman teacher: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfed": "woman factory worker: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83d\udcbb": "woman technologist: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83d\udcbc": "woman office worker: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83d\udd27": "woman mechanic: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83d\udd2c": "woman scientist: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83d\ude80": "woman astronaut: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83d\ude92": "woman firefighter: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb": "woman and man holding hands: medium-dark skin tone, light skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc": "woman and man holding hands: medium-dark skin tone, medium-light skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd": "woman and man holding hands: medium-dark skin tone, medium skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff": "woman and man holding hands: medium-dark skin tone, dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddaf": "woman with white cane: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "woman with white cane facing right: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb0": "woman: medium-dark skin tone, red hair", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb1": "woman: medium-dark skin tone, curly hair", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb2": "woman: medium-dark skin tone, bald", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3": "woman: medium-dark skin tone, white hair", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddbc": "woman in motorized wheelchair: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "woman in motorized wheelchair facing right: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddbd": "woman in manual wheelchair: medium-dark skin tone", - "\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "woman in manual wheelchair facing right: medium-dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\u2695\ufe0f": "woman health worker: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\u2696\ufe0f": "woman judge: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\u2708\ufe0f": "woman pilot: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf3e": "woman farmer: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf73": "woman cook: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf7c": "woman feeding baby: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf93": "woman student: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfa4": "woman singer: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfa8": "woman artist: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfeb": "woman teacher: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfed": "woman factory worker: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83d\udcbb": "woman technologist: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83d\udcbc": "woman office worker: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83d\udd27": "woman mechanic: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83d\udd2c": "woman scientist: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83d\ude80": "woman astronaut: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83d\ude92": "woman firefighter: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb": "woman and man holding hands: dark skin tone, light skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc": "woman and man holding hands: dark skin tone, medium-light skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd": "woman and man holding hands: dark skin tone, medium skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe": "woman and man holding hands: dark skin tone, medium-dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddaf": "woman with white cane: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "woman with white cane facing right: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb0": "woman: dark skin tone, red hair", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb1": "woman: dark skin tone, curly hair", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb2": "woman: dark skin tone, bald", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb3": "woman: dark skin tone, white hair", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddbc": "woman in motorized wheelchair: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "woman in motorized wheelchair facing right: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddbd": "woman in manual wheelchair: dark skin tone", - "\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "woman in manual wheelchair facing right: dark skin tone", - "\ud83d\udc6e\u200d\u2640\ufe0f": "woman police officer", - "\ud83d\udc6e\u200d\u2642\ufe0f": "man police officer", - "\ud83d\udc6e\ud83c\udffb\u200d\u2640\ufe0f": "woman police officer: light skin tone", - "\ud83d\udc6e\ud83c\udffb\u200d\u2642\ufe0f": "man police officer: light skin tone", - "\ud83d\udc6e\ud83c\udffc\u200d\u2640\ufe0f": "woman police officer: medium-light skin tone", - "\ud83d\udc6e\ud83c\udffc\u200d\u2642\ufe0f": "man police officer: medium-light skin tone", - "\ud83d\udc6e\ud83c\udffd\u200d\u2640\ufe0f": "woman police officer: medium skin tone", - "\ud83d\udc6e\ud83c\udffd\u200d\u2642\ufe0f": "man police officer: medium skin tone", - "\ud83d\udc6e\ud83c\udffe\u200d\u2640\ufe0f": "woman police officer: medium-dark skin tone", - "\ud83d\udc6e\ud83c\udffe\u200d\u2642\ufe0f": "man police officer: medium-dark skin tone", - "\ud83d\udc6e\ud83c\udfff\u200d\u2640\ufe0f": "woman police officer: dark skin tone", - "\ud83d\udc6e\ud83c\udfff\u200d\u2642\ufe0f": "man police officer: dark skin tone", - "\ud83d\udc6f\u200d\u2640\ufe0f": "women with bunny ears", - "\ud83d\udc6f\u200d\u2642\ufe0f": "men with bunny ears", - "\ud83d\udc70\u200d\u2640\ufe0f": "woman with veil", - "\ud83d\udc70\u200d\u2642\ufe0f": "man with veil", - "\ud83d\udc70\ud83c\udffb\u200d\u2640\ufe0f": "woman with veil: light skin tone", - "\ud83d\udc70\ud83c\udffb\u200d\u2642\ufe0f": "man with veil: light skin tone", - "\ud83d\udc70\ud83c\udffc\u200d\u2640\ufe0f": "woman with veil: medium-light skin tone", - "\ud83d\udc70\ud83c\udffc\u200d\u2642\ufe0f": "man with veil: medium-light skin tone", - "\ud83d\udc70\ud83c\udffd\u200d\u2640\ufe0f": "woman with veil: medium skin tone", - "\ud83d\udc70\ud83c\udffd\u200d\u2642\ufe0f": "man with veil: medium skin tone", - "\ud83d\udc70\ud83c\udffe\u200d\u2640\ufe0f": "woman with veil: medium-dark skin tone", - "\ud83d\udc70\ud83c\udffe\u200d\u2642\ufe0f": "man with veil: medium-dark skin tone", - "\ud83d\udc70\ud83c\udfff\u200d\u2640\ufe0f": "woman with veil: dark skin tone", - "\ud83d\udc70\ud83c\udfff\u200d\u2642\ufe0f": "man with veil: dark skin tone", - "\ud83d\udc71\u200d\u2640\ufe0f": "woman: blond hair", - "\ud83d\udc71\u200d\u2642\ufe0f": "man: blond hair", - "\ud83d\udc71\ud83c\udffb\u200d\u2640\ufe0f": "woman: light skin tone, blond hair", - "\ud83d\udc71\ud83c\udffb\u200d\u2642\ufe0f": "man: light skin tone, blond hair", - "\ud83d\udc71\ud83c\udffc\u200d\u2640\ufe0f": "woman: medium-light skin tone, blond hair", - "\ud83d\udc71\ud83c\udffc\u200d\u2642\ufe0f": "man: medium-light skin tone, blond hair", - "\ud83d\udc71\ud83c\udffd\u200d\u2640\ufe0f": "woman: medium skin tone, blond hair", - "\ud83d\udc71\ud83c\udffd\u200d\u2642\ufe0f": "man: medium skin tone, blond hair", - "\ud83d\udc71\ud83c\udffe\u200d\u2640\ufe0f": "woman: medium-dark skin tone, blond hair", - "\ud83d\udc71\ud83c\udffe\u200d\u2642\ufe0f": "man: medium-dark skin tone, blond hair", - "\ud83d\udc71\ud83c\udfff\u200d\u2640\ufe0f": "woman: dark skin tone, blond hair", - "\ud83d\udc71\ud83c\udfff\u200d\u2642\ufe0f": "man: dark skin tone, blond hair", - "\ud83d\udc73\u200d\u2640\ufe0f": "woman wearing turban", - "\ud83d\udc73\u200d\u2642\ufe0f": "man wearing turban", - "\ud83d\udc73\ud83c\udffb\u200d\u2640\ufe0f": "woman wearing turban: light skin tone", - "\ud83d\udc73\ud83c\udffb\u200d\u2642\ufe0f": "man wearing turban: light skin tone", - "\ud83d\udc73\ud83c\udffc\u200d\u2640\ufe0f": "woman wearing turban: medium-light skin tone", - "\ud83d\udc73\ud83c\udffc\u200d\u2642\ufe0f": "man wearing turban: medium-light skin tone", - "\ud83d\udc73\ud83c\udffd\u200d\u2640\ufe0f": "woman wearing turban: medium skin tone", - "\ud83d\udc73\ud83c\udffd\u200d\u2642\ufe0f": "man wearing turban: medium skin tone", - "\ud83d\udc73\ud83c\udffe\u200d\u2640\ufe0f": "woman wearing turban: medium-dark skin tone", - "\ud83d\udc73\ud83c\udffe\u200d\u2642\ufe0f": "man wearing turban: medium-dark skin tone", - "\ud83d\udc73\ud83c\udfff\u200d\u2640\ufe0f": "woman wearing turban: dark skin tone", - "\ud83d\udc73\ud83c\udfff\u200d\u2642\ufe0f": "man wearing turban: dark skin tone", - "\ud83d\udc77\u200d\u2640\ufe0f": "woman construction worker", - "\ud83d\udc77\u200d\u2642\ufe0f": "man construction worker", - "\ud83d\udc77\ud83c\udffb\u200d\u2640\ufe0f": "woman construction worker: light skin tone", - "\ud83d\udc77\ud83c\udffb\u200d\u2642\ufe0f": "man construction worker: light skin tone", - "\ud83d\udc77\ud83c\udffc\u200d\u2640\ufe0f": "woman construction worker: medium-light skin tone", - "\ud83d\udc77\ud83c\udffc\u200d\u2642\ufe0f": "man construction worker: medium-light skin tone", - "\ud83d\udc77\ud83c\udffd\u200d\u2640\ufe0f": "woman construction worker: medium skin tone", - "\ud83d\udc77\ud83c\udffd\u200d\u2642\ufe0f": "man construction worker: medium skin tone", - "\ud83d\udc77\ud83c\udffe\u200d\u2640\ufe0f": "woman construction worker: medium-dark skin tone", - "\ud83d\udc77\ud83c\udffe\u200d\u2642\ufe0f": "man construction worker: medium-dark skin tone", - "\ud83d\udc77\ud83c\udfff\u200d\u2640\ufe0f": "woman construction worker: dark skin tone", - "\ud83d\udc77\ud83c\udfff\u200d\u2642\ufe0f": "man construction worker: dark skin tone", - "\ud83d\udc81\u200d\u2640\ufe0f": "woman tipping hand", - "\ud83d\udc81\u200d\u2642\ufe0f": "man tipping hand", - "\ud83d\udc81\ud83c\udffb\u200d\u2640\ufe0f": "woman tipping hand: light skin tone", - "\ud83d\udc81\ud83c\udffb\u200d\u2642\ufe0f": "man tipping hand: light skin tone", - "\ud83d\udc81\ud83c\udffc\u200d\u2640\ufe0f": "woman tipping hand: medium-light skin tone", - "\ud83d\udc81\ud83c\udffc\u200d\u2642\ufe0f": "man tipping hand: medium-light skin tone", - "\ud83d\udc81\ud83c\udffd\u200d\u2640\ufe0f": "woman tipping hand: medium skin tone", - "\ud83d\udc81\ud83c\udffd\u200d\u2642\ufe0f": "man tipping hand: medium skin tone", - "\ud83d\udc81\ud83c\udffe\u200d\u2640\ufe0f": "woman tipping hand: medium-dark skin tone", - "\ud83d\udc81\ud83c\udffe\u200d\u2642\ufe0f": "man tipping hand: medium-dark skin tone", - "\ud83d\udc81\ud83c\udfff\u200d\u2640\ufe0f": "woman tipping hand: dark skin tone", - "\ud83d\udc81\ud83c\udfff\u200d\u2642\ufe0f": "man tipping hand: dark skin tone", - "\ud83d\udc82\u200d\u2640\ufe0f": "woman guard", - "\ud83d\udc82\u200d\u2642\ufe0f": "man guard", - "\ud83d\udc82\ud83c\udffb\u200d\u2640\ufe0f": "woman guard: light skin tone", - "\ud83d\udc82\ud83c\udffb\u200d\u2642\ufe0f": "man guard: light skin tone", - "\ud83d\udc82\ud83c\udffc\u200d\u2640\ufe0f": "woman guard: medium-light skin tone", - "\ud83d\udc82\ud83c\udffc\u200d\u2642\ufe0f": "man guard: medium-light skin tone", - "\ud83d\udc82\ud83c\udffd\u200d\u2640\ufe0f": "woman guard: medium skin tone", - "\ud83d\udc82\ud83c\udffd\u200d\u2642\ufe0f": "man guard: medium skin tone", - "\ud83d\udc82\ud83c\udffe\u200d\u2640\ufe0f": "woman guard: medium-dark skin tone", - "\ud83d\udc82\ud83c\udffe\u200d\u2642\ufe0f": "man guard: medium-dark skin tone", - "\ud83d\udc82\ud83c\udfff\u200d\u2640\ufe0f": "woman guard: dark skin tone", - "\ud83d\udc82\ud83c\udfff\u200d\u2642\ufe0f": "man guard: dark skin tone", - "\ud83d\udc86\u200d\u2640\ufe0f": "woman getting massage", - "\ud83d\udc86\u200d\u2642\ufe0f": "man getting massage", - "\ud83d\udc86\ud83c\udffb\u200d\u2640\ufe0f": "woman getting massage: light skin tone", - "\ud83d\udc86\ud83c\udffb\u200d\u2642\ufe0f": "man getting massage: light skin tone", - "\ud83d\udc86\ud83c\udffc\u200d\u2640\ufe0f": "woman getting massage: medium-light skin tone", - "\ud83d\udc86\ud83c\udffc\u200d\u2642\ufe0f": "man getting massage: medium-light skin tone", - "\ud83d\udc86\ud83c\udffd\u200d\u2640\ufe0f": "woman getting massage: medium skin tone", - "\ud83d\udc86\ud83c\udffd\u200d\u2642\ufe0f": "man getting massage: medium skin tone", - "\ud83d\udc86\ud83c\udffe\u200d\u2640\ufe0f": "woman getting massage: medium-dark skin tone", - "\ud83d\udc86\ud83c\udffe\u200d\u2642\ufe0f": "man getting massage: medium-dark skin tone", - "\ud83d\udc86\ud83c\udfff\u200d\u2640\ufe0f": "woman getting massage: dark skin tone", - "\ud83d\udc86\ud83c\udfff\u200d\u2642\ufe0f": "man getting massage: dark skin tone", - "\ud83d\udc87\u200d\u2640\ufe0f": "woman getting haircut", - "\ud83d\udc87\u200d\u2642\ufe0f": "man getting haircut", - "\ud83d\udc87\ud83c\udffb\u200d\u2640\ufe0f": "woman getting haircut: light skin tone", - "\ud83d\udc87\ud83c\udffb\u200d\u2642\ufe0f": "man getting haircut: light skin tone", - "\ud83d\udc87\ud83c\udffc\u200d\u2640\ufe0f": "woman getting haircut: medium-light skin tone", - "\ud83d\udc87\ud83c\udffc\u200d\u2642\ufe0f": "man getting haircut: medium-light skin tone", - "\ud83d\udc87\ud83c\udffd\u200d\u2640\ufe0f": "woman getting haircut: medium skin tone", - "\ud83d\udc87\ud83c\udffd\u200d\u2642\ufe0f": "man getting haircut: medium skin tone", - "\ud83d\udc87\ud83c\udffe\u200d\u2640\ufe0f": "woman getting haircut: medium-dark skin tone", - "\ud83d\udc87\ud83c\udffe\u200d\u2642\ufe0f": "man getting haircut: medium-dark skin tone", - "\ud83d\udc87\ud83c\udfff\u200d\u2640\ufe0f": "woman getting haircut: dark skin tone", - "\ud83d\udc87\ud83c\udfff\u200d\u2642\ufe0f": "man getting haircut: dark skin tone", - "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f": "woman detective", - "\ud83d\udd75\ufe0f\u200d\u2642\ufe0f": "man detective", - "\ud83d\udd75\ud83c\udffb\u200d\u2640\ufe0f": "woman detective: light skin tone", - "\ud83d\udd75\ud83c\udffb\u200d\u2642\ufe0f": "man detective: light skin tone", - "\ud83d\udd75\ud83c\udffc\u200d\u2640\ufe0f": "woman detective: medium-light skin tone", - "\ud83d\udd75\ud83c\udffc\u200d\u2642\ufe0f": "man detective: medium-light skin tone", - "\ud83d\udd75\ud83c\udffd\u200d\u2640\ufe0f": "woman detective: medium skin tone", - "\ud83d\udd75\ud83c\udffd\u200d\u2642\ufe0f": "man detective: medium skin tone", - "\ud83d\udd75\ud83c\udffe\u200d\u2640\ufe0f": "woman detective: medium-dark skin tone", - "\ud83d\udd75\ud83c\udffe\u200d\u2642\ufe0f": "man detective: medium-dark skin tone", - "\ud83d\udd75\ud83c\udfff\u200d\u2640\ufe0f": "woman detective: dark skin tone", - "\ud83d\udd75\ud83c\udfff\u200d\u2642\ufe0f": "man detective: dark skin tone", - "\ud83d\ude2e\u200d\ud83d\udca8": "face exhaling", - "\ud83d\ude35\u200d\ud83d\udcab": "face with spiral eyes", - "\ud83d\ude36\u200d\ud83c\udf2b\ufe0f": "face in clouds", - "\ud83d\ude42\u200d\u2194\ufe0f": "head shaking horizontally", - "\ud83d\ude42\u200d\u2195\ufe0f": "head shaking vertically", - "\ud83d\ude45\u200d\u2640\ufe0f": "woman gesturing NO", - "\ud83d\ude45\u200d\u2642\ufe0f": "man gesturing NO", - "\ud83d\ude45\ud83c\udffb\u200d\u2640\ufe0f": "woman gesturing NO: light skin tone", - "\ud83d\ude45\ud83c\udffb\u200d\u2642\ufe0f": "man gesturing NO: light skin tone", - "\ud83d\ude45\ud83c\udffc\u200d\u2640\ufe0f": "woman gesturing NO: medium-light skin tone", - "\ud83d\ude45\ud83c\udffc\u200d\u2642\ufe0f": "man gesturing NO: medium-light skin tone", - "\ud83d\ude45\ud83c\udffd\u200d\u2640\ufe0f": "woman gesturing NO: medium skin tone", - "\ud83d\ude45\ud83c\udffd\u200d\u2642\ufe0f": "man gesturing NO: medium skin tone", - "\ud83d\ude45\ud83c\udffe\u200d\u2640\ufe0f": "woman gesturing NO: medium-dark skin tone", - "\ud83d\ude45\ud83c\udffe\u200d\u2642\ufe0f": "man gesturing NO: medium-dark skin tone", - "\ud83d\ude45\ud83c\udfff\u200d\u2640\ufe0f": "woman gesturing NO: dark skin tone", - "\ud83d\ude45\ud83c\udfff\u200d\u2642\ufe0f": "man gesturing NO: dark skin tone", - "\ud83d\ude46\u200d\u2640\ufe0f": "woman gesturing OK", - "\ud83d\ude46\u200d\u2642\ufe0f": "man gesturing OK", - "\ud83d\ude46\ud83c\udffb\u200d\u2640\ufe0f": "woman gesturing OK: light skin tone", - "\ud83d\ude46\ud83c\udffb\u200d\u2642\ufe0f": "man gesturing OK: light skin tone", - "\ud83d\ude46\ud83c\udffc\u200d\u2640\ufe0f": "woman gesturing OK: medium-light skin tone", - "\ud83d\ude46\ud83c\udffc\u200d\u2642\ufe0f": "man gesturing OK: medium-light skin tone", - "\ud83d\ude46\ud83c\udffd\u200d\u2640\ufe0f": "woman gesturing OK: medium skin tone", - "\ud83d\ude46\ud83c\udffd\u200d\u2642\ufe0f": "man gesturing OK: medium skin tone", - "\ud83d\ude46\ud83c\udffe\u200d\u2640\ufe0f": "woman gesturing OK: medium-dark skin tone", - "\ud83d\ude46\ud83c\udffe\u200d\u2642\ufe0f": "man gesturing OK: medium-dark skin tone", - "\ud83d\ude46\ud83c\udfff\u200d\u2640\ufe0f": "woman gesturing OK: dark skin tone", - "\ud83d\ude46\ud83c\udfff\u200d\u2642\ufe0f": "man gesturing OK: dark skin tone", - "\ud83d\ude47\u200d\u2640\ufe0f": "woman bowing", - "\ud83d\ude47\u200d\u2642\ufe0f": "man bowing", - "\ud83d\ude47\ud83c\udffb\u200d\u2640\ufe0f": "woman bowing: light skin tone", - "\ud83d\ude47\ud83c\udffb\u200d\u2642\ufe0f": "man bowing: light skin tone", - "\ud83d\ude47\ud83c\udffc\u200d\u2640\ufe0f": "woman bowing: medium-light skin tone", - "\ud83d\ude47\ud83c\udffc\u200d\u2642\ufe0f": "man bowing: medium-light skin tone", - "\ud83d\ude47\ud83c\udffd\u200d\u2640\ufe0f": "woman bowing: medium skin tone", - "\ud83d\ude47\ud83c\udffd\u200d\u2642\ufe0f": "man bowing: medium skin tone", - "\ud83d\ude47\ud83c\udffe\u200d\u2640\ufe0f": "woman bowing: medium-dark skin tone", - "\ud83d\ude47\ud83c\udffe\u200d\u2642\ufe0f": "man bowing: medium-dark skin tone", - "\ud83d\ude47\ud83c\udfff\u200d\u2640\ufe0f": "woman bowing: dark skin tone", - "\ud83d\ude47\ud83c\udfff\u200d\u2642\ufe0f": "man bowing: dark skin tone", - "\ud83d\ude4b\u200d\u2640\ufe0f": "woman raising hand", - "\ud83d\ude4b\u200d\u2642\ufe0f": "man raising hand", - "\ud83d\ude4b\ud83c\udffb\u200d\u2640\ufe0f": "woman raising hand: light skin tone", - "\ud83d\ude4b\ud83c\udffb\u200d\u2642\ufe0f": "man raising hand: light skin tone", - "\ud83d\ude4b\ud83c\udffc\u200d\u2640\ufe0f": "woman raising hand: medium-light skin tone", - "\ud83d\ude4b\ud83c\udffc\u200d\u2642\ufe0f": "man raising hand: medium-light skin tone", - "\ud83d\ude4b\ud83c\udffd\u200d\u2640\ufe0f": "woman raising hand: medium skin tone", - "\ud83d\ude4b\ud83c\udffd\u200d\u2642\ufe0f": "man raising hand: medium skin tone", - "\ud83d\ude4b\ud83c\udffe\u200d\u2640\ufe0f": "woman raising hand: medium-dark skin tone", - "\ud83d\ude4b\ud83c\udffe\u200d\u2642\ufe0f": "man raising hand: medium-dark skin tone", - "\ud83d\ude4b\ud83c\udfff\u200d\u2640\ufe0f": "woman raising hand: dark skin tone", - "\ud83d\ude4b\ud83c\udfff\u200d\u2642\ufe0f": "man raising hand: dark skin tone", - "\ud83d\ude4d\u200d\u2640\ufe0f": "woman frowning", - "\ud83d\ude4d\u200d\u2642\ufe0f": "man frowning", - "\ud83d\ude4d\ud83c\udffb\u200d\u2640\ufe0f": "woman frowning: light skin tone", - "\ud83d\ude4d\ud83c\udffb\u200d\u2642\ufe0f": "man frowning: light skin tone", - "\ud83d\ude4d\ud83c\udffc\u200d\u2640\ufe0f": "woman frowning: medium-light skin tone", - "\ud83d\ude4d\ud83c\udffc\u200d\u2642\ufe0f": "man frowning: medium-light skin tone", - "\ud83d\ude4d\ud83c\udffd\u200d\u2640\ufe0f": "woman frowning: medium skin tone", - "\ud83d\ude4d\ud83c\udffd\u200d\u2642\ufe0f": "man frowning: medium skin tone", - "\ud83d\ude4d\ud83c\udffe\u200d\u2640\ufe0f": "woman frowning: medium-dark skin tone", - "\ud83d\ude4d\ud83c\udffe\u200d\u2642\ufe0f": "man frowning: medium-dark skin tone", - "\ud83d\ude4d\ud83c\udfff\u200d\u2640\ufe0f": "woman frowning: dark skin tone", - "\ud83d\ude4d\ud83c\udfff\u200d\u2642\ufe0f": "man frowning: dark skin tone", - "\ud83d\ude4e\u200d\u2640\ufe0f": "woman pouting", - "\ud83d\ude4e\u200d\u2642\ufe0f": "man pouting", - "\ud83d\ude4e\ud83c\udffb\u200d\u2640\ufe0f": "woman pouting: light skin tone", - "\ud83d\ude4e\ud83c\udffb\u200d\u2642\ufe0f": "man pouting: light skin tone", - "\ud83d\ude4e\ud83c\udffc\u200d\u2640\ufe0f": "woman pouting: medium-light skin tone", - "\ud83d\ude4e\ud83c\udffc\u200d\u2642\ufe0f": "man pouting: medium-light skin tone", - "\ud83d\ude4e\ud83c\udffd\u200d\u2640\ufe0f": "woman pouting: medium skin tone", - "\ud83d\ude4e\ud83c\udffd\u200d\u2642\ufe0f": "man pouting: medium skin tone", - "\ud83d\ude4e\ud83c\udffe\u200d\u2640\ufe0f": "woman pouting: medium-dark skin tone", - "\ud83d\ude4e\ud83c\udffe\u200d\u2642\ufe0f": "man pouting: medium-dark skin tone", - "\ud83d\ude4e\ud83c\udfff\u200d\u2640\ufe0f": "woman pouting: dark skin tone", - "\ud83d\ude4e\ud83c\udfff\u200d\u2642\ufe0f": "man pouting: dark skin tone", - "\ud83d\udea3\u200d\u2640\ufe0f": "woman rowing boat", - "\ud83d\udea3\u200d\u2642\ufe0f": "man rowing boat", - "\ud83d\udea3\ud83c\udffb\u200d\u2640\ufe0f": "woman rowing boat: light skin tone", - "\ud83d\udea3\ud83c\udffb\u200d\u2642\ufe0f": "man rowing boat: light skin tone", - "\ud83d\udea3\ud83c\udffc\u200d\u2640\ufe0f": "woman rowing boat: medium-light skin tone", - "\ud83d\udea3\ud83c\udffc\u200d\u2642\ufe0f": "man rowing boat: medium-light skin tone", - "\ud83d\udea3\ud83c\udffd\u200d\u2640\ufe0f": "woman rowing boat: medium skin tone", - "\ud83d\udea3\ud83c\udffd\u200d\u2642\ufe0f": "man rowing boat: medium skin tone", - "\ud83d\udea3\ud83c\udffe\u200d\u2640\ufe0f": "woman rowing boat: medium-dark skin tone", - "\ud83d\udea3\ud83c\udffe\u200d\u2642\ufe0f": "man rowing boat: medium-dark skin tone", - "\ud83d\udea3\ud83c\udfff\u200d\u2640\ufe0f": "woman rowing boat: dark skin tone", - "\ud83d\udea3\ud83c\udfff\u200d\u2642\ufe0f": "man rowing boat: dark skin tone", - "\ud83d\udeb4\u200d\u2640\ufe0f": "woman biking", - "\ud83d\udeb4\u200d\u2642\ufe0f": "man biking", - "\ud83d\udeb4\ud83c\udffb\u200d\u2640\ufe0f": "woman biking: light skin tone", - "\ud83d\udeb4\ud83c\udffb\u200d\u2642\ufe0f": "man biking: light skin tone", - "\ud83d\udeb4\ud83c\udffc\u200d\u2640\ufe0f": "woman biking: medium-light skin tone", - "\ud83d\udeb4\ud83c\udffc\u200d\u2642\ufe0f": "man biking: medium-light skin tone", - "\ud83d\udeb4\ud83c\udffd\u200d\u2640\ufe0f": "woman biking: medium skin tone", - "\ud83d\udeb4\ud83c\udffd\u200d\u2642\ufe0f": "man biking: medium skin tone", - "\ud83d\udeb4\ud83c\udffe\u200d\u2640\ufe0f": "woman biking: medium-dark skin tone", - "\ud83d\udeb4\ud83c\udffe\u200d\u2642\ufe0f": "man biking: medium-dark skin tone", - "\ud83d\udeb4\ud83c\udfff\u200d\u2640\ufe0f": "woman biking: dark skin tone", - "\ud83d\udeb4\ud83c\udfff\u200d\u2642\ufe0f": "man biking: dark skin tone", - "\ud83d\udeb5\u200d\u2640\ufe0f": "woman mountain biking", - "\ud83d\udeb5\u200d\u2642\ufe0f": "man mountain biking", - "\ud83d\udeb5\ud83c\udffb\u200d\u2640\ufe0f": "woman mountain biking: light skin tone", - "\ud83d\udeb5\ud83c\udffb\u200d\u2642\ufe0f": "man mountain biking: light skin tone", - "\ud83d\udeb5\ud83c\udffc\u200d\u2640\ufe0f": "woman mountain biking: medium-light skin tone", - "\ud83d\udeb5\ud83c\udffc\u200d\u2642\ufe0f": "man mountain biking: medium-light skin tone", - "\ud83d\udeb5\ud83c\udffd\u200d\u2640\ufe0f": "woman mountain biking: medium skin tone", - "\ud83d\udeb5\ud83c\udffd\u200d\u2642\ufe0f": "man mountain biking: medium skin tone", - "\ud83d\udeb5\ud83c\udffe\u200d\u2640\ufe0f": "woman mountain biking: medium-dark skin tone", - "\ud83d\udeb5\ud83c\udffe\u200d\u2642\ufe0f": "man mountain biking: medium-dark skin tone", - "\ud83d\udeb5\ud83c\udfff\u200d\u2640\ufe0f": "woman mountain biking: dark skin tone", - "\ud83d\udeb5\ud83c\udfff\u200d\u2642\ufe0f": "man mountain biking: dark skin tone", - "\ud83d\udeb6\u200d\u2640\ufe0f": "woman walking", - "\ud83d\udeb6\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman walking facing right", - "\ud83d\udeb6\u200d\u2642\ufe0f": "man walking", - "\ud83d\udeb6\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man walking facing right", - "\ud83d\udeb6\u200d\u27a1\ufe0f": "person walking facing right", - "\ud83d\udeb6\ud83c\udffb\u200d\u2640\ufe0f": "woman walking: light skin tone", - "\ud83d\udeb6\ud83c\udffb\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman walking facing right: light skin tone", - "\ud83d\udeb6\ud83c\udffb\u200d\u2642\ufe0f": "man walking: light skin tone", - "\ud83d\udeb6\ud83c\udffb\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man walking facing right: light skin tone", - "\ud83d\udeb6\ud83c\udffb\u200d\u27a1\ufe0f": "person walking facing right: light skin tone", - "\ud83d\udeb6\ud83c\udffc\u200d\u2640\ufe0f": "woman walking: medium-light skin tone", - "\ud83d\udeb6\ud83c\udffc\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman walking facing right: medium-light skin tone", - "\ud83d\udeb6\ud83c\udffc\u200d\u2642\ufe0f": "man walking: medium-light skin tone", - "\ud83d\udeb6\ud83c\udffc\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man walking facing right: medium-light skin tone", - "\ud83d\udeb6\ud83c\udffc\u200d\u27a1\ufe0f": "person walking facing right: medium-light skin tone", - "\ud83d\udeb6\ud83c\udffd\u200d\u2640\ufe0f": "woman walking: medium skin tone", - "\ud83d\udeb6\ud83c\udffd\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman walking facing right: medium skin tone", - "\ud83d\udeb6\ud83c\udffd\u200d\u2642\ufe0f": "man walking: medium skin tone", - "\ud83d\udeb6\ud83c\udffd\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man walking facing right: medium skin tone", - "\ud83d\udeb6\ud83c\udffd\u200d\u27a1\ufe0f": "person walking facing right: medium skin tone", - "\ud83d\udeb6\ud83c\udffe\u200d\u2640\ufe0f": "woman walking: medium-dark skin tone", - "\ud83d\udeb6\ud83c\udffe\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman walking facing right: medium-dark skin tone", - "\ud83d\udeb6\ud83c\udffe\u200d\u2642\ufe0f": "man walking: medium-dark skin tone", - "\ud83d\udeb6\ud83c\udffe\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man walking facing right: medium-dark skin tone", - "\ud83d\udeb6\ud83c\udffe\u200d\u27a1\ufe0f": "person walking facing right: medium-dark skin tone", - "\ud83d\udeb6\ud83c\udfff\u200d\u2640\ufe0f": "woman walking: dark skin tone", - "\ud83d\udeb6\ud83c\udfff\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman walking facing right: dark skin tone", - "\ud83d\udeb6\ud83c\udfff\u200d\u2642\ufe0f": "man walking: dark skin tone", - "\ud83d\udeb6\ud83c\udfff\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man walking facing right: dark skin tone", - "\ud83d\udeb6\ud83c\udfff\u200d\u27a1\ufe0f": "person walking facing right: dark skin tone", - "\ud83e\udd26\u200d\u2640\ufe0f": "woman facepalming", - "\ud83e\udd26\u200d\u2642\ufe0f": "man facepalming", - "\ud83e\udd26\ud83c\udffb\u200d\u2640\ufe0f": "woman facepalming: light skin tone", - "\ud83e\udd26\ud83c\udffb\u200d\u2642\ufe0f": "man facepalming: light skin tone", - "\ud83e\udd26\ud83c\udffc\u200d\u2640\ufe0f": "woman facepalming: medium-light skin tone", - "\ud83e\udd26\ud83c\udffc\u200d\u2642\ufe0f": "man facepalming: medium-light skin tone", - "\ud83e\udd26\ud83c\udffd\u200d\u2640\ufe0f": "woman facepalming: medium skin tone", - "\ud83e\udd26\ud83c\udffd\u200d\u2642\ufe0f": "man facepalming: medium skin tone", - "\ud83e\udd26\ud83c\udffe\u200d\u2640\ufe0f": "woman facepalming: medium-dark skin tone", - "\ud83e\udd26\ud83c\udffe\u200d\u2642\ufe0f": "man facepalming: medium-dark skin tone", - "\ud83e\udd26\ud83c\udfff\u200d\u2640\ufe0f": "woman facepalming: dark skin tone", - "\ud83e\udd26\ud83c\udfff\u200d\u2642\ufe0f": "man facepalming: dark skin tone", - "\ud83e\udd35\u200d\u2640\ufe0f": "woman in tuxedo", - "\ud83e\udd35\u200d\u2642\ufe0f": "man in tuxedo", - "\ud83e\udd35\ud83c\udffb\u200d\u2640\ufe0f": "woman in tuxedo: light skin tone", - "\ud83e\udd35\ud83c\udffb\u200d\u2642\ufe0f": "man in tuxedo: light skin tone", - "\ud83e\udd35\ud83c\udffc\u200d\u2640\ufe0f": "woman in tuxedo: medium-light skin tone", - "\ud83e\udd35\ud83c\udffc\u200d\u2642\ufe0f": "man in tuxedo: medium-light skin tone", - "\ud83e\udd35\ud83c\udffd\u200d\u2640\ufe0f": "woman in tuxedo: medium skin tone", - "\ud83e\udd35\ud83c\udffd\u200d\u2642\ufe0f": "man in tuxedo: medium skin tone", - "\ud83e\udd35\ud83c\udffe\u200d\u2640\ufe0f": "woman in tuxedo: medium-dark skin tone", - "\ud83e\udd35\ud83c\udffe\u200d\u2642\ufe0f": "man in tuxedo: medium-dark skin tone", - "\ud83e\udd35\ud83c\udfff\u200d\u2640\ufe0f": "woman in tuxedo: dark skin tone", - "\ud83e\udd35\ud83c\udfff\u200d\u2642\ufe0f": "man in tuxedo: dark skin tone", - "\ud83e\udd37\u200d\u2640\ufe0f": "woman shrugging", - "\ud83e\udd37\u200d\u2642\ufe0f": "man shrugging", - "\ud83e\udd37\ud83c\udffb\u200d\u2640\ufe0f": "woman shrugging: light skin tone", - "\ud83e\udd37\ud83c\udffb\u200d\u2642\ufe0f": "man shrugging: light skin tone", - "\ud83e\udd37\ud83c\udffc\u200d\u2640\ufe0f": "woman shrugging: medium-light skin tone", - "\ud83e\udd37\ud83c\udffc\u200d\u2642\ufe0f": "man shrugging: medium-light skin tone", - "\ud83e\udd37\ud83c\udffd\u200d\u2640\ufe0f": "woman shrugging: medium skin tone", - "\ud83e\udd37\ud83c\udffd\u200d\u2642\ufe0f": "man shrugging: medium skin tone", - "\ud83e\udd37\ud83c\udffe\u200d\u2640\ufe0f": "woman shrugging: medium-dark skin tone", - "\ud83e\udd37\ud83c\udffe\u200d\u2642\ufe0f": "man shrugging: medium-dark skin tone", - "\ud83e\udd37\ud83c\udfff\u200d\u2640\ufe0f": "woman shrugging: dark skin tone", - "\ud83e\udd37\ud83c\udfff\u200d\u2642\ufe0f": "man shrugging: dark skin tone", - "\ud83e\udd38\u200d\u2640\ufe0f": "woman cartwheeling", - "\ud83e\udd38\u200d\u2642\ufe0f": "man cartwheeling", - "\ud83e\udd38\ud83c\udffb\u200d\u2640\ufe0f": "woman cartwheeling: light skin tone", - "\ud83e\udd38\ud83c\udffb\u200d\u2642\ufe0f": "man cartwheeling: light skin tone", - "\ud83e\udd38\ud83c\udffc\u200d\u2640\ufe0f": "woman cartwheeling: medium-light skin tone", - "\ud83e\udd38\ud83c\udffc\u200d\u2642\ufe0f": "man cartwheeling: medium-light skin tone", - "\ud83e\udd38\ud83c\udffd\u200d\u2640\ufe0f": "woman cartwheeling: medium skin tone", - "\ud83e\udd38\ud83c\udffd\u200d\u2642\ufe0f": "man cartwheeling: medium skin tone", - "\ud83e\udd38\ud83c\udffe\u200d\u2640\ufe0f": "woman cartwheeling: medium-dark skin tone", - "\ud83e\udd38\ud83c\udffe\u200d\u2642\ufe0f": "man cartwheeling: medium-dark skin tone", - "\ud83e\udd38\ud83c\udfff\u200d\u2640\ufe0f": "woman cartwheeling: dark skin tone", - "\ud83e\udd38\ud83c\udfff\u200d\u2642\ufe0f": "man cartwheeling: dark skin tone", - "\ud83e\udd39\u200d\u2640\ufe0f": "woman juggling", - "\ud83e\udd39\u200d\u2642\ufe0f": "man juggling", - "\ud83e\udd39\ud83c\udffb\u200d\u2640\ufe0f": "woman juggling: light skin tone", - "\ud83e\udd39\ud83c\udffb\u200d\u2642\ufe0f": "man juggling: light skin tone", - "\ud83e\udd39\ud83c\udffc\u200d\u2640\ufe0f": "woman juggling: medium-light skin tone", - "\ud83e\udd39\ud83c\udffc\u200d\u2642\ufe0f": "man juggling: medium-light skin tone", - "\ud83e\udd39\ud83c\udffd\u200d\u2640\ufe0f": "woman juggling: medium skin tone", - "\ud83e\udd39\ud83c\udffd\u200d\u2642\ufe0f": "man juggling: medium skin tone", - "\ud83e\udd39\ud83c\udffe\u200d\u2640\ufe0f": "woman juggling: medium-dark skin tone", - "\ud83e\udd39\ud83c\udffe\u200d\u2642\ufe0f": "man juggling: medium-dark skin tone", - "\ud83e\udd39\ud83c\udfff\u200d\u2640\ufe0f": "woman juggling: dark skin tone", - "\ud83e\udd39\ud83c\udfff\u200d\u2642\ufe0f": "man juggling: dark skin tone", - "\ud83e\udd3c\u200d\u2640\ufe0f": "women wrestling", - "\ud83e\udd3c\u200d\u2642\ufe0f": "men wrestling", - "\ud83e\udd3d\u200d\u2640\ufe0f": "woman playing water polo", - "\ud83e\udd3d\u200d\u2642\ufe0f": "man playing water polo", - "\ud83e\udd3d\ud83c\udffb\u200d\u2640\ufe0f": "woman playing water polo: light skin tone", - "\ud83e\udd3d\ud83c\udffb\u200d\u2642\ufe0f": "man playing water polo: light skin tone", - "\ud83e\udd3d\ud83c\udffc\u200d\u2640\ufe0f": "woman playing water polo: medium-light skin tone", - "\ud83e\udd3d\ud83c\udffc\u200d\u2642\ufe0f": "man playing water polo: medium-light skin tone", - "\ud83e\udd3d\ud83c\udffd\u200d\u2640\ufe0f": "woman playing water polo: medium skin tone", - "\ud83e\udd3d\ud83c\udffd\u200d\u2642\ufe0f": "man playing water polo: medium skin tone", - "\ud83e\udd3d\ud83c\udffe\u200d\u2640\ufe0f": "woman playing water polo: medium-dark skin tone", - "\ud83e\udd3d\ud83c\udffe\u200d\u2642\ufe0f": "man playing water polo: medium-dark skin tone", - "\ud83e\udd3d\ud83c\udfff\u200d\u2640\ufe0f": "woman playing water polo: dark skin tone", - "\ud83e\udd3d\ud83c\udfff\u200d\u2642\ufe0f": "man playing water polo: dark skin tone", - "\ud83e\udd3e\u200d\u2640\ufe0f": "woman playing handball", - "\ud83e\udd3e\u200d\u2642\ufe0f": "man playing handball", - "\ud83e\udd3e\ud83c\udffb\u200d\u2640\ufe0f": "woman playing handball: light skin tone", - "\ud83e\udd3e\ud83c\udffb\u200d\u2642\ufe0f": "man playing handball: light skin tone", - "\ud83e\udd3e\ud83c\udffc\u200d\u2640\ufe0f": "woman playing handball: medium-light skin tone", - "\ud83e\udd3e\ud83c\udffc\u200d\u2642\ufe0f": "man playing handball: medium-light skin tone", - "\ud83e\udd3e\ud83c\udffd\u200d\u2640\ufe0f": "woman playing handball: medium skin tone", - "\ud83e\udd3e\ud83c\udffd\u200d\u2642\ufe0f": "man playing handball: medium skin tone", - "\ud83e\udd3e\ud83c\udffe\u200d\u2640\ufe0f": "woman playing handball: medium-dark skin tone", - "\ud83e\udd3e\ud83c\udffe\u200d\u2642\ufe0f": "man playing handball: medium-dark skin tone", - "\ud83e\udd3e\ud83c\udfff\u200d\u2640\ufe0f": "woman playing handball: dark skin tone", - "\ud83e\udd3e\ud83c\udfff\u200d\u2642\ufe0f": "man playing handball: dark skin tone", - "\ud83e\uddb8\u200d\u2640\ufe0f": "woman superhero", - "\ud83e\uddb8\u200d\u2642\ufe0f": "man superhero", - "\ud83e\uddb8\ud83c\udffb\u200d\u2640\ufe0f": "woman superhero: light skin tone", - "\ud83e\uddb8\ud83c\udffb\u200d\u2642\ufe0f": "man superhero: light skin tone", - "\ud83e\uddb8\ud83c\udffc\u200d\u2640\ufe0f": "woman superhero: medium-light skin tone", - "\ud83e\uddb8\ud83c\udffc\u200d\u2642\ufe0f": "man superhero: medium-light skin tone", - "\ud83e\uddb8\ud83c\udffd\u200d\u2640\ufe0f": "woman superhero: medium skin tone", - "\ud83e\uddb8\ud83c\udffd\u200d\u2642\ufe0f": "man superhero: medium skin tone", - "\ud83e\uddb8\ud83c\udffe\u200d\u2640\ufe0f": "woman superhero: medium-dark skin tone", - "\ud83e\uddb8\ud83c\udffe\u200d\u2642\ufe0f": "man superhero: medium-dark skin tone", - "\ud83e\uddb8\ud83c\udfff\u200d\u2640\ufe0f": "woman superhero: dark skin tone", - "\ud83e\uddb8\ud83c\udfff\u200d\u2642\ufe0f": "man superhero: dark skin tone", - "\ud83e\uddb9\u200d\u2640\ufe0f": "woman supervillain", - "\ud83e\uddb9\u200d\u2642\ufe0f": "man supervillain", - "\ud83e\uddb9\ud83c\udffb\u200d\u2640\ufe0f": "woman supervillain: light skin tone", - "\ud83e\uddb9\ud83c\udffb\u200d\u2642\ufe0f": "man supervillain: light skin tone", - "\ud83e\uddb9\ud83c\udffc\u200d\u2640\ufe0f": "woman supervillain: medium-light skin tone", - "\ud83e\uddb9\ud83c\udffc\u200d\u2642\ufe0f": "man supervillain: medium-light skin tone", - "\ud83e\uddb9\ud83c\udffd\u200d\u2640\ufe0f": "woman supervillain: medium skin tone", - "\ud83e\uddb9\ud83c\udffd\u200d\u2642\ufe0f": "man supervillain: medium skin tone", - "\ud83e\uddb9\ud83c\udffe\u200d\u2640\ufe0f": "woman supervillain: medium-dark skin tone", - "\ud83e\uddb9\ud83c\udffe\u200d\u2642\ufe0f": "man supervillain: medium-dark skin tone", - "\ud83e\uddb9\ud83c\udfff\u200d\u2640\ufe0f": "woman supervillain: dark skin tone", - "\ud83e\uddb9\ud83c\udfff\u200d\u2642\ufe0f": "man supervillain: dark skin tone", - "\ud83e\uddcd\u200d\u2640\ufe0f": "woman standing", - "\ud83e\uddcd\u200d\u2642\ufe0f": "man standing", - "\ud83e\uddcd\ud83c\udffb\u200d\u2640\ufe0f": "woman standing: light skin tone", - "\ud83e\uddcd\ud83c\udffb\u200d\u2642\ufe0f": "man standing: light skin tone", - "\ud83e\uddcd\ud83c\udffc\u200d\u2640\ufe0f": "woman standing: medium-light skin tone", - "\ud83e\uddcd\ud83c\udffc\u200d\u2642\ufe0f": "man standing: medium-light skin tone", - "\ud83e\uddcd\ud83c\udffd\u200d\u2640\ufe0f": "woman standing: medium skin tone", - "\ud83e\uddcd\ud83c\udffd\u200d\u2642\ufe0f": "man standing: medium skin tone", - "\ud83e\uddcd\ud83c\udffe\u200d\u2640\ufe0f": "woman standing: medium-dark skin tone", - "\ud83e\uddcd\ud83c\udffe\u200d\u2642\ufe0f": "man standing: medium-dark skin tone", - "\ud83e\uddcd\ud83c\udfff\u200d\u2640\ufe0f": "woman standing: dark skin tone", - "\ud83e\uddcd\ud83c\udfff\u200d\u2642\ufe0f": "man standing: dark skin tone", - "\ud83e\uddce\u200d\u2640\ufe0f": "woman kneeling", - "\ud83e\uddce\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman kneeling facing right", - "\ud83e\uddce\u200d\u2642\ufe0f": "man kneeling", - "\ud83e\uddce\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man kneeling facing right", - "\ud83e\uddce\u200d\u27a1\ufe0f": "person kneeling facing right", - "\ud83e\uddce\ud83c\udffb\u200d\u2640\ufe0f": "woman kneeling: light skin tone", - "\ud83e\uddce\ud83c\udffb\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman kneeling facing right: light skin tone", - "\ud83e\uddce\ud83c\udffb\u200d\u2642\ufe0f": "man kneeling: light skin tone", - "\ud83e\uddce\ud83c\udffb\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man kneeling facing right: light skin tone", - "\ud83e\uddce\ud83c\udffb\u200d\u27a1\ufe0f": "person kneeling facing right: light skin tone", - "\ud83e\uddce\ud83c\udffc\u200d\u2640\ufe0f": "woman kneeling: medium-light skin tone", - "\ud83e\uddce\ud83c\udffc\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman kneeling facing right: medium-light skin tone", - "\ud83e\uddce\ud83c\udffc\u200d\u2642\ufe0f": "man kneeling: medium-light skin tone", - "\ud83e\uddce\ud83c\udffc\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man kneeling facing right: medium-light skin tone", - "\ud83e\uddce\ud83c\udffc\u200d\u27a1\ufe0f": "person kneeling facing right: medium-light skin tone", - "\ud83e\uddce\ud83c\udffd\u200d\u2640\ufe0f": "woman kneeling: medium skin tone", - "\ud83e\uddce\ud83c\udffd\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman kneeling facing right: medium skin tone", - "\ud83e\uddce\ud83c\udffd\u200d\u2642\ufe0f": "man kneeling: medium skin tone", - "\ud83e\uddce\ud83c\udffd\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man kneeling facing right: medium skin tone", - "\ud83e\uddce\ud83c\udffd\u200d\u27a1\ufe0f": "person kneeling facing right: medium skin tone", - "\ud83e\uddce\ud83c\udffe\u200d\u2640\ufe0f": "woman kneeling: medium-dark skin tone", - "\ud83e\uddce\ud83c\udffe\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman kneeling facing right: medium-dark skin tone", - "\ud83e\uddce\ud83c\udffe\u200d\u2642\ufe0f": "man kneeling: medium-dark skin tone", - "\ud83e\uddce\ud83c\udffe\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man kneeling facing right: medium-dark skin tone", - "\ud83e\uddce\ud83c\udffe\u200d\u27a1\ufe0f": "person kneeling facing right: medium-dark skin tone", - "\ud83e\uddce\ud83c\udfff\u200d\u2640\ufe0f": "woman kneeling: dark skin tone", - "\ud83e\uddce\ud83c\udfff\u200d\u2640\ufe0f\u200d\u27a1\ufe0f": "woman kneeling facing right: dark skin tone", - "\ud83e\uddce\ud83c\udfff\u200d\u2642\ufe0f": "man kneeling: dark skin tone", - "\ud83e\uddce\ud83c\udfff\u200d\u2642\ufe0f\u200d\u27a1\ufe0f": "man kneeling facing right: dark skin tone", - "\ud83e\uddce\ud83c\udfff\u200d\u27a1\ufe0f": "person kneeling facing right: dark skin tone", - "\ud83e\uddcf\u200d\u2640\ufe0f": "deaf woman", - "\ud83e\uddcf\u200d\u2642\ufe0f": "deaf man", - "\ud83e\uddcf\ud83c\udffb\u200d\u2640\ufe0f": "deaf woman: light skin tone", - "\ud83e\uddcf\ud83c\udffb\u200d\u2642\ufe0f": "deaf man: light skin tone", - "\ud83e\uddcf\ud83c\udffc\u200d\u2640\ufe0f": "deaf woman: medium-light skin tone", - "\ud83e\uddcf\ud83c\udffc\u200d\u2642\ufe0f": "deaf man: medium-light skin tone", - "\ud83e\uddcf\ud83c\udffd\u200d\u2640\ufe0f": "deaf woman: medium skin tone", - "\ud83e\uddcf\ud83c\udffd\u200d\u2642\ufe0f": "deaf man: medium skin tone", - "\ud83e\uddcf\ud83c\udffe\u200d\u2640\ufe0f": "deaf woman: medium-dark skin tone", - "\ud83e\uddcf\ud83c\udffe\u200d\u2642\ufe0f": "deaf man: medium-dark skin tone", - "\ud83e\uddcf\ud83c\udfff\u200d\u2640\ufe0f": "deaf woman: dark skin tone", - "\ud83e\uddcf\ud83c\udfff\u200d\u2642\ufe0f": "deaf man: dark skin tone", - "\ud83e\uddd1\u200d\u2695\ufe0f": "health worker", - "\ud83e\uddd1\u200d\u2696\ufe0f": "judge", - "\ud83e\uddd1\u200d\u2708\ufe0f": "pilot", - "\ud83e\uddd1\u200d\ud83c\udf3e": "farmer", - "\ud83e\uddd1\u200d\ud83c\udf73": "cook", - "\ud83e\uddd1\u200d\ud83c\udf7c": "person feeding baby", - "\ud83e\uddd1\u200d\ud83c\udf84": "mx claus", - "\ud83e\uddd1\u200d\ud83c\udf93": "student", - "\ud83e\uddd1\u200d\ud83c\udfa4": "singer", - "\ud83e\uddd1\u200d\ud83c\udfa8": "artist", - "\ud83e\uddd1\u200d\ud83c\udfeb": "teacher", - "\ud83e\uddd1\u200d\ud83c\udfed": "factory worker", - "\ud83e\uddd1\u200d\ud83d\udcbb": "technologist", - "\ud83e\uddd1\u200d\ud83d\udcbc": "office worker", - "\ud83e\uddd1\u200d\ud83d\udd27": "mechanic", - "\ud83e\uddd1\u200d\ud83d\udd2c": "scientist", - "\ud83e\uddd1\u200d\ud83d\ude80": "astronaut", - "\ud83e\uddd1\u200d\ud83d\ude92": "firefighter", - "\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1": "people holding hands", - "\ud83e\uddd1\u200d\ud83e\uddaf": "person with white cane", - "\ud83e\uddd1\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "person with white cane facing right", - "\ud83e\uddd1\u200d\ud83e\uddb0": "person: red hair", - "\ud83e\uddd1\u200d\ud83e\uddb1": "person: curly hair", - "\ud83e\uddd1\u200d\ud83e\uddb2": "person: bald", - "\ud83e\uddd1\u200d\ud83e\uddb3": "person: white hair", - "\ud83e\uddd1\u200d\ud83e\uddbc": "person in motorized wheelchair", - "\ud83e\uddd1\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "person in motorized wheelchair facing right", - "\ud83e\uddd1\u200d\ud83e\uddbd": "person in manual wheelchair", - "\ud83e\uddd1\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "person in manual wheelchair facing right", - "\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2": "family: adult, adult, child", - "\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2": "family: adult, adult, child, child", - "\ud83e\uddd1\u200d\ud83e\uddd2": "family: adult, child", - "\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2": "family: adult, child, child", - "\ud83e\uddd1\ud83c\udffb\u200d\u2695\ufe0f": "health worker: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\u2696\ufe0f": "judge: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\u2708\ufe0f": "pilot: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf3e": "farmer: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf73": "cook: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf7c": "person feeding baby: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf84": "mx claus: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf93": "student: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfa4": "singer: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfa8": "artist: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfeb": "teacher: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfed": "factory worker: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udcbb": "technologist: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udcbc": "office worker: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udd27": "mechanic: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udd2c": "scientist: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83d\ude80": "astronaut: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83d\ude92": "firefighter: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddaf": "person with white cane: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "person with white cane facing right: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb0": "person: light skin tone, red hair", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb1": "person: light skin tone, curly hair", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb2": "person: light skin tone, bald", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb3": "person: light skin tone, white hair", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddbc": "person in motorized wheelchair: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "person in motorized wheelchair facing right: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddbd": "person in manual wheelchair: light skin tone", - "\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "person in manual wheelchair facing right: light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\u2695\ufe0f": "health worker: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\u2696\ufe0f": "judge: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\u2708\ufe0f": "pilot: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf3e": "farmer: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf73": "cook: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf7c": "person feeding baby: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf84": "mx claus: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf93": "student: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfa4": "singer: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfa8": "artist: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfeb": "teacher: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfed": "factory worker: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udcbb": "technologist: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udcbc": "office worker: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udd27": "mechanic: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udd2c": "scientist: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83d\ude80": "astronaut: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83d\ude92": "firefighter: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddaf": "person with white cane: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "person with white cane facing right: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb0": "person: medium-light skin tone, red hair", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb1": "person: medium-light skin tone, curly hair", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb2": "person: medium-light skin tone, bald", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb3": "person: medium-light skin tone, white hair", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddbc": "person in motorized wheelchair: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "person in motorized wheelchair facing right: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddbd": "person in manual wheelchair: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "person in manual wheelchair facing right: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\u2695\ufe0f": "health worker: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\u2696\ufe0f": "judge: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\u2708\ufe0f": "pilot: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf3e": "farmer: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf73": "cook: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf7c": "person feeding baby: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf84": "mx claus: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf93": "student: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfa4": "singer: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfa8": "artist: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfeb": "teacher: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfed": "factory worker: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udcbb": "technologist: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udcbc": "office worker: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udd27": "mechanic: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udd2c": "scientist: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83d\ude80": "astronaut: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83d\ude92": "firefighter: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddaf": "person with white cane: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "person with white cane facing right: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb0": "person: medium skin tone, red hair", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb1": "person: medium skin tone, curly hair", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb2": "person: medium skin tone, bald", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb3": "person: medium skin tone, white hair", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddbc": "person in motorized wheelchair: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "person in motorized wheelchair facing right: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddbd": "person in manual wheelchair: medium skin tone", - "\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "person in manual wheelchair facing right: medium skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\u2695\ufe0f": "health worker: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\u2696\ufe0f": "judge: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\u2708\ufe0f": "pilot: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf3e": "farmer: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf73": "cook: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf7c": "person feeding baby: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf84": "mx claus: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf93": "student: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfa4": "singer: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfa8": "artist: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfeb": "teacher: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfed": "factory worker: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udcbb": "technologist: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udcbc": "office worker: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udd27": "mechanic: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udd2c": "scientist: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83d\ude80": "astronaut: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83d\ude92": "firefighter: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddaf": "person with white cane: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "person with white cane facing right: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb0": "person: medium-dark skin tone, red hair", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb1": "person: medium-dark skin tone, curly hair", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb2": "person: medium-dark skin tone, bald", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb3": "person: medium-dark skin tone, white hair", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddbc": "person in motorized wheelchair: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "person in motorized wheelchair facing right: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddbd": "person in manual wheelchair: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "person in manual wheelchair facing right: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\u2695\ufe0f": "health worker: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\u2696\ufe0f": "judge: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\u2708\ufe0f": "pilot: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf3e": "farmer: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf73": "cook: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf7c": "person feeding baby: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf84": "mx claus: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf93": "student: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfa4": "singer: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfa8": "artist: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfeb": "teacher: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfed": "factory worker: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udcbb": "technologist: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udcbc": "office worker: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udd27": "mechanic: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udd2c": "scientist: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83d\ude80": "astronaut: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83d\ude92": "firefighter: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddaf": "person with white cane: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddaf\u200d\u27a1\ufe0f": "person with white cane facing right: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb0": "person: dark skin tone, red hair", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb1": "person: dark skin tone, curly hair", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb2": "person: dark skin tone, bald", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb3": "person: dark skin tone, white hair", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddbc": "person in motorized wheelchair: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddbc\u200d\u27a1\ufe0f": "person in motorized wheelchair facing right: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddbd": "person in manual wheelchair: dark skin tone", - "\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddbd\u200d\u27a1\ufe0f": "person in manual wheelchair facing right: dark skin tone", - "\ud83e\uddd4\u200d\u2640\ufe0f": "woman: beard", - "\ud83e\uddd4\u200d\u2642\ufe0f": "man: beard", - "\ud83e\uddd4\ud83c\udffb\u200d\u2640\ufe0f": "woman: light skin tone, beard", - "\ud83e\uddd4\ud83c\udffb\u200d\u2642\ufe0f": "man: light skin tone, beard", - "\ud83e\uddd4\ud83c\udffc\u200d\u2640\ufe0f": "woman: medium-light skin tone, beard", - "\ud83e\uddd4\ud83c\udffc\u200d\u2642\ufe0f": "man: medium-light skin tone, beard", - "\ud83e\uddd4\ud83c\udffd\u200d\u2640\ufe0f": "woman: medium skin tone, beard", - "\ud83e\uddd4\ud83c\udffd\u200d\u2642\ufe0f": "man: medium skin tone, beard", - "\ud83e\uddd4\ud83c\udffe\u200d\u2640\ufe0f": "woman: medium-dark skin tone, beard", - "\ud83e\uddd4\ud83c\udffe\u200d\u2642\ufe0f": "man: medium-dark skin tone, beard", - "\ud83e\uddd4\ud83c\udfff\u200d\u2640\ufe0f": "woman: dark skin tone, beard", - "\ud83e\uddd4\ud83c\udfff\u200d\u2642\ufe0f": "man: dark skin tone, beard", - "\ud83e\uddd6\u200d\u2640\ufe0f": "woman in steamy room", - "\ud83e\uddd6\u200d\u2642\ufe0f": "man in steamy room", - "\ud83e\uddd6\ud83c\udffb\u200d\u2640\ufe0f": "woman in steamy room: light skin tone", - "\ud83e\uddd6\ud83c\udffb\u200d\u2642\ufe0f": "man in steamy room: light skin tone", - "\ud83e\uddd6\ud83c\udffc\u200d\u2640\ufe0f": "woman in steamy room: medium-light skin tone", - "\ud83e\uddd6\ud83c\udffc\u200d\u2642\ufe0f": "man in steamy room: medium-light skin tone", - "\ud83e\uddd6\ud83c\udffd\u200d\u2640\ufe0f": "woman in steamy room: medium skin tone", - "\ud83e\uddd6\ud83c\udffd\u200d\u2642\ufe0f": "man in steamy room: medium skin tone", - "\ud83e\uddd6\ud83c\udffe\u200d\u2640\ufe0f": "woman in steamy room: medium-dark skin tone", - "\ud83e\uddd6\ud83c\udffe\u200d\u2642\ufe0f": "man in steamy room: medium-dark skin tone", - "\ud83e\uddd6\ud83c\udfff\u200d\u2640\ufe0f": "woman in steamy room: dark skin tone", - "\ud83e\uddd6\ud83c\udfff\u200d\u2642\ufe0f": "man in steamy room: dark skin tone", - "\ud83e\uddd7\u200d\u2640\ufe0f": "woman climbing", - "\ud83e\uddd7\u200d\u2642\ufe0f": "man climbing", - "\ud83e\uddd7\ud83c\udffb\u200d\u2640\ufe0f": "woman climbing: light skin tone", - "\ud83e\uddd7\ud83c\udffb\u200d\u2642\ufe0f": "man climbing: light skin tone", - "\ud83e\uddd7\ud83c\udffc\u200d\u2640\ufe0f": "woman climbing: medium-light skin tone", - "\ud83e\uddd7\ud83c\udffc\u200d\u2642\ufe0f": "man climbing: medium-light skin tone", - "\ud83e\uddd7\ud83c\udffd\u200d\u2640\ufe0f": "woman climbing: medium skin tone", - "\ud83e\uddd7\ud83c\udffd\u200d\u2642\ufe0f": "man climbing: medium skin tone", - "\ud83e\uddd7\ud83c\udffe\u200d\u2640\ufe0f": "woman climbing: medium-dark skin tone", - "\ud83e\uddd7\ud83c\udffe\u200d\u2642\ufe0f": "man climbing: medium-dark skin tone", - "\ud83e\uddd7\ud83c\udfff\u200d\u2640\ufe0f": "woman climbing: dark skin tone", - "\ud83e\uddd7\ud83c\udfff\u200d\u2642\ufe0f": "man climbing: dark skin tone", - "\ud83e\uddd8\u200d\u2640\ufe0f": "woman in lotus position", - "\ud83e\uddd8\u200d\u2642\ufe0f": "man in lotus position", - "\ud83e\uddd8\ud83c\udffb\u200d\u2640\ufe0f": "woman in lotus position: light skin tone", - "\ud83e\uddd8\ud83c\udffb\u200d\u2642\ufe0f": "man in lotus position: light skin tone", - "\ud83e\uddd8\ud83c\udffc\u200d\u2640\ufe0f": "woman in lotus position: medium-light skin tone", - "\ud83e\uddd8\ud83c\udffc\u200d\u2642\ufe0f": "man in lotus position: medium-light skin tone", - "\ud83e\uddd8\ud83c\udffd\u200d\u2640\ufe0f": "woman in lotus position: medium skin tone", - "\ud83e\uddd8\ud83c\udffd\u200d\u2642\ufe0f": "man in lotus position: medium skin tone", - "\ud83e\uddd8\ud83c\udffe\u200d\u2640\ufe0f": "woman in lotus position: medium-dark skin tone", - "\ud83e\uddd8\ud83c\udffe\u200d\u2642\ufe0f": "man in lotus position: medium-dark skin tone", - "\ud83e\uddd8\ud83c\udfff\u200d\u2640\ufe0f": "woman in lotus position: dark skin tone", - "\ud83e\uddd8\ud83c\udfff\u200d\u2642\ufe0f": "man in lotus position: dark skin tone", - "\ud83e\uddd9\u200d\u2640\ufe0f": "woman mage", - "\ud83e\uddd9\u200d\u2642\ufe0f": "man mage", - "\ud83e\uddd9\ud83c\udffb\u200d\u2640\ufe0f": "woman mage: light skin tone", - "\ud83e\uddd9\ud83c\udffb\u200d\u2642\ufe0f": "man mage: light skin tone", - "\ud83e\uddd9\ud83c\udffc\u200d\u2640\ufe0f": "woman mage: medium-light skin tone", - "\ud83e\uddd9\ud83c\udffc\u200d\u2642\ufe0f": "man mage: medium-light skin tone", - "\ud83e\uddd9\ud83c\udffd\u200d\u2640\ufe0f": "woman mage: medium skin tone", - "\ud83e\uddd9\ud83c\udffd\u200d\u2642\ufe0f": "man mage: medium skin tone", - "\ud83e\uddd9\ud83c\udffe\u200d\u2640\ufe0f": "woman mage: medium-dark skin tone", - "\ud83e\uddd9\ud83c\udffe\u200d\u2642\ufe0f": "man mage: medium-dark skin tone", - "\ud83e\uddd9\ud83c\udfff\u200d\u2640\ufe0f": "woman mage: dark skin tone", - "\ud83e\uddd9\ud83c\udfff\u200d\u2642\ufe0f": "man mage: dark skin tone", - "\ud83e\uddda\u200d\u2640\ufe0f": "woman fairy", - "\ud83e\uddda\u200d\u2642\ufe0f": "man fairy", - "\ud83e\uddda\ud83c\udffb\u200d\u2640\ufe0f": "woman fairy: light skin tone", - "\ud83e\uddda\ud83c\udffb\u200d\u2642\ufe0f": "man fairy: light skin tone", - "\ud83e\uddda\ud83c\udffc\u200d\u2640\ufe0f": "woman fairy: medium-light skin tone", - "\ud83e\uddda\ud83c\udffc\u200d\u2642\ufe0f": "man fairy: medium-light skin tone", - "\ud83e\uddda\ud83c\udffd\u200d\u2640\ufe0f": "woman fairy: medium skin tone", - "\ud83e\uddda\ud83c\udffd\u200d\u2642\ufe0f": "man fairy: medium skin tone", - "\ud83e\uddda\ud83c\udffe\u200d\u2640\ufe0f": "woman fairy: medium-dark skin tone", - "\ud83e\uddda\ud83c\udffe\u200d\u2642\ufe0f": "man fairy: medium-dark skin tone", - "\ud83e\uddda\ud83c\udfff\u200d\u2640\ufe0f": "woman fairy: dark skin tone", - "\ud83e\uddda\ud83c\udfff\u200d\u2642\ufe0f": "man fairy: dark skin tone", - "\ud83e\udddb\u200d\u2640\ufe0f": "woman vampire", - "\ud83e\udddb\u200d\u2642\ufe0f": "man vampire", - "\ud83e\udddb\ud83c\udffb\u200d\u2640\ufe0f": "woman vampire: light skin tone", - "\ud83e\udddb\ud83c\udffb\u200d\u2642\ufe0f": "man vampire: light skin tone", - "\ud83e\udddb\ud83c\udffc\u200d\u2640\ufe0f": "woman vampire: medium-light skin tone", - "\ud83e\udddb\ud83c\udffc\u200d\u2642\ufe0f": "man vampire: medium-light skin tone", - "\ud83e\udddb\ud83c\udffd\u200d\u2640\ufe0f": "woman vampire: medium skin tone", - "\ud83e\udddb\ud83c\udffd\u200d\u2642\ufe0f": "man vampire: medium skin tone", - "\ud83e\udddb\ud83c\udffe\u200d\u2640\ufe0f": "woman vampire: medium-dark skin tone", - "\ud83e\udddb\ud83c\udffe\u200d\u2642\ufe0f": "man vampire: medium-dark skin tone", - "\ud83e\udddb\ud83c\udfff\u200d\u2640\ufe0f": "woman vampire: dark skin tone", - "\ud83e\udddb\ud83c\udfff\u200d\u2642\ufe0f": "man vampire: dark skin tone", - "\ud83e\udddc\u200d\u2640\ufe0f": "mermaid", - "\ud83e\udddc\u200d\u2642\ufe0f": "merman", - "\ud83e\udddc\ud83c\udffb\u200d\u2640\ufe0f": "mermaid: light skin tone", - "\ud83e\udddc\ud83c\udffb\u200d\u2642\ufe0f": "merman: light skin tone", - "\ud83e\udddc\ud83c\udffc\u200d\u2640\ufe0f": "mermaid: medium-light skin tone", - "\ud83e\udddc\ud83c\udffc\u200d\u2642\ufe0f": "merman: medium-light skin tone", - "\ud83e\udddc\ud83c\udffd\u200d\u2640\ufe0f": "mermaid: medium skin tone", - "\ud83e\udddc\ud83c\udffd\u200d\u2642\ufe0f": "merman: medium skin tone", - "\ud83e\udddc\ud83c\udffe\u200d\u2640\ufe0f": "mermaid: medium-dark skin tone", - "\ud83e\udddc\ud83c\udffe\u200d\u2642\ufe0f": "merman: medium-dark skin tone", - "\ud83e\udddc\ud83c\udfff\u200d\u2640\ufe0f": "mermaid: dark skin tone", - "\ud83e\udddc\ud83c\udfff\u200d\u2642\ufe0f": "merman: dark skin tone", - "\ud83e\udddd\u200d\u2640\ufe0f": "woman elf", - "\ud83e\udddd\u200d\u2642\ufe0f": "man elf", - "\ud83e\udddd\ud83c\udffb\u200d\u2640\ufe0f": "woman elf: light skin tone", - "\ud83e\udddd\ud83c\udffb\u200d\u2642\ufe0f": "man elf: light skin tone", - "\ud83e\udddd\ud83c\udffc\u200d\u2640\ufe0f": "woman elf: medium-light skin tone", - "\ud83e\udddd\ud83c\udffc\u200d\u2642\ufe0f": "man elf: medium-light skin tone", - "\ud83e\udddd\ud83c\udffd\u200d\u2640\ufe0f": "woman elf: medium skin tone", - "\ud83e\udddd\ud83c\udffd\u200d\u2642\ufe0f": "man elf: medium skin tone", - "\ud83e\udddd\ud83c\udffe\u200d\u2640\ufe0f": "woman elf: medium-dark skin tone", - "\ud83e\udddd\ud83c\udffe\u200d\u2642\ufe0f": "man elf: medium-dark skin tone", - "\ud83e\udddd\ud83c\udfff\u200d\u2640\ufe0f": "woman elf: dark skin tone", - "\ud83e\udddd\ud83c\udfff\u200d\u2642\ufe0f": "man elf: dark skin tone", - "\ud83e\uddde\u200d\u2640\ufe0f": "woman genie", - "\ud83e\uddde\u200d\u2642\ufe0f": "man genie", - "\ud83e\udddf\u200d\u2640\ufe0f": "woman zombie", - "\ud83e\udddf\u200d\u2642\ufe0f": "man zombie", - "\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udffc": "handshake: light skin tone, medium-light skin tone", - "\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udffd": "handshake: light skin tone, medium skin tone", - "\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udffe": "handshake: light skin tone, medium-dark skin tone", - "\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff": "handshake: light skin tone, dark skin tone", - "\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c\udffb": "handshake: medium-light skin tone, light skin tone", - "\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c\udffd": "handshake: medium-light skin tone, medium skin tone", - "\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c\udffe": "handshake: medium-light skin tone, medium-dark skin tone", - "\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c\udfff": "handshake: medium-light skin tone, dark skin tone", - "\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c\udffb": "handshake: medium skin tone, light skin tone", - "\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c\udffc": "handshake: medium skin tone, medium-light skin tone", - "\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c\udffe": "handshake: medium skin tone, medium-dark skin tone", - "\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c\udfff": "handshake: medium skin tone, dark skin tone", - "\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c\udffb": "handshake: medium-dark skin tone, light skin tone", - "\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c\udffc": "handshake: medium-dark skin tone, medium-light skin tone", - "\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c\udffd": "handshake: medium-dark skin tone, medium skin tone", - "\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c\udfff": "handshake: medium-dark skin tone, dark skin tone", - "\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c\udffb": "handshake: dark skin tone, light skin tone", - "\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c\udffc": "handshake: dark skin tone, medium-light skin tone", - "\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c\udffd": "handshake: dark skin tone, medium skin tone", - "\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c\udffe": "handshake: dark skin tone, medium-dark skin tone" -} diff --git a/src/typescript/sdk/src/emoji_data/chat-emojis.ts b/src/typescript/sdk/src/emoji_data/chat-emojis.ts new file mode 100644 index 000000000..67d606e43 --- /dev/null +++ b/src/typescript/sdk/src/emoji_data/chat-emojis.ts @@ -0,0 +1,1215 @@ +// cspell:disable + +export const CHAT_EMOJIS = { + "🧑‍🎨": "artist", + "🧑🏿‍🎨": "artist: dark skin tone", + "🧑🏻‍🎨": "artist: light skin tone", + "🧑🏽‍🎨": "artist: medium skin tone", + "🧑🏾‍🎨": "artist: medium-dark skin tone", + "🧑🏼‍🎨": "artist: medium-light skin tone", + "🧑‍🚀": "astronaut", + "🧑🏿‍🚀": "astronaut: dark skin tone", + "🧑🏻‍🚀": "astronaut: light skin tone", + "🧑🏽‍🚀": "astronaut: medium skin tone", + "🧑🏾‍🚀": "astronaut: medium-dark skin tone", + "🧑🏼‍🚀": "astronaut: medium-light skin tone", + "⛓️‍💥": "broken chain", + "🍄‍🟫": "brown mushroom", + "🧑‍🍳": "cook", + "🧑🏿‍🍳": "cook: dark skin tone", + "🧑🏻‍🍳": "cook: light skin tone", + "🧑🏽‍🍳": "cook: medium skin tone", + "🧑🏾‍🍳": "cook: medium-dark skin tone", + "🧑🏼‍🍳": "cook: medium-light skin tone", + "👨‍❤️‍👨": "couple with heart: man, man", + "👩‍❤️‍👨": "couple with heart: woman, man", + "👩‍❤️‍👩": "couple with heart: woman, woman", + "🧏‍♂️": "deaf man", + "🧏🏿‍♂️": "deaf man: dark skin tone", + "🧏🏻‍♂️": "deaf man: light skin tone", + "🧏🏽‍♂️": "deaf man: medium skin tone", + "🧏🏾‍♂️": "deaf man: medium-dark skin tone", + "🧏🏼‍♂️": "deaf man: medium-light skin tone", + "🧏‍♀️": "deaf woman", + "🧏🏿‍♀️": "deaf woman: dark skin tone", + "🧏🏻‍♀️": "deaf woman: light skin tone", + "🧏🏽‍♀️": "deaf woman: medium skin tone", + "🧏🏾‍♀️": "deaf woman: medium-dark skin tone", + "🧏🏼‍♀️": "deaf woman: medium-light skin tone", + "👁️‍🗨️": "eye in speech bubble", + "😮‍💨": "face exhaling", + "😶‍🌫️": "face in clouds", + "😵‍💫": "face with spiral eyes", + "🧑‍🏭": "factory worker", + "🧑🏿‍🏭": "factory worker: dark skin tone", + "🧑🏻‍🏭": "factory worker: light skin tone", + "🧑🏽‍🏭": "factory worker: medium skin tone", + "🧑🏾‍🏭": "factory worker: medium-dark skin tone", + "🧑🏼‍🏭": "factory worker: medium-light skin tone", + "🧑‍🧑‍🧒": "family: adult, adult, child", + "🧑‍🧑‍🧒‍🧒": "family: adult, adult, child, child", + "🧑‍🧒": "family: adult, child", + "🧑‍🧒‍🧒": "family: adult, child, child", + "👨‍👦": "family: man, boy", + "👨‍👦‍👦": "family: man, boy, boy", + "👨‍👧": "family: man, girl", + "👨‍👧‍👦": "family: man, girl, boy", + "👨‍👧‍👧": "family: man, girl, girl", + "👨‍👨‍👦": "family: man, man, boy", + "👨‍👨‍👦‍👦": "family: man, man, boy, boy", + "👨‍👨‍👧": "family: man, man, girl", + "👨‍👨‍👧‍👦": "family: man, man, girl, boy", + "👨‍👨‍👧‍👧": "family: man, man, girl, girl", + "👨‍👩‍👦": "family: man, woman, boy", + "👨‍👩‍👦‍👦": "family: man, woman, boy, boy", + "👨‍👩‍👧": "family: man, woman, girl", + "👨‍👩‍👧‍👦": "family: man, woman, girl, boy", + "👨‍👩‍👧‍👧": "family: man, woman, girl, girl", + "👩‍👦": "family: woman, boy", + "👩‍👦‍👦": "family: woman, boy, boy", + "👩‍👧": "family: woman, girl", + "👩‍👧‍👦": "family: woman, girl, boy", + "👩‍👧‍👧": "family: woman, girl, girl", + "👩‍👩‍👦": "family: woman, woman, boy", + "👩‍👩‍👦‍👦": "family: woman, woman, boy, boy", + "👩‍👩‍👧": "family: woman, woman, girl", + "👩‍👩‍👧‍👦": "family: woman, woman, girl, boy", + "👩‍👩‍👧‍👧": "family: woman, woman, girl, girl", + "🧑‍🌾": "farmer", + "🧑🏿‍🌾": "farmer: dark skin tone", + "🧑🏻‍🌾": "farmer: light skin tone", + "🧑🏽‍🌾": "farmer: medium skin tone", + "🧑🏾‍🌾": "farmer: medium-dark skin tone", + "🧑🏼‍🌾": "farmer: medium-light skin tone", + "🧑‍🚒": "firefighter", + "🧑🏿‍🚒": "firefighter: dark skin tone", + "🧑🏻‍🚒": "firefighter: light skin tone", + "🧑🏽‍🚒": "firefighter: medium skin tone", + "🧑🏾‍🚒": "firefighter: medium-dark skin tone", + "🧑🏼‍🚒": "firefighter: medium-light skin tone", + "🏴󠁧󠁢󠁥󠁮󠁧󠁿": "flag: England", + "🏴󠁧󠁢󠁳󠁣󠁴󠁿": "flag: Scotland", + "🏴󠁧󠁢󠁷󠁬󠁳󠁿": "flag: Wales", + "🫱🏿‍🫲🏻": "handshake: dark skin tone, light skin tone", + "🫱🏿‍🫲🏽": "handshake: dark skin tone, medium skin tone", + "🫱🏿‍🫲🏾": "handshake: dark skin tone, medium-dark skin tone", + "🫱🏿‍🫲🏼": "handshake: dark skin tone, medium-light skin tone", + "🫱🏻‍🫲🏿": "handshake: light skin tone, dark skin tone", + "🫱🏻‍🫲🏽": "handshake: light skin tone, medium skin tone", + "🫱🏻‍🫲🏾": "handshake: light skin tone, medium-dark skin tone", + "🫱🏻‍🫲🏼": "handshake: light skin tone, medium-light skin tone", + "🫱🏽‍🫲🏿": "handshake: medium skin tone, dark skin tone", + "🫱🏽‍🫲🏻": "handshake: medium skin tone, light skin tone", + "🫱🏽‍🫲🏾": "handshake: medium skin tone, medium-dark skin tone", + "🫱🏽‍🫲🏼": "handshake: medium skin tone, medium-light skin tone", + "🫱🏾‍🫲🏿": "handshake: medium-dark skin tone, dark skin tone", + "🫱🏾‍🫲🏻": "handshake: medium-dark skin tone, light skin tone", + "🫱🏾‍🫲🏽": "handshake: medium-dark skin tone, medium skin tone", + "🫱🏾‍🫲🏼": "handshake: medium-dark skin tone, medium-light skin tone", + "🫱🏼‍🫲🏿": "handshake: medium-light skin tone, dark skin tone", + "🫱🏼‍🫲🏻": "handshake: medium-light skin tone, light skin tone", + "🫱🏼‍🫲🏽": "handshake: medium-light skin tone, medium skin tone", + "🫱🏼‍🫲🏾": "handshake: medium-light skin tone, medium-dark skin tone", + "🙂‍↔️": "head shaking horizontally", + "🙂‍↕️": "head shaking vertically", + "🧑‍⚕️": "health worker", + "🧑🏿‍⚕️": "health worker: dark skin tone", + "🧑🏻‍⚕️": "health worker: light skin tone", + "🧑🏽‍⚕️": "health worker: medium skin tone", + "🧑🏾‍⚕️": "health worker: medium-dark skin tone", + "🧑🏼‍⚕️": "health worker: medium-light skin tone", + "❤️‍🔥": "heart on fire", + "🧑‍⚖️": "judge", + "🧑🏿‍⚖️": "judge: dark skin tone", + "🧑🏻‍⚖️": "judge: light skin tone", + "🧑🏽‍⚖️": "judge: medium skin tone", + "🧑🏾‍⚖️": "judge: medium-dark skin tone", + "🧑🏼‍⚖️": "judge: medium-light skin tone", + "🍋‍🟩": "lime", + "👨‍🎨": "man artist", + "👨🏿‍🎨": "man artist: dark skin tone", + "👨🏻‍🎨": "man artist: light skin tone", + "👨🏽‍🎨": "man artist: medium skin tone", + "👨🏾‍🎨": "man artist: medium-dark skin tone", + "👨🏼‍🎨": "man artist: medium-light skin tone", + "👨‍🚀": "man astronaut", + "👨🏿‍🚀": "man astronaut: dark skin tone", + "👨🏻‍🚀": "man astronaut: light skin tone", + "👨🏽‍🚀": "man astronaut: medium skin tone", + "👨🏾‍🚀": "man astronaut: medium-dark skin tone", + "👨🏼‍🚀": "man astronaut: medium-light skin tone", + "🚴‍♂️": "man biking", + "🚴🏿‍♂️": "man biking: dark skin tone", + "🚴🏻‍♂️": "man biking: light skin tone", + "🚴🏽‍♂️": "man biking: medium skin tone", + "🚴🏾‍♂️": "man biking: medium-dark skin tone", + "🚴🏼‍♂️": "man biking: medium-light skin tone", + "⛹️‍♂️": "man bouncing ball", + "⛹🏿‍♂️": "man bouncing ball: dark skin tone", + "⛹🏻‍♂️": "man bouncing ball: light skin tone", + "⛹🏽‍♂️": "man bouncing ball: medium skin tone", + "⛹🏾‍♂️": "man bouncing ball: medium-dark skin tone", + "⛹🏼‍♂️": "man bouncing ball: medium-light skin tone", + "🙇‍♂️": "man bowing", + "🙇🏿‍♂️": "man bowing: dark skin tone", + "🙇🏻‍♂️": "man bowing: light skin tone", + "🙇🏽‍♂️": "man bowing: medium skin tone", + "🙇🏾‍♂️": "man bowing: medium-dark skin tone", + "🙇🏼‍♂️": "man bowing: medium-light skin tone", + "🤸‍♂️": "man cartwheeling", + "🤸🏿‍♂️": "man cartwheeling: dark skin tone", + "🤸🏻‍♂️": "man cartwheeling: light skin tone", + "🤸🏽‍♂️": "man cartwheeling: medium skin tone", + "🤸🏾‍♂️": "man cartwheeling: medium-dark skin tone", + "🤸🏼‍♂️": "man cartwheeling: medium-light skin tone", + "🧗‍♂️": "man climbing", + "🧗🏿‍♂️": "man climbing: dark skin tone", + "🧗🏻‍♂️": "man climbing: light skin tone", + "🧗🏽‍♂️": "man climbing: medium skin tone", + "🧗🏾‍♂️": "man climbing: medium-dark skin tone", + "🧗🏼‍♂️": "man climbing: medium-light skin tone", + "👷‍♂️": "man construction worker", + "👷🏿‍♂️": "man construction worker: dark skin tone", + "👷🏻‍♂️": "man construction worker: light skin tone", + "👷🏽‍♂️": "man construction worker: medium skin tone", + "👷🏾‍♂️": "man construction worker: medium-dark skin tone", + "👷🏼‍♂️": "man construction worker: medium-light skin tone", + "👨‍🍳": "man cook", + "👨🏿‍🍳": "man cook: dark skin tone", + "👨🏻‍🍳": "man cook: light skin tone", + "👨🏽‍🍳": "man cook: medium skin tone", + "👨🏾‍🍳": "man cook: medium-dark skin tone", + "👨🏼‍🍳": "man cook: medium-light skin tone", + "🕵️‍♂️": "man detective", + "🕵🏿‍♂️": "man detective: dark skin tone", + "🕵🏻‍♂️": "man detective: light skin tone", + "🕵🏽‍♂️": "man detective: medium skin tone", + "🕵🏾‍♂️": "man detective: medium-dark skin tone", + "🕵🏼‍♂️": "man detective: medium-light skin tone", + "🧝‍♂️": "man elf", + "🧝🏿‍♂️": "man elf: dark skin tone", + "🧝🏻‍♂️": "man elf: light skin tone", + "🧝🏽‍♂️": "man elf: medium skin tone", + "🧝🏾‍♂️": "man elf: medium-dark skin tone", + "🧝🏼‍♂️": "man elf: medium-light skin tone", + "🤦‍♂️": "man facepalming", + "🤦🏿‍♂️": "man facepalming: dark skin tone", + "🤦🏻‍♂️": "man facepalming: light skin tone", + "🤦🏽‍♂️": "man facepalming: medium skin tone", + "🤦🏾‍♂️": "man facepalming: medium-dark skin tone", + "🤦🏼‍♂️": "man facepalming: medium-light skin tone", + "👨‍🏭": "man factory worker", + "👨🏿‍🏭": "man factory worker: dark skin tone", + "👨🏻‍🏭": "man factory worker: light skin tone", + "👨🏽‍🏭": "man factory worker: medium skin tone", + "👨🏾‍🏭": "man factory worker: medium-dark skin tone", + "👨🏼‍🏭": "man factory worker: medium-light skin tone", + "🧚‍♂️": "man fairy", + "🧚🏿‍♂️": "man fairy: dark skin tone", + "🧚🏻‍♂️": "man fairy: light skin tone", + "🧚🏽‍♂️": "man fairy: medium skin tone", + "🧚🏾‍♂️": "man fairy: medium-dark skin tone", + "🧚🏼‍♂️": "man fairy: medium-light skin tone", + "👨‍🌾": "man farmer", + "👨🏿‍🌾": "man farmer: dark skin tone", + "👨🏻‍🌾": "man farmer: light skin tone", + "👨🏽‍🌾": "man farmer: medium skin tone", + "👨🏾‍🌾": "man farmer: medium-dark skin tone", + "👨🏼‍🌾": "man farmer: medium-light skin tone", + "👨‍🍼": "man feeding baby", + "👨🏿‍🍼": "man feeding baby: dark skin tone", + "👨🏻‍🍼": "man feeding baby: light skin tone", + "👨🏽‍🍼": "man feeding baby: medium skin tone", + "👨🏾‍🍼": "man feeding baby: medium-dark skin tone", + "👨🏼‍🍼": "man feeding baby: medium-light skin tone", + "👨‍🚒": "man firefighter", + "👨🏿‍🚒": "man firefighter: dark skin tone", + "👨🏻‍🚒": "man firefighter: light skin tone", + "👨🏽‍🚒": "man firefighter: medium skin tone", + "👨🏾‍🚒": "man firefighter: medium-dark skin tone", + "👨🏼‍🚒": "man firefighter: medium-light skin tone", + "🙍‍♂️": "man frowning", + "🙍🏿‍♂️": "man frowning: dark skin tone", + "🙍🏻‍♂️": "man frowning: light skin tone", + "🙍🏽‍♂️": "man frowning: medium skin tone", + "🙍🏾‍♂️": "man frowning: medium-dark skin tone", + "🙍🏼‍♂️": "man frowning: medium-light skin tone", + "🧞‍♂️": "man genie", + "🙅‍♂️": "man gesturing NO", + "🙅🏿‍♂️": "man gesturing NO: dark skin tone", + "🙅🏻‍♂️": "man gesturing NO: light skin tone", + "🙅🏽‍♂️": "man gesturing NO: medium skin tone", + "🙅🏾‍♂️": "man gesturing NO: medium-dark skin tone", + "🙅🏼‍♂️": "man gesturing NO: medium-light skin tone", + "🙆‍♂️": "man gesturing OK", + "🙆🏿‍♂️": "man gesturing OK: dark skin tone", + "🙆🏻‍♂️": "man gesturing OK: light skin tone", + "🙆🏽‍♂️": "man gesturing OK: medium skin tone", + "🙆🏾‍♂️": "man gesturing OK: medium-dark skin tone", + "🙆🏼‍♂️": "man gesturing OK: medium-light skin tone", + "💇‍♂️": "man getting haircut", + "💇🏿‍♂️": "man getting haircut: dark skin tone", + "💇🏻‍♂️": "man getting haircut: light skin tone", + "💇🏽‍♂️": "man getting haircut: medium skin tone", + "💇🏾‍♂️": "man getting haircut: medium-dark skin tone", + "💇🏼‍♂️": "man getting haircut: medium-light skin tone", + "💆‍♂️": "man getting massage", + "💆🏿‍♂️": "man getting massage: dark skin tone", + "💆🏻‍♂️": "man getting massage: light skin tone", + "💆🏽‍♂️": "man getting massage: medium skin tone", + "💆🏾‍♂️": "man getting massage: medium-dark skin tone", + "💆🏼‍♂️": "man getting massage: medium-light skin tone", + "🏌️‍♂️": "man golfing", + "🏌🏿‍♂️": "man golfing: dark skin tone", + "🏌🏻‍♂️": "man golfing: light skin tone", + "🏌🏽‍♂️": "man golfing: medium skin tone", + "🏌🏾‍♂️": "man golfing: medium-dark skin tone", + "🏌🏼‍♂️": "man golfing: medium-light skin tone", + "💂‍♂️": "man guard", + "💂🏿‍♂️": "man guard: dark skin tone", + "💂🏻‍♂️": "man guard: light skin tone", + "💂🏽‍♂️": "man guard: medium skin tone", + "💂🏾‍♂️": "man guard: medium-dark skin tone", + "💂🏼‍♂️": "man guard: medium-light skin tone", + "👨‍⚕️": "man health worker", + "👨🏿‍⚕️": "man health worker: dark skin tone", + "👨🏻‍⚕️": "man health worker: light skin tone", + "👨🏽‍⚕️": "man health worker: medium skin tone", + "👨🏾‍⚕️": "man health worker: medium-dark skin tone", + "👨🏼‍⚕️": "man health worker: medium-light skin tone", + "🧘‍♂️": "man in lotus position", + "🧘🏿‍♂️": "man in lotus position: dark skin tone", + "🧘🏻‍♂️": "man in lotus position: light skin tone", + "🧘🏽‍♂️": "man in lotus position: medium skin tone", + "🧘🏾‍♂️": "man in lotus position: medium-dark skin tone", + "🧘🏼‍♂️": "man in lotus position: medium-light skin tone", + "👨‍🦽": "man in manual wheelchair", + "👨‍🦽‍➡️": "man in manual wheelchair facing right", + "👨🏿‍🦽‍➡️": "man in manual wheelchair facing right: dark skin tone", + "👨🏻‍🦽‍➡️": "man in manual wheelchair facing right: light skin tone", + "👨🏽‍🦽‍➡️": "man in manual wheelchair facing right: medium skin tone", + "👨🏾‍🦽‍➡️": "man in manual wheelchair facing right: medium-dark skin tone", + "👨🏼‍🦽‍➡️": "man in manual wheelchair facing right: medium-light skin tone", + "👨🏿‍🦽": "man in manual wheelchair: dark skin tone", + "👨🏻‍🦽": "man in manual wheelchair: light skin tone", + "👨🏽‍🦽": "man in manual wheelchair: medium skin tone", + "👨🏾‍🦽": "man in manual wheelchair: medium-dark skin tone", + "👨🏼‍🦽": "man in manual wheelchair: medium-light skin tone", + "👨‍🦼": "man in motorized wheelchair", + "👨‍🦼‍➡️": "man in motorized wheelchair facing right", + "👨🏿‍🦼‍➡️": "man in motorized wheelchair facing right: dark skin tone", + "👨🏻‍🦼‍➡️": "man in motorized wheelchair facing right: light skin tone", + "👨🏽‍🦼‍➡️": "man in motorized wheelchair facing right: medium skin tone", + "👨🏾‍🦼‍➡️": "man in motorized wheelchair facing right: medium-dark skin tone", + "👨🏼‍🦼‍➡️": "man in motorized wheelchair facing right: medium-light skin tone", + "👨🏿‍🦼": "man in motorized wheelchair: dark skin tone", + "👨🏻‍🦼": "man in motorized wheelchair: light skin tone", + "👨🏽‍🦼": "man in motorized wheelchair: medium skin tone", + "👨🏾‍🦼": "man in motorized wheelchair: medium-dark skin tone", + "👨🏼‍🦼": "man in motorized wheelchair: medium-light skin tone", + "🧖‍♂️": "man in steamy room", + "🧖🏿‍♂️": "man in steamy room: dark skin tone", + "🧖🏻‍♂️": "man in steamy room: light skin tone", + "🧖🏽‍♂️": "man in steamy room: medium skin tone", + "🧖🏾‍♂️": "man in steamy room: medium-dark skin tone", + "🧖🏼‍♂️": "man in steamy room: medium-light skin tone", + "🤵‍♂️": "man in tuxedo", + "🤵🏿‍♂️": "man in tuxedo: dark skin tone", + "🤵🏻‍♂️": "man in tuxedo: light skin tone", + "🤵🏽‍♂️": "man in tuxedo: medium skin tone", + "🤵🏾‍♂️": "man in tuxedo: medium-dark skin tone", + "🤵🏼‍♂️": "man in tuxedo: medium-light skin tone", + "👨‍⚖️": "man judge", + "👨🏿‍⚖️": "man judge: dark skin tone", + "👨🏻‍⚖️": "man judge: light skin tone", + "👨🏽‍⚖️": "man judge: medium skin tone", + "👨🏾‍⚖️": "man judge: medium-dark skin tone", + "👨🏼‍⚖️": "man judge: medium-light skin tone", + "🤹‍♂️": "man juggling", + "🤹🏿‍♂️": "man juggling: dark skin tone", + "🤹🏻‍♂️": "man juggling: light skin tone", + "🤹🏽‍♂️": "man juggling: medium skin tone", + "🤹🏾‍♂️": "man juggling: medium-dark skin tone", + "🤹🏼‍♂️": "man juggling: medium-light skin tone", + "🧎‍♂️": "man kneeling", + "🧎‍♂️‍➡️": "man kneeling facing right", + "🧎🏿‍♂️‍➡️": "man kneeling facing right: dark skin tone", + "🧎🏻‍♂️‍➡️": "man kneeling facing right: light skin tone", + "🧎🏽‍♂️‍➡️": "man kneeling facing right: medium skin tone", + "🧎🏾‍♂️‍➡️": "man kneeling facing right: medium-dark skin tone", + "🧎🏼‍♂️‍➡️": "man kneeling facing right: medium-light skin tone", + "🧎🏿‍♂️": "man kneeling: dark skin tone", + "🧎🏻‍♂️": "man kneeling: light skin tone", + "🧎🏽‍♂️": "man kneeling: medium skin tone", + "🧎🏾‍♂️": "man kneeling: medium-dark skin tone", + "🧎🏼‍♂️": "man kneeling: medium-light skin tone", + "🏋️‍♂️": "man lifting weights", + "🏋🏿‍♂️": "man lifting weights: dark skin tone", + "🏋🏻‍♂️": "man lifting weights: light skin tone", + "🏋🏽‍♂️": "man lifting weights: medium skin tone", + "🏋🏾‍♂️": "man lifting weights: medium-dark skin tone", + "🏋🏼‍♂️": "man lifting weights: medium-light skin tone", + "🧙‍♂️": "man mage", + "🧙🏿‍♂️": "man mage: dark skin tone", + "🧙🏻‍♂️": "man mage: light skin tone", + "🧙🏽‍♂️": "man mage: medium skin tone", + "🧙🏾‍♂️": "man mage: medium-dark skin tone", + "🧙🏼‍♂️": "man mage: medium-light skin tone", + "👨‍🔧": "man mechanic", + "👨🏿‍🔧": "man mechanic: dark skin tone", + "👨🏻‍🔧": "man mechanic: light skin tone", + "👨🏽‍🔧": "man mechanic: medium skin tone", + "👨🏾‍🔧": "man mechanic: medium-dark skin tone", + "👨🏼‍🔧": "man mechanic: medium-light skin tone", + "🚵‍♂️": "man mountain biking", + "🚵🏿‍♂️": "man mountain biking: dark skin tone", + "🚵🏻‍♂️": "man mountain biking: light skin tone", + "🚵🏽‍♂️": "man mountain biking: medium skin tone", + "🚵🏾‍♂️": "man mountain biking: medium-dark skin tone", + "🚵🏼‍♂️": "man mountain biking: medium-light skin tone", + "👨‍💼": "man office worker", + "👨🏿‍💼": "man office worker: dark skin tone", + "👨🏻‍💼": "man office worker: light skin tone", + "👨🏽‍💼": "man office worker: medium skin tone", + "👨🏾‍💼": "man office worker: medium-dark skin tone", + "👨🏼‍💼": "man office worker: medium-light skin tone", + "👨‍✈️": "man pilot", + "👨🏿‍✈️": "man pilot: dark skin tone", + "👨🏻‍✈️": "man pilot: light skin tone", + "👨🏽‍✈️": "man pilot: medium skin tone", + "👨🏾‍✈️": "man pilot: medium-dark skin tone", + "👨🏼‍✈️": "man pilot: medium-light skin tone", + "🤾‍♂️": "man playing handball", + "🤾🏿‍♂️": "man playing handball: dark skin tone", + "🤾🏻‍♂️": "man playing handball: light skin tone", + "🤾🏽‍♂️": "man playing handball: medium skin tone", + "🤾🏾‍♂️": "man playing handball: medium-dark skin tone", + "🤾🏼‍♂️": "man playing handball: medium-light skin tone", + "🤽‍♂️": "man playing water polo", + "🤽🏿‍♂️": "man playing water polo: dark skin tone", + "🤽🏻‍♂️": "man playing water polo: light skin tone", + "🤽🏽‍♂️": "man playing water polo: medium skin tone", + "🤽🏾‍♂️": "man playing water polo: medium-dark skin tone", + "🤽🏼‍♂️": "man playing water polo: medium-light skin tone", + "👮‍♂️": "man police officer", + "👮🏿‍♂️": "man police officer: dark skin tone", + "👮🏻‍♂️": "man police officer: light skin tone", + "👮🏽‍♂️": "man police officer: medium skin tone", + "👮🏾‍♂️": "man police officer: medium-dark skin tone", + "👮🏼‍♂️": "man police officer: medium-light skin tone", + "🙎‍♂️": "man pouting", + "🙎🏿‍♂️": "man pouting: dark skin tone", + "🙎🏻‍♂️": "man pouting: light skin tone", + "🙎🏽‍♂️": "man pouting: medium skin tone", + "🙎🏾‍♂️": "man pouting: medium-dark skin tone", + "🙎🏼‍♂️": "man pouting: medium-light skin tone", + "🙋‍♂️": "man raising hand", + "🙋🏿‍♂️": "man raising hand: dark skin tone", + "🙋🏻‍♂️": "man raising hand: light skin tone", + "🙋🏽‍♂️": "man raising hand: medium skin tone", + "🙋🏾‍♂️": "man raising hand: medium-dark skin tone", + "🙋🏼‍♂️": "man raising hand: medium-light skin tone", + "🚣‍♂️": "man rowing boat", + "🚣🏿‍♂️": "man rowing boat: dark skin tone", + "🚣🏻‍♂️": "man rowing boat: light skin tone", + "🚣🏽‍♂️": "man rowing boat: medium skin tone", + "🚣🏾‍♂️": "man rowing boat: medium-dark skin tone", + "🚣🏼‍♂️": "man rowing boat: medium-light skin tone", + "🏃‍♂️": "man running", + "🏃‍♂️‍➡️": "man running facing right", + "🏃🏿‍♂️‍➡️": "man running facing right: dark skin tone", + "🏃🏻‍♂️‍➡️": "man running facing right: light skin tone", + "🏃🏽‍♂️‍➡️": "man running facing right: medium skin tone", + "🏃🏾‍♂️‍➡️": "man running facing right: medium-dark skin tone", + "🏃🏼‍♂️‍➡️": "man running facing right: medium-light skin tone", + "🏃🏿‍♂️": "man running: dark skin tone", + "🏃🏻‍♂️": "man running: light skin tone", + "🏃🏽‍♂️": "man running: medium skin tone", + "🏃🏾‍♂️": "man running: medium-dark skin tone", + "🏃🏼‍♂️": "man running: medium-light skin tone", + "👨‍🔬": "man scientist", + "👨🏿‍🔬": "man scientist: dark skin tone", + "👨🏻‍🔬": "man scientist: light skin tone", + "👨🏽‍🔬": "man scientist: medium skin tone", + "👨🏾‍🔬": "man scientist: medium-dark skin tone", + "👨🏼‍🔬": "man scientist: medium-light skin tone", + "🤷‍♂️": "man shrugging", + "🤷🏿‍♂️": "man shrugging: dark skin tone", + "🤷🏻‍♂️": "man shrugging: light skin tone", + "🤷🏽‍♂️": "man shrugging: medium skin tone", + "🤷🏾‍♂️": "man shrugging: medium-dark skin tone", + "🤷🏼‍♂️": "man shrugging: medium-light skin tone", + "👨‍🎤": "man singer", + "👨🏿‍🎤": "man singer: dark skin tone", + "👨🏻‍🎤": "man singer: light skin tone", + "👨🏽‍🎤": "man singer: medium skin tone", + "👨🏾‍🎤": "man singer: medium-dark skin tone", + "👨🏼‍🎤": "man singer: medium-light skin tone", + "🧍‍♂️": "man standing", + "🧍🏿‍♂️": "man standing: dark skin tone", + "🧍🏻‍♂️": "man standing: light skin tone", + "🧍🏽‍♂️": "man standing: medium skin tone", + "🧍🏾‍♂️": "man standing: medium-dark skin tone", + "🧍🏼‍♂️": "man standing: medium-light skin tone", + "👨‍🎓": "man student", + "👨🏿‍🎓": "man student: dark skin tone", + "👨🏻‍🎓": "man student: light skin tone", + "👨🏽‍🎓": "man student: medium skin tone", + "👨🏾‍🎓": "man student: medium-dark skin tone", + "👨🏼‍🎓": "man student: medium-light skin tone", + "🦸‍♂️": "man superhero", + "🦸🏿‍♂️": "man superhero: dark skin tone", + "🦸🏻‍♂️": "man superhero: light skin tone", + "🦸🏽‍♂️": "man superhero: medium skin tone", + "🦸🏾‍♂️": "man superhero: medium-dark skin tone", + "🦸🏼‍♂️": "man superhero: medium-light skin tone", + "🦹‍♂️": "man supervillain", + "🦹🏿‍♂️": "man supervillain: dark skin tone", + "🦹🏻‍♂️": "man supervillain: light skin tone", + "🦹🏽‍♂️": "man supervillain: medium skin tone", + "🦹🏾‍♂️": "man supervillain: medium-dark skin tone", + "🦹🏼‍♂️": "man supervillain: medium-light skin tone", + "🏄‍♂️": "man surfing", + "🏄🏿‍♂️": "man surfing: dark skin tone", + "🏄🏻‍♂️": "man surfing: light skin tone", + "🏄🏽‍♂️": "man surfing: medium skin tone", + "🏄🏾‍♂️": "man surfing: medium-dark skin tone", + "🏄🏼‍♂️": "man surfing: medium-light skin tone", + "🏊‍♂️": "man swimming", + "🏊🏿‍♂️": "man swimming: dark skin tone", + "🏊🏻‍♂️": "man swimming: light skin tone", + "🏊🏽‍♂️": "man swimming: medium skin tone", + "🏊🏾‍♂️": "man swimming: medium-dark skin tone", + "🏊🏼‍♂️": "man swimming: medium-light skin tone", + "👨‍🏫": "man teacher", + "👨🏿‍🏫": "man teacher: dark skin tone", + "👨🏻‍🏫": "man teacher: light skin tone", + "👨🏽‍🏫": "man teacher: medium skin tone", + "👨🏾‍🏫": "man teacher: medium-dark skin tone", + "👨🏼‍🏫": "man teacher: medium-light skin tone", + "👨‍💻": "man technologist", + "👨🏿‍💻": "man technologist: dark skin tone", + "👨🏻‍💻": "man technologist: light skin tone", + "👨🏽‍💻": "man technologist: medium skin tone", + "👨🏾‍💻": "man technologist: medium-dark skin tone", + "👨🏼‍💻": "man technologist: medium-light skin tone", + "💁‍♂️": "man tipping hand", + "💁🏿‍♂️": "man tipping hand: dark skin tone", + "💁🏻‍♂️": "man tipping hand: light skin tone", + "💁🏽‍♂️": "man tipping hand: medium skin tone", + "💁🏾‍♂️": "man tipping hand: medium-dark skin tone", + "💁🏼‍♂️": "man tipping hand: medium-light skin tone", + "🧛‍♂️": "man vampire", + "🧛🏿‍♂️": "man vampire: dark skin tone", + "🧛🏻‍♂️": "man vampire: light skin tone", + "🧛🏽‍♂️": "man vampire: medium skin tone", + "🧛🏾‍♂️": "man vampire: medium-dark skin tone", + "🧛🏼‍♂️": "man vampire: medium-light skin tone", + "🚶‍♂️": "man walking", + "🚶‍♂️‍➡️": "man walking facing right", + "🚶🏿‍♂️‍➡️": "man walking facing right: dark skin tone", + "🚶🏻‍♂️‍➡️": "man walking facing right: light skin tone", + "🚶🏽‍♂️‍➡️": "man walking facing right: medium skin tone", + "🚶🏾‍♂️‍➡️": "man walking facing right: medium-dark skin tone", + "🚶🏼‍♂️‍➡️": "man walking facing right: medium-light skin tone", + "🚶🏿‍♂️": "man walking: dark skin tone", + "🚶🏻‍♂️": "man walking: light skin tone", + "🚶🏽‍♂️": "man walking: medium skin tone", + "🚶🏾‍♂️": "man walking: medium-dark skin tone", + "🚶🏼‍♂️": "man walking: medium-light skin tone", + "👳‍♂️": "man wearing turban", + "👳🏿‍♂️": "man wearing turban: dark skin tone", + "👳🏻‍♂️": "man wearing turban: light skin tone", + "👳🏽‍♂️": "man wearing turban: medium skin tone", + "👳🏾‍♂️": "man wearing turban: medium-dark skin tone", + "👳🏼‍♂️": "man wearing turban: medium-light skin tone", + "👰‍♂️": "man with veil", + "👰🏿‍♂️": "man with veil: dark skin tone", + "👰🏻‍♂️": "man with veil: light skin tone", + "👰🏽‍♂️": "man with veil: medium skin tone", + "👰🏾‍♂️": "man with veil: medium-dark skin tone", + "👰🏼‍♂️": "man with veil: medium-light skin tone", + "👨‍🦯": "man with white cane", + "👨‍🦯‍➡️": "man with white cane facing right", + "👨🏿‍🦯‍➡️": "man with white cane facing right: dark skin tone", + "👨🏻‍🦯‍➡️": "man with white cane facing right: light skin tone", + "👨🏽‍🦯‍➡️": "man with white cane facing right: medium skin tone", + "👨🏾‍🦯‍➡️": "man with white cane facing right: medium-dark skin tone", + "👨🏼‍🦯‍➡️": "man with white cane facing right: medium-light skin tone", + "👨🏿‍🦯": "man with white cane: dark skin tone", + "👨🏻‍🦯": "man with white cane: light skin tone", + "👨🏽‍🦯": "man with white cane: medium skin tone", + "👨🏾‍🦯": "man with white cane: medium-dark skin tone", + "👨🏼‍🦯": "man with white cane: medium-light skin tone", + "🧟‍♂️": "man zombie", + "👨‍🦲": "man: bald", + "🧔‍♂️": "man: beard", + "👱‍♂️": "man: blond hair", + "👨‍🦱": "man: curly hair", + "👨🏿‍🦲": "man: dark skin tone, bald", + "🧔🏿‍♂️": "man: dark skin tone, beard", + "👱🏿‍♂️": "man: dark skin tone, blond hair", + "👨🏿‍🦱": "man: dark skin tone, curly hair", + "👨🏿‍🦰": "man: dark skin tone, red hair", + "👨🏿‍🦳": "man: dark skin tone, white hair", + "👨🏻‍🦲": "man: light skin tone, bald", + "🧔🏻‍♂️": "man: light skin tone, beard", + "👱🏻‍♂️": "man: light skin tone, blond hair", + "👨🏻‍🦱": "man: light skin tone, curly hair", + "👨🏻‍🦰": "man: light skin tone, red hair", + "👨🏻‍🦳": "man: light skin tone, white hair", + "👨🏽‍🦲": "man: medium skin tone, bald", + "🧔🏽‍♂️": "man: medium skin tone, beard", + "👱🏽‍♂️": "man: medium skin tone, blond hair", + "👨🏽‍🦱": "man: medium skin tone, curly hair", + "👨🏽‍🦰": "man: medium skin tone, red hair", + "👨🏽‍🦳": "man: medium skin tone, white hair", + "👨🏾‍🦲": "man: medium-dark skin tone, bald", + "🧔🏾‍♂️": "man: medium-dark skin tone, beard", + "👱🏾‍♂️": "man: medium-dark skin tone, blond hair", + "👨🏾‍🦱": "man: medium-dark skin tone, curly hair", + "👨🏾‍🦰": "man: medium-dark skin tone, red hair", + "👨🏾‍🦳": "man: medium-dark skin tone, white hair", + "👨🏼‍🦲": "man: medium-light skin tone, bald", + "🧔🏼‍♂️": "man: medium-light skin tone, beard", + "👱🏼‍♂️": "man: medium-light skin tone, blond hair", + "👨🏼‍🦱": "man: medium-light skin tone, curly hair", + "👨🏼‍🦰": "man: medium-light skin tone, red hair", + "👨🏼‍🦳": "man: medium-light skin tone, white hair", + "👨‍🦰": "man: red hair", + "👨‍🦳": "man: white hair", + "🧑‍🔧": "mechanic", + "🧑🏿‍🔧": "mechanic: dark skin tone", + "🧑🏻‍🔧": "mechanic: light skin tone", + "🧑🏽‍🔧": "mechanic: medium skin tone", + "🧑🏾‍🔧": "mechanic: medium-dark skin tone", + "🧑🏼‍🔧": "mechanic: medium-light skin tone", + "👯‍♂️": "men with bunny ears", + "🤼‍♂️": "men wrestling", + "❤️‍🩹": "mending heart", + "🧜‍♀️": "mermaid", + "🧜🏿‍♀️": "mermaid: dark skin tone", + "🧜🏻‍♀️": "mermaid: light skin tone", + "🧜🏽‍♀️": "mermaid: medium skin tone", + "🧜🏾‍♀️": "mermaid: medium-dark skin tone", + "🧜🏼‍♀️": "mermaid: medium-light skin tone", + "🧜‍♂️": "merman", + "🧜🏿‍♂️": "merman: dark skin tone", + "🧜🏻‍♂️": "merman: light skin tone", + "🧜🏽‍♂️": "merman: medium skin tone", + "🧜🏾‍♂️": "merman: medium-dark skin tone", + "🧜🏼‍♂️": "merman: medium-light skin tone", + "🧑‍🎄": "mx claus", + "🧑🏿‍🎄": "mx claus: dark skin tone", + "🧑🏻‍🎄": "mx claus: light skin tone", + "🧑🏽‍🎄": "mx claus: medium skin tone", + "🧑🏾‍🎄": "mx claus: medium-dark skin tone", + "🧑🏼‍🎄": "mx claus: medium-light skin tone", + "🧑‍💼": "office worker", + "🧑🏿‍💼": "office worker: dark skin tone", + "🧑🏻‍💼": "office worker: light skin tone", + "🧑🏽‍💼": "office worker: medium skin tone", + "🧑🏾‍💼": "office worker: medium-dark skin tone", + "🧑🏼‍💼": "office worker: medium-light skin tone", + "🧑‍🤝‍🧑": "people holding hands", + "🧑‍🍼": "person feeding baby", + "🧑🏿‍🍼": "person feeding baby: dark skin tone", + "🧑🏻‍🍼": "person feeding baby: light skin tone", + "🧑🏽‍🍼": "person feeding baby: medium skin tone", + "🧑🏾‍🍼": "person feeding baby: medium-dark skin tone", + "🧑🏼‍🍼": "person feeding baby: medium-light skin tone", + "🧑‍🦽": "person in manual wheelchair", + "🧑‍🦽‍➡️": "person in manual wheelchair facing right", + "🧑🏿‍🦽‍➡️": "person in manual wheelchair facing right: dark skin tone", + "🧑🏻‍🦽‍➡️": "person in manual wheelchair facing right: light skin tone", + "🧑🏽‍🦽‍➡️": "person in manual wheelchair facing right: medium skin tone", + "🧑🏾‍🦽‍➡️": "person in manual wheelchair facing right: medium-dark skin tone", + "🧑🏼‍🦽‍➡️": "person in manual wheelchair facing right: medium-light skin tone", + "🧑🏿‍🦽": "person in manual wheelchair: dark skin tone", + "🧑🏻‍🦽": "person in manual wheelchair: light skin tone", + "🧑🏽‍🦽": "person in manual wheelchair: medium skin tone", + "🧑🏾‍🦽": "person in manual wheelchair: medium-dark skin tone", + "🧑🏼‍🦽": "person in manual wheelchair: medium-light skin tone", + "🧑‍🦼": "person in motorized wheelchair", + "🧑‍🦼‍➡️": "person in motorized wheelchair facing right", + "🧑🏿‍🦼‍➡️": "person in motorized wheelchair facing right: dark skin tone", + "🧑🏻‍🦼‍➡️": "person in motorized wheelchair facing right: light skin tone", + "🧑🏽‍🦼‍➡️": "person in motorized wheelchair facing right: medium skin tone", + "🧑🏾‍🦼‍➡️": "person in motorized wheelchair facing right: medium-dark skin tone", + "🧑🏼‍🦼‍➡️": "person in motorized wheelchair facing right: medium-light skin tone", + "🧑🏿‍🦼": "person in motorized wheelchair: dark skin tone", + "🧑🏻‍🦼": "person in motorized wheelchair: light skin tone", + "🧑🏽‍🦼": "person in motorized wheelchair: medium skin tone", + "🧑🏾‍🦼": "person in motorized wheelchair: medium-dark skin tone", + "🧑🏼‍🦼": "person in motorized wheelchair: medium-light skin tone", + "🧎‍➡️": "person kneeling facing right", + "🧎🏿‍➡️": "person kneeling facing right: dark skin tone", + "🧎🏻‍➡️": "person kneeling facing right: light skin tone", + "🧎🏽‍➡️": "person kneeling facing right: medium skin tone", + "🧎🏾‍➡️": "person kneeling facing right: medium-dark skin tone", + "🧎🏼‍➡️": "person kneeling facing right: medium-light skin tone", + "🏃‍➡️": "person running facing right", + "🏃🏿‍➡️": "person running facing right: dark skin tone", + "🏃🏻‍➡️": "person running facing right: light skin tone", + "🏃🏽‍➡️": "person running facing right: medium skin tone", + "🏃🏾‍➡️": "person running facing right: medium-dark skin tone", + "🏃🏼‍➡️": "person running facing right: medium-light skin tone", + "🚶‍➡️": "person walking facing right", + "🚶🏿‍➡️": "person walking facing right: dark skin tone", + "🚶🏻‍➡️": "person walking facing right: light skin tone", + "🚶🏽‍➡️": "person walking facing right: medium skin tone", + "🚶🏾‍➡️": "person walking facing right: medium-dark skin tone", + "🚶🏼‍➡️": "person walking facing right: medium-light skin tone", + "🧑‍🦯": "person with white cane", + "🧑‍🦯‍➡️": "person with white cane facing right", + "🧑🏿‍🦯‍➡️": "person with white cane facing right: dark skin tone", + "🧑🏻‍🦯‍➡️": "person with white cane facing right: light skin tone", + "🧑🏽‍🦯‍➡️": "person with white cane facing right: medium skin tone", + "🧑🏾‍🦯‍➡️": "person with white cane facing right: medium-dark skin tone", + "🧑🏼‍🦯‍➡️": "person with white cane facing right: medium-light skin tone", + "🧑🏿‍🦯": "person with white cane: dark skin tone", + "🧑🏻‍🦯": "person with white cane: light skin tone", + "🧑🏽‍🦯": "person with white cane: medium skin tone", + "🧑🏾‍🦯": "person with white cane: medium-dark skin tone", + "🧑🏼‍🦯": "person with white cane: medium-light skin tone", + "🧑‍🦲": "person: bald", + "🧑‍🦱": "person: curly hair", + "🧑🏿‍🦲": "person: dark skin tone, bald", + "🧑🏿‍🦱": "person: dark skin tone, curly hair", + "🧑🏿‍🦰": "person: dark skin tone, red hair", + "🧑🏿‍🦳": "person: dark skin tone, white hair", + "🧑🏻‍🦲": "person: light skin tone, bald", + "🧑🏻‍🦱": "person: light skin tone, curly hair", + "🧑🏻‍🦰": "person: light skin tone, red hair", + "🧑🏻‍🦳": "person: light skin tone, white hair", + "🧑🏽‍🦲": "person: medium skin tone, bald", + "🧑🏽‍🦱": "person: medium skin tone, curly hair", + "🧑🏽‍🦰": "person: medium skin tone, red hair", + "🧑🏽‍🦳": "person: medium skin tone, white hair", + "🧑🏾‍🦲": "person: medium-dark skin tone, bald", + "🧑🏾‍🦱": "person: medium-dark skin tone, curly hair", + "🧑🏾‍🦰": "person: medium-dark skin tone, red hair", + "🧑🏾‍🦳": "person: medium-dark skin tone, white hair", + "🧑🏼‍🦲": "person: medium-light skin tone, bald", + "🧑🏼‍🦱": "person: medium-light skin tone, curly hair", + "🧑🏼‍🦰": "person: medium-light skin tone, red hair", + "🧑🏼‍🦳": "person: medium-light skin tone, white hair", + "🧑‍🦰": "person: red hair", + "🧑‍🦳": "person: white hair", + "🐦‍🔥": "phoenix", + "🧑‍✈️": "pilot", + "🧑🏿‍✈️": "pilot: dark skin tone", + "🧑🏻‍✈️": "pilot: light skin tone", + "🧑🏽‍✈️": "pilot: medium skin tone", + "🧑🏾‍✈️": "pilot: medium-dark skin tone", + "🧑🏼‍✈️": "pilot: medium-light skin tone", + "🏴‍☠️": "pirate flag", + "🐻‍❄️": "polar bear", + "🏳️‍🌈": "rainbow flag", + "🧑‍🔬": "scientist", + "🧑🏿‍🔬": "scientist: dark skin tone", + "🧑🏻‍🔬": "scientist: light skin tone", + "🧑🏽‍🔬": "scientist: medium skin tone", + "🧑🏾‍🔬": "scientist: medium-dark skin tone", + "🧑🏼‍🔬": "scientist: medium-light skin tone", + "🐕‍🦺": "service dog", + "🧑‍🎤": "singer", + "🧑🏿‍🎤": "singer: dark skin tone", + "🧑🏻‍🎤": "singer: light skin tone", + "🧑🏽‍🎤": "singer: medium skin tone", + "🧑🏾‍🎤": "singer: medium-dark skin tone", + "🧑🏼‍🎤": "singer: medium-light skin tone", + "🧑‍🎓": "student", + "🧑🏿‍🎓": "student: dark skin tone", + "🧑🏻‍🎓": "student: light skin tone", + "🧑🏽‍🎓": "student: medium skin tone", + "🧑🏾‍🎓": "student: medium-dark skin tone", + "🧑🏼‍🎓": "student: medium-light skin tone", + "🧑‍🏫": "teacher", + "🧑🏿‍🏫": "teacher: dark skin tone", + "🧑🏻‍🏫": "teacher: light skin tone", + "🧑🏽‍🏫": "teacher: medium skin tone", + "🧑🏾‍🏫": "teacher: medium-dark skin tone", + "🧑🏼‍🏫": "teacher: medium-light skin tone", + "🧑‍💻": "technologist", + "🧑🏿‍💻": "technologist: dark skin tone", + "🧑🏻‍💻": "technologist: light skin tone", + "🧑🏽‍💻": "technologist: medium skin tone", + "🧑🏾‍💻": "technologist: medium-dark skin tone", + "🧑🏼‍💻": "technologist: medium-light skin tone", + "🏳️‍⚧️": "transgender flag", + "👩🏿‍🤝‍👨🏻": "woman and man holding hands: dark skin tone, light skin tone", + "👩🏿‍🤝‍👨🏽": "woman and man holding hands: dark skin tone, medium skin tone", + "👩🏿‍🤝‍👨🏾": "woman and man holding hands: dark skin tone, medium-dark skin tone", + "👩🏿‍🤝‍👨🏼": "woman and man holding hands: dark skin tone, medium-light skin tone", + "👩🏻‍🤝‍👨🏿": "woman and man holding hands: light skin tone, dark skin tone", + "👩🏻‍🤝‍👨🏽": "woman and man holding hands: light skin tone, medium skin tone", + "👩🏻‍🤝‍👨🏾": "woman and man holding hands: light skin tone, medium-dark skin tone", + "👩🏻‍🤝‍👨🏼": "woman and man holding hands: light skin tone, medium-light skin tone", + "👩🏽‍🤝‍👨🏿": "woman and man holding hands: medium skin tone, dark skin tone", + "👩🏽‍🤝‍👨🏻": "woman and man holding hands: medium skin tone, light skin tone", + "👩🏽‍🤝‍👨🏾": "woman and man holding hands: medium skin tone, medium-dark skin tone", + "👩🏽‍🤝‍👨🏼": "woman and man holding hands: medium skin tone, medium-light skin tone", + "👩🏾‍🤝‍👨🏿": "woman and man holding hands: medium-dark skin tone, dark skin tone", + "👩🏾‍🤝‍👨🏻": "woman and man holding hands: medium-dark skin tone, light skin tone", + "👩🏾‍🤝‍👨🏽": "woman and man holding hands: medium-dark skin tone, medium skin tone", + "👩🏾‍🤝‍👨🏼": "woman and man holding hands: medium-dark skin tone, medium-light skin tone", + "👩🏼‍🤝‍👨🏿": "woman and man holding hands: medium-light skin tone, dark skin tone", + "👩🏼‍🤝‍👨🏻": "woman and man holding hands: medium-light skin tone, light skin tone", + "👩🏼‍🤝‍👨🏽": "woman and man holding hands: medium-light skin tone, medium skin tone", + "👩🏼‍🤝‍👨🏾": "woman and man holding hands: medium-light skin tone, medium-dark skin tone", + "👩‍🎨": "woman artist", + "👩🏿‍🎨": "woman artist: dark skin tone", + "👩🏻‍🎨": "woman artist: light skin tone", + "👩🏽‍🎨": "woman artist: medium skin tone", + "👩🏾‍🎨": "woman artist: medium-dark skin tone", + "👩🏼‍🎨": "woman artist: medium-light skin tone", + "👩‍🚀": "woman astronaut", + "👩🏿‍🚀": "woman astronaut: dark skin tone", + "👩🏻‍🚀": "woman astronaut: light skin tone", + "👩🏽‍🚀": "woman astronaut: medium skin tone", + "👩🏾‍🚀": "woman astronaut: medium-dark skin tone", + "👩🏼‍🚀": "woman astronaut: medium-light skin tone", + "🚴‍♀️": "woman biking", + "🚴🏿‍♀️": "woman biking: dark skin tone", + "🚴🏻‍♀️": "woman biking: light skin tone", + "🚴🏽‍♀️": "woman biking: medium skin tone", + "🚴🏾‍♀️": "woman biking: medium-dark skin tone", + "🚴🏼‍♀️": "woman biking: medium-light skin tone", + "⛹️‍♀️": "woman bouncing ball", + "⛹🏿‍♀️": "woman bouncing ball: dark skin tone", + "⛹🏻‍♀️": "woman bouncing ball: light skin tone", + "⛹🏽‍♀️": "woman bouncing ball: medium skin tone", + "⛹🏾‍♀️": "woman bouncing ball: medium-dark skin tone", + "⛹🏼‍♀️": "woman bouncing ball: medium-light skin tone", + "🙇‍♀️": "woman bowing", + "🙇🏿‍♀️": "woman bowing: dark skin tone", + "🙇🏻‍♀️": "woman bowing: light skin tone", + "🙇🏽‍♀️": "woman bowing: medium skin tone", + "🙇🏾‍♀️": "woman bowing: medium-dark skin tone", + "🙇🏼‍♀️": "woman bowing: medium-light skin tone", + "🤸‍♀️": "woman cartwheeling", + "🤸🏿‍♀️": "woman cartwheeling: dark skin tone", + "🤸🏻‍♀️": "woman cartwheeling: light skin tone", + "🤸🏽‍♀️": "woman cartwheeling: medium skin tone", + "🤸🏾‍♀️": "woman cartwheeling: medium-dark skin tone", + "🤸🏼‍♀️": "woman cartwheeling: medium-light skin tone", + "🧗‍♀️": "woman climbing", + "🧗🏿‍♀️": "woman climbing: dark skin tone", + "🧗🏻‍♀️": "woman climbing: light skin tone", + "🧗🏽‍♀️": "woman climbing: medium skin tone", + "🧗🏾‍♀️": "woman climbing: medium-dark skin tone", + "🧗🏼‍♀️": "woman climbing: medium-light skin tone", + "👷‍♀️": "woman construction worker", + "👷🏿‍♀️": "woman construction worker: dark skin tone", + "👷🏻‍♀️": "woman construction worker: light skin tone", + "👷🏽‍♀️": "woman construction worker: medium skin tone", + "👷🏾‍♀️": "woman construction worker: medium-dark skin tone", + "👷🏼‍♀️": "woman construction worker: medium-light skin tone", + "👩‍🍳": "woman cook", + "👩🏿‍🍳": "woman cook: dark skin tone", + "👩🏻‍🍳": "woman cook: light skin tone", + "👩🏽‍🍳": "woman cook: medium skin tone", + "👩🏾‍🍳": "woman cook: medium-dark skin tone", + "👩🏼‍🍳": "woman cook: medium-light skin tone", + "🕵️‍♀️": "woman detective", + "🕵🏿‍♀️": "woman detective: dark skin tone", + "🕵🏻‍♀️": "woman detective: light skin tone", + "🕵🏽‍♀️": "woman detective: medium skin tone", + "🕵🏾‍♀️": "woman detective: medium-dark skin tone", + "🕵🏼‍♀️": "woman detective: medium-light skin tone", + "🧝‍♀️": "woman elf", + "🧝🏿‍♀️": "woman elf: dark skin tone", + "🧝🏻‍♀️": "woman elf: light skin tone", + "🧝🏽‍♀️": "woman elf: medium skin tone", + "🧝🏾‍♀️": "woman elf: medium-dark skin tone", + "🧝🏼‍♀️": "woman elf: medium-light skin tone", + "🤦‍♀️": "woman facepalming", + "🤦🏿‍♀️": "woman facepalming: dark skin tone", + "🤦🏻‍♀️": "woman facepalming: light skin tone", + "🤦🏽‍♀️": "woman facepalming: medium skin tone", + "🤦🏾‍♀️": "woman facepalming: medium-dark skin tone", + "🤦🏼‍♀️": "woman facepalming: medium-light skin tone", + "👩‍🏭": "woman factory worker", + "👩🏿‍🏭": "woman factory worker: dark skin tone", + "👩🏻‍🏭": "woman factory worker: light skin tone", + "👩🏽‍🏭": "woman factory worker: medium skin tone", + "👩🏾‍🏭": "woman factory worker: medium-dark skin tone", + "👩🏼‍🏭": "woman factory worker: medium-light skin tone", + "🧚‍♀️": "woman fairy", + "🧚🏿‍♀️": "woman fairy: dark skin tone", + "🧚🏻‍♀️": "woman fairy: light skin tone", + "🧚🏽‍♀️": "woman fairy: medium skin tone", + "🧚🏾‍♀️": "woman fairy: medium-dark skin tone", + "🧚🏼‍♀️": "woman fairy: medium-light skin tone", + "👩‍🌾": "woman farmer", + "👩🏿‍🌾": "woman farmer: dark skin tone", + "👩🏻‍🌾": "woman farmer: light skin tone", + "👩🏽‍🌾": "woman farmer: medium skin tone", + "👩🏾‍🌾": "woman farmer: medium-dark skin tone", + "👩🏼‍🌾": "woman farmer: medium-light skin tone", + "👩‍🍼": "woman feeding baby", + "👩🏿‍🍼": "woman feeding baby: dark skin tone", + "👩🏻‍🍼": "woman feeding baby: light skin tone", + "👩🏽‍🍼": "woman feeding baby: medium skin tone", + "👩🏾‍🍼": "woman feeding baby: medium-dark skin tone", + "👩🏼‍🍼": "woman feeding baby: medium-light skin tone", + "👩‍🚒": "woman firefighter", + "👩🏿‍🚒": "woman firefighter: dark skin tone", + "👩🏻‍🚒": "woman firefighter: light skin tone", + "👩🏽‍🚒": "woman firefighter: medium skin tone", + "👩🏾‍🚒": "woman firefighter: medium-dark skin tone", + "👩🏼‍🚒": "woman firefighter: medium-light skin tone", + "🙍‍♀️": "woman frowning", + "🙍🏿‍♀️": "woman frowning: dark skin tone", + "🙍🏻‍♀️": "woman frowning: light skin tone", + "🙍🏽‍♀️": "woman frowning: medium skin tone", + "🙍🏾‍♀️": "woman frowning: medium-dark skin tone", + "🙍🏼‍♀️": "woman frowning: medium-light skin tone", + "🧞‍♀️": "woman genie", + "🙅‍♀️": "woman gesturing NO", + "🙅🏿‍♀️": "woman gesturing NO: dark skin tone", + "🙅🏻‍♀️": "woman gesturing NO: light skin tone", + "🙅🏽‍♀️": "woman gesturing NO: medium skin tone", + "🙅🏾‍♀️": "woman gesturing NO: medium-dark skin tone", + "🙅🏼‍♀️": "woman gesturing NO: medium-light skin tone", + "🙆‍♀️": "woman gesturing OK", + "🙆🏿‍♀️": "woman gesturing OK: dark skin tone", + "🙆🏻‍♀️": "woman gesturing OK: light skin tone", + "🙆🏽‍♀️": "woman gesturing OK: medium skin tone", + "🙆🏾‍♀️": "woman gesturing OK: medium-dark skin tone", + "🙆🏼‍♀️": "woman gesturing OK: medium-light skin tone", + "💇‍♀️": "woman getting haircut", + "💇🏿‍♀️": "woman getting haircut: dark skin tone", + "💇🏻‍♀️": "woman getting haircut: light skin tone", + "💇🏽‍♀️": "woman getting haircut: medium skin tone", + "💇🏾‍♀️": "woman getting haircut: medium-dark skin tone", + "💇🏼‍♀️": "woman getting haircut: medium-light skin tone", + "💆‍♀️": "woman getting massage", + "💆🏿‍♀️": "woman getting massage: dark skin tone", + "💆🏻‍♀️": "woman getting massage: light skin tone", + "💆🏽‍♀️": "woman getting massage: medium skin tone", + "💆🏾‍♀️": "woman getting massage: medium-dark skin tone", + "💆🏼‍♀️": "woman getting massage: medium-light skin tone", + "🏌️‍♀️": "woman golfing", + "🏌🏿‍♀️": "woman golfing: dark skin tone", + "🏌🏻‍♀️": "woman golfing: light skin tone", + "🏌🏽‍♀️": "woman golfing: medium skin tone", + "🏌🏾‍♀️": "woman golfing: medium-dark skin tone", + "🏌🏼‍♀️": "woman golfing: medium-light skin tone", + "💂‍♀️": "woman guard", + "💂🏿‍♀️": "woman guard: dark skin tone", + "💂🏻‍♀️": "woman guard: light skin tone", + "💂🏽‍♀️": "woman guard: medium skin tone", + "💂🏾‍♀️": "woman guard: medium-dark skin tone", + "💂🏼‍♀️": "woman guard: medium-light skin tone", + "👩‍⚕️": "woman health worker", + "👩🏿‍⚕️": "woman health worker: dark skin tone", + "👩🏻‍⚕️": "woman health worker: light skin tone", + "👩🏽‍⚕️": "woman health worker: medium skin tone", + "👩🏾‍⚕️": "woman health worker: medium-dark skin tone", + "👩🏼‍⚕️": "woman health worker: medium-light skin tone", + "🧘‍♀️": "woman in lotus position", + "🧘🏿‍♀️": "woman in lotus position: dark skin tone", + "🧘🏻‍♀️": "woman in lotus position: light skin tone", + "🧘🏽‍♀️": "woman in lotus position: medium skin tone", + "🧘🏾‍♀️": "woman in lotus position: medium-dark skin tone", + "🧘🏼‍♀️": "woman in lotus position: medium-light skin tone", + "👩‍🦽": "woman in manual wheelchair", + "👩‍🦽‍➡️": "woman in manual wheelchair facing right", + "👩🏿‍🦽‍➡️": "woman in manual wheelchair facing right: dark skin tone", + "👩🏻‍🦽‍➡️": "woman in manual wheelchair facing right: light skin tone", + "👩🏽‍🦽‍➡️": "woman in manual wheelchair facing right: medium skin tone", + "👩🏾‍🦽‍➡️": "woman in manual wheelchair facing right: medium-dark skin tone", + "👩🏼‍🦽‍➡️": "woman in manual wheelchair facing right: medium-light skin tone", + "👩🏿‍🦽": "woman in manual wheelchair: dark skin tone", + "👩🏻‍🦽": "woman in manual wheelchair: light skin tone", + "👩🏽‍🦽": "woman in manual wheelchair: medium skin tone", + "👩🏾‍🦽": "woman in manual wheelchair: medium-dark skin tone", + "👩🏼‍🦽": "woman in manual wheelchair: medium-light skin tone", + "👩‍🦼": "woman in motorized wheelchair", + "👩‍🦼‍➡️": "woman in motorized wheelchair facing right", + "👩🏿‍🦼‍➡️": "woman in motorized wheelchair facing right: dark skin tone", + "👩🏻‍🦼‍➡️": "woman in motorized wheelchair facing right: light skin tone", + "👩🏽‍🦼‍➡️": "woman in motorized wheelchair facing right: medium skin tone", + "👩🏾‍🦼‍➡️": "woman in motorized wheelchair facing right: medium-dark skin tone", + "👩🏼‍🦼‍➡️": "woman in motorized wheelchair facing right: medium-light skin tone", + "👩🏿‍🦼": "woman in motorized wheelchair: dark skin tone", + "👩🏻‍🦼": "woman in motorized wheelchair: light skin tone", + "👩🏽‍🦼": "woman in motorized wheelchair: medium skin tone", + "👩🏾‍🦼": "woman in motorized wheelchair: medium-dark skin tone", + "👩🏼‍🦼": "woman in motorized wheelchair: medium-light skin tone", + "🧖‍♀️": "woman in steamy room", + "🧖🏿‍♀️": "woman in steamy room: dark skin tone", + "🧖🏻‍♀️": "woman in steamy room: light skin tone", + "🧖🏽‍♀️": "woman in steamy room: medium skin tone", + "🧖🏾‍♀️": "woman in steamy room: medium-dark skin tone", + "🧖🏼‍♀️": "woman in steamy room: medium-light skin tone", + "🤵‍♀️": "woman in tuxedo", + "🤵🏿‍♀️": "woman in tuxedo: dark skin tone", + "🤵🏻‍♀️": "woman in tuxedo: light skin tone", + "🤵🏽‍♀️": "woman in tuxedo: medium skin tone", + "🤵🏾‍♀️": "woman in tuxedo: medium-dark skin tone", + "🤵🏼‍♀️": "woman in tuxedo: medium-light skin tone", + "👩‍⚖️": "woman judge", + "👩🏿‍⚖️": "woman judge: dark skin tone", + "👩🏻‍⚖️": "woman judge: light skin tone", + "👩🏽‍⚖️": "woman judge: medium skin tone", + "👩🏾‍⚖️": "woman judge: medium-dark skin tone", + "👩🏼‍⚖️": "woman judge: medium-light skin tone", + "🤹‍♀️": "woman juggling", + "🤹🏿‍♀️": "woman juggling: dark skin tone", + "🤹🏻‍♀️": "woman juggling: light skin tone", + "🤹🏽‍♀️": "woman juggling: medium skin tone", + "🤹🏾‍♀️": "woman juggling: medium-dark skin tone", + "🤹🏼‍♀️": "woman juggling: medium-light skin tone", + "🧎‍♀️": "woman kneeling", + "🧎‍♀️‍➡️": "woman kneeling facing right", + "🧎🏿‍♀️‍➡️": "woman kneeling facing right: dark skin tone", + "🧎🏻‍♀️‍➡️": "woman kneeling facing right: light skin tone", + "🧎🏽‍♀️‍➡️": "woman kneeling facing right: medium skin tone", + "🧎🏾‍♀️‍➡️": "woman kneeling facing right: medium-dark skin tone", + "🧎🏼‍♀️‍➡️": "woman kneeling facing right: medium-light skin tone", + "🧎🏿‍♀️": "woman kneeling: dark skin tone", + "🧎🏻‍♀️": "woman kneeling: light skin tone", + "🧎🏽‍♀️": "woman kneeling: medium skin tone", + "🧎🏾‍♀️": "woman kneeling: medium-dark skin tone", + "🧎🏼‍♀️": "woman kneeling: medium-light skin tone", + "🏋️‍♀️": "woman lifting weights", + "🏋🏿‍♀️": "woman lifting weights: dark skin tone", + "🏋🏻‍♀️": "woman lifting weights: light skin tone", + "🏋🏽‍♀️": "woman lifting weights: medium skin tone", + "🏋🏾‍♀️": "woman lifting weights: medium-dark skin tone", + "🏋🏼‍♀️": "woman lifting weights: medium-light skin tone", + "🧙‍♀️": "woman mage", + "🧙🏿‍♀️": "woman mage: dark skin tone", + "🧙🏻‍♀️": "woman mage: light skin tone", + "🧙🏽‍♀️": "woman mage: medium skin tone", + "🧙🏾‍♀️": "woman mage: medium-dark skin tone", + "🧙🏼‍♀️": "woman mage: medium-light skin tone", + "👩‍🔧": "woman mechanic", + "👩🏿‍🔧": "woman mechanic: dark skin tone", + "👩🏻‍🔧": "woman mechanic: light skin tone", + "👩🏽‍🔧": "woman mechanic: medium skin tone", + "👩🏾‍🔧": "woman mechanic: medium-dark skin tone", + "👩🏼‍🔧": "woman mechanic: medium-light skin tone", + "🚵‍♀️": "woman mountain biking", + "🚵🏿‍♀️": "woman mountain biking: dark skin tone", + "🚵🏻‍♀️": "woman mountain biking: light skin tone", + "🚵🏽‍♀️": "woman mountain biking: medium skin tone", + "🚵🏾‍♀️": "woman mountain biking: medium-dark skin tone", + "🚵🏼‍♀️": "woman mountain biking: medium-light skin tone", + "👩‍💼": "woman office worker", + "👩🏿‍💼": "woman office worker: dark skin tone", + "👩🏻‍💼": "woman office worker: light skin tone", + "👩🏽‍💼": "woman office worker: medium skin tone", + "👩🏾‍💼": "woman office worker: medium-dark skin tone", + "👩🏼‍💼": "woman office worker: medium-light skin tone", + "👩‍✈️": "woman pilot", + "👩🏿‍✈️": "woman pilot: dark skin tone", + "👩🏻‍✈️": "woman pilot: light skin tone", + "👩🏽‍✈️": "woman pilot: medium skin tone", + "👩🏾‍✈️": "woman pilot: medium-dark skin tone", + "👩🏼‍✈️": "woman pilot: medium-light skin tone", + "🤾‍♀️": "woman playing handball", + "🤾🏿‍♀️": "woman playing handball: dark skin tone", + "🤾🏻‍♀️": "woman playing handball: light skin tone", + "🤾🏽‍♀️": "woman playing handball: medium skin tone", + "🤾🏾‍♀️": "woman playing handball: medium-dark skin tone", + "🤾🏼‍♀️": "woman playing handball: medium-light skin tone", + "🤽‍♀️": "woman playing water polo", + "🤽🏿‍♀️": "woman playing water polo: dark skin tone", + "🤽🏻‍♀️": "woman playing water polo: light skin tone", + "🤽🏽‍♀️": "woman playing water polo: medium skin tone", + "🤽🏾‍♀️": "woman playing water polo: medium-dark skin tone", + "🤽🏼‍♀️": "woman playing water polo: medium-light skin tone", + "👮‍♀️": "woman police officer", + "👮🏿‍♀️": "woman police officer: dark skin tone", + "👮🏻‍♀️": "woman police officer: light skin tone", + "👮🏽‍♀️": "woman police officer: medium skin tone", + "👮🏾‍♀️": "woman police officer: medium-dark skin tone", + "👮🏼‍♀️": "woman police officer: medium-light skin tone", + "🙎‍♀️": "woman pouting", + "🙎🏿‍♀️": "woman pouting: dark skin tone", + "🙎🏻‍♀️": "woman pouting: light skin tone", + "🙎🏽‍♀️": "woman pouting: medium skin tone", + "🙎🏾‍♀️": "woman pouting: medium-dark skin tone", + "🙎🏼‍♀️": "woman pouting: medium-light skin tone", + "🙋‍♀️": "woman raising hand", + "🙋🏿‍♀️": "woman raising hand: dark skin tone", + "🙋🏻‍♀️": "woman raising hand: light skin tone", + "🙋🏽‍♀️": "woman raising hand: medium skin tone", + "🙋🏾‍♀️": "woman raising hand: medium-dark skin tone", + "🙋🏼‍♀️": "woman raising hand: medium-light skin tone", + "🚣‍♀️": "woman rowing boat", + "🚣🏿‍♀️": "woman rowing boat: dark skin tone", + "🚣🏻‍♀️": "woman rowing boat: light skin tone", + "🚣🏽‍♀️": "woman rowing boat: medium skin tone", + "🚣🏾‍♀️": "woman rowing boat: medium-dark skin tone", + "🚣🏼‍♀️": "woman rowing boat: medium-light skin tone", + "🏃‍♀️": "woman running", + "🏃‍♀️‍➡️": "woman running facing right", + "🏃🏿‍♀️‍➡️": "woman running facing right: dark skin tone", + "🏃🏻‍♀️‍➡️": "woman running facing right: light skin tone", + "🏃🏽‍♀️‍➡️": "woman running facing right: medium skin tone", + "🏃🏾‍♀️‍➡️": "woman running facing right: medium-dark skin tone", + "🏃🏼‍♀️‍➡️": "woman running facing right: medium-light skin tone", + "🏃🏿‍♀️": "woman running: dark skin tone", + "🏃🏻‍♀️": "woman running: light skin tone", + "🏃🏽‍♀️": "woman running: medium skin tone", + "🏃🏾‍♀️": "woman running: medium-dark skin tone", + "🏃🏼‍♀️": "woman running: medium-light skin tone", + "👩‍🔬": "woman scientist", + "👩🏿‍🔬": "woman scientist: dark skin tone", + "👩🏻‍🔬": "woman scientist: light skin tone", + "👩🏽‍🔬": "woman scientist: medium skin tone", + "👩🏾‍🔬": "woman scientist: medium-dark skin tone", + "👩🏼‍🔬": "woman scientist: medium-light skin tone", + "🤷‍♀️": "woman shrugging", + "🤷🏿‍♀️": "woman shrugging: dark skin tone", + "🤷🏻‍♀️": "woman shrugging: light skin tone", + "🤷🏽‍♀️": "woman shrugging: medium skin tone", + "🤷🏾‍♀️": "woman shrugging: medium-dark skin tone", + "🤷🏼‍♀️": "woman shrugging: medium-light skin tone", + "👩‍🎤": "woman singer", + "👩🏿‍🎤": "woman singer: dark skin tone", + "👩🏻‍🎤": "woman singer: light skin tone", + "👩🏽‍🎤": "woman singer: medium skin tone", + "👩🏾‍🎤": "woman singer: medium-dark skin tone", + "👩🏼‍🎤": "woman singer: medium-light skin tone", + "🧍‍♀️": "woman standing", + "🧍🏿‍♀️": "woman standing: dark skin tone", + "🧍🏻‍♀️": "woman standing: light skin tone", + "🧍🏽‍♀️": "woman standing: medium skin tone", + "🧍🏾‍♀️": "woman standing: medium-dark skin tone", + "🧍🏼‍♀️": "woman standing: medium-light skin tone", + "👩‍🎓": "woman student", + "👩🏿‍🎓": "woman student: dark skin tone", + "👩🏻‍🎓": "woman student: light skin tone", + "👩🏽‍🎓": "woman student: medium skin tone", + "👩🏾‍🎓": "woman student: medium-dark skin tone", + "👩🏼‍🎓": "woman student: medium-light skin tone", + "🦸‍♀️": "woman superhero", + "🦸🏿‍♀️": "woman superhero: dark skin tone", + "🦸🏻‍♀️": "woman superhero: light skin tone", + "🦸🏽‍♀️": "woman superhero: medium skin tone", + "🦸🏾‍♀️": "woman superhero: medium-dark skin tone", + "🦸🏼‍♀️": "woman superhero: medium-light skin tone", + "🦹‍♀️": "woman supervillain", + "🦹🏿‍♀️": "woman supervillain: dark skin tone", + "🦹🏻‍♀️": "woman supervillain: light skin tone", + "🦹🏽‍♀️": "woman supervillain: medium skin tone", + "🦹🏾‍♀️": "woman supervillain: medium-dark skin tone", + "🦹🏼‍♀️": "woman supervillain: medium-light skin tone", + "🏄‍♀️": "woman surfing", + "🏄🏿‍♀️": "woman surfing: dark skin tone", + "🏄🏻‍♀️": "woman surfing: light skin tone", + "🏄🏽‍♀️": "woman surfing: medium skin tone", + "🏄🏾‍♀️": "woman surfing: medium-dark skin tone", + "🏄🏼‍♀️": "woman surfing: medium-light skin tone", + "🏊‍♀️": "woman swimming", + "🏊🏿‍♀️": "woman swimming: dark skin tone", + "🏊🏻‍♀️": "woman swimming: light skin tone", + "🏊🏽‍♀️": "woman swimming: medium skin tone", + "🏊🏾‍♀️": "woman swimming: medium-dark skin tone", + "🏊🏼‍♀️": "woman swimming: medium-light skin tone", + "👩‍🏫": "woman teacher", + "👩🏿‍🏫": "woman teacher: dark skin tone", + "👩🏻‍🏫": "woman teacher: light skin tone", + "👩🏽‍🏫": "woman teacher: medium skin tone", + "👩🏾‍🏫": "woman teacher: medium-dark skin tone", + "👩🏼‍🏫": "woman teacher: medium-light skin tone", + "👩‍💻": "woman technologist", + "👩🏿‍💻": "woman technologist: dark skin tone", + "👩🏻‍💻": "woman technologist: light skin tone", + "👩🏽‍💻": "woman technologist: medium skin tone", + "👩🏾‍💻": "woman technologist: medium-dark skin tone", + "👩🏼‍💻": "woman technologist: medium-light skin tone", + "💁‍♀️": "woman tipping hand", + "💁🏿‍♀️": "woman tipping hand: dark skin tone", + "💁🏻‍♀️": "woman tipping hand: light skin tone", + "💁🏽‍♀️": "woman tipping hand: medium skin tone", + "💁🏾‍♀️": "woman tipping hand: medium-dark skin tone", + "💁🏼‍♀️": "woman tipping hand: medium-light skin tone", + "🧛‍♀️": "woman vampire", + "🧛🏿‍♀️": "woman vampire: dark skin tone", + "🧛🏻‍♀️": "woman vampire: light skin tone", + "🧛🏽‍♀️": "woman vampire: medium skin tone", + "🧛🏾‍♀️": "woman vampire: medium-dark skin tone", + "🧛🏼‍♀️": "woman vampire: medium-light skin tone", + "🚶‍♀️": "woman walking", + "🚶‍♀️‍➡️": "woman walking facing right", + "🚶🏿‍♀️‍➡️": "woman walking facing right: dark skin tone", + "🚶🏻‍♀️‍➡️": "woman walking facing right: light skin tone", + "🚶🏽‍♀️‍➡️": "woman walking facing right: medium skin tone", + "🚶🏾‍♀️‍➡️": "woman walking facing right: medium-dark skin tone", + "🚶🏼‍♀️‍➡️": "woman walking facing right: medium-light skin tone", + "🚶🏿‍♀️": "woman walking: dark skin tone", + "🚶🏻‍♀️": "woman walking: light skin tone", + "🚶🏽‍♀️": "woman walking: medium skin tone", + "🚶🏾‍♀️": "woman walking: medium-dark skin tone", + "🚶🏼‍♀️": "woman walking: medium-light skin tone", + "👳‍♀️": "woman wearing turban", + "👳🏿‍♀️": "woman wearing turban: dark skin tone", + "👳🏻‍♀️": "woman wearing turban: light skin tone", + "👳🏽‍♀️": "woman wearing turban: medium skin tone", + "👳🏾‍♀️": "woman wearing turban: medium-dark skin tone", + "👳🏼‍♀️": "woman wearing turban: medium-light skin tone", + "👰‍♀️": "woman with veil", + "👰🏿‍♀️": "woman with veil: dark skin tone", + "👰🏻‍♀️": "woman with veil: light skin tone", + "👰🏽‍♀️": "woman with veil: medium skin tone", + "👰🏾‍♀️": "woman with veil: medium-dark skin tone", + "👰🏼‍♀️": "woman with veil: medium-light skin tone", + "👩‍🦯": "woman with white cane", + "👩‍🦯‍➡️": "woman with white cane facing right", + "👩🏿‍🦯‍➡️": "woman with white cane facing right: dark skin tone", + "👩🏻‍🦯‍➡️": "woman with white cane facing right: light skin tone", + "👩🏽‍🦯‍➡️": "woman with white cane facing right: medium skin tone", + "👩🏾‍🦯‍➡️": "woman with white cane facing right: medium-dark skin tone", + "👩🏼‍🦯‍➡️": "woman with white cane facing right: medium-light skin tone", + "👩🏿‍🦯": "woman with white cane: dark skin tone", + "👩🏻‍🦯": "woman with white cane: light skin tone", + "👩🏽‍🦯": "woman with white cane: medium skin tone", + "👩🏾‍🦯": "woman with white cane: medium-dark skin tone", + "👩🏼‍🦯": "woman with white cane: medium-light skin tone", + "🧟‍♀️": "woman zombie", + "👩‍🦲": "woman: bald", + "🧔‍♀️": "woman: beard", + "👱‍♀️": "woman: blond hair", + "👩‍🦱": "woman: curly hair", + "👩🏿‍🦲": "woman: dark skin tone, bald", + "🧔🏿‍♀️": "woman: dark skin tone, beard", + "👱🏿‍♀️": "woman: dark skin tone, blond hair", + "👩🏿‍🦱": "woman: dark skin tone, curly hair", + "👩🏿‍🦰": "woman: dark skin tone, red hair", + "👩🏿‍🦳": "woman: dark skin tone, white hair", + "👩🏻‍🦲": "woman: light skin tone, bald", + "🧔🏻‍♀️": "woman: light skin tone, beard", + "👱🏻‍♀️": "woman: light skin tone, blond hair", + "👩🏻‍🦱": "woman: light skin tone, curly hair", + "👩🏻‍🦰": "woman: light skin tone, red hair", + "👩🏻‍🦳": "woman: light skin tone, white hair", + "👩🏽‍🦲": "woman: medium skin tone, bald", + "🧔🏽‍♀️": "woman: medium skin tone, beard", + "👱🏽‍♀️": "woman: medium skin tone, blond hair", + "👩🏽‍🦱": "woman: medium skin tone, curly hair", + "👩🏽‍🦰": "woman: medium skin tone, red hair", + "👩🏽‍🦳": "woman: medium skin tone, white hair", + "👩🏾‍🦲": "woman: medium-dark skin tone, bald", + "🧔🏾‍♀️": "woman: medium-dark skin tone, beard", + "👱🏾‍♀️": "woman: medium-dark skin tone, blond hair", + "👩🏾‍🦱": "woman: medium-dark skin tone, curly hair", + "👩🏾‍🦰": "woman: medium-dark skin tone, red hair", + "👩🏾‍🦳": "woman: medium-dark skin tone, white hair", + "👩🏼‍🦲": "woman: medium-light skin tone, bald", + "🧔🏼‍♀️": "woman: medium-light skin tone, beard", + "👱🏼‍♀️": "woman: medium-light skin tone, blond hair", + "👩🏼‍🦱": "woman: medium-light skin tone, curly hair", + "👩🏼‍🦰": "woman: medium-light skin tone, red hair", + "👩🏼‍🦳": "woman: medium-light skin tone, white hair", + "👩‍🦰": "woman: red hair", + "👩‍🦳": "woman: white hair", + "👯‍♀️": "women with bunny ears", + "🤼‍♀️": "women wrestling", +} as const; diff --git a/src/typescript/sdk/src/emoji_data/chat-names.json b/src/typescript/sdk/src/emoji_data/chat-names.json deleted file mode 100644 index d38bba2a1..000000000 --- a/src/typescript/sdk/src/emoji_data/chat-names.json +++ /dev/null @@ -1,1213 +0,0 @@ -{ - "artist": null, - "artist: dark skin tone": null, - "artist: light skin tone": null, - "artist: medium skin tone": null, - "artist: medium-dark skin tone": null, - "artist: medium-light skin tone": null, - "astronaut": null, - "astronaut: dark skin tone": null, - "astronaut: light skin tone": null, - "astronaut: medium skin tone": null, - "astronaut: medium-dark skin tone": null, - "astronaut: medium-light skin tone": null, - "broken chain": null, - "brown mushroom": null, - "cook": null, - "cook: dark skin tone": null, - "cook: light skin tone": null, - "cook: medium skin tone": null, - "cook: medium-dark skin tone": null, - "cook: medium-light skin tone": null, - "couple with heart: man, man": null, - "couple with heart: woman, man": null, - "couple with heart: woman, woman": null, - "deaf man": null, - "deaf man: dark skin tone": null, - "deaf man: light skin tone": null, - "deaf man: medium skin tone": null, - "deaf man: medium-dark skin tone": null, - "deaf man: medium-light skin tone": null, - "deaf woman": null, - "deaf woman: dark skin tone": null, - "deaf woman: light skin tone": null, - "deaf woman: medium skin tone": null, - "deaf woman: medium-dark skin tone": null, - "deaf woman: medium-light skin tone": null, - "eye in speech bubble": null, - "face exhaling": null, - "face in clouds": null, - "face with spiral eyes": null, - "factory worker": null, - "factory worker: dark skin tone": null, - "factory worker: light skin tone": null, - "factory worker: medium skin tone": null, - "factory worker: medium-dark skin tone": null, - "factory worker: medium-light skin tone": null, - "family: adult, adult, child": null, - "family: adult, adult, child, child": null, - "family: adult, child": null, - "family: adult, child, child": null, - "family: man, boy": null, - "family: man, boy, boy": null, - "family: man, girl": null, - "family: man, girl, boy": null, - "family: man, girl, girl": null, - "family: man, man, boy": null, - "family: man, man, boy, boy": null, - "family: man, man, girl": null, - "family: man, man, girl, boy": null, - "family: man, man, girl, girl": null, - "family: man, woman, boy": null, - "family: man, woman, boy, boy": null, - "family: man, woman, girl": null, - "family: man, woman, girl, boy": null, - "family: man, woman, girl, girl": null, - "family: woman, boy": null, - "family: woman, boy, boy": null, - "family: woman, girl": null, - "family: woman, girl, boy": null, - "family: woman, girl, girl": null, - "family: woman, woman, boy": null, - "family: woman, woman, boy, boy": null, - "family: woman, woman, girl": null, - "family: woman, woman, girl, boy": null, - "family: woman, woman, girl, girl": null, - "farmer": null, - "farmer: dark skin tone": null, - "farmer: light skin tone": null, - "farmer: medium skin tone": null, - "farmer: medium-dark skin tone": null, - "farmer: medium-light skin tone": null, - "firefighter": null, - "firefighter: dark skin tone": null, - "firefighter: light skin tone": null, - "firefighter: medium skin tone": null, - "firefighter: medium-dark skin tone": null, - "firefighter: medium-light skin tone": null, - "flag: England": null, - "flag: Scotland": null, - "flag: Wales": null, - "handshake: dark skin tone, light skin tone": null, - "handshake: dark skin tone, medium skin tone": null, - "handshake: dark skin tone, medium-dark skin tone": null, - "handshake: dark skin tone, medium-light skin tone": null, - "handshake: light skin tone, dark skin tone": null, - "handshake: light skin tone, medium skin tone": null, - "handshake: light skin tone, medium-dark skin tone": null, - "handshake: light skin tone, medium-light skin tone": null, - "handshake: medium skin tone, dark skin tone": null, - "handshake: medium skin tone, light skin tone": null, - "handshake: medium skin tone, medium-dark skin tone": null, - "handshake: medium skin tone, medium-light skin tone": null, - "handshake: medium-dark skin tone, dark skin tone": null, - "handshake: medium-dark skin tone, light skin tone": null, - "handshake: medium-dark skin tone, medium skin tone": null, - "handshake: medium-dark skin tone, medium-light skin tone": null, - "handshake: medium-light skin tone, dark skin tone": null, - "handshake: medium-light skin tone, light skin tone": null, - "handshake: medium-light skin tone, medium skin tone": null, - "handshake: medium-light skin tone, medium-dark skin tone": null, - "head shaking horizontally": null, - "head shaking vertically": null, - "health worker": null, - "health worker: dark skin tone": null, - "health worker: light skin tone": null, - "health worker: medium skin tone": null, - "health worker: medium-dark skin tone": null, - "health worker: medium-light skin tone": null, - "heart on fire": null, - "judge": null, - "judge: dark skin tone": null, - "judge: light skin tone": null, - "judge: medium skin tone": null, - "judge: medium-dark skin tone": null, - "judge: medium-light skin tone": null, - "lime": null, - "man artist": null, - "man artist: dark skin tone": null, - "man artist: light skin tone": null, - "man artist: medium skin tone": null, - "man artist: medium-dark skin tone": null, - "man artist: medium-light skin tone": null, - "man astronaut": null, - "man astronaut: dark skin tone": null, - "man astronaut: light skin tone": null, - "man astronaut: medium skin tone": null, - "man astronaut: medium-dark skin tone": null, - "man astronaut: medium-light skin tone": null, - "man biking": null, - "man biking: dark skin tone": null, - "man biking: light skin tone": null, - "man biking: medium skin tone": null, - "man biking: medium-dark skin tone": null, - "man biking: medium-light skin tone": null, - "man bouncing ball": null, - "man bouncing ball: dark skin tone": null, - "man bouncing ball: light skin tone": null, - "man bouncing ball: medium skin tone": null, - "man bouncing ball: medium-dark skin tone": null, - "man bouncing ball: medium-light skin tone": null, - "man bowing": null, - "man bowing: dark skin tone": null, - "man bowing: light skin tone": null, - "man bowing: medium skin tone": null, - "man bowing: medium-dark skin tone": null, - "man bowing: medium-light skin tone": null, - "man cartwheeling": null, - "man cartwheeling: dark skin tone": null, - "man cartwheeling: light skin tone": null, - "man cartwheeling: medium skin tone": null, - "man cartwheeling: medium-dark skin tone": null, - "man cartwheeling: medium-light skin tone": null, - "man climbing": null, - "man climbing: dark skin tone": null, - "man climbing: light skin tone": null, - "man climbing: medium skin tone": null, - "man climbing: medium-dark skin tone": null, - "man climbing: medium-light skin tone": null, - "man construction worker": null, - "man construction worker: dark skin tone": null, - "man construction worker: light skin tone": null, - "man construction worker: medium skin tone": null, - "man construction worker: medium-dark skin tone": null, - "man construction worker: medium-light skin tone": null, - "man cook": null, - "man cook: dark skin tone": null, - "man cook: light skin tone": null, - "man cook: medium skin tone": null, - "man cook: medium-dark skin tone": null, - "man cook: medium-light skin tone": null, - "man detective": null, - "man detective: dark skin tone": null, - "man detective: light skin tone": null, - "man detective: medium skin tone": null, - "man detective: medium-dark skin tone": null, - "man detective: medium-light skin tone": null, - "man elf": null, - "man elf: dark skin tone": null, - "man elf: light skin tone": null, - "man elf: medium skin tone": null, - "man elf: medium-dark skin tone": null, - "man elf: medium-light skin tone": null, - "man facepalming": null, - "man facepalming: dark skin tone": null, - "man facepalming: light skin tone": null, - "man facepalming: medium skin tone": null, - "man facepalming: medium-dark skin tone": null, - "man facepalming: medium-light skin tone": null, - "man factory worker": null, - "man factory worker: dark skin tone": null, - "man factory worker: light skin tone": null, - "man factory worker: medium skin tone": null, - "man factory worker: medium-dark skin tone": null, - "man factory worker: medium-light skin tone": null, - "man fairy": null, - "man fairy: dark skin tone": null, - "man fairy: light skin tone": null, - "man fairy: medium skin tone": null, - "man fairy: medium-dark skin tone": null, - "man fairy: medium-light skin tone": null, - "man farmer": null, - "man farmer: dark skin tone": null, - "man farmer: light skin tone": null, - "man farmer: medium skin tone": null, - "man farmer: medium-dark skin tone": null, - "man farmer: medium-light skin tone": null, - "man feeding baby": null, - "man feeding baby: dark skin tone": null, - "man feeding baby: light skin tone": null, - "man feeding baby: medium skin tone": null, - "man feeding baby: medium-dark skin tone": null, - "man feeding baby: medium-light skin tone": null, - "man firefighter": null, - "man firefighter: dark skin tone": null, - "man firefighter: light skin tone": null, - "man firefighter: medium skin tone": null, - "man firefighter: medium-dark skin tone": null, - "man firefighter: medium-light skin tone": null, - "man frowning": null, - "man frowning: dark skin tone": null, - "man frowning: light skin tone": null, - "man frowning: medium skin tone": null, - "man frowning: medium-dark skin tone": null, - "man frowning: medium-light skin tone": null, - "man genie": null, - "man gesturing NO": null, - "man gesturing NO: dark skin tone": null, - "man gesturing NO: light skin tone": null, - "man gesturing NO: medium skin tone": null, - "man gesturing NO: medium-dark skin tone": null, - "man gesturing NO: medium-light skin tone": null, - "man gesturing OK": null, - "man gesturing OK: dark skin tone": null, - "man gesturing OK: light skin tone": null, - "man gesturing OK: medium skin tone": null, - "man gesturing OK: medium-dark skin tone": null, - "man gesturing OK: medium-light skin tone": null, - "man getting haircut": null, - "man getting haircut: dark skin tone": null, - "man getting haircut: light skin tone": null, - "man getting haircut: medium skin tone": null, - "man getting haircut: medium-dark skin tone": null, - "man getting haircut: medium-light skin tone": null, - "man getting massage": null, - "man getting massage: dark skin tone": null, - "man getting massage: light skin tone": null, - "man getting massage: medium skin tone": null, - "man getting massage: medium-dark skin tone": null, - "man getting massage: medium-light skin tone": null, - "man golfing": null, - "man golfing: dark skin tone": null, - "man golfing: light skin tone": null, - "man golfing: medium skin tone": null, - "man golfing: medium-dark skin tone": null, - "man golfing: medium-light skin tone": null, - "man guard": null, - "man guard: dark skin tone": null, - "man guard: light skin tone": null, - "man guard: medium skin tone": null, - "man guard: medium-dark skin tone": null, - "man guard: medium-light skin tone": null, - "man health worker": null, - "man health worker: dark skin tone": null, - "man health worker: light skin tone": null, - "man health worker: medium skin tone": null, - "man health worker: medium-dark skin tone": null, - "man health worker: medium-light skin tone": null, - "man in lotus position": null, - "man in lotus position: dark skin tone": null, - "man in lotus position: light skin tone": null, - "man in lotus position: medium skin tone": null, - "man in lotus position: medium-dark skin tone": null, - "man in lotus position: medium-light skin tone": null, - "man in manual wheelchair": null, - "man in manual wheelchair facing right": null, - "man in manual wheelchair facing right: dark skin tone": null, - "man in manual wheelchair facing right: light skin tone": null, - "man in manual wheelchair facing right: medium skin tone": null, - "man in manual wheelchair facing right: medium-dark skin tone": null, - "man in manual wheelchair facing right: medium-light skin tone": null, - "man in manual wheelchair: dark skin tone": null, - "man in manual wheelchair: light skin tone": null, - "man in manual wheelchair: medium skin tone": null, - "man in manual wheelchair: medium-dark skin tone": null, - "man in manual wheelchair: medium-light skin tone": null, - "man in motorized wheelchair": null, - "man in motorized wheelchair facing right": null, - "man in motorized wheelchair facing right: dark skin tone": null, - "man in motorized wheelchair facing right: light skin tone": null, - "man in motorized wheelchair facing right: medium skin tone": null, - "man in motorized wheelchair facing right: medium-dark skin tone": null, - "man in motorized wheelchair facing right: medium-light skin tone": null, - "man in motorized wheelchair: dark skin tone": null, - "man in motorized wheelchair: light skin tone": null, - "man in motorized wheelchair: medium skin tone": null, - "man in motorized wheelchair: medium-dark skin tone": null, - "man in motorized wheelchair: medium-light skin tone": null, - "man in steamy room": null, - "man in steamy room: dark skin tone": null, - "man in steamy room: light skin tone": null, - "man in steamy room: medium skin tone": null, - "man in steamy room: medium-dark skin tone": null, - "man in steamy room: medium-light skin tone": null, - "man in tuxedo": null, - "man in tuxedo: dark skin tone": null, - "man in tuxedo: light skin tone": null, - "man in tuxedo: medium skin tone": null, - "man in tuxedo: medium-dark skin tone": null, - "man in tuxedo: medium-light skin tone": null, - "man judge": null, - "man judge: dark skin tone": null, - "man judge: light skin tone": null, - "man judge: medium skin tone": null, - "man judge: medium-dark skin tone": null, - "man judge: medium-light skin tone": null, - "man juggling": null, - "man juggling: dark skin tone": null, - "man juggling: light skin tone": null, - "man juggling: medium skin tone": null, - "man juggling: medium-dark skin tone": null, - "man juggling: medium-light skin tone": null, - "man kneeling": null, - "man kneeling facing right": null, - "man kneeling facing right: dark skin tone": null, - "man kneeling facing right: light skin tone": null, - "man kneeling facing right: medium skin tone": null, - "man kneeling facing right: medium-dark skin tone": null, - "man kneeling facing right: medium-light skin tone": null, - "man kneeling: dark skin tone": null, - "man kneeling: light skin tone": null, - "man kneeling: medium skin tone": null, - "man kneeling: medium-dark skin tone": null, - "man kneeling: medium-light skin tone": null, - "man lifting weights": null, - "man lifting weights: dark skin tone": null, - "man lifting weights: light skin tone": null, - "man lifting weights: medium skin tone": null, - "man lifting weights: medium-dark skin tone": null, - "man lifting weights: medium-light skin tone": null, - "man mage": null, - "man mage: dark skin tone": null, - "man mage: light skin tone": null, - "man mage: medium skin tone": null, - "man mage: medium-dark skin tone": null, - "man mage: medium-light skin tone": null, - "man mechanic": null, - "man mechanic: dark skin tone": null, - "man mechanic: light skin tone": null, - "man mechanic: medium skin tone": null, - "man mechanic: medium-dark skin tone": null, - "man mechanic: medium-light skin tone": null, - "man mountain biking": null, - "man mountain biking: dark skin tone": null, - "man mountain biking: light skin tone": null, - "man mountain biking: medium skin tone": null, - "man mountain biking: medium-dark skin tone": null, - "man mountain biking: medium-light skin tone": null, - "man office worker": null, - "man office worker: dark skin tone": null, - "man office worker: light skin tone": null, - "man office worker: medium skin tone": null, - "man office worker: medium-dark skin tone": null, - "man office worker: medium-light skin tone": null, - "man pilot": null, - "man pilot: dark skin tone": null, - "man pilot: light skin tone": null, - "man pilot: medium skin tone": null, - "man pilot: medium-dark skin tone": null, - "man pilot: medium-light skin tone": null, - "man playing handball": null, - "man playing handball: dark skin tone": null, - "man playing handball: light skin tone": null, - "man playing handball: medium skin tone": null, - "man playing handball: medium-dark skin tone": null, - "man playing handball: medium-light skin tone": null, - "man playing water polo": null, - "man playing water polo: dark skin tone": null, - "man playing water polo: light skin tone": null, - "man playing water polo: medium skin tone": null, - "man playing water polo: medium-dark skin tone": null, - "man playing water polo: medium-light skin tone": null, - "man police officer": null, - "man police officer: dark skin tone": null, - "man police officer: light skin tone": null, - "man police officer: medium skin tone": null, - "man police officer: medium-dark skin tone": null, - "man police officer: medium-light skin tone": null, - "man pouting": null, - "man pouting: dark skin tone": null, - "man pouting: light skin tone": null, - "man pouting: medium skin tone": null, - "man pouting: medium-dark skin tone": null, - "man pouting: medium-light skin tone": null, - "man raising hand": null, - "man raising hand: dark skin tone": null, - "man raising hand: light skin tone": null, - "man raising hand: medium skin tone": null, - "man raising hand: medium-dark skin tone": null, - "man raising hand: medium-light skin tone": null, - "man rowing boat": null, - "man rowing boat: dark skin tone": null, - "man rowing boat: light skin tone": null, - "man rowing boat: medium skin tone": null, - "man rowing boat: medium-dark skin tone": null, - "man rowing boat: medium-light skin tone": null, - "man running": null, - "man running facing right": null, - "man running facing right: dark skin tone": null, - "man running facing right: light skin tone": null, - "man running facing right: medium skin tone": null, - "man running facing right: medium-dark skin tone": null, - "man running facing right: medium-light skin tone": null, - "man running: dark skin tone": null, - "man running: light skin tone": null, - "man running: medium skin tone": null, - "man running: medium-dark skin tone": null, - "man running: medium-light skin tone": null, - "man scientist": null, - "man scientist: dark skin tone": null, - "man scientist: light skin tone": null, - "man scientist: medium skin tone": null, - "man scientist: medium-dark skin tone": null, - "man scientist: medium-light skin tone": null, - "man shrugging": null, - "man shrugging: dark skin tone": null, - "man shrugging: light skin tone": null, - "man shrugging: medium skin tone": null, - "man shrugging: medium-dark skin tone": null, - "man shrugging: medium-light skin tone": null, - "man singer": null, - "man singer: dark skin tone": null, - "man singer: light skin tone": null, - "man singer: medium skin tone": null, - "man singer: medium-dark skin tone": null, - "man singer: medium-light skin tone": null, - "man standing": null, - "man standing: dark skin tone": null, - "man standing: light skin tone": null, - "man standing: medium skin tone": null, - "man standing: medium-dark skin tone": null, - "man standing: medium-light skin tone": null, - "man student": null, - "man student: dark skin tone": null, - "man student: light skin tone": null, - "man student: medium skin tone": null, - "man student: medium-dark skin tone": null, - "man student: medium-light skin tone": null, - "man superhero": null, - "man superhero: dark skin tone": null, - "man superhero: light skin tone": null, - "man superhero: medium skin tone": null, - "man superhero: medium-dark skin tone": null, - "man superhero: medium-light skin tone": null, - "man supervillain": null, - "man supervillain: dark skin tone": null, - "man supervillain: light skin tone": null, - "man supervillain: medium skin tone": null, - "man supervillain: medium-dark skin tone": null, - "man supervillain: medium-light skin tone": null, - "man surfing": null, - "man surfing: dark skin tone": null, - "man surfing: light skin tone": null, - "man surfing: medium skin tone": null, - "man surfing: medium-dark skin tone": null, - "man surfing: medium-light skin tone": null, - "man swimming": null, - "man swimming: dark skin tone": null, - "man swimming: light skin tone": null, - "man swimming: medium skin tone": null, - "man swimming: medium-dark skin tone": null, - "man swimming: medium-light skin tone": null, - "man teacher": null, - "man teacher: dark skin tone": null, - "man teacher: light skin tone": null, - "man teacher: medium skin tone": null, - "man teacher: medium-dark skin tone": null, - "man teacher: medium-light skin tone": null, - "man technologist": null, - "man technologist: dark skin tone": null, - "man technologist: light skin tone": null, - "man technologist: medium skin tone": null, - "man technologist: medium-dark skin tone": null, - "man technologist: medium-light skin tone": null, - "man tipping hand": null, - "man tipping hand: dark skin tone": null, - "man tipping hand: light skin tone": null, - "man tipping hand: medium skin tone": null, - "man tipping hand: medium-dark skin tone": null, - "man tipping hand: medium-light skin tone": null, - "man vampire": null, - "man vampire: dark skin tone": null, - "man vampire: light skin tone": null, - "man vampire: medium skin tone": null, - "man vampire: medium-dark skin tone": null, - "man vampire: medium-light skin tone": null, - "man walking": null, - "man walking facing right": null, - "man walking facing right: dark skin tone": null, - "man walking facing right: light skin tone": null, - "man walking facing right: medium skin tone": null, - "man walking facing right: medium-dark skin tone": null, - "man walking facing right: medium-light skin tone": null, - "man walking: dark skin tone": null, - "man walking: light skin tone": null, - "man walking: medium skin tone": null, - "man walking: medium-dark skin tone": null, - "man walking: medium-light skin tone": null, - "man wearing turban": null, - "man wearing turban: dark skin tone": null, - "man wearing turban: light skin tone": null, - "man wearing turban: medium skin tone": null, - "man wearing turban: medium-dark skin tone": null, - "man wearing turban: medium-light skin tone": null, - "man with veil": null, - "man with veil: dark skin tone": null, - "man with veil: light skin tone": null, - "man with veil: medium skin tone": null, - "man with veil: medium-dark skin tone": null, - "man with veil: medium-light skin tone": null, - "man with white cane": null, - "man with white cane facing right": null, - "man with white cane facing right: dark skin tone": null, - "man with white cane facing right: light skin tone": null, - "man with white cane facing right: medium skin tone": null, - "man with white cane facing right: medium-dark skin tone": null, - "man with white cane facing right: medium-light skin tone": null, - "man with white cane: dark skin tone": null, - "man with white cane: light skin tone": null, - "man with white cane: medium skin tone": null, - "man with white cane: medium-dark skin tone": null, - "man with white cane: medium-light skin tone": null, - "man zombie": null, - "man: bald": null, - "man: beard": null, - "man: blond hair": null, - "man: curly hair": null, - "man: dark skin tone, bald": null, - "man: dark skin tone, beard": null, - "man: dark skin tone, blond hair": null, - "man: dark skin tone, curly hair": null, - "man: dark skin tone, red hair": null, - "man: dark skin tone, white hair": null, - "man: light skin tone, bald": null, - "man: light skin tone, beard": null, - "man: light skin tone, blond hair": null, - "man: light skin tone, curly hair": null, - "man: light skin tone, red hair": null, - "man: light skin tone, white hair": null, - "man: medium skin tone, bald": null, - "man: medium skin tone, beard": null, - "man: medium skin tone, blond hair": null, - "man: medium skin tone, curly hair": null, - "man: medium skin tone, red hair": null, - "man: medium skin tone, white hair": null, - "man: medium-dark skin tone, bald": null, - "man: medium-dark skin tone, beard": null, - "man: medium-dark skin tone, blond hair": null, - "man: medium-dark skin tone, curly hair": null, - "man: medium-dark skin tone, red hair": null, - "man: medium-dark skin tone, white hair": null, - "man: medium-light skin tone, bald": null, - "man: medium-light skin tone, beard": null, - "man: medium-light skin tone, blond hair": null, - "man: medium-light skin tone, curly hair": null, - "man: medium-light skin tone, red hair": null, - "man: medium-light skin tone, white hair": null, - "man: red hair": null, - "man: white hair": null, - "mechanic": null, - "mechanic: dark skin tone": null, - "mechanic: light skin tone": null, - "mechanic: medium skin tone": null, - "mechanic: medium-dark skin tone": null, - "mechanic: medium-light skin tone": null, - "men with bunny ears": null, - "men wrestling": null, - "mending heart": null, - "mermaid": null, - "mermaid: dark skin tone": null, - "mermaid: light skin tone": null, - "mermaid: medium skin tone": null, - "mermaid: medium-dark skin tone": null, - "mermaid: medium-light skin tone": null, - "merman": null, - "merman: dark skin tone": null, - "merman: light skin tone": null, - "merman: medium skin tone": null, - "merman: medium-dark skin tone": null, - "merman: medium-light skin tone": null, - "mx claus": null, - "mx claus: dark skin tone": null, - "mx claus: light skin tone": null, - "mx claus: medium skin tone": null, - "mx claus: medium-dark skin tone": null, - "mx claus: medium-light skin tone": null, - "office worker": null, - "office worker: dark skin tone": null, - "office worker: light skin tone": null, - "office worker: medium skin tone": null, - "office worker: medium-dark skin tone": null, - "office worker: medium-light skin tone": null, - "people holding hands": null, - "person feeding baby": null, - "person feeding baby: dark skin tone": null, - "person feeding baby: light skin tone": null, - "person feeding baby: medium skin tone": null, - "person feeding baby: medium-dark skin tone": null, - "person feeding baby: medium-light skin tone": null, - "person in manual wheelchair": null, - "person in manual wheelchair facing right": null, - "person in manual wheelchair facing right: dark skin tone": null, - "person in manual wheelchair facing right: light skin tone": null, - "person in manual wheelchair facing right: medium skin tone": null, - "person in manual wheelchair facing right: medium-dark skin tone": null, - "person in manual wheelchair facing right: medium-light skin tone": null, - "person in manual wheelchair: dark skin tone": null, - "person in manual wheelchair: light skin tone": null, - "person in manual wheelchair: medium skin tone": null, - "person in manual wheelchair: medium-dark skin tone": null, - "person in manual wheelchair: medium-light skin tone": null, - "person in motorized wheelchair": null, - "person in motorized wheelchair facing right": null, - "person in motorized wheelchair facing right: dark skin tone": null, - "person in motorized wheelchair facing right: light skin tone": null, - "person in motorized wheelchair facing right: medium skin tone": null, - "person in motorized wheelchair facing right: medium-dark skin tone": null, - "person in motorized wheelchair facing right: medium-light skin tone": null, - "person in motorized wheelchair: dark skin tone": null, - "person in motorized wheelchair: light skin tone": null, - "person in motorized wheelchair: medium skin tone": null, - "person in motorized wheelchair: medium-dark skin tone": null, - "person in motorized wheelchair: medium-light skin tone": null, - "person kneeling facing right": null, - "person kneeling facing right: dark skin tone": null, - "person kneeling facing right: light skin tone": null, - "person kneeling facing right: medium skin tone": null, - "person kneeling facing right: medium-dark skin tone": null, - "person kneeling facing right: medium-light skin tone": null, - "person running facing right": null, - "person running facing right: dark skin tone": null, - "person running facing right: light skin tone": null, - "person running facing right: medium skin tone": null, - "person running facing right: medium-dark skin tone": null, - "person running facing right: medium-light skin tone": null, - "person walking facing right": null, - "person walking facing right: dark skin tone": null, - "person walking facing right: light skin tone": null, - "person walking facing right: medium skin tone": null, - "person walking facing right: medium-dark skin tone": null, - "person walking facing right: medium-light skin tone": null, - "person with white cane": null, - "person with white cane facing right": null, - "person with white cane facing right: dark skin tone": null, - "person with white cane facing right: light skin tone": null, - "person with white cane facing right: medium skin tone": null, - "person with white cane facing right: medium-dark skin tone": null, - "person with white cane facing right: medium-light skin tone": null, - "person with white cane: dark skin tone": null, - "person with white cane: light skin tone": null, - "person with white cane: medium skin tone": null, - "person with white cane: medium-dark skin tone": null, - "person with white cane: medium-light skin tone": null, - "person: bald": null, - "person: curly hair": null, - "person: dark skin tone, bald": null, - "person: dark skin tone, curly hair": null, - "person: dark skin tone, red hair": null, - "person: dark skin tone, white hair": null, - "person: light skin tone, bald": null, - "person: light skin tone, curly hair": null, - "person: light skin tone, red hair": null, - "person: light skin tone, white hair": null, - "person: medium skin tone, bald": null, - "person: medium skin tone, curly hair": null, - "person: medium skin tone, red hair": null, - "person: medium skin tone, white hair": null, - "person: medium-dark skin tone, bald": null, - "person: medium-dark skin tone, curly hair": null, - "person: medium-dark skin tone, red hair": null, - "person: medium-dark skin tone, white hair": null, - "person: medium-light skin tone, bald": null, - "person: medium-light skin tone, curly hair": null, - "person: medium-light skin tone, red hair": null, - "person: medium-light skin tone, white hair": null, - "person: red hair": null, - "person: white hair": null, - "phoenix": null, - "pilot": null, - "pilot: dark skin tone": null, - "pilot: light skin tone": null, - "pilot: medium skin tone": null, - "pilot: medium-dark skin tone": null, - "pilot: medium-light skin tone": null, - "pirate flag": null, - "polar bear": null, - "rainbow flag": null, - "scientist": null, - "scientist: dark skin tone": null, - "scientist: light skin tone": null, - "scientist: medium skin tone": null, - "scientist: medium-dark skin tone": null, - "scientist: medium-light skin tone": null, - "service dog": null, - "singer": null, - "singer: dark skin tone": null, - "singer: light skin tone": null, - "singer: medium skin tone": null, - "singer: medium-dark skin tone": null, - "singer: medium-light skin tone": null, - "student": null, - "student: dark skin tone": null, - "student: light skin tone": null, - "student: medium skin tone": null, - "student: medium-dark skin tone": null, - "student: medium-light skin tone": null, - "teacher": null, - "teacher: dark skin tone": null, - "teacher: light skin tone": null, - "teacher: medium skin tone": null, - "teacher: medium-dark skin tone": null, - "teacher: medium-light skin tone": null, - "technologist": null, - "technologist: dark skin tone": null, - "technologist: light skin tone": null, - "technologist: medium skin tone": null, - "technologist: medium-dark skin tone": null, - "technologist: medium-light skin tone": null, - "transgender flag": null, - "woman and man holding hands: dark skin tone, light skin tone": null, - "woman and man holding hands: dark skin tone, medium skin tone": null, - "woman and man holding hands: dark skin tone, medium-dark skin tone": null, - "woman and man holding hands: dark skin tone, medium-light skin tone": null, - "woman and man holding hands: light skin tone, dark skin tone": null, - "woman and man holding hands: light skin tone, medium skin tone": null, - "woman and man holding hands: light skin tone, medium-dark skin tone": null, - "woman and man holding hands: light skin tone, medium-light skin tone": null, - "woman and man holding hands: medium skin tone, dark skin tone": null, - "woman and man holding hands: medium skin tone, light skin tone": null, - "woman and man holding hands: medium skin tone, medium-dark skin tone": null, - "woman and man holding hands: medium skin tone, medium-light skin tone": null, - "woman and man holding hands: medium-dark skin tone, dark skin tone": null, - "woman and man holding hands: medium-dark skin tone, light skin tone": null, - "woman and man holding hands: medium-dark skin tone, medium skin tone": null, - "woman and man holding hands: medium-dark skin tone, medium-light skin tone": null, - "woman and man holding hands: medium-light skin tone, dark skin tone": null, - "woman and man holding hands: medium-light skin tone, light skin tone": null, - "woman and man holding hands: medium-light skin tone, medium skin tone": null, - "woman and man holding hands: medium-light skin tone, medium-dark skin tone": null, - "woman artist": null, - "woman artist: dark skin tone": null, - "woman artist: light skin tone": null, - "woman artist: medium skin tone": null, - "woman artist: medium-dark skin tone": null, - "woman artist: medium-light skin tone": null, - "woman astronaut": null, - "woman astronaut: dark skin tone": null, - "woman astronaut: light skin tone": null, - "woman astronaut: medium skin tone": null, - "woman astronaut: medium-dark skin tone": null, - "woman astronaut: medium-light skin tone": null, - "woman biking": null, - "woman biking: dark skin tone": null, - "woman biking: light skin tone": null, - "woman biking: medium skin tone": null, - "woman biking: medium-dark skin tone": null, - "woman biking: medium-light skin tone": null, - "woman bouncing ball": null, - "woman bouncing ball: dark skin tone": null, - "woman bouncing ball: light skin tone": null, - "woman bouncing ball: medium skin tone": null, - "woman bouncing ball: medium-dark skin tone": null, - "woman bouncing ball: medium-light skin tone": null, - "woman bowing": null, - "woman bowing: dark skin tone": null, - "woman bowing: light skin tone": null, - "woman bowing: medium skin tone": null, - "woman bowing: medium-dark skin tone": null, - "woman bowing: medium-light skin tone": null, - "woman cartwheeling": null, - "woman cartwheeling: dark skin tone": null, - "woman cartwheeling: light skin tone": null, - "woman cartwheeling: medium skin tone": null, - "woman cartwheeling: medium-dark skin tone": null, - "woman cartwheeling: medium-light skin tone": null, - "woman climbing": null, - "woman climbing: dark skin tone": null, - "woman climbing: light skin tone": null, - "woman climbing: medium skin tone": null, - "woman climbing: medium-dark skin tone": null, - "woman climbing: medium-light skin tone": null, - "woman construction worker": null, - "woman construction worker: dark skin tone": null, - "woman construction worker: light skin tone": null, - "woman construction worker: medium skin tone": null, - "woman construction worker: medium-dark skin tone": null, - "woman construction worker: medium-light skin tone": null, - "woman cook": null, - "woman cook: dark skin tone": null, - "woman cook: light skin tone": null, - "woman cook: medium skin tone": null, - "woman cook: medium-dark skin tone": null, - "woman cook: medium-light skin tone": null, - "woman detective": null, - "woman detective: dark skin tone": null, - "woman detective: light skin tone": null, - "woman detective: medium skin tone": null, - "woman detective: medium-dark skin tone": null, - "woman detective: medium-light skin tone": null, - "woman elf": null, - "woman elf: dark skin tone": null, - "woman elf: light skin tone": null, - "woman elf: medium skin tone": null, - "woman elf: medium-dark skin tone": null, - "woman elf: medium-light skin tone": null, - "woman facepalming": null, - "woman facepalming: dark skin tone": null, - "woman facepalming: light skin tone": null, - "woman facepalming: medium skin tone": null, - "woman facepalming: medium-dark skin tone": null, - "woman facepalming: medium-light skin tone": null, - "woman factory worker": null, - "woman factory worker: dark skin tone": null, - "woman factory worker: light skin tone": null, - "woman factory worker: medium skin tone": null, - "woman factory worker: medium-dark skin tone": null, - "woman factory worker: medium-light skin tone": null, - "woman fairy": null, - "woman fairy: dark skin tone": null, - "woman fairy: light skin tone": null, - "woman fairy: medium skin tone": null, - "woman fairy: medium-dark skin tone": null, - "woman fairy: medium-light skin tone": null, - "woman farmer": null, - "woman farmer: dark skin tone": null, - "woman farmer: light skin tone": null, - "woman farmer: medium skin tone": null, - "woman farmer: medium-dark skin tone": null, - "woman farmer: medium-light skin tone": null, - "woman feeding baby": null, - "woman feeding baby: dark skin tone": null, - "woman feeding baby: light skin tone": null, - "woman feeding baby: medium skin tone": null, - "woman feeding baby: medium-dark skin tone": null, - "woman feeding baby: medium-light skin tone": null, - "woman firefighter": null, - "woman firefighter: dark skin tone": null, - "woman firefighter: light skin tone": null, - "woman firefighter: medium skin tone": null, - "woman firefighter: medium-dark skin tone": null, - "woman firefighter: medium-light skin tone": null, - "woman frowning": null, - "woman frowning: dark skin tone": null, - "woman frowning: light skin tone": null, - "woman frowning: medium skin tone": null, - "woman frowning: medium-dark skin tone": null, - "woman frowning: medium-light skin tone": null, - "woman genie": null, - "woman gesturing NO": null, - "woman gesturing NO: dark skin tone": null, - "woman gesturing NO: light skin tone": null, - "woman gesturing NO: medium skin tone": null, - "woman gesturing NO: medium-dark skin tone": null, - "woman gesturing NO: medium-light skin tone": null, - "woman gesturing OK": null, - "woman gesturing OK: dark skin tone": null, - "woman gesturing OK: light skin tone": null, - "woman gesturing OK: medium skin tone": null, - "woman gesturing OK: medium-dark skin tone": null, - "woman gesturing OK: medium-light skin tone": null, - "woman getting haircut": null, - "woman getting haircut: dark skin tone": null, - "woman getting haircut: light skin tone": null, - "woman getting haircut: medium skin tone": null, - "woman getting haircut: medium-dark skin tone": null, - "woman getting haircut: medium-light skin tone": null, - "woman getting massage": null, - "woman getting massage: dark skin tone": null, - "woman getting massage: light skin tone": null, - "woman getting massage: medium skin tone": null, - "woman getting massage: medium-dark skin tone": null, - "woman getting massage: medium-light skin tone": null, - "woman golfing": null, - "woman golfing: dark skin tone": null, - "woman golfing: light skin tone": null, - "woman golfing: medium skin tone": null, - "woman golfing: medium-dark skin tone": null, - "woman golfing: medium-light skin tone": null, - "woman guard": null, - "woman guard: dark skin tone": null, - "woman guard: light skin tone": null, - "woman guard: medium skin tone": null, - "woman guard: medium-dark skin tone": null, - "woman guard: medium-light skin tone": null, - "woman health worker": null, - "woman health worker: dark skin tone": null, - "woman health worker: light skin tone": null, - "woman health worker: medium skin tone": null, - "woman health worker: medium-dark skin tone": null, - "woman health worker: medium-light skin tone": null, - "woman in lotus position": null, - "woman in lotus position: dark skin tone": null, - "woman in lotus position: light skin tone": null, - "woman in lotus position: medium skin tone": null, - "woman in lotus position: medium-dark skin tone": null, - "woman in lotus position: medium-light skin tone": null, - "woman in manual wheelchair": null, - "woman in manual wheelchair facing right": null, - "woman in manual wheelchair facing right: dark skin tone": null, - "woman in manual wheelchair facing right: light skin tone": null, - "woman in manual wheelchair facing right: medium skin tone": null, - "woman in manual wheelchair facing right: medium-dark skin tone": null, - "woman in manual wheelchair facing right: medium-light skin tone": null, - "woman in manual wheelchair: dark skin tone": null, - "woman in manual wheelchair: light skin tone": null, - "woman in manual wheelchair: medium skin tone": null, - "woman in manual wheelchair: medium-dark skin tone": null, - "woman in manual wheelchair: medium-light skin tone": null, - "woman in motorized wheelchair": null, - "woman in motorized wheelchair facing right": null, - "woman in motorized wheelchair facing right: dark skin tone": null, - "woman in motorized wheelchair facing right: light skin tone": null, - "woman in motorized wheelchair facing right: medium skin tone": null, - "woman in motorized wheelchair facing right: medium-dark skin tone": null, - "woman in motorized wheelchair facing right: medium-light skin tone": null, - "woman in motorized wheelchair: dark skin tone": null, - "woman in motorized wheelchair: light skin tone": null, - "woman in motorized wheelchair: medium skin tone": null, - "woman in motorized wheelchair: medium-dark skin tone": null, - "woman in motorized wheelchair: medium-light skin tone": null, - "woman in steamy room": null, - "woman in steamy room: dark skin tone": null, - "woman in steamy room: light skin tone": null, - "woman in steamy room: medium skin tone": null, - "woman in steamy room: medium-dark skin tone": null, - "woman in steamy room: medium-light skin tone": null, - "woman in tuxedo": null, - "woman in tuxedo: dark skin tone": null, - "woman in tuxedo: light skin tone": null, - "woman in tuxedo: medium skin tone": null, - "woman in tuxedo: medium-dark skin tone": null, - "woman in tuxedo: medium-light skin tone": null, - "woman judge": null, - "woman judge: dark skin tone": null, - "woman judge: light skin tone": null, - "woman judge: medium skin tone": null, - "woman judge: medium-dark skin tone": null, - "woman judge: medium-light skin tone": null, - "woman juggling": null, - "woman juggling: dark skin tone": null, - "woman juggling: light skin tone": null, - "woman juggling: medium skin tone": null, - "woman juggling: medium-dark skin tone": null, - "woman juggling: medium-light skin tone": null, - "woman kneeling": null, - "woman kneeling facing right": null, - "woman kneeling facing right: dark skin tone": null, - "woman kneeling facing right: light skin tone": null, - "woman kneeling facing right: medium skin tone": null, - "woman kneeling facing right: medium-dark skin tone": null, - "woman kneeling facing right: medium-light skin tone": null, - "woman kneeling: dark skin tone": null, - "woman kneeling: light skin tone": null, - "woman kneeling: medium skin tone": null, - "woman kneeling: medium-dark skin tone": null, - "woman kneeling: medium-light skin tone": null, - "woman lifting weights": null, - "woman lifting weights: dark skin tone": null, - "woman lifting weights: light skin tone": null, - "woman lifting weights: medium skin tone": null, - "woman lifting weights: medium-dark skin tone": null, - "woman lifting weights: medium-light skin tone": null, - "woman mage": null, - "woman mage: dark skin tone": null, - "woman mage: light skin tone": null, - "woman mage: medium skin tone": null, - "woman mage: medium-dark skin tone": null, - "woman mage: medium-light skin tone": null, - "woman mechanic": null, - "woman mechanic: dark skin tone": null, - "woman mechanic: light skin tone": null, - "woman mechanic: medium skin tone": null, - "woman mechanic: medium-dark skin tone": null, - "woman mechanic: medium-light skin tone": null, - "woman mountain biking": null, - "woman mountain biking: dark skin tone": null, - "woman mountain biking: light skin tone": null, - "woman mountain biking: medium skin tone": null, - "woman mountain biking: medium-dark skin tone": null, - "woman mountain biking: medium-light skin tone": null, - "woman office worker": null, - "woman office worker: dark skin tone": null, - "woman office worker: light skin tone": null, - "woman office worker: medium skin tone": null, - "woman office worker: medium-dark skin tone": null, - "woman office worker: medium-light skin tone": null, - "woman pilot": null, - "woman pilot: dark skin tone": null, - "woman pilot: light skin tone": null, - "woman pilot: medium skin tone": null, - "woman pilot: medium-dark skin tone": null, - "woman pilot: medium-light skin tone": null, - "woman playing handball": null, - "woman playing handball: dark skin tone": null, - "woman playing handball: light skin tone": null, - "woman playing handball: medium skin tone": null, - "woman playing handball: medium-dark skin tone": null, - "woman playing handball: medium-light skin tone": null, - "woman playing water polo": null, - "woman playing water polo: dark skin tone": null, - "woman playing water polo: light skin tone": null, - "woman playing water polo: medium skin tone": null, - "woman playing water polo: medium-dark skin tone": null, - "woman playing water polo: medium-light skin tone": null, - "woman police officer": null, - "woman police officer: dark skin tone": null, - "woman police officer: light skin tone": null, - "woman police officer: medium skin tone": null, - "woman police officer: medium-dark skin tone": null, - "woman police officer: medium-light skin tone": null, - "woman pouting": null, - "woman pouting: dark skin tone": null, - "woman pouting: light skin tone": null, - "woman pouting: medium skin tone": null, - "woman pouting: medium-dark skin tone": null, - "woman pouting: medium-light skin tone": null, - "woman raising hand": null, - "woman raising hand: dark skin tone": null, - "woman raising hand: light skin tone": null, - "woman raising hand: medium skin tone": null, - "woman raising hand: medium-dark skin tone": null, - "woman raising hand: medium-light skin tone": null, - "woman rowing boat": null, - "woman rowing boat: dark skin tone": null, - "woman rowing boat: light skin tone": null, - "woman rowing boat: medium skin tone": null, - "woman rowing boat: medium-dark skin tone": null, - "woman rowing boat: medium-light skin tone": null, - "woman running": null, - "woman running facing right": null, - "woman running facing right: dark skin tone": null, - "woman running facing right: light skin tone": null, - "woman running facing right: medium skin tone": null, - "woman running facing right: medium-dark skin tone": null, - "woman running facing right: medium-light skin tone": null, - "woman running: dark skin tone": null, - "woman running: light skin tone": null, - "woman running: medium skin tone": null, - "woman running: medium-dark skin tone": null, - "woman running: medium-light skin tone": null, - "woman scientist": null, - "woman scientist: dark skin tone": null, - "woman scientist: light skin tone": null, - "woman scientist: medium skin tone": null, - "woman scientist: medium-dark skin tone": null, - "woman scientist: medium-light skin tone": null, - "woman shrugging": null, - "woman shrugging: dark skin tone": null, - "woman shrugging: light skin tone": null, - "woman shrugging: medium skin tone": null, - "woman shrugging: medium-dark skin tone": null, - "woman shrugging: medium-light skin tone": null, - "woman singer": null, - "woman singer: dark skin tone": null, - "woman singer: light skin tone": null, - "woman singer: medium skin tone": null, - "woman singer: medium-dark skin tone": null, - "woman singer: medium-light skin tone": null, - "woman standing": null, - "woman standing: dark skin tone": null, - "woman standing: light skin tone": null, - "woman standing: medium skin tone": null, - "woman standing: medium-dark skin tone": null, - "woman standing: medium-light skin tone": null, - "woman student": null, - "woman student: dark skin tone": null, - "woman student: light skin tone": null, - "woman student: medium skin tone": null, - "woman student: medium-dark skin tone": null, - "woman student: medium-light skin tone": null, - "woman superhero": null, - "woman superhero: dark skin tone": null, - "woman superhero: light skin tone": null, - "woman superhero: medium skin tone": null, - "woman superhero: medium-dark skin tone": null, - "woman superhero: medium-light skin tone": null, - "woman supervillain": null, - "woman supervillain: dark skin tone": null, - "woman supervillain: light skin tone": null, - "woman supervillain: medium skin tone": null, - "woman supervillain: medium-dark skin tone": null, - "woman supervillain: medium-light skin tone": null, - "woman surfing": null, - "woman surfing: dark skin tone": null, - "woman surfing: light skin tone": null, - "woman surfing: medium skin tone": null, - "woman surfing: medium-dark skin tone": null, - "woman surfing: medium-light skin tone": null, - "woman swimming": null, - "woman swimming: dark skin tone": null, - "woman swimming: light skin tone": null, - "woman swimming: medium skin tone": null, - "woman swimming: medium-dark skin tone": null, - "woman swimming: medium-light skin tone": null, - "woman teacher": null, - "woman teacher: dark skin tone": null, - "woman teacher: light skin tone": null, - "woman teacher: medium skin tone": null, - "woman teacher: medium-dark skin tone": null, - "woman teacher: medium-light skin tone": null, - "woman technologist": null, - "woman technologist: dark skin tone": null, - "woman technologist: light skin tone": null, - "woman technologist: medium skin tone": null, - "woman technologist: medium-dark skin tone": null, - "woman technologist: medium-light skin tone": null, - "woman tipping hand": null, - "woman tipping hand: dark skin tone": null, - "woman tipping hand: light skin tone": null, - "woman tipping hand: medium skin tone": null, - "woman tipping hand: medium-dark skin tone": null, - "woman tipping hand: medium-light skin tone": null, - "woman vampire": null, - "woman vampire: dark skin tone": null, - "woman vampire: light skin tone": null, - "woman vampire: medium skin tone": null, - "woman vampire: medium-dark skin tone": null, - "woman vampire: medium-light skin tone": null, - "woman walking": null, - "woman walking facing right": null, - "woman walking facing right: dark skin tone": null, - "woman walking facing right: light skin tone": null, - "woman walking facing right: medium skin tone": null, - "woman walking facing right: medium-dark skin tone": null, - "woman walking facing right: medium-light skin tone": null, - "woman walking: dark skin tone": null, - "woman walking: light skin tone": null, - "woman walking: medium skin tone": null, - "woman walking: medium-dark skin tone": null, - "woman walking: medium-light skin tone": null, - "woman wearing turban": null, - "woman wearing turban: dark skin tone": null, - "woman wearing turban: light skin tone": null, - "woman wearing turban: medium skin tone": null, - "woman wearing turban: medium-dark skin tone": null, - "woman wearing turban: medium-light skin tone": null, - "woman with veil": null, - "woman with veil: dark skin tone": null, - "woman with veil: light skin tone": null, - "woman with veil: medium skin tone": null, - "woman with veil: medium-dark skin tone": null, - "woman with veil: medium-light skin tone": null, - "woman with white cane": null, - "woman with white cane facing right": null, - "woman with white cane facing right: dark skin tone": null, - "woman with white cane facing right: light skin tone": null, - "woman with white cane facing right: medium skin tone": null, - "woman with white cane facing right: medium-dark skin tone": null, - "woman with white cane facing right: medium-light skin tone": null, - "woman with white cane: dark skin tone": null, - "woman with white cane: light skin tone": null, - "woman with white cane: medium skin tone": null, - "woman with white cane: medium-dark skin tone": null, - "woman with white cane: medium-light skin tone": null, - "woman zombie": null, - "woman: bald": null, - "woman: beard": null, - "woman: blond hair": null, - "woman: curly hair": null, - "woman: dark skin tone, bald": null, - "woman: dark skin tone, beard": null, - "woman: dark skin tone, blond hair": null, - "woman: dark skin tone, curly hair": null, - "woman: dark skin tone, red hair": null, - "woman: dark skin tone, white hair": null, - "woman: light skin tone, bald": null, - "woman: light skin tone, beard": null, - "woman: light skin tone, blond hair": null, - "woman: light skin tone, curly hair": null, - "woman: light skin tone, red hair": null, - "woman: light skin tone, white hair": null, - "woman: medium skin tone, bald": null, - "woman: medium skin tone, beard": null, - "woman: medium skin tone, blond hair": null, - "woman: medium skin tone, curly hair": null, - "woman: medium skin tone, red hair": null, - "woman: medium skin tone, white hair": null, - "woman: medium-dark skin tone, bald": null, - "woman: medium-dark skin tone, beard": null, - "woman: medium-dark skin tone, blond hair": null, - "woman: medium-dark skin tone, curly hair": null, - "woman: medium-dark skin tone, red hair": null, - "woman: medium-dark skin tone, white hair": null, - "woman: medium-light skin tone, bald": null, - "woman: medium-light skin tone, beard": null, - "woman: medium-light skin tone, blond hair": null, - "woman: medium-light skin tone, curly hair": null, - "woman: medium-light skin tone, red hair": null, - "woman: medium-light skin tone, white hair": null, - "woman: red hair": null, - "woman: white hair": null, - "women with bunny ears": null, - "women wrestling": null -} diff --git a/src/typescript/sdk/src/emoji_data/emoji-data.ts b/src/typescript/sdk/src/emoji_data/emoji-data.ts index e624d3c2a..2dd0f2144 100644 --- a/src/typescript/sdk/src/emoji_data/emoji-data.ts +++ b/src/typescript/sdk/src/emoji_data/emoji-data.ts @@ -1,7 +1,7 @@ import { type HexInput } from "@aptos-labs/ts-sdk"; import { normalizeHex } from "../utils/hex"; -import AllSymbolEmojiJSON from "./symbol-emojis.json"; -import AllChatEmojiJSON from "./chat-emojis.json"; +import { SYMBOL_EMOJIS } from "./symbol-emojis"; +import { CHAT_EMOJIS } from "./chat-emojis"; import { type SymbolEmojiName, type SymbolEmoji, @@ -30,7 +30,7 @@ const createMaps = (entries: Array }; }; -export const allSymbolEmojis = Object.entries(AllSymbolEmojiJSON).map(([emoji, name]) => { +export const allSymbolEmojis = Object.entries(SYMBOL_EMOJIS).map(([emoji, name]) => { const bytes = encoder.encode(emoji); const hex = normalizeHex(bytes); return { @@ -41,7 +41,7 @@ export const allSymbolEmojis = Object.entries(AllSymbolEmojiJSON).map(([emoji, n }; }); -export const allChatEmojis = Object.entries(AllChatEmojiJSON).map(([emoji, name]) => { +export const allChatEmojis = Object.entries(CHAT_EMOJIS).map(([emoji, name]) => { const bytes = encoder.encode(emoji); const hex = normalizeHex(bytes); return { diff --git a/src/typescript/sdk/src/emoji_data/index.ts b/src/typescript/sdk/src/emoji_data/index.ts index c71baee40..4ca43e37f 100644 --- a/src/typescript/sdk/src/emoji_data/index.ts +++ b/src/typescript/sdk/src/emoji_data/index.ts @@ -1,4 +1,6 @@ +export * from "./chat-emojis"; export * from "./chat-message"; export * from "./emoji-data"; +export * from "./symbol-emojis"; export * from "./types"; export * from "./utils"; diff --git a/src/typescript/sdk/src/emoji_data/symbol-emojis.json b/src/typescript/sdk/src/emoji_data/symbol-emojis.json deleted file mode 100644 index ba3979594..000000000 --- a/src/typescript/sdk/src/emoji_data/symbol-emojis.json +++ /dev/null @@ -1,2306 +0,0 @@ -{ - "#\ufe0f\u20e3": "keycap: #", - "*\ufe0f\u20e3": "keycap: *", - "0\ufe0f\u20e3": "keycap: 0", - "1\ufe0f\u20e3": "keycap: 1", - "2\ufe0f\u20e3": "keycap: 2", - "3\ufe0f\u20e3": "keycap: 3", - "4\ufe0f\u20e3": "keycap: 4", - "5\ufe0f\u20e3": "keycap: 5", - "6\ufe0f\u20e3": "keycap: 6", - "7\ufe0f\u20e3": "keycap: 7", - "8\ufe0f\u20e3": "keycap: 8", - "9\ufe0f\u20e3": "keycap: 9", - "\u00a9\ufe0f": "copyright", - "\u00ae\ufe0f": "registered", - "\u203c\ufe0f": "double exclamation mark", - "\u2049\ufe0f": "exclamation question mark", - "\u2122\ufe0f": "trade mark", - "\u2139\ufe0f": "information", - "\u2194\ufe0f": "left-right arrow", - "\u2195\ufe0f": "up-down arrow", - "\u2196\ufe0f": "up-left arrow", - "\u2197\ufe0f": "up-right arrow", - "\u2198\ufe0f": "down-right arrow", - "\u2199\ufe0f": "down-left arrow", - "\u21a9\ufe0f": "right arrow curving left", - "\u21aa\ufe0f": "left arrow curving right", - "\u231a": "watch", - "\u231b": "hourglass done", - "\u2328\ufe0f": "keyboard", - "\u23cf\ufe0f": "eject button", - "\u23e9": "fast-forward button", - "\u23ea": "fast reverse button", - "\u23eb": "fast up button", - "\u23ec": "fast down button", - "\u23ed\ufe0f": "next track button", - "\u23ee\ufe0f": "last track button", - "\u23ef\ufe0f": "play or pause button", - "\u23f0": "alarm clock", - "\u23f1\ufe0f": "stopwatch", - "\u23f2\ufe0f": "timer clock", - "\u23f3": "hourglass not done", - "\u23f8\ufe0f": "pause button", - "\u23f9\ufe0f": "stop button", - "\u23fa\ufe0f": "record button", - "\u24c2\ufe0f": "circled M", - "\u25aa\ufe0f": "black small square", - "\u25ab\ufe0f": "white small square", - "\u25b6\ufe0f": "play button", - "\u25c0\ufe0f": "reverse button", - "\u25fb\ufe0f": "white medium square", - "\u25fc\ufe0f": "black medium square", - "\u25fd": "white medium-small square", - "\u25fe": "black medium-small square", - "\u2600\ufe0f": "sun", - "\u2601\ufe0f": "cloud", - "\u2602\ufe0f": "umbrella", - "\u2603\ufe0f": "snowman", - "\u2604\ufe0f": "comet", - "\u260e\ufe0f": "telephone", - "\u2611\ufe0f": "check box with check", - "\u2614": "umbrella with rain drops", - "\u2615": "hot beverage", - "\u2618\ufe0f": "shamrock", - "\u261d\ufe0f": "index pointing up", - "\u261d\ud83c\udffb": "index pointing up: light skin tone", - "\u261d\ud83c\udffc": "index pointing up: medium-light skin tone", - "\u261d\ud83c\udffd": "index pointing up: medium skin tone", - "\u261d\ud83c\udffe": "index pointing up: medium-dark skin tone", - "\u261d\ud83c\udfff": "index pointing up: dark skin tone", - "\u2620\ufe0f": "skull and crossbones", - "\u2622\ufe0f": "radioactive", - "\u2623\ufe0f": "biohazard", - "\u2626\ufe0f": "orthodox cross", - "\u262a\ufe0f": "star and crescent", - "\u262e\ufe0f": "peace symbol", - "\u262f\ufe0f": "yin yang", - "\u2638\ufe0f": "wheel of dharma", - "\u2639\ufe0f": "frowning face", - "\u263a\ufe0f": "smiling face", - "\u2640\ufe0f": "female sign", - "\u2642\ufe0f": "male sign", - "\u2648": "Aries", - "\u2649": "Taurus", - "\u264a": "Gemini", - "\u264b": "Cancer", - "\u264c": "Leo", - "\u264d": "Virgo", - "\u264e": "Libra", - "\u264f": "Scorpio", - "\u2650": "Sagittarius", - "\u2651": "Capricorn", - "\u2652": "Aquarius", - "\u2653": "Pisces", - "\u265f\ufe0f": "chess pawn", - "\u2660\ufe0f": "spade suit", - "\u2663\ufe0f": "club suit", - "\u2665\ufe0f": "heart suit", - "\u2666\ufe0f": "diamond suit", - "\u2668\ufe0f": "hot springs", - "\u267b\ufe0f": "recycling symbol", - "\u267e\ufe0f": "infinity", - "\u267f": "wheelchair symbol", - "\u2692\ufe0f": "hammer and pick", - "\u2693": "anchor", - "\u2694\ufe0f": "crossed swords", - "\u2695\ufe0f": "medical symbol", - "\u2696\ufe0f": "balance scale", - "\u2697\ufe0f": "alembic", - "\u2699\ufe0f": "gear", - "\u269b\ufe0f": "atom symbol", - "\u269c\ufe0f": "fleur-de-lis", - "\u26a0\ufe0f": "warning", - "\u26a1": "high voltage", - "\u26a7\ufe0f": "transgender symbol", - "\u26aa": "white circle", - "\u26ab": "black circle", - "\u26b0\ufe0f": "coffin", - "\u26b1\ufe0f": "funeral urn", - "\u26bd": "soccer ball", - "\u26be": "baseball", - "\u26c4": "snowman without snow", - "\u26c5": "sun behind cloud", - "\u26c8\ufe0f": "cloud with lightning and rain", - "\u26ce": "Ophiuchus", - "\u26cf\ufe0f": "pick", - "\u26d1\ufe0f": "rescue worker's helmet", - "\u26d3\ufe0f": "chains", - "\u26d4": "no entry", - "\u26e9\ufe0f": "shinto shrine", - "\u26ea": "church", - "\u26f0\ufe0f": "mountain", - "\u26f1\ufe0f": "umbrella on ground", - "\u26f2": "fountain", - "\u26f3": "flag in hole", - "\u26f4\ufe0f": "ferry", - "\u26f5": "sailboat", - "\u26f7\ufe0f": "skier", - "\u26f8\ufe0f": "ice skate", - "\u26f9\ufe0f": "person bouncing ball", - "\u26f9\ud83c\udffb": "person bouncing ball: light skin tone", - "\u26f9\ud83c\udffc": "person bouncing ball: medium-light skin tone", - "\u26f9\ud83c\udffd": "person bouncing ball: medium skin tone", - "\u26f9\ud83c\udffe": "person bouncing ball: medium-dark skin tone", - "\u26f9\ud83c\udfff": "person bouncing ball: dark skin tone", - "\u26fa": "tent", - "\u26fd": "fuel pump", - "\u2702\ufe0f": "scissors", - "\u2705": "check mark button", - "\u2708\ufe0f": "airplane", - "\u2709\ufe0f": "envelope", - "\u270a": "raised fist", - "\u270a\ud83c\udffb": "raised fist: light skin tone", - "\u270a\ud83c\udffc": "raised fist: medium-light skin tone", - "\u270a\ud83c\udffd": "raised fist: medium skin tone", - "\u270a\ud83c\udffe": "raised fist: medium-dark skin tone", - "\u270a\ud83c\udfff": "raised fist: dark skin tone", - "\u270b": "raised hand", - "\u270b\ud83c\udffb": "raised hand: light skin tone", - "\u270b\ud83c\udffc": "raised hand: medium-light skin tone", - "\u270b\ud83c\udffd": "raised hand: medium skin tone", - "\u270b\ud83c\udffe": "raised hand: medium-dark skin tone", - "\u270b\ud83c\udfff": "raised hand: dark skin tone", - "\u270c\ufe0f": "victory hand", - "\u270c\ud83c\udffb": "victory hand: light skin tone", - "\u270c\ud83c\udffc": "victory hand: medium-light skin tone", - "\u270c\ud83c\udffd": "victory hand: medium skin tone", - "\u270c\ud83c\udffe": "victory hand: medium-dark skin tone", - "\u270c\ud83c\udfff": "victory hand: dark skin tone", - "\u270d\ufe0f": "writing hand", - "\u270d\ud83c\udffb": "writing hand: light skin tone", - "\u270d\ud83c\udffc": "writing hand: medium-light skin tone", - "\u270d\ud83c\udffd": "writing hand: medium skin tone", - "\u270d\ud83c\udffe": "writing hand: medium-dark skin tone", - "\u270d\ud83c\udfff": "writing hand: dark skin tone", - "\u270f\ufe0f": "pencil", - "\u2712\ufe0f": "black nib", - "\u2714\ufe0f": "check mark", - "\u2716\ufe0f": "multiply", - "\u271d\ufe0f": "latin cross", - "\u2721\ufe0f": "star of David", - "\u2728": "sparkles", - "\u2733\ufe0f": "eight-spoked asterisk", - "\u2734\ufe0f": "eight-pointed star", - "\u2744\ufe0f": "snowflake", - "\u2747\ufe0f": "sparkle", - "\u274c": "cross mark", - "\u274e": "cross mark button", - "\u2753": "red question mark", - "\u2754": "white question mark", - "\u2755": "white exclamation mark", - "\u2757": "red exclamation mark", - "\u2763\ufe0f": "heart exclamation", - "\u2764\ufe0f": "red heart", - "\u2795": "plus", - "\u2796": "minus", - "\u2797": "divide", - "\u27a1\ufe0f": "right arrow", - "\u27b0": "curly loop", - "\u27bf": "double curly loop", - "\u2934\ufe0f": "right arrow curving up", - "\u2935\ufe0f": "right arrow curving down", - "\u2b05\ufe0f": "left arrow", - "\u2b06\ufe0f": "up arrow", - "\u2b07\ufe0f": "down arrow", - "\u2b1b": "black large square", - "\u2b1c": "white large square", - "\u2b50": "star", - "\u2b55": "hollow red circle", - "\u3030\ufe0f": "wavy dash", - "\u303d\ufe0f": "part alternation mark", - "\u3297\ufe0f": "Japanese \"congratulations\" button", - "\u3299\ufe0f": "Japanese \"secret\" button", - "\ud83c\udc04": "mahjong red dragon", - "\ud83c\udccf": "joker", - "\ud83c\udd70\ufe0f": "A button (blood type)", - "\ud83c\udd71\ufe0f": "B button (blood type)", - "\ud83c\udd7e\ufe0f": "O button (blood type)", - "\ud83c\udd7f\ufe0f": "P button", - "\ud83c\udd8e": "AB button (blood type)", - "\ud83c\udd91": "CL button", - "\ud83c\udd92": "COOL button", - "\ud83c\udd93": "FREE button", - "\ud83c\udd94": "ID button", - "\ud83c\udd95": "NEW button", - "\ud83c\udd96": "NG button", - "\ud83c\udd97": "OK button", - "\ud83c\udd98": "SOS button", - "\ud83c\udd99": "UP! button", - "\ud83c\udd9a": "VS button", - "\ud83c\udde6\ud83c\udde8": "flag: Ascension Island", - "\ud83c\udde6\ud83c\udde9": "flag: Andorra", - "\ud83c\udde6\ud83c\uddea": "flag: United Arab Emirates", - "\ud83c\udde6\ud83c\uddeb": "flag: Afghanistan", - "\ud83c\udde6\ud83c\uddec": "flag: Antigua & Barbuda", - "\ud83c\udde6\ud83c\uddee": "flag: Anguilla", - "\ud83c\udde6\ud83c\uddf1": "flag: Albania", - "\ud83c\udde6\ud83c\uddf2": "flag: Armenia", - "\ud83c\udde6\ud83c\uddf4": "flag: Angola", - "\ud83c\udde6\ud83c\uddf6": "flag: Antarctica", - "\ud83c\udde6\ud83c\uddf7": "flag: Argentina", - "\ud83c\udde6\ud83c\uddf8": "flag: American Samoa", - "\ud83c\udde6\ud83c\uddf9": "flag: Austria", - "\ud83c\udde6\ud83c\uddfa": "flag: Australia", - "\ud83c\udde6\ud83c\uddfc": "flag: Aruba", - "\ud83c\udde6\ud83c\uddfd": "flag: \u00c5land Islands", - "\ud83c\udde6\ud83c\uddff": "flag: Azerbaijan", - "\ud83c\udde7\ud83c\udde6": "flag: Bosnia & Herzegovina", - "\ud83c\udde7\ud83c\udde7": "flag: Barbados", - "\ud83c\udde7\ud83c\udde9": "flag: Bangladesh", - "\ud83c\udde7\ud83c\uddea": "flag: Belgium", - "\ud83c\udde7\ud83c\uddeb": "flag: Burkina Faso", - "\ud83c\udde7\ud83c\uddec": "flag: Bulgaria", - "\ud83c\udde7\ud83c\udded": "flag: Bahrain", - "\ud83c\udde7\ud83c\uddee": "flag: Burundi", - "\ud83c\udde7\ud83c\uddef": "flag: Benin", - "\ud83c\udde7\ud83c\uddf1": "flag: St. Barth\u00e9lemy", - "\ud83c\udde7\ud83c\uddf2": "flag: Bermuda", - "\ud83c\udde7\ud83c\uddf3": "flag: Brunei", - "\ud83c\udde7\ud83c\uddf4": "flag: Bolivia", - "\ud83c\udde7\ud83c\uddf6": "flag: Caribbean Netherlands", - "\ud83c\udde7\ud83c\uddf7": "flag: Brazil", - "\ud83c\udde7\ud83c\uddf8": "flag: Bahamas", - "\ud83c\udde7\ud83c\uddf9": "flag: Bhutan", - "\ud83c\udde7\ud83c\uddfb": "flag: Bouvet Island", - "\ud83c\udde7\ud83c\uddfc": "flag: Botswana", - "\ud83c\udde7\ud83c\uddfe": "flag: Belarus", - "\ud83c\udde7\ud83c\uddff": "flag: Belize", - "\ud83c\udde8\ud83c\udde6": "flag: Canada", - "\ud83c\udde8\ud83c\udde8": "flag: Cocos (Keeling) Islands", - "\ud83c\udde8\ud83c\udde9": "flag: Congo - Kinshasa", - "\ud83c\udde8\ud83c\uddeb": "flag: Central African Republic", - "\ud83c\udde8\ud83c\uddec": "flag: Congo - Brazzaville", - "\ud83c\udde8\ud83c\udded": "flag: Switzerland", - "\ud83c\udde8\ud83c\uddee": "flag: C\u00f4te d'Ivoire", - "\ud83c\udde8\ud83c\uddf0": "flag: Cook Islands", - "\ud83c\udde8\ud83c\uddf1": "flag: Chile", - "\ud83c\udde8\ud83c\uddf2": "flag: Cameroon", - "\ud83c\udde8\ud83c\uddf3": "flag: China", - "\ud83c\udde8\ud83c\uddf4": "flag: Colombia", - "\ud83c\udde8\ud83c\uddf5": "flag: Clipperton Island", - "\ud83c\udde8\ud83c\uddf7": "flag: Costa Rica", - "\ud83c\udde8\ud83c\uddfa": "flag: Cuba", - "\ud83c\udde8\ud83c\uddfb": "flag: Cape Verde", - "\ud83c\udde8\ud83c\uddfc": "flag: Cura\u00e7ao", - "\ud83c\udde8\ud83c\uddfd": "flag: Christmas Island", - "\ud83c\udde8\ud83c\uddfe": "flag: Cyprus", - "\ud83c\udde8\ud83c\uddff": "flag: Czechia", - "\ud83c\udde9\ud83c\uddea": "flag: Germany", - "\ud83c\udde9\ud83c\uddec": "flag: Diego Garcia", - "\ud83c\udde9\ud83c\uddef": "flag: Djibouti", - "\ud83c\udde9\ud83c\uddf0": "flag: Denmark", - "\ud83c\udde9\ud83c\uddf2": "flag: Dominica", - "\ud83c\udde9\ud83c\uddf4": "flag: Dominican Republic", - "\ud83c\udde9\ud83c\uddff": "flag: Algeria", - "\ud83c\uddea\ud83c\udde6": "flag: Ceuta & Melilla", - "\ud83c\uddea\ud83c\udde8": "flag: Ecuador", - "\ud83c\uddea\ud83c\uddea": "flag: Estonia", - "\ud83c\uddea\ud83c\uddec": "flag: Egypt", - "\ud83c\uddea\ud83c\udded": "flag: Western Sahara", - "\ud83c\uddea\ud83c\uddf7": "flag: Eritrea", - "\ud83c\uddea\ud83c\uddf8": "flag: Spain", - "\ud83c\uddea\ud83c\uddf9": "flag: Ethiopia", - "\ud83c\uddea\ud83c\uddfa": "flag: European Union", - "\ud83c\uddeb\ud83c\uddee": "flag: Finland", - "\ud83c\uddeb\ud83c\uddef": "flag: Fiji", - "\ud83c\uddeb\ud83c\uddf0": "flag: Falkland Islands", - "\ud83c\uddeb\ud83c\uddf2": "flag: Micronesia", - "\ud83c\uddeb\ud83c\uddf4": "flag: Faroe Islands", - "\ud83c\uddeb\ud83c\uddf7": "flag: France", - "\ud83c\uddec\ud83c\udde6": "flag: Gabon", - "\ud83c\uddec\ud83c\udde7": "flag: United Kingdom", - "\ud83c\uddec\ud83c\udde9": "flag: Grenada", - "\ud83c\uddec\ud83c\uddea": "flag: Georgia", - "\ud83c\uddec\ud83c\uddeb": "flag: French Guiana", - "\ud83c\uddec\ud83c\uddec": "flag: Guernsey", - "\ud83c\uddec\ud83c\udded": "flag: Ghana", - "\ud83c\uddec\ud83c\uddee": "flag: Gibraltar", - "\ud83c\uddec\ud83c\uddf1": "flag: Greenland", - "\ud83c\uddec\ud83c\uddf2": "flag: Gambia", - "\ud83c\uddec\ud83c\uddf3": "flag: Guinea", - "\ud83c\uddec\ud83c\uddf5": "flag: Guadeloupe", - "\ud83c\uddec\ud83c\uddf6": "flag: Equatorial Guinea", - "\ud83c\uddec\ud83c\uddf7": "flag: Greece", - "\ud83c\uddec\ud83c\uddf8": "flag: South Georgia & South Sandwich Islands", - "\ud83c\uddec\ud83c\uddf9": "flag: Guatemala", - "\ud83c\uddec\ud83c\uddfa": "flag: Guam", - "\ud83c\uddec\ud83c\uddfc": "flag: Guinea-Bissau", - "\ud83c\uddec\ud83c\uddfe": "flag: Guyana", - "\ud83c\udded\ud83c\uddf0": "flag: Hong Kong SAR China", - "\ud83c\udded\ud83c\uddf2": "flag: Heard & McDonald Islands", - "\ud83c\udded\ud83c\uddf3": "flag: Honduras", - "\ud83c\udded\ud83c\uddf7": "flag: Croatia", - "\ud83c\udded\ud83c\uddf9": "flag: Haiti", - "\ud83c\udded\ud83c\uddfa": "flag: Hungary", - "\ud83c\uddee\ud83c\udde8": "flag: Canary Islands", - "\ud83c\uddee\ud83c\udde9": "flag: Indonesia", - "\ud83c\uddee\ud83c\uddea": "flag: Ireland", - "\ud83c\uddee\ud83c\uddf1": "flag: Israel", - "\ud83c\uddee\ud83c\uddf2": "flag: Isle of Man", - "\ud83c\uddee\ud83c\uddf3": "flag: India", - "\ud83c\uddee\ud83c\uddf4": "flag: British Indian Ocean Territory", - "\ud83c\uddee\ud83c\uddf6": "flag: Iraq", - "\ud83c\uddee\ud83c\uddf7": "flag: Iran", - "\ud83c\uddee\ud83c\uddf8": "flag: Iceland", - "\ud83c\uddee\ud83c\uddf9": "flag: Italy", - "\ud83c\uddef\ud83c\uddea": "flag: Jersey", - "\ud83c\uddef\ud83c\uddf2": "flag: Jamaica", - "\ud83c\uddef\ud83c\uddf4": "flag: Jordan", - "\ud83c\uddef\ud83c\uddf5": "flag: Japan", - "\ud83c\uddf0\ud83c\uddea": "flag: Kenya", - "\ud83c\uddf0\ud83c\uddec": "flag: Kyrgyzstan", - "\ud83c\uddf0\ud83c\udded": "flag: Cambodia", - "\ud83c\uddf0\ud83c\uddee": "flag: Kiribati", - "\ud83c\uddf0\ud83c\uddf2": "flag: Comoros", - "\ud83c\uddf0\ud83c\uddf3": "flag: St. Kitts & Nevis", - "\ud83c\uddf0\ud83c\uddf5": "flag: North Korea", - "\ud83c\uddf0\ud83c\uddf7": "flag: South Korea", - "\ud83c\uddf0\ud83c\uddfc": "flag: Kuwait", - "\ud83c\uddf0\ud83c\uddfe": "flag: Cayman Islands", - "\ud83c\uddf0\ud83c\uddff": "flag: Kazakhstan", - "\ud83c\uddf1\ud83c\udde6": "flag: Laos", - "\ud83c\uddf1\ud83c\udde7": "flag: Lebanon", - "\ud83c\uddf1\ud83c\udde8": "flag: St. Lucia", - "\ud83c\uddf1\ud83c\uddee": "flag: Liechtenstein", - "\ud83c\uddf1\ud83c\uddf0": "flag: Sri Lanka", - "\ud83c\uddf1\ud83c\uddf7": "flag: Liberia", - "\ud83c\uddf1\ud83c\uddf8": "flag: Lesotho", - "\ud83c\uddf1\ud83c\uddf9": "flag: Lithuania", - "\ud83c\uddf1\ud83c\uddfa": "flag: Luxembourg", - "\ud83c\uddf1\ud83c\uddfb": "flag: Latvia", - "\ud83c\uddf1\ud83c\uddfe": "flag: Libya", - "\ud83c\uddf2\ud83c\udde6": "flag: Morocco", - "\ud83c\uddf2\ud83c\udde8": "flag: Monaco", - "\ud83c\uddf2\ud83c\udde9": "flag: Moldova", - "\ud83c\uddf2\ud83c\uddea": "flag: Montenegro", - "\ud83c\uddf2\ud83c\uddeb": "flag: St. Martin", - "\ud83c\uddf2\ud83c\uddec": "flag: Madagascar", - "\ud83c\uddf2\ud83c\udded": "flag: Marshall Islands", - "\ud83c\uddf2\ud83c\uddf0": "flag: North Macedonia", - "\ud83c\uddf2\ud83c\uddf1": "flag: Mali", - "\ud83c\uddf2\ud83c\uddf2": "flag: Myanmar (Burma)", - "\ud83c\uddf2\ud83c\uddf3": "flag: Mongolia", - "\ud83c\uddf2\ud83c\uddf4": "flag: Macao SAR China", - "\ud83c\uddf2\ud83c\uddf5": "flag: Northern Mariana Islands", - "\ud83c\uddf2\ud83c\uddf6": "flag: Martinique", - "\ud83c\uddf2\ud83c\uddf7": "flag: Mauritania", - "\ud83c\uddf2\ud83c\uddf8": "flag: Montserrat", - "\ud83c\uddf2\ud83c\uddf9": "flag: Malta", - "\ud83c\uddf2\ud83c\uddfa": "flag: Mauritius", - "\ud83c\uddf2\ud83c\uddfb": "flag: Maldives", - "\ud83c\uddf2\ud83c\uddfc": "flag: Malawi", - "\ud83c\uddf2\ud83c\uddfd": "flag: Mexico", - "\ud83c\uddf2\ud83c\uddfe": "flag: Malaysia", - "\ud83c\uddf2\ud83c\uddff": "flag: Mozambique", - "\ud83c\uddf3\ud83c\udde6": "flag: Namibia", - "\ud83c\uddf3\ud83c\udde8": "flag: New Caledonia", - "\ud83c\uddf3\ud83c\uddea": "flag: Niger", - "\ud83c\uddf3\ud83c\uddeb": "flag: Norfolk Island", - "\ud83c\uddf3\ud83c\uddec": "flag: Nigeria", - "\ud83c\uddf3\ud83c\uddee": "flag: Nicaragua", - "\ud83c\uddf3\ud83c\uddf1": "flag: Netherlands", - "\ud83c\uddf3\ud83c\uddf4": "flag: Norway", - "\ud83c\uddf3\ud83c\uddf5": "flag: Nepal", - "\ud83c\uddf3\ud83c\uddf7": "flag: Nauru", - "\ud83c\uddf3\ud83c\uddfa": "flag: Niue", - "\ud83c\uddf3\ud83c\uddff": "flag: New Zealand", - "\ud83c\uddf4\ud83c\uddf2": "flag: Oman", - "\ud83c\uddf5\ud83c\udde6": "flag: Panama", - "\ud83c\uddf5\ud83c\uddea": "flag: Peru", - "\ud83c\uddf5\ud83c\uddeb": "flag: French Polynesia", - "\ud83c\uddf5\ud83c\uddec": "flag: Papua New Guinea", - "\ud83c\uddf5\ud83c\udded": "flag: Philippines", - "\ud83c\uddf5\ud83c\uddf0": "flag: Pakistan", - "\ud83c\uddf5\ud83c\uddf1": "flag: Poland", - "\ud83c\uddf5\ud83c\uddf2": "flag: St. Pierre & Miquelon", - "\ud83c\uddf5\ud83c\uddf3": "flag: Pitcairn Islands", - "\ud83c\uddf5\ud83c\uddf7": "flag: Puerto Rico", - "\ud83c\uddf5\ud83c\uddf8": "flag: Palestinian Territories", - "\ud83c\uddf5\ud83c\uddf9": "flag: Portugal", - "\ud83c\uddf5\ud83c\uddfc": "flag: Palau", - "\ud83c\uddf5\ud83c\uddfe": "flag: Paraguay", - "\ud83c\uddf6\ud83c\udde6": "flag: Qatar", - "\ud83c\uddf7\ud83c\uddea": "flag: R\u00e9union", - "\ud83c\uddf7\ud83c\uddf4": "flag: Romania", - "\ud83c\uddf7\ud83c\uddf8": "flag: Serbia", - "\ud83c\uddf7\ud83c\uddfa": "flag: Russia", - "\ud83c\uddf7\ud83c\uddfc": "flag: Rwanda", - "\ud83c\uddf8\ud83c\udde6": "flag: Saudi Arabia", - "\ud83c\uddf8\ud83c\udde7": "flag: Solomon Islands", - "\ud83c\uddf8\ud83c\udde8": "flag: Seychelles", - "\ud83c\uddf8\ud83c\udde9": "flag: Sudan", - "\ud83c\uddf8\ud83c\uddea": "flag: Sweden", - "\ud83c\uddf8\ud83c\uddec": "flag: Singapore", - "\ud83c\uddf8\ud83c\udded": "flag: St. Helena", - "\ud83c\uddf8\ud83c\uddee": "flag: Slovenia", - "\ud83c\uddf8\ud83c\uddef": "flag: Svalbard & Jan Mayen", - "\ud83c\uddf8\ud83c\uddf0": "flag: Slovakia", - "\ud83c\uddf8\ud83c\uddf1": "flag: Sierra Leone", - "\ud83c\uddf8\ud83c\uddf2": "flag: San Marino", - "\ud83c\uddf8\ud83c\uddf3": "flag: Senegal", - "\ud83c\uddf8\ud83c\uddf4": "flag: Somalia", - "\ud83c\uddf8\ud83c\uddf7": "flag: Suriname", - "\ud83c\uddf8\ud83c\uddf8": "flag: South Sudan", - "\ud83c\uddf8\ud83c\uddf9": "flag: S\u00e3o Tom\u00e9 & Pr\u00edncipe", - "\ud83c\uddf8\ud83c\uddfb": "flag: El Salvador", - "\ud83c\uddf8\ud83c\uddfd": "flag: Sint Maarten", - "\ud83c\uddf8\ud83c\uddfe": "flag: Syria", - "\ud83c\uddf8\ud83c\uddff": "flag: Eswatini", - "\ud83c\uddf9\ud83c\udde6": "flag: Tristan da Cunha", - "\ud83c\uddf9\ud83c\udde8": "flag: Turks & Caicos Islands", - "\ud83c\uddf9\ud83c\udde9": "flag: Chad", - "\ud83c\uddf9\ud83c\uddeb": "flag: French Southern Territories", - "\ud83c\uddf9\ud83c\uddec": "flag: Togo", - "\ud83c\uddf9\ud83c\udded": "flag: Thailand", - "\ud83c\uddf9\ud83c\uddef": "flag: Tajikistan", - "\ud83c\uddf9\ud83c\uddf0": "flag: Tokelau", - "\ud83c\uddf9\ud83c\uddf1": "flag: Timor-Leste", - "\ud83c\uddf9\ud83c\uddf2": "flag: Turkmenistan", - "\ud83c\uddf9\ud83c\uddf3": "flag: Tunisia", - "\ud83c\uddf9\ud83c\uddf4": "flag: Tonga", - "\ud83c\uddf9\ud83c\uddf7": "flag: T\u00fcrkiye", - "\ud83c\uddf9\ud83c\uddf9": "flag: Trinidad & Tobago", - "\ud83c\uddf9\ud83c\uddfb": "flag: Tuvalu", - "\ud83c\uddf9\ud83c\uddfc": "flag: Taiwan", - "\ud83c\uddf9\ud83c\uddff": "flag: Tanzania", - "\ud83c\uddfa\ud83c\udde6": "flag: Ukraine", - "\ud83c\uddfa\ud83c\uddec": "flag: Uganda", - "\ud83c\uddfa\ud83c\uddf2": "flag: U.S. Outlying Islands", - "\ud83c\uddfa\ud83c\uddf3": "flag: United Nations", - "\ud83c\uddfa\ud83c\uddf8": "flag: United States", - "\ud83c\uddfa\ud83c\uddfe": "flag: Uruguay", - "\ud83c\uddfa\ud83c\uddff": "flag: Uzbekistan", - "\ud83c\uddfb\ud83c\udde6": "flag: Vatican City", - "\ud83c\uddfb\ud83c\udde8": "flag: St. Vincent & Grenadines", - "\ud83c\uddfb\ud83c\uddea": "flag: Venezuela", - "\ud83c\uddfb\ud83c\uddec": "flag: British Virgin Islands", - "\ud83c\uddfb\ud83c\uddee": "flag: U.S. Virgin Islands", - "\ud83c\uddfb\ud83c\uddf3": "flag: Vietnam", - "\ud83c\uddfb\ud83c\uddfa": "flag: Vanuatu", - "\ud83c\uddfc\ud83c\uddeb": "flag: Wallis & Futuna", - "\ud83c\uddfc\ud83c\uddf8": "flag: Samoa", - "\ud83c\uddfd\ud83c\uddf0": "flag: Kosovo", - "\ud83c\uddfe\ud83c\uddea": "flag: Yemen", - "\ud83c\uddfe\ud83c\uddf9": "flag: Mayotte", - "\ud83c\uddff\ud83c\udde6": "flag: South Africa", - "\ud83c\uddff\ud83c\uddf2": "flag: Zambia", - "\ud83c\uddff\ud83c\uddfc": "flag: Zimbabwe", - "\ud83c\ude01": "Japanese \"here\" button", - "\ud83c\ude02\ufe0f": "Japanese \"service charge\" button", - "\ud83c\ude1a": "Japanese \"free of charge\" button", - "\ud83c\ude2f": "Japanese \"reserved\" button", - "\ud83c\ude32": "Japanese \"prohibited\" button", - "\ud83c\ude33": "Japanese \"vacancy\" button", - "\ud83c\ude34": "Japanese \"passing grade\" button", - "\ud83c\ude35": "Japanese \"no vacancy\" button", - "\ud83c\ude36": "Japanese \"not free of charge\" button", - "\ud83c\ude37\ufe0f": "Japanese \"monthly amount\" button", - "\ud83c\ude38": "Japanese \"application\" button", - "\ud83c\ude39": "Japanese \"discount\" button", - "\ud83c\ude3a": "Japanese \"open for business\" button", - "\ud83c\ude50": "Japanese \"bargain\" button", - "\ud83c\ude51": "Japanese \"acceptable\" button", - "\ud83c\udf00": "cyclone", - "\ud83c\udf01": "foggy", - "\ud83c\udf02": "closed umbrella", - "\ud83c\udf03": "night with stars", - "\ud83c\udf04": "sunrise over mountains", - "\ud83c\udf05": "sunrise", - "\ud83c\udf06": "cityscape at dusk", - "\ud83c\udf07": "sunset", - "\ud83c\udf08": "rainbow", - "\ud83c\udf09": "bridge at night", - "\ud83c\udf0a": "water wave", - "\ud83c\udf0b": "volcano", - "\ud83c\udf0c": "milky way", - "\ud83c\udf0d": "globe showing Europe-Africa", - "\ud83c\udf0e": "globe showing Americas", - "\ud83c\udf0f": "globe showing Asia-Australia", - "\ud83c\udf10": "globe with meridians", - "\ud83c\udf11": "new moon", - "\ud83c\udf12": "waxing crescent moon", - "\ud83c\udf13": "first quarter moon", - "\ud83c\udf14": "waxing gibbous moon", - "\ud83c\udf15": "full moon", - "\ud83c\udf16": "waning gibbous moon", - "\ud83c\udf17": "last quarter moon", - "\ud83c\udf18": "waning crescent moon", - "\ud83c\udf19": "crescent moon", - "\ud83c\udf1a": "new moon face", - "\ud83c\udf1b": "first quarter moon face", - "\ud83c\udf1c": "last quarter moon face", - "\ud83c\udf1d": "full moon face", - "\ud83c\udf1e": "sun with face", - "\ud83c\udf1f": "glowing star", - "\ud83c\udf20": "shooting star", - "\ud83c\udf21\ufe0f": "thermometer", - "\ud83c\udf24\ufe0f": "sun behind small cloud", - "\ud83c\udf25\ufe0f": "sun behind large cloud", - "\ud83c\udf26\ufe0f": "sun behind rain cloud", - "\ud83c\udf27\ufe0f": "cloud with rain", - "\ud83c\udf28\ufe0f": "cloud with snow", - "\ud83c\udf29\ufe0f": "cloud with lightning", - "\ud83c\udf2a\ufe0f": "tornado", - "\ud83c\udf2b\ufe0f": "fog", - "\ud83c\udf2c\ufe0f": "wind face", - "\ud83c\udf2d": "hot dog", - "\ud83c\udf2e": "taco", - "\ud83c\udf2f": "burrito", - "\ud83c\udf30": "chestnut", - "\ud83c\udf31": "seedling", - "\ud83c\udf32": "evergreen tree", - "\ud83c\udf33": "deciduous tree", - "\ud83c\udf34": "palm tree", - "\ud83c\udf35": "cactus", - "\ud83c\udf36\ufe0f": "hot pepper", - "\ud83c\udf37": "tulip", - "\ud83c\udf38": "cherry blossom", - "\ud83c\udf39": "rose", - "\ud83c\udf3a": "hibiscus", - "\ud83c\udf3b": "sunflower", - "\ud83c\udf3c": "blossom", - "\ud83c\udf3d": "ear of corn", - "\ud83c\udf3e": "sheaf of rice", - "\ud83c\udf3f": "herb", - "\ud83c\udf40": "four leaf clover", - "\ud83c\udf41": "maple leaf", - "\ud83c\udf42": "fallen leaf", - "\ud83c\udf43": "leaf fluttering in wind", - "\ud83c\udf44": "mushroom", - "\ud83c\udf45": "tomato", - "\ud83c\udf46": "eggplant", - "\ud83c\udf47": "grapes", - "\ud83c\udf48": "melon", - "\ud83c\udf49": "watermelon", - "\ud83c\udf4a": "tangerine", - "\ud83c\udf4b": "lemon", - "\ud83c\udf4c": "banana", - "\ud83c\udf4d": "pineapple", - "\ud83c\udf4e": "red apple", - "\ud83c\udf4f": "green apple", - "\ud83c\udf50": "pear", - "\ud83c\udf51": "peach", - "\ud83c\udf52": "cherries", - "\ud83c\udf53": "strawberry", - "\ud83c\udf54": "hamburger", - "\ud83c\udf55": "pizza", - "\ud83c\udf56": "meat on bone", - "\ud83c\udf57": "poultry leg", - "\ud83c\udf58": "rice cracker", - "\ud83c\udf59": "rice ball", - "\ud83c\udf5a": "cooked rice", - "\ud83c\udf5b": "curry rice", - "\ud83c\udf5c": "steaming bowl", - "\ud83c\udf5d": "spaghetti", - "\ud83c\udf5e": "bread", - "\ud83c\udf5f": "french fries", - "\ud83c\udf60": "roasted sweet potato", - "\ud83c\udf61": "dango", - "\ud83c\udf62": "oden", - "\ud83c\udf63": "sushi", - "\ud83c\udf64": "fried shrimp", - "\ud83c\udf65": "fish cake with swirl", - "\ud83c\udf66": "soft ice cream", - "\ud83c\udf67": "shaved ice", - "\ud83c\udf68": "ice cream", - "\ud83c\udf69": "doughnut", - "\ud83c\udf6a": "cookie", - "\ud83c\udf6b": "chocolate bar", - "\ud83c\udf6c": "candy", - "\ud83c\udf6d": "lollipop", - "\ud83c\udf6e": "custard", - "\ud83c\udf6f": "honey pot", - "\ud83c\udf70": "shortcake", - "\ud83c\udf71": "bento box", - "\ud83c\udf72": "pot of food", - "\ud83c\udf73": "cooking", - "\ud83c\udf74": "fork and knife", - "\ud83c\udf75": "teacup without handle", - "\ud83c\udf76": "sake", - "\ud83c\udf77": "wine glass", - "\ud83c\udf78": "cocktail glass", - "\ud83c\udf79": "tropical drink", - "\ud83c\udf7a": "beer mug", - "\ud83c\udf7b": "clinking beer mugs", - "\ud83c\udf7c": "baby bottle", - "\ud83c\udf7d\ufe0f": "fork and knife with plate", - "\ud83c\udf7e": "bottle with popping cork", - "\ud83c\udf7f": "popcorn", - "\ud83c\udf80": "ribbon", - "\ud83c\udf81": "wrapped gift", - "\ud83c\udf82": "birthday cake", - "\ud83c\udf83": "jack-o-lantern", - "\ud83c\udf84": "Christmas tree", - "\ud83c\udf85": "Santa Claus", - "\ud83c\udf85\ud83c\udffb": "Santa Claus: light skin tone", - "\ud83c\udf85\ud83c\udffc": "Santa Claus: medium-light skin tone", - "\ud83c\udf85\ud83c\udffd": "Santa Claus: medium skin tone", - "\ud83c\udf85\ud83c\udffe": "Santa Claus: medium-dark skin tone", - "\ud83c\udf85\ud83c\udfff": "Santa Claus: dark skin tone", - "\ud83c\udf86": "fireworks", - "\ud83c\udf87": "sparkler", - "\ud83c\udf88": "balloon", - "\ud83c\udf89": "party popper", - "\ud83c\udf8a": "confetti ball", - "\ud83c\udf8b": "tanabata tree", - "\ud83c\udf8c": "crossed flags", - "\ud83c\udf8d": "pine decoration", - "\ud83c\udf8e": "Japanese dolls", - "\ud83c\udf8f": "carp streamer", - "\ud83c\udf90": "wind chime", - "\ud83c\udf91": "moon viewing ceremony", - "\ud83c\udf92": "backpack", - "\ud83c\udf93": "graduation cap", - "\ud83c\udf96\ufe0f": "military medal", - "\ud83c\udf97\ufe0f": "reminder ribbon", - "\ud83c\udf99\ufe0f": "studio microphone", - "\ud83c\udf9a\ufe0f": "level slider", - "\ud83c\udf9b\ufe0f": "control knobs", - "\ud83c\udf9e\ufe0f": "film frames", - "\ud83c\udf9f\ufe0f": "admission tickets", - "\ud83c\udfa0": "carousel horse", - "\ud83c\udfa1": "ferris wheel", - "\ud83c\udfa2": "roller coaster", - "\ud83c\udfa3": "fishing pole", - "\ud83c\udfa4": "microphone", - "\ud83c\udfa5": "movie camera", - "\ud83c\udfa6": "cinema", - "\ud83c\udfa7": "headphone", - "\ud83c\udfa8": "artist palette", - "\ud83c\udfa9": "top hat", - "\ud83c\udfaa": "circus tent", - "\ud83c\udfab": "ticket", - "\ud83c\udfac": "clapper board", - "\ud83c\udfad": "performing arts", - "\ud83c\udfae": "video game", - "\ud83c\udfaf": "bullseye", - "\ud83c\udfb0": "slot machine", - "\ud83c\udfb1": "pool 8 ball", - "\ud83c\udfb2": "game die", - "\ud83c\udfb3": "bowling", - "\ud83c\udfb4": "flower playing cards", - "\ud83c\udfb5": "musical note", - "\ud83c\udfb6": "musical notes", - "\ud83c\udfb7": "saxophone", - "\ud83c\udfb8": "guitar", - "\ud83c\udfb9": "musical keyboard", - "\ud83c\udfba": "trumpet", - "\ud83c\udfbb": "violin", - "\ud83c\udfbc": "musical score", - "\ud83c\udfbd": "running shirt", - "\ud83c\udfbe": "tennis", - "\ud83c\udfbf": "skis", - "\ud83c\udfc0": "basketball", - "\ud83c\udfc1": "chequered flag", - "\ud83c\udfc2": "snowboarder", - "\ud83c\udfc2\ud83c\udffb": "snowboarder: light skin tone", - "\ud83c\udfc2\ud83c\udffc": "snowboarder: medium-light skin tone", - "\ud83c\udfc2\ud83c\udffd": "snowboarder: medium skin tone", - "\ud83c\udfc2\ud83c\udffe": "snowboarder: medium-dark skin tone", - "\ud83c\udfc2\ud83c\udfff": "snowboarder: dark skin tone", - "\ud83c\udfc3": "person running", - "\ud83c\udfc3\ud83c\udffb": "person running: light skin tone", - "\ud83c\udfc3\ud83c\udffc": "person running: medium-light skin tone", - "\ud83c\udfc3\ud83c\udffd": "person running: medium skin tone", - "\ud83c\udfc3\ud83c\udffe": "person running: medium-dark skin tone", - "\ud83c\udfc3\ud83c\udfff": "person running: dark skin tone", - "\ud83c\udfc4": "person surfing", - "\ud83c\udfc4\ud83c\udffb": "person surfing: light skin tone", - "\ud83c\udfc4\ud83c\udffc": "person surfing: medium-light skin tone", - "\ud83c\udfc4\ud83c\udffd": "person surfing: medium skin tone", - "\ud83c\udfc4\ud83c\udffe": "person surfing: medium-dark skin tone", - "\ud83c\udfc4\ud83c\udfff": "person surfing: dark skin tone", - "\ud83c\udfc5": "sports medal", - "\ud83c\udfc6": "trophy", - "\ud83c\udfc7": "horse racing", - "\ud83c\udfc7\ud83c\udffb": "horse racing: light skin tone", - "\ud83c\udfc7\ud83c\udffc": "horse racing: medium-light skin tone", - "\ud83c\udfc7\ud83c\udffd": "horse racing: medium skin tone", - "\ud83c\udfc7\ud83c\udffe": "horse racing: medium-dark skin tone", - "\ud83c\udfc7\ud83c\udfff": "horse racing: dark skin tone", - "\ud83c\udfc8": "american football", - "\ud83c\udfc9": "rugby football", - "\ud83c\udfca": "person swimming", - "\ud83c\udfca\ud83c\udffb": "person swimming: light skin tone", - "\ud83c\udfca\ud83c\udffc": "person swimming: medium-light skin tone", - "\ud83c\udfca\ud83c\udffd": "person swimming: medium skin tone", - "\ud83c\udfca\ud83c\udffe": "person swimming: medium-dark skin tone", - "\ud83c\udfca\ud83c\udfff": "person swimming: dark skin tone", - "\ud83c\udfcb\ufe0f": "person lifting weights", - "\ud83c\udfcb\ud83c\udffb": "person lifting weights: light skin tone", - "\ud83c\udfcb\ud83c\udffc": "person lifting weights: medium-light skin tone", - "\ud83c\udfcb\ud83c\udffd": "person lifting weights: medium skin tone", - "\ud83c\udfcb\ud83c\udffe": "person lifting weights: medium-dark skin tone", - "\ud83c\udfcb\ud83c\udfff": "person lifting weights: dark skin tone", - "\ud83c\udfcc\ufe0f": "person golfing", - "\ud83c\udfcc\ud83c\udffb": "person golfing: light skin tone", - "\ud83c\udfcc\ud83c\udffc": "person golfing: medium-light skin tone", - "\ud83c\udfcc\ud83c\udffd": "person golfing: medium skin tone", - "\ud83c\udfcc\ud83c\udffe": "person golfing: medium-dark skin tone", - "\ud83c\udfcc\ud83c\udfff": "person golfing: dark skin tone", - "\ud83c\udfcd\ufe0f": "motorcycle", - "\ud83c\udfce\ufe0f": "racing car", - "\ud83c\udfcf": "cricket game", - "\ud83c\udfd0": "volleyball", - "\ud83c\udfd1": "field hockey", - "\ud83c\udfd2": "ice hockey", - "\ud83c\udfd3": "ping pong", - "\ud83c\udfd4\ufe0f": "snow-capped mountain", - "\ud83c\udfd5\ufe0f": "camping", - "\ud83c\udfd6\ufe0f": "beach with umbrella", - "\ud83c\udfd7\ufe0f": "building construction", - "\ud83c\udfd8\ufe0f": "houses", - "\ud83c\udfd9\ufe0f": "cityscape", - "\ud83c\udfda\ufe0f": "derelict house", - "\ud83c\udfdb\ufe0f": "classical building", - "\ud83c\udfdc\ufe0f": "desert", - "\ud83c\udfdd\ufe0f": "desert island", - "\ud83c\udfde\ufe0f": "national park", - "\ud83c\udfdf\ufe0f": "stadium", - "\ud83c\udfe0": "house", - "\ud83c\udfe1": "house with garden", - "\ud83c\udfe2": "office building", - "\ud83c\udfe3": "Japanese post office", - "\ud83c\udfe4": "post office", - "\ud83c\udfe5": "hospital", - "\ud83c\udfe6": "bank", - "\ud83c\udfe7": "ATM sign", - "\ud83c\udfe8": "hotel", - "\ud83c\udfe9": "love hotel", - "\ud83c\udfea": "convenience store", - "\ud83c\udfeb": "school", - "\ud83c\udfec": "department store", - "\ud83c\udfed": "factory", - "\ud83c\udfee": "red paper lantern", - "\ud83c\udfef": "Japanese castle", - "\ud83c\udff0": "castle", - "\ud83c\udff3\ufe0f": "white flag", - "\ud83c\udff4": "black flag", - "\ud83c\udff5\ufe0f": "rosette", - "\ud83c\udff7\ufe0f": "label", - "\ud83c\udff8": "badminton", - "\ud83c\udff9": "bow and arrow", - "\ud83c\udffa": "amphora", - "\ud83d\udc00": "rat", - "\ud83d\udc01": "mouse", - "\ud83d\udc02": "ox", - "\ud83d\udc03": "water buffalo", - "\ud83d\udc04": "cow", - "\ud83d\udc05": "tiger", - "\ud83d\udc06": "leopard", - "\ud83d\udc07": "rabbit", - "\ud83d\udc08": "cat", - "\ud83d\udc08\u200d\u2b1b": "black cat", - "\ud83d\udc09": "dragon", - "\ud83d\udc0a": "crocodile", - "\ud83d\udc0b": "whale", - "\ud83d\udc0c": "snail", - "\ud83d\udc0d": "snake", - "\ud83d\udc0e": "horse", - "\ud83d\udc0f": "ram", - "\ud83d\udc10": "goat", - "\ud83d\udc11": "ewe", - "\ud83d\udc12": "monkey", - "\ud83d\udc13": "rooster", - "\ud83d\udc14": "chicken", - "\ud83d\udc15": "dog", - "\ud83d\udc16": "pig", - "\ud83d\udc17": "boar", - "\ud83d\udc18": "elephant", - "\ud83d\udc19": "octopus", - "\ud83d\udc1a": "spiral shell", - "\ud83d\udc1b": "bug", - "\ud83d\udc1c": "ant", - "\ud83d\udc1d": "honeybee", - "\ud83d\udc1e": "lady beetle", - "\ud83d\udc1f": "fish", - "\ud83d\udc20": "tropical fish", - "\ud83d\udc21": "blowfish", - "\ud83d\udc22": "turtle", - "\ud83d\udc23": "hatching chick", - "\ud83d\udc24": "baby chick", - "\ud83d\udc25": "front-facing baby chick", - "\ud83d\udc26": "bird", - "\ud83d\udc26\u200d\u2b1b": "black bird", - "\ud83d\udc27": "penguin", - "\ud83d\udc28": "koala", - "\ud83d\udc29": "poodle", - "\ud83d\udc2a": "camel", - "\ud83d\udc2b": "two-hump camel", - "\ud83d\udc2c": "dolphin", - "\ud83d\udc2d": "mouse face", - "\ud83d\udc2e": "cow face", - "\ud83d\udc2f": "tiger face", - "\ud83d\udc30": "rabbit face", - "\ud83d\udc31": "cat face", - "\ud83d\udc32": "dragon face", - "\ud83d\udc33": "spouting whale", - "\ud83d\udc34": "horse face", - "\ud83d\udc35": "monkey face", - "\ud83d\udc36": "dog face", - "\ud83d\udc37": "pig face", - "\ud83d\udc38": "frog", - "\ud83d\udc39": "hamster", - "\ud83d\udc3a": "wolf", - "\ud83d\udc3b": "bear", - "\ud83d\udc3c": "panda", - "\ud83d\udc3d": "pig nose", - "\ud83d\udc3e": "paw prints", - "\ud83d\udc3f\ufe0f": "chipmunk", - "\ud83d\udc40": "eyes", - "\ud83d\udc41\ufe0f": "eye", - "\ud83d\udc42": "ear", - "\ud83d\udc42\ud83c\udffb": "ear: light skin tone", - "\ud83d\udc42\ud83c\udffc": "ear: medium-light skin tone", - "\ud83d\udc42\ud83c\udffd": "ear: medium skin tone", - "\ud83d\udc42\ud83c\udffe": "ear: medium-dark skin tone", - "\ud83d\udc42\ud83c\udfff": "ear: dark skin tone", - "\ud83d\udc43": "nose", - "\ud83d\udc43\ud83c\udffb": "nose: light skin tone", - "\ud83d\udc43\ud83c\udffc": "nose: medium-light skin tone", - "\ud83d\udc43\ud83c\udffd": "nose: medium skin tone", - "\ud83d\udc43\ud83c\udffe": "nose: medium-dark skin tone", - "\ud83d\udc43\ud83c\udfff": "nose: dark skin tone", - "\ud83d\udc44": "mouth", - "\ud83d\udc45": "tongue", - "\ud83d\udc46": "backhand index pointing up", - "\ud83d\udc46\ud83c\udffb": "backhand index pointing up: light skin tone", - "\ud83d\udc46\ud83c\udffc": "backhand index pointing up: medium-light skin tone", - "\ud83d\udc46\ud83c\udffd": "backhand index pointing up: medium skin tone", - "\ud83d\udc46\ud83c\udffe": "backhand index pointing up: medium-dark skin tone", - "\ud83d\udc46\ud83c\udfff": "backhand index pointing up: dark skin tone", - "\ud83d\udc47": "backhand index pointing down", - "\ud83d\udc47\ud83c\udffb": "backhand index pointing down: light skin tone", - "\ud83d\udc47\ud83c\udffc": "backhand index pointing down: medium-light skin tone", - "\ud83d\udc47\ud83c\udffd": "backhand index pointing down: medium skin tone", - "\ud83d\udc47\ud83c\udffe": "backhand index pointing down: medium-dark skin tone", - "\ud83d\udc47\ud83c\udfff": "backhand index pointing down: dark skin tone", - "\ud83d\udc48": "backhand index pointing left", - "\ud83d\udc48\ud83c\udffb": "backhand index pointing left: light skin tone", - "\ud83d\udc48\ud83c\udffc": "backhand index pointing left: medium-light skin tone", - "\ud83d\udc48\ud83c\udffd": "backhand index pointing left: medium skin tone", - "\ud83d\udc48\ud83c\udffe": "backhand index pointing left: medium-dark skin tone", - "\ud83d\udc48\ud83c\udfff": "backhand index pointing left: dark skin tone", - "\ud83d\udc49": "backhand index pointing right", - "\ud83d\udc49\ud83c\udffb": "backhand index pointing right: light skin tone", - "\ud83d\udc49\ud83c\udffc": "backhand index pointing right: medium-light skin tone", - "\ud83d\udc49\ud83c\udffd": "backhand index pointing right: medium skin tone", - "\ud83d\udc49\ud83c\udffe": "backhand index pointing right: medium-dark skin tone", - "\ud83d\udc49\ud83c\udfff": "backhand index pointing right: dark skin tone", - "\ud83d\udc4a": "oncoming fist", - "\ud83d\udc4a\ud83c\udffb": "oncoming fist: light skin tone", - "\ud83d\udc4a\ud83c\udffc": "oncoming fist: medium-light skin tone", - "\ud83d\udc4a\ud83c\udffd": "oncoming fist: medium skin tone", - "\ud83d\udc4a\ud83c\udffe": "oncoming fist: medium-dark skin tone", - "\ud83d\udc4a\ud83c\udfff": "oncoming fist: dark skin tone", - "\ud83d\udc4b": "waving hand", - "\ud83d\udc4b\ud83c\udffb": "waving hand: light skin tone", - "\ud83d\udc4b\ud83c\udffc": "waving hand: medium-light skin tone", - "\ud83d\udc4b\ud83c\udffd": "waving hand: medium skin tone", - "\ud83d\udc4b\ud83c\udffe": "waving hand: medium-dark skin tone", - "\ud83d\udc4b\ud83c\udfff": "waving hand: dark skin tone", - "\ud83d\udc4c": "OK hand", - "\ud83d\udc4c\ud83c\udffb": "OK hand: light skin tone", - "\ud83d\udc4c\ud83c\udffc": "OK hand: medium-light skin tone", - "\ud83d\udc4c\ud83c\udffd": "OK hand: medium skin tone", - "\ud83d\udc4c\ud83c\udffe": "OK hand: medium-dark skin tone", - "\ud83d\udc4c\ud83c\udfff": "OK hand: dark skin tone", - "\ud83d\udc4d": "thumbs up", - "\ud83d\udc4d\ud83c\udffb": "thumbs up: light skin tone", - "\ud83d\udc4d\ud83c\udffc": "thumbs up: medium-light skin tone", - "\ud83d\udc4d\ud83c\udffd": "thumbs up: medium skin tone", - "\ud83d\udc4d\ud83c\udffe": "thumbs up: medium-dark skin tone", - "\ud83d\udc4d\ud83c\udfff": "thumbs up: dark skin tone", - "\ud83d\udc4e": "thumbs down", - "\ud83d\udc4e\ud83c\udffb": "thumbs down: light skin tone", - "\ud83d\udc4e\ud83c\udffc": "thumbs down: medium-light skin tone", - "\ud83d\udc4e\ud83c\udffd": "thumbs down: medium skin tone", - "\ud83d\udc4e\ud83c\udffe": "thumbs down: medium-dark skin tone", - "\ud83d\udc4e\ud83c\udfff": "thumbs down: dark skin tone", - "\ud83d\udc4f": "clapping hands", - "\ud83d\udc4f\ud83c\udffb": "clapping hands: light skin tone", - "\ud83d\udc4f\ud83c\udffc": "clapping hands: medium-light skin tone", - "\ud83d\udc4f\ud83c\udffd": "clapping hands: medium skin tone", - "\ud83d\udc4f\ud83c\udffe": "clapping hands: medium-dark skin tone", - "\ud83d\udc4f\ud83c\udfff": "clapping hands: dark skin tone", - "\ud83d\udc50": "open hands", - "\ud83d\udc50\ud83c\udffb": "open hands: light skin tone", - "\ud83d\udc50\ud83c\udffc": "open hands: medium-light skin tone", - "\ud83d\udc50\ud83c\udffd": "open hands: medium skin tone", - "\ud83d\udc50\ud83c\udffe": "open hands: medium-dark skin tone", - "\ud83d\udc50\ud83c\udfff": "open hands: dark skin tone", - "\ud83d\udc51": "crown", - "\ud83d\udc52": "woman's hat", - "\ud83d\udc53": "glasses", - "\ud83d\udc54": "necktie", - "\ud83d\udc55": "t-shirt", - "\ud83d\udc56": "jeans", - "\ud83d\udc57": "dress", - "\ud83d\udc58": "kimono", - "\ud83d\udc59": "bikini", - "\ud83d\udc5a": "woman's clothes", - "\ud83d\udc5b": "purse", - "\ud83d\udc5c": "handbag", - "\ud83d\udc5d": "clutch bag", - "\ud83d\udc5e": "man's shoe", - "\ud83d\udc5f": "running shoe", - "\ud83d\udc60": "high-heeled shoe", - "\ud83d\udc61": "woman's sandal", - "\ud83d\udc62": "woman's boot", - "\ud83d\udc63": "footprints", - "\ud83d\udc64": "bust in silhouette", - "\ud83d\udc65": "busts in silhouette", - "\ud83d\udc66": "boy", - "\ud83d\udc66\ud83c\udffb": "boy: light skin tone", - "\ud83d\udc66\ud83c\udffc": "boy: medium-light skin tone", - "\ud83d\udc66\ud83c\udffd": "boy: medium skin tone", - "\ud83d\udc66\ud83c\udffe": "boy: medium-dark skin tone", - "\ud83d\udc66\ud83c\udfff": "boy: dark skin tone", - "\ud83d\udc67": "girl", - "\ud83d\udc67\ud83c\udffb": "girl: light skin tone", - "\ud83d\udc67\ud83c\udffc": "girl: medium-light skin tone", - "\ud83d\udc67\ud83c\udffd": "girl: medium skin tone", - "\ud83d\udc67\ud83c\udffe": "girl: medium-dark skin tone", - "\ud83d\udc67\ud83c\udfff": "girl: dark skin tone", - "\ud83d\udc68": "man", - "\ud83d\udc68\ud83c\udffb": "man: light skin tone", - "\ud83d\udc68\ud83c\udffc": "man: medium-light skin tone", - "\ud83d\udc68\ud83c\udffd": "man: medium skin tone", - "\ud83d\udc68\ud83c\udffe": "man: medium-dark skin tone", - "\ud83d\udc68\ud83c\udfff": "man: dark skin tone", - "\ud83d\udc69": "woman", - "\ud83d\udc69\ud83c\udffb": "woman: light skin tone", - "\ud83d\udc69\ud83c\udffc": "woman: medium-light skin tone", - "\ud83d\udc69\ud83c\udffd": "woman: medium skin tone", - "\ud83d\udc69\ud83c\udffe": "woman: medium-dark skin tone", - "\ud83d\udc69\ud83c\udfff": "woman: dark skin tone", - "\ud83d\udc6a": "family", - "\ud83d\udc6b": "woman and man holding hands", - "\ud83d\udc6b\ud83c\udffb": "woman and man holding hands: light skin tone", - "\ud83d\udc6b\ud83c\udffc": "woman and man holding hands: medium-light skin tone", - "\ud83d\udc6b\ud83c\udffd": "woman and man holding hands: medium skin tone", - "\ud83d\udc6b\ud83c\udffe": "woman and man holding hands: medium-dark skin tone", - "\ud83d\udc6b\ud83c\udfff": "woman and man holding hands: dark skin tone", - "\ud83d\udc6c": "men holding hands", - "\ud83d\udc6c\ud83c\udffb": "men holding hands: light skin tone", - "\ud83d\udc6c\ud83c\udffc": "men holding hands: medium-light skin tone", - "\ud83d\udc6c\ud83c\udffd": "men holding hands: medium skin tone", - "\ud83d\udc6c\ud83c\udffe": "men holding hands: medium-dark skin tone", - "\ud83d\udc6c\ud83c\udfff": "men holding hands: dark skin tone", - "\ud83d\udc6d": "women holding hands", - "\ud83d\udc6d\ud83c\udffb": "women holding hands: light skin tone", - "\ud83d\udc6d\ud83c\udffc": "women holding hands: medium-light skin tone", - "\ud83d\udc6d\ud83c\udffd": "women holding hands: medium skin tone", - "\ud83d\udc6d\ud83c\udffe": "women holding hands: medium-dark skin tone", - "\ud83d\udc6d\ud83c\udfff": "women holding hands: dark skin tone", - "\ud83d\udc6e": "police officer", - "\ud83d\udc6e\ud83c\udffb": "police officer: light skin tone", - "\ud83d\udc6e\ud83c\udffc": "police officer: medium-light skin tone", - "\ud83d\udc6e\ud83c\udffd": "police officer: medium skin tone", - "\ud83d\udc6e\ud83c\udffe": "police officer: medium-dark skin tone", - "\ud83d\udc6e\ud83c\udfff": "police officer: dark skin tone", - "\ud83d\udc6f": "people with bunny ears", - "\ud83d\udc70": "person with veil", - "\ud83d\udc70\ud83c\udffb": "person with veil: light skin tone", - "\ud83d\udc70\ud83c\udffc": "person with veil: medium-light skin tone", - "\ud83d\udc70\ud83c\udffd": "person with veil: medium skin tone", - "\ud83d\udc70\ud83c\udffe": "person with veil: medium-dark skin tone", - "\ud83d\udc70\ud83c\udfff": "person with veil: dark skin tone", - "\ud83d\udc71": "person: blond hair", - "\ud83d\udc71\ud83c\udffb": "person: light skin tone, blond hair", - "\ud83d\udc71\ud83c\udffc": "person: medium-light skin tone, blond hair", - "\ud83d\udc71\ud83c\udffd": "person: medium skin tone, blond hair", - "\ud83d\udc71\ud83c\udffe": "person: medium-dark skin tone, blond hair", - "\ud83d\udc71\ud83c\udfff": "person: dark skin tone, blond hair", - "\ud83d\udc72": "person with skullcap", - "\ud83d\udc72\ud83c\udffb": "person with skullcap: light skin tone", - "\ud83d\udc72\ud83c\udffc": "person with skullcap: medium-light skin tone", - "\ud83d\udc72\ud83c\udffd": "person with skullcap: medium skin tone", - "\ud83d\udc72\ud83c\udffe": "person with skullcap: medium-dark skin tone", - "\ud83d\udc72\ud83c\udfff": "person with skullcap: dark skin tone", - "\ud83d\udc73": "person wearing turban", - "\ud83d\udc73\ud83c\udffb": "person wearing turban: light skin tone", - "\ud83d\udc73\ud83c\udffc": "person wearing turban: medium-light skin tone", - "\ud83d\udc73\ud83c\udffd": "person wearing turban: medium skin tone", - "\ud83d\udc73\ud83c\udffe": "person wearing turban: medium-dark skin tone", - "\ud83d\udc73\ud83c\udfff": "person wearing turban: dark skin tone", - "\ud83d\udc74": "old man", - "\ud83d\udc74\ud83c\udffb": "old man: light skin tone", - "\ud83d\udc74\ud83c\udffc": "old man: medium-light skin tone", - "\ud83d\udc74\ud83c\udffd": "old man: medium skin tone", - "\ud83d\udc74\ud83c\udffe": "old man: medium-dark skin tone", - "\ud83d\udc74\ud83c\udfff": "old man: dark skin tone", - "\ud83d\udc75": "old woman", - "\ud83d\udc75\ud83c\udffb": "old woman: light skin tone", - "\ud83d\udc75\ud83c\udffc": "old woman: medium-light skin tone", - "\ud83d\udc75\ud83c\udffd": "old woman: medium skin tone", - "\ud83d\udc75\ud83c\udffe": "old woman: medium-dark skin tone", - "\ud83d\udc75\ud83c\udfff": "old woman: dark skin tone", - "\ud83d\udc76": "baby", - "\ud83d\udc76\ud83c\udffb": "baby: light skin tone", - "\ud83d\udc76\ud83c\udffc": "baby: medium-light skin tone", - "\ud83d\udc76\ud83c\udffd": "baby: medium skin tone", - "\ud83d\udc76\ud83c\udffe": "baby: medium-dark skin tone", - "\ud83d\udc76\ud83c\udfff": "baby: dark skin tone", - "\ud83d\udc77": "construction worker", - "\ud83d\udc77\ud83c\udffb": "construction worker: light skin tone", - "\ud83d\udc77\ud83c\udffc": "construction worker: medium-light skin tone", - "\ud83d\udc77\ud83c\udffd": "construction worker: medium skin tone", - "\ud83d\udc77\ud83c\udffe": "construction worker: medium-dark skin tone", - "\ud83d\udc77\ud83c\udfff": "construction worker: dark skin tone", - "\ud83d\udc78": "princess", - "\ud83d\udc78\ud83c\udffb": "princess: light skin tone", - "\ud83d\udc78\ud83c\udffc": "princess: medium-light skin tone", - "\ud83d\udc78\ud83c\udffd": "princess: medium skin tone", - "\ud83d\udc78\ud83c\udffe": "princess: medium-dark skin tone", - "\ud83d\udc78\ud83c\udfff": "princess: dark skin tone", - "\ud83d\udc79": "ogre", - "\ud83d\udc7a": "goblin", - "\ud83d\udc7b": "ghost", - "\ud83d\udc7c": "baby angel", - "\ud83d\udc7c\ud83c\udffb": "baby angel: light skin tone", - "\ud83d\udc7c\ud83c\udffc": "baby angel: medium-light skin tone", - "\ud83d\udc7c\ud83c\udffd": "baby angel: medium skin tone", - "\ud83d\udc7c\ud83c\udffe": "baby angel: medium-dark skin tone", - "\ud83d\udc7c\ud83c\udfff": "baby angel: dark skin tone", - "\ud83d\udc7d": "alien", - "\ud83d\udc7e": "alien monster", - "\ud83d\udc7f": "angry face with horns", - "\ud83d\udc80": "skull", - "\ud83d\udc81": "person tipping hand", - "\ud83d\udc81\ud83c\udffb": "person tipping hand: light skin tone", - "\ud83d\udc81\ud83c\udffc": "person tipping hand: medium-light skin tone", - "\ud83d\udc81\ud83c\udffd": "person tipping hand: medium skin tone", - "\ud83d\udc81\ud83c\udffe": "person tipping hand: medium-dark skin tone", - "\ud83d\udc81\ud83c\udfff": "person tipping hand: dark skin tone", - "\ud83d\udc82": "guard", - "\ud83d\udc82\ud83c\udffb": "guard: light skin tone", - "\ud83d\udc82\ud83c\udffc": "guard: medium-light skin tone", - "\ud83d\udc82\ud83c\udffd": "guard: medium skin tone", - "\ud83d\udc82\ud83c\udffe": "guard: medium-dark skin tone", - "\ud83d\udc82\ud83c\udfff": "guard: dark skin tone", - "\ud83d\udc83": "woman dancing", - "\ud83d\udc83\ud83c\udffb": "woman dancing: light skin tone", - "\ud83d\udc83\ud83c\udffc": "woman dancing: medium-light skin tone", - "\ud83d\udc83\ud83c\udffd": "woman dancing: medium skin tone", - "\ud83d\udc83\ud83c\udffe": "woman dancing: medium-dark skin tone", - "\ud83d\udc83\ud83c\udfff": "woman dancing: dark skin tone", - "\ud83d\udc84": "lipstick", - "\ud83d\udc85": "nail polish", - "\ud83d\udc85\ud83c\udffb": "nail polish: light skin tone", - "\ud83d\udc85\ud83c\udffc": "nail polish: medium-light skin tone", - "\ud83d\udc85\ud83c\udffd": "nail polish: medium skin tone", - "\ud83d\udc85\ud83c\udffe": "nail polish: medium-dark skin tone", - "\ud83d\udc85\ud83c\udfff": "nail polish: dark skin tone", - "\ud83d\udc86": "person getting massage", - "\ud83d\udc86\ud83c\udffb": "person getting massage: light skin tone", - "\ud83d\udc86\ud83c\udffc": "person getting massage: medium-light skin tone", - "\ud83d\udc86\ud83c\udffd": "person getting massage: medium skin tone", - "\ud83d\udc86\ud83c\udffe": "person getting massage: medium-dark skin tone", - "\ud83d\udc86\ud83c\udfff": "person getting massage: dark skin tone", - "\ud83d\udc87": "person getting haircut", - "\ud83d\udc87\ud83c\udffb": "person getting haircut: light skin tone", - "\ud83d\udc87\ud83c\udffc": "person getting haircut: medium-light skin tone", - "\ud83d\udc87\ud83c\udffd": "person getting haircut: medium skin tone", - "\ud83d\udc87\ud83c\udffe": "person getting haircut: medium-dark skin tone", - "\ud83d\udc87\ud83c\udfff": "person getting haircut: dark skin tone", - "\ud83d\udc88": "barber pole", - "\ud83d\udc89": "syringe", - "\ud83d\udc8a": "pill", - "\ud83d\udc8b": "kiss mark", - "\ud83d\udc8c": "love letter", - "\ud83d\udc8d": "ring", - "\ud83d\udc8e": "gem stone", - "\ud83d\udc8f": "kiss", - "\ud83d\udc8f\ud83c\udffb": "kiss: light skin tone", - "\ud83d\udc8f\ud83c\udffc": "kiss: medium-light skin tone", - "\ud83d\udc8f\ud83c\udffd": "kiss: medium skin tone", - "\ud83d\udc8f\ud83c\udffe": "kiss: medium-dark skin tone", - "\ud83d\udc8f\ud83c\udfff": "kiss: dark skin tone", - "\ud83d\udc90": "bouquet", - "\ud83d\udc91": "couple with heart", - "\ud83d\udc91\ud83c\udffb": "couple with heart: light skin tone", - "\ud83d\udc91\ud83c\udffc": "couple with heart: medium-light skin tone", - "\ud83d\udc91\ud83c\udffd": "couple with heart: medium skin tone", - "\ud83d\udc91\ud83c\udffe": "couple with heart: medium-dark skin tone", - "\ud83d\udc91\ud83c\udfff": "couple with heart: dark skin tone", - "\ud83d\udc92": "wedding", - "\ud83d\udc93": "beating heart", - "\ud83d\udc94": "broken heart", - "\ud83d\udc95": "two hearts", - "\ud83d\udc96": "sparkling heart", - "\ud83d\udc97": "growing heart", - "\ud83d\udc98": "heart with arrow", - "\ud83d\udc99": "blue heart", - "\ud83d\udc9a": "green heart", - "\ud83d\udc9b": "yellow heart", - "\ud83d\udc9c": "purple heart", - "\ud83d\udc9d": "heart with ribbon", - "\ud83d\udc9e": "revolving hearts", - "\ud83d\udc9f": "heart decoration", - "\ud83d\udca0": "diamond with a dot", - "\ud83d\udca1": "light bulb", - "\ud83d\udca2": "anger symbol", - "\ud83d\udca3": "bomb", - "\ud83d\udca4": "ZZZ", - "\ud83d\udca5": "collision", - "\ud83d\udca6": "sweat droplets", - "\ud83d\udca7": "droplet", - "\ud83d\udca8": "dashing away", - "\ud83d\udca9": "pile of poo", - "\ud83d\udcaa": "flexed biceps", - "\ud83d\udcaa\ud83c\udffb": "flexed biceps: light skin tone", - "\ud83d\udcaa\ud83c\udffc": "flexed biceps: medium-light skin tone", - "\ud83d\udcaa\ud83c\udffd": "flexed biceps: medium skin tone", - "\ud83d\udcaa\ud83c\udffe": "flexed biceps: medium-dark skin tone", - "\ud83d\udcaa\ud83c\udfff": "flexed biceps: dark skin tone", - "\ud83d\udcab": "dizzy", - "\ud83d\udcac": "speech balloon", - "\ud83d\udcad": "thought balloon", - "\ud83d\udcae": "white flower", - "\ud83d\udcaf": "hundred points", - "\ud83d\udcb0": "money bag", - "\ud83d\udcb1": "currency exchange", - "\ud83d\udcb2": "heavy dollar sign", - "\ud83d\udcb3": "credit card", - "\ud83d\udcb4": "yen banknote", - "\ud83d\udcb5": "dollar banknote", - "\ud83d\udcb6": "euro banknote", - "\ud83d\udcb7": "pound banknote", - "\ud83d\udcb8": "money with wings", - "\ud83d\udcb9": "chart increasing with yen", - "\ud83d\udcba": "seat", - "\ud83d\udcbb": "laptop", - "\ud83d\udcbc": "briefcase", - "\ud83d\udcbd": "computer disk", - "\ud83d\udcbe": "floppy disk", - "\ud83d\udcbf": "optical disk", - "\ud83d\udcc0": "dvd", - "\ud83d\udcc1": "file folder", - "\ud83d\udcc2": "open file folder", - "\ud83d\udcc3": "page with curl", - "\ud83d\udcc4": "page facing up", - "\ud83d\udcc5": "calendar", - "\ud83d\udcc6": "tear-off calendar", - "\ud83d\udcc7": "card index", - "\ud83d\udcc8": "chart increasing", - "\ud83d\udcc9": "chart decreasing", - "\ud83d\udcca": "bar chart", - "\ud83d\udccb": "clipboard", - "\ud83d\udccc": "pushpin", - "\ud83d\udccd": "round pushpin", - "\ud83d\udcce": "paperclip", - "\ud83d\udccf": "straight ruler", - "\ud83d\udcd0": "triangular ruler", - "\ud83d\udcd1": "bookmark tabs", - "\ud83d\udcd2": "ledger", - "\ud83d\udcd3": "notebook", - "\ud83d\udcd4": "notebook with decorative cover", - "\ud83d\udcd5": "closed book", - "\ud83d\udcd6": "open book", - "\ud83d\udcd7": "green book", - "\ud83d\udcd8": "blue book", - "\ud83d\udcd9": "orange book", - "\ud83d\udcda": "books", - "\ud83d\udcdb": "name badge", - "\ud83d\udcdc": "scroll", - "\ud83d\udcdd": "memo", - "\ud83d\udcde": "telephone receiver", - "\ud83d\udcdf": "pager", - "\ud83d\udce0": "fax machine", - "\ud83d\udce1": "satellite antenna", - "\ud83d\udce2": "loudspeaker", - "\ud83d\udce3": "megaphone", - "\ud83d\udce4": "outbox tray", - "\ud83d\udce5": "inbox tray", - "\ud83d\udce6": "package", - "\ud83d\udce7": "e-mail", - "\ud83d\udce8": "incoming envelope", - "\ud83d\udce9": "envelope with arrow", - "\ud83d\udcea": "closed mailbox with lowered flag", - "\ud83d\udceb": "closed mailbox with raised flag", - "\ud83d\udcec": "open mailbox with raised flag", - "\ud83d\udced": "open mailbox with lowered flag", - "\ud83d\udcee": "postbox", - "\ud83d\udcef": "postal horn", - "\ud83d\udcf0": "newspaper", - "\ud83d\udcf1": "mobile phone", - "\ud83d\udcf2": "mobile phone with arrow", - "\ud83d\udcf3": "vibration mode", - "\ud83d\udcf4": "mobile phone off", - "\ud83d\udcf5": "no mobile phones", - "\ud83d\udcf6": "antenna bars", - "\ud83d\udcf7": "camera", - "\ud83d\udcf8": "camera with flash", - "\ud83d\udcf9": "video camera", - "\ud83d\udcfa": "television", - "\ud83d\udcfb": "radio", - "\ud83d\udcfc": "videocassette", - "\ud83d\udcfd\ufe0f": "film projector", - "\ud83d\udcff": "prayer beads", - "\ud83d\udd00": "shuffle tracks button", - "\ud83d\udd01": "repeat button", - "\ud83d\udd02": "repeat single button", - "\ud83d\udd03": "clockwise vertical arrows", - "\ud83d\udd04": "counterclockwise arrows button", - "\ud83d\udd05": "dim button", - "\ud83d\udd06": "bright button", - "\ud83d\udd07": "muted speaker", - "\ud83d\udd08": "speaker low volume", - "\ud83d\udd09": "speaker medium volume", - "\ud83d\udd0a": "speaker high volume", - "\ud83d\udd0b": "battery", - "\ud83d\udd0c": "electric plug", - "\ud83d\udd0d": "magnifying glass tilted left", - "\ud83d\udd0e": "magnifying glass tilted right", - "\ud83d\udd0f": "locked with pen", - "\ud83d\udd10": "locked with key", - "\ud83d\udd11": "key", - "\ud83d\udd12": "locked", - "\ud83d\udd13": "unlocked", - "\ud83d\udd14": "bell", - "\ud83d\udd15": "bell with slash", - "\ud83d\udd16": "bookmark", - "\ud83d\udd17": "link", - "\ud83d\udd18": "radio button", - "\ud83d\udd19": "BACK arrow", - "\ud83d\udd1a": "END arrow", - "\ud83d\udd1b": "ON! arrow", - "\ud83d\udd1c": "SOON arrow", - "\ud83d\udd1d": "TOP arrow", - "\ud83d\udd1e": "no one under eighteen", - "\ud83d\udd1f": "keycap: 10", - "\ud83d\udd20": "input latin uppercase", - "\ud83d\udd21": "input latin lowercase", - "\ud83d\udd22": "input numbers", - "\ud83d\udd23": "input symbols", - "\ud83d\udd24": "input latin letters", - "\ud83d\udd25": "fire", - "\ud83d\udd26": "flashlight", - "\ud83d\udd27": "wrench", - "\ud83d\udd28": "hammer", - "\ud83d\udd29": "nut and bolt", - "\ud83d\udd2a": "kitchen knife", - "\ud83d\udd2b": "water pistol", - "\ud83d\udd2c": "microscope", - "\ud83d\udd2d": "telescope", - "\ud83d\udd2e": "crystal ball", - "\ud83d\udd2f": "dotted six-pointed star", - "\ud83d\udd30": "Japanese symbol for beginner", - "\ud83d\udd31": "trident emblem", - "\ud83d\udd32": "black square button", - "\ud83d\udd33": "white square button", - "\ud83d\udd34": "red circle", - "\ud83d\udd35": "blue circle", - "\ud83d\udd36": "large orange diamond", - "\ud83d\udd37": "large blue diamond", - "\ud83d\udd38": "small orange diamond", - "\ud83d\udd39": "small blue diamond", - "\ud83d\udd3a": "red triangle pointed up", - "\ud83d\udd3b": "red triangle pointed down", - "\ud83d\udd3c": "upwards button", - "\ud83d\udd3d": "downwards button", - "\ud83d\udd49\ufe0f": "om", - "\ud83d\udd4a\ufe0f": "dove", - "\ud83d\udd4b": "kaaba", - "\ud83d\udd4c": "mosque", - "\ud83d\udd4d": "synagogue", - "\ud83d\udd4e": "menorah", - "\ud83d\udd50": "one o'clock", - "\ud83d\udd51": "two o'clock", - "\ud83d\udd52": "three o'clock", - "\ud83d\udd53": "four o'clock", - "\ud83d\udd54": "five o'clock", - "\ud83d\udd55": "six o'clock", - "\ud83d\udd56": "seven o'clock", - "\ud83d\udd57": "eight o'clock", - "\ud83d\udd58": "nine o'clock", - "\ud83d\udd59": "ten o'clock", - "\ud83d\udd5a": "eleven o'clock", - "\ud83d\udd5b": "twelve o'clock", - "\ud83d\udd5c": "one-thirty", - "\ud83d\udd5d": "two-thirty", - "\ud83d\udd5e": "three-thirty", - "\ud83d\udd5f": "four-thirty", - "\ud83d\udd60": "five-thirty", - "\ud83d\udd61": "six-thirty", - "\ud83d\udd62": "seven-thirty", - "\ud83d\udd63": "eight-thirty", - "\ud83d\udd64": "nine-thirty", - "\ud83d\udd65": "ten-thirty", - "\ud83d\udd66": "eleven-thirty", - "\ud83d\udd67": "twelve-thirty", - "\ud83d\udd6f\ufe0f": "candle", - "\ud83d\udd70\ufe0f": "mantelpiece clock", - "\ud83d\udd73\ufe0f": "hole", - "\ud83d\udd74\ufe0f": "person in suit levitating", - "\ud83d\udd74\ud83c\udffb": "person in suit levitating: light skin tone", - "\ud83d\udd74\ud83c\udffc": "person in suit levitating: medium-light skin tone", - "\ud83d\udd74\ud83c\udffd": "person in suit levitating: medium skin tone", - "\ud83d\udd74\ud83c\udffe": "person in suit levitating: medium-dark skin tone", - "\ud83d\udd74\ud83c\udfff": "person in suit levitating: dark skin tone", - "\ud83d\udd75\ufe0f": "detective", - "\ud83d\udd75\ud83c\udffb": "detective: light skin tone", - "\ud83d\udd75\ud83c\udffc": "detective: medium-light skin tone", - "\ud83d\udd75\ud83c\udffd": "detective: medium skin tone", - "\ud83d\udd75\ud83c\udffe": "detective: medium-dark skin tone", - "\ud83d\udd75\ud83c\udfff": "detective: dark skin tone", - "\ud83d\udd76\ufe0f": "sunglasses", - "\ud83d\udd77\ufe0f": "spider", - "\ud83d\udd78\ufe0f": "spider web", - "\ud83d\udd79\ufe0f": "joystick", - "\ud83d\udd7a": "man dancing", - "\ud83d\udd7a\ud83c\udffb": "man dancing: light skin tone", - "\ud83d\udd7a\ud83c\udffc": "man dancing: medium-light skin tone", - "\ud83d\udd7a\ud83c\udffd": "man dancing: medium skin tone", - "\ud83d\udd7a\ud83c\udffe": "man dancing: medium-dark skin tone", - "\ud83d\udd7a\ud83c\udfff": "man dancing: dark skin tone", - "\ud83d\udd87\ufe0f": "linked paperclips", - "\ud83d\udd8a\ufe0f": "pen", - "\ud83d\udd8b\ufe0f": "fountain pen", - "\ud83d\udd8c\ufe0f": "paintbrush", - "\ud83d\udd8d\ufe0f": "crayon", - "\ud83d\udd90\ufe0f": "hand with fingers splayed", - "\ud83d\udd90\ud83c\udffb": "hand with fingers splayed: light skin tone", - "\ud83d\udd90\ud83c\udffc": "hand with fingers splayed: medium-light skin tone", - "\ud83d\udd90\ud83c\udffd": "hand with fingers splayed: medium skin tone", - "\ud83d\udd90\ud83c\udffe": "hand with fingers splayed: medium-dark skin tone", - "\ud83d\udd90\ud83c\udfff": "hand with fingers splayed: dark skin tone", - "\ud83d\udd95": "middle finger", - "\ud83d\udd95\ud83c\udffb": "middle finger: light skin tone", - "\ud83d\udd95\ud83c\udffc": "middle finger: medium-light skin tone", - "\ud83d\udd95\ud83c\udffd": "middle finger: medium skin tone", - "\ud83d\udd95\ud83c\udffe": "middle finger: medium-dark skin tone", - "\ud83d\udd95\ud83c\udfff": "middle finger: dark skin tone", - "\ud83d\udd96": "vulcan salute", - "\ud83d\udd96\ud83c\udffb": "vulcan salute: light skin tone", - "\ud83d\udd96\ud83c\udffc": "vulcan salute: medium-light skin tone", - "\ud83d\udd96\ud83c\udffd": "vulcan salute: medium skin tone", - "\ud83d\udd96\ud83c\udffe": "vulcan salute: medium-dark skin tone", - "\ud83d\udd96\ud83c\udfff": "vulcan salute: dark skin tone", - "\ud83d\udda4": "black heart", - "\ud83d\udda5\ufe0f": "desktop computer", - "\ud83d\udda8\ufe0f": "printer", - "\ud83d\uddb1\ufe0f": "computer mouse", - "\ud83d\uddb2\ufe0f": "trackball", - "\ud83d\uddbc\ufe0f": "framed picture", - "\ud83d\uddc2\ufe0f": "card index dividers", - "\ud83d\uddc3\ufe0f": "card file box", - "\ud83d\uddc4\ufe0f": "file cabinet", - "\ud83d\uddd1\ufe0f": "wastebasket", - "\ud83d\uddd2\ufe0f": "spiral notepad", - "\ud83d\uddd3\ufe0f": "spiral calendar", - "\ud83d\udddc\ufe0f": "clamp", - "\ud83d\udddd\ufe0f": "old key", - "\ud83d\uddde\ufe0f": "rolled-up newspaper", - "\ud83d\udde1\ufe0f": "dagger", - "\ud83d\udde3\ufe0f": "speaking head", - "\ud83d\udde8\ufe0f": "left speech bubble", - "\ud83d\uddef\ufe0f": "right anger bubble", - "\ud83d\uddf3\ufe0f": "ballot box with ballot", - "\ud83d\uddfa\ufe0f": "world map", - "\ud83d\uddfb": "mount fuji", - "\ud83d\uddfc": "Tokyo tower", - "\ud83d\uddfd": "Statue of Liberty", - "\ud83d\uddfe": "map of Japan", - "\ud83d\uddff": "moai", - "\ud83d\ude00": "grinning face", - "\ud83d\ude01": "beaming face with smiling eyes", - "\ud83d\ude02": "face with tears of joy", - "\ud83d\ude03": "grinning face with big eyes", - "\ud83d\ude04": "grinning face with smiling eyes", - "\ud83d\ude05": "grinning face with sweat", - "\ud83d\ude06": "grinning squinting face", - "\ud83d\ude07": "smiling face with halo", - "\ud83d\ude08": "smiling face with horns", - "\ud83d\ude09": "winking face", - "\ud83d\ude0a": "smiling face with smiling eyes", - "\ud83d\ude0b": "face savoring food", - "\ud83d\ude0c": "relieved face", - "\ud83d\ude0d": "smiling face with heart-eyes", - "\ud83d\ude0e": "smiling face with sunglasses", - "\ud83d\ude0f": "smirking face", - "\ud83d\ude10": "neutral face", - "\ud83d\ude11": "expressionless face", - "\ud83d\ude12": "unamused face", - "\ud83d\ude13": "downcast face with sweat", - "\ud83d\ude14": "pensive face", - "\ud83d\ude15": "confused face", - "\ud83d\ude16": "confounded face", - "\ud83d\ude17": "kissing face", - "\ud83d\ude18": "face blowing a kiss", - "\ud83d\ude19": "kissing face with smiling eyes", - "\ud83d\ude1a": "kissing face with closed eyes", - "\ud83d\ude1b": "face with tongue", - "\ud83d\ude1c": "winking face with tongue", - "\ud83d\ude1d": "squinting face with tongue", - "\ud83d\ude1e": "disappointed face", - "\ud83d\ude1f": "worried face", - "\ud83d\ude20": "angry face", - "\ud83d\ude21": "enraged face", - "\ud83d\ude22": "crying face", - "\ud83d\ude23": "persevering face", - "\ud83d\ude24": "face with steam from nose", - "\ud83d\ude25": "sad but relieved face", - "\ud83d\ude26": "frowning face with open mouth", - "\ud83d\ude27": "anguished face", - "\ud83d\ude28": "fearful face", - "\ud83d\ude29": "weary face", - "\ud83d\ude2a": "sleepy face", - "\ud83d\ude2b": "tired face", - "\ud83d\ude2c": "grimacing face", - "\ud83d\ude2d": "loudly crying face", - "\ud83d\ude2e": "face with open mouth", - "\ud83d\ude2f": "hushed face", - "\ud83d\ude30": "anxious face with sweat", - "\ud83d\ude31": "face screaming in fear", - "\ud83d\ude32": "astonished face", - "\ud83d\ude33": "flushed face", - "\ud83d\ude34": "sleeping face", - "\ud83d\ude35": "face with crossed-out eyes", - "\ud83d\ude36": "face without mouth", - "\ud83d\ude37": "face with medical mask", - "\ud83d\ude38": "grinning cat with smiling eyes", - "\ud83d\ude39": "cat with tears of joy", - "\ud83d\ude3a": "grinning cat", - "\ud83d\ude3b": "smiling cat with heart-eyes", - "\ud83d\ude3c": "cat with wry smile", - "\ud83d\ude3d": "kissing cat", - "\ud83d\ude3e": "pouting cat", - "\ud83d\ude3f": "crying cat", - "\ud83d\ude40": "weary cat", - "\ud83d\ude41": "slightly frowning face", - "\ud83d\ude42": "slightly smiling face", - "\ud83d\ude43": "upside-down face", - "\ud83d\ude44": "face with rolling eyes", - "\ud83d\ude45": "person gesturing NO", - "\ud83d\ude45\ud83c\udffb": "person gesturing NO: light skin tone", - "\ud83d\ude45\ud83c\udffc": "person gesturing NO: medium-light skin tone", - "\ud83d\ude45\ud83c\udffd": "person gesturing NO: medium skin tone", - "\ud83d\ude45\ud83c\udffe": "person gesturing NO: medium-dark skin tone", - "\ud83d\ude45\ud83c\udfff": "person gesturing NO: dark skin tone", - "\ud83d\ude46": "person gesturing OK", - "\ud83d\ude46\ud83c\udffb": "person gesturing OK: light skin tone", - "\ud83d\ude46\ud83c\udffc": "person gesturing OK: medium-light skin tone", - "\ud83d\ude46\ud83c\udffd": "person gesturing OK: medium skin tone", - "\ud83d\ude46\ud83c\udffe": "person gesturing OK: medium-dark skin tone", - "\ud83d\ude46\ud83c\udfff": "person gesturing OK: dark skin tone", - "\ud83d\ude47": "person bowing", - "\ud83d\ude47\ud83c\udffb": "person bowing: light skin tone", - "\ud83d\ude47\ud83c\udffc": "person bowing: medium-light skin tone", - "\ud83d\ude47\ud83c\udffd": "person bowing: medium skin tone", - "\ud83d\ude47\ud83c\udffe": "person bowing: medium-dark skin tone", - "\ud83d\ude47\ud83c\udfff": "person bowing: dark skin tone", - "\ud83d\ude48": "see-no-evil monkey", - "\ud83d\ude49": "hear-no-evil monkey", - "\ud83d\ude4a": "speak-no-evil monkey", - "\ud83d\ude4b": "person raising hand", - "\ud83d\ude4b\ud83c\udffb": "person raising hand: light skin tone", - "\ud83d\ude4b\ud83c\udffc": "person raising hand: medium-light skin tone", - "\ud83d\ude4b\ud83c\udffd": "person raising hand: medium skin tone", - "\ud83d\ude4b\ud83c\udffe": "person raising hand: medium-dark skin tone", - "\ud83d\ude4b\ud83c\udfff": "person raising hand: dark skin tone", - "\ud83d\ude4c": "raising hands", - "\ud83d\ude4c\ud83c\udffb": "raising hands: light skin tone", - "\ud83d\ude4c\ud83c\udffc": "raising hands: medium-light skin tone", - "\ud83d\ude4c\ud83c\udffd": "raising hands: medium skin tone", - "\ud83d\ude4c\ud83c\udffe": "raising hands: medium-dark skin tone", - "\ud83d\ude4c\ud83c\udfff": "raising hands: dark skin tone", - "\ud83d\ude4d": "person frowning", - "\ud83d\ude4d\ud83c\udffb": "person frowning: light skin tone", - "\ud83d\ude4d\ud83c\udffc": "person frowning: medium-light skin tone", - "\ud83d\ude4d\ud83c\udffd": "person frowning: medium skin tone", - "\ud83d\ude4d\ud83c\udffe": "person frowning: medium-dark skin tone", - "\ud83d\ude4d\ud83c\udfff": "person frowning: dark skin tone", - "\ud83d\ude4e": "person pouting", - "\ud83d\ude4e\ud83c\udffb": "person pouting: light skin tone", - "\ud83d\ude4e\ud83c\udffc": "person pouting: medium-light skin tone", - "\ud83d\ude4e\ud83c\udffd": "person pouting: medium skin tone", - "\ud83d\ude4e\ud83c\udffe": "person pouting: medium-dark skin tone", - "\ud83d\ude4e\ud83c\udfff": "person pouting: dark skin tone", - "\ud83d\ude4f": "folded hands", - "\ud83d\ude4f\ud83c\udffb": "folded hands: light skin tone", - "\ud83d\ude4f\ud83c\udffc": "folded hands: medium-light skin tone", - "\ud83d\ude4f\ud83c\udffd": "folded hands: medium skin tone", - "\ud83d\ude4f\ud83c\udffe": "folded hands: medium-dark skin tone", - "\ud83d\ude4f\ud83c\udfff": "folded hands: dark skin tone", - "\ud83d\ude80": "rocket", - "\ud83d\ude81": "helicopter", - "\ud83d\ude82": "locomotive", - "\ud83d\ude83": "railway car", - "\ud83d\ude84": "high-speed train", - "\ud83d\ude85": "bullet train", - "\ud83d\ude86": "train", - "\ud83d\ude87": "metro", - "\ud83d\ude88": "light rail", - "\ud83d\ude89": "station", - "\ud83d\ude8a": "tram", - "\ud83d\ude8b": "tram car", - "\ud83d\ude8c": "bus", - "\ud83d\ude8d": "oncoming bus", - "\ud83d\ude8e": "trolleybus", - "\ud83d\ude8f": "bus stop", - "\ud83d\ude90": "minibus", - "\ud83d\ude91": "ambulance", - "\ud83d\ude92": "fire engine", - "\ud83d\ude93": "police car", - "\ud83d\ude94": "oncoming police car", - "\ud83d\ude95": "taxi", - "\ud83d\ude96": "oncoming taxi", - "\ud83d\ude97": "automobile", - "\ud83d\ude98": "oncoming automobile", - "\ud83d\ude99": "sport utility vehicle", - "\ud83d\ude9a": "delivery truck", - "\ud83d\ude9b": "articulated lorry", - "\ud83d\ude9c": "tractor", - "\ud83d\ude9d": "monorail", - "\ud83d\ude9e": "mountain railway", - "\ud83d\ude9f": "suspension railway", - "\ud83d\udea0": "mountain cableway", - "\ud83d\udea1": "aerial tramway", - "\ud83d\udea2": "ship", - "\ud83d\udea3": "person rowing boat", - "\ud83d\udea3\ud83c\udffb": "person rowing boat: light skin tone", - "\ud83d\udea3\ud83c\udffc": "person rowing boat: medium-light skin tone", - "\ud83d\udea3\ud83c\udffd": "person rowing boat: medium skin tone", - "\ud83d\udea3\ud83c\udffe": "person rowing boat: medium-dark skin tone", - "\ud83d\udea3\ud83c\udfff": "person rowing boat: dark skin tone", - "\ud83d\udea4": "speedboat", - "\ud83d\udea5": "horizontal traffic light", - "\ud83d\udea6": "vertical traffic light", - "\ud83d\udea7": "construction", - "\ud83d\udea8": "police car light", - "\ud83d\udea9": "triangular flag", - "\ud83d\udeaa": "door", - "\ud83d\udeab": "prohibited", - "\ud83d\udeac": "cigarette", - "\ud83d\udead": "no smoking", - "\ud83d\udeae": "litter in bin sign", - "\ud83d\udeaf": "no littering", - "\ud83d\udeb0": "potable water", - "\ud83d\udeb1": "non-potable water", - "\ud83d\udeb2": "bicycle", - "\ud83d\udeb3": "no bicycles", - "\ud83d\udeb4": "person biking", - "\ud83d\udeb4\ud83c\udffb": "person biking: light skin tone", - "\ud83d\udeb4\ud83c\udffc": "person biking: medium-light skin tone", - "\ud83d\udeb4\ud83c\udffd": "person biking: medium skin tone", - "\ud83d\udeb4\ud83c\udffe": "person biking: medium-dark skin tone", - "\ud83d\udeb4\ud83c\udfff": "person biking: dark skin tone", - "\ud83d\udeb5": "person mountain biking", - "\ud83d\udeb5\ud83c\udffb": "person mountain biking: light skin tone", - "\ud83d\udeb5\ud83c\udffc": "person mountain biking: medium-light skin tone", - "\ud83d\udeb5\ud83c\udffd": "person mountain biking: medium skin tone", - "\ud83d\udeb5\ud83c\udffe": "person mountain biking: medium-dark skin tone", - "\ud83d\udeb5\ud83c\udfff": "person mountain biking: dark skin tone", - "\ud83d\udeb6": "person walking", - "\ud83d\udeb6\ud83c\udffb": "person walking: light skin tone", - "\ud83d\udeb6\ud83c\udffc": "person walking: medium-light skin tone", - "\ud83d\udeb6\ud83c\udffd": "person walking: medium skin tone", - "\ud83d\udeb6\ud83c\udffe": "person walking: medium-dark skin tone", - "\ud83d\udeb6\ud83c\udfff": "person walking: dark skin tone", - "\ud83d\udeb7": "no pedestrians", - "\ud83d\udeb8": "children crossing", - "\ud83d\udeb9": "men's room", - "\ud83d\udeba": "women's room", - "\ud83d\udebb": "restroom", - "\ud83d\udebc": "baby symbol", - "\ud83d\udebd": "toilet", - "\ud83d\udebe": "water closet", - "\ud83d\udebf": "shower", - "\ud83d\udec0": "person taking bath", - "\ud83d\udec0\ud83c\udffb": "person taking bath: light skin tone", - "\ud83d\udec0\ud83c\udffc": "person taking bath: medium-light skin tone", - "\ud83d\udec0\ud83c\udffd": "person taking bath: medium skin tone", - "\ud83d\udec0\ud83c\udffe": "person taking bath: medium-dark skin tone", - "\ud83d\udec0\ud83c\udfff": "person taking bath: dark skin tone", - "\ud83d\udec1": "bathtub", - "\ud83d\udec2": "passport control", - "\ud83d\udec3": "customs", - "\ud83d\udec4": "baggage claim", - "\ud83d\udec5": "left luggage", - "\ud83d\udecb\ufe0f": "couch and lamp", - "\ud83d\udecc": "person in bed", - "\ud83d\udecc\ud83c\udffb": "person in bed: light skin tone", - "\ud83d\udecc\ud83c\udffc": "person in bed: medium-light skin tone", - "\ud83d\udecc\ud83c\udffd": "person in bed: medium skin tone", - "\ud83d\udecc\ud83c\udffe": "person in bed: medium-dark skin tone", - "\ud83d\udecc\ud83c\udfff": "person in bed: dark skin tone", - "\ud83d\udecd\ufe0f": "shopping bags", - "\ud83d\udece\ufe0f": "bellhop bell", - "\ud83d\udecf\ufe0f": "bed", - "\ud83d\uded0": "place of worship", - "\ud83d\uded1": "stop sign", - "\ud83d\uded2": "shopping cart", - "\ud83d\uded5": "hindu temple", - "\ud83d\uded6": "hut", - "\ud83d\uded7": "elevator", - "\ud83d\udedc": "wireless", - "\ud83d\udedd": "playground slide", - "\ud83d\udede": "wheel", - "\ud83d\udedf": "ring buoy", - "\ud83d\udee0\ufe0f": "hammer and wrench", - "\ud83d\udee1\ufe0f": "shield", - "\ud83d\udee2\ufe0f": "oil drum", - "\ud83d\udee3\ufe0f": "motorway", - "\ud83d\udee4\ufe0f": "railway track", - "\ud83d\udee5\ufe0f": "motor boat", - "\ud83d\udee9\ufe0f": "small airplane", - "\ud83d\udeeb": "airplane departure", - "\ud83d\udeec": "airplane arrival", - "\ud83d\udef0\ufe0f": "satellite", - "\ud83d\udef3\ufe0f": "passenger ship", - "\ud83d\udef4": "kick scooter", - "\ud83d\udef5": "motor scooter", - "\ud83d\udef6": "canoe", - "\ud83d\udef7": "sled", - "\ud83d\udef8": "flying saucer", - "\ud83d\udef9": "skateboard", - "\ud83d\udefa": "auto rickshaw", - "\ud83d\udefb": "pickup truck", - "\ud83d\udefc": "roller skate", - "\ud83d\udfe0": "orange circle", - "\ud83d\udfe1": "yellow circle", - "\ud83d\udfe2": "green circle", - "\ud83d\udfe3": "purple circle", - "\ud83d\udfe4": "brown circle", - "\ud83d\udfe5": "red square", - "\ud83d\udfe6": "blue square", - "\ud83d\udfe7": "orange square", - "\ud83d\udfe8": "yellow square", - "\ud83d\udfe9": "green square", - "\ud83d\udfea": "purple square", - "\ud83d\udfeb": "brown square", - "\ud83d\udff0": "heavy equals sign", - "\ud83e\udd0c": "pinched fingers", - "\ud83e\udd0c\ud83c\udffb": "pinched fingers: light skin tone", - "\ud83e\udd0c\ud83c\udffc": "pinched fingers: medium-light skin tone", - "\ud83e\udd0c\ud83c\udffd": "pinched fingers: medium skin tone", - "\ud83e\udd0c\ud83c\udffe": "pinched fingers: medium-dark skin tone", - "\ud83e\udd0c\ud83c\udfff": "pinched fingers: dark skin tone", - "\ud83e\udd0d": "white heart", - "\ud83e\udd0e": "brown heart", - "\ud83e\udd0f": "pinching hand", - "\ud83e\udd0f\ud83c\udffb": "pinching hand: light skin tone", - "\ud83e\udd0f\ud83c\udffc": "pinching hand: medium-light skin tone", - "\ud83e\udd0f\ud83c\udffd": "pinching hand: medium skin tone", - "\ud83e\udd0f\ud83c\udffe": "pinching hand: medium-dark skin tone", - "\ud83e\udd0f\ud83c\udfff": "pinching hand: dark skin tone", - "\ud83e\udd10": "zipper-mouth face", - "\ud83e\udd11": "money-mouth face", - "\ud83e\udd12": "face with thermometer", - "\ud83e\udd13": "nerd face", - "\ud83e\udd14": "thinking face", - "\ud83e\udd15": "face with head-bandage", - "\ud83e\udd16": "robot", - "\ud83e\udd17": "smiling face with open hands", - "\ud83e\udd18": "sign of the horns", - "\ud83e\udd18\ud83c\udffb": "sign of the horns: light skin tone", - "\ud83e\udd18\ud83c\udffc": "sign of the horns: medium-light skin tone", - "\ud83e\udd18\ud83c\udffd": "sign of the horns: medium skin tone", - "\ud83e\udd18\ud83c\udffe": "sign of the horns: medium-dark skin tone", - "\ud83e\udd18\ud83c\udfff": "sign of the horns: dark skin tone", - "\ud83e\udd19": "call me hand", - "\ud83e\udd19\ud83c\udffb": "call me hand: light skin tone", - "\ud83e\udd19\ud83c\udffc": "call me hand: medium-light skin tone", - "\ud83e\udd19\ud83c\udffd": "call me hand: medium skin tone", - "\ud83e\udd19\ud83c\udffe": "call me hand: medium-dark skin tone", - "\ud83e\udd19\ud83c\udfff": "call me hand: dark skin tone", - "\ud83e\udd1a": "raised back of hand", - "\ud83e\udd1a\ud83c\udffb": "raised back of hand: light skin tone", - "\ud83e\udd1a\ud83c\udffc": "raised back of hand: medium-light skin tone", - "\ud83e\udd1a\ud83c\udffd": "raised back of hand: medium skin tone", - "\ud83e\udd1a\ud83c\udffe": "raised back of hand: medium-dark skin tone", - "\ud83e\udd1a\ud83c\udfff": "raised back of hand: dark skin tone", - "\ud83e\udd1b": "left-facing fist", - "\ud83e\udd1b\ud83c\udffb": "left-facing fist: light skin tone", - "\ud83e\udd1b\ud83c\udffc": "left-facing fist: medium-light skin tone", - "\ud83e\udd1b\ud83c\udffd": "left-facing fist: medium skin tone", - "\ud83e\udd1b\ud83c\udffe": "left-facing fist: medium-dark skin tone", - "\ud83e\udd1b\ud83c\udfff": "left-facing fist: dark skin tone", - "\ud83e\udd1c": "right-facing fist", - "\ud83e\udd1c\ud83c\udffb": "right-facing fist: light skin tone", - "\ud83e\udd1c\ud83c\udffc": "right-facing fist: medium-light skin tone", - "\ud83e\udd1c\ud83c\udffd": "right-facing fist: medium skin tone", - "\ud83e\udd1c\ud83c\udffe": "right-facing fist: medium-dark skin tone", - "\ud83e\udd1c\ud83c\udfff": "right-facing fist: dark skin tone", - "\ud83e\udd1d": "handshake", - "\ud83e\udd1d\ud83c\udffb": "handshake: light skin tone", - "\ud83e\udd1d\ud83c\udffc": "handshake: medium-light skin tone", - "\ud83e\udd1d\ud83c\udffd": "handshake: medium skin tone", - "\ud83e\udd1d\ud83c\udffe": "handshake: medium-dark skin tone", - "\ud83e\udd1d\ud83c\udfff": "handshake: dark skin tone", - "\ud83e\udd1e": "crossed fingers", - "\ud83e\udd1e\ud83c\udffb": "crossed fingers: light skin tone", - "\ud83e\udd1e\ud83c\udffc": "crossed fingers: medium-light skin tone", - "\ud83e\udd1e\ud83c\udffd": "crossed fingers: medium skin tone", - "\ud83e\udd1e\ud83c\udffe": "crossed fingers: medium-dark skin tone", - "\ud83e\udd1e\ud83c\udfff": "crossed fingers: dark skin tone", - "\ud83e\udd1f": "love-you gesture", - "\ud83e\udd1f\ud83c\udffb": "love-you gesture: light skin tone", - "\ud83e\udd1f\ud83c\udffc": "love-you gesture: medium-light skin tone", - "\ud83e\udd1f\ud83c\udffd": "love-you gesture: medium skin tone", - "\ud83e\udd1f\ud83c\udffe": "love-you gesture: medium-dark skin tone", - "\ud83e\udd1f\ud83c\udfff": "love-you gesture: dark skin tone", - "\ud83e\udd20": "cowboy hat face", - "\ud83e\udd21": "clown face", - "\ud83e\udd22": "nauseated face", - "\ud83e\udd23": "rolling on the floor laughing", - "\ud83e\udd24": "drooling face", - "\ud83e\udd25": "lying face", - "\ud83e\udd26": "person facepalming", - "\ud83e\udd26\ud83c\udffb": "person facepalming: light skin tone", - "\ud83e\udd26\ud83c\udffc": "person facepalming: medium-light skin tone", - "\ud83e\udd26\ud83c\udffd": "person facepalming: medium skin tone", - "\ud83e\udd26\ud83c\udffe": "person facepalming: medium-dark skin tone", - "\ud83e\udd26\ud83c\udfff": "person facepalming: dark skin tone", - "\ud83e\udd27": "sneezing face", - "\ud83e\udd28": "face with raised eyebrow", - "\ud83e\udd29": "star-struck", - "\ud83e\udd2a": "zany face", - "\ud83e\udd2b": "shushing face", - "\ud83e\udd2c": "face with symbols on mouth", - "\ud83e\udd2d": "face with hand over mouth", - "\ud83e\udd2e": "face vomiting", - "\ud83e\udd2f": "exploding head", - "\ud83e\udd30": "pregnant woman", - "\ud83e\udd30\ud83c\udffb": "pregnant woman: light skin tone", - "\ud83e\udd30\ud83c\udffc": "pregnant woman: medium-light skin tone", - "\ud83e\udd30\ud83c\udffd": "pregnant woman: medium skin tone", - "\ud83e\udd30\ud83c\udffe": "pregnant woman: medium-dark skin tone", - "\ud83e\udd30\ud83c\udfff": "pregnant woman: dark skin tone", - "\ud83e\udd31": "breast-feeding", - "\ud83e\udd31\ud83c\udffb": "breast-feeding: light skin tone", - "\ud83e\udd31\ud83c\udffc": "breast-feeding: medium-light skin tone", - "\ud83e\udd31\ud83c\udffd": "breast-feeding: medium skin tone", - "\ud83e\udd31\ud83c\udffe": "breast-feeding: medium-dark skin tone", - "\ud83e\udd31\ud83c\udfff": "breast-feeding: dark skin tone", - "\ud83e\udd32": "palms up together", - "\ud83e\udd32\ud83c\udffb": "palms up together: light skin tone", - "\ud83e\udd32\ud83c\udffc": "palms up together: medium-light skin tone", - "\ud83e\udd32\ud83c\udffd": "palms up together: medium skin tone", - "\ud83e\udd32\ud83c\udffe": "palms up together: medium-dark skin tone", - "\ud83e\udd32\ud83c\udfff": "palms up together: dark skin tone", - "\ud83e\udd33": "selfie", - "\ud83e\udd33\ud83c\udffb": "selfie: light skin tone", - "\ud83e\udd33\ud83c\udffc": "selfie: medium-light skin tone", - "\ud83e\udd33\ud83c\udffd": "selfie: medium skin tone", - "\ud83e\udd33\ud83c\udffe": "selfie: medium-dark skin tone", - "\ud83e\udd33\ud83c\udfff": "selfie: dark skin tone", - "\ud83e\udd34": "prince", - "\ud83e\udd34\ud83c\udffb": "prince: light skin tone", - "\ud83e\udd34\ud83c\udffc": "prince: medium-light skin tone", - "\ud83e\udd34\ud83c\udffd": "prince: medium skin tone", - "\ud83e\udd34\ud83c\udffe": "prince: medium-dark skin tone", - "\ud83e\udd34\ud83c\udfff": "prince: dark skin tone", - "\ud83e\udd35": "person in tuxedo", - "\ud83e\udd35\ud83c\udffb": "person in tuxedo: light skin tone", - "\ud83e\udd35\ud83c\udffc": "person in tuxedo: medium-light skin tone", - "\ud83e\udd35\ud83c\udffd": "person in tuxedo: medium skin tone", - "\ud83e\udd35\ud83c\udffe": "person in tuxedo: medium-dark skin tone", - "\ud83e\udd35\ud83c\udfff": "person in tuxedo: dark skin tone", - "\ud83e\udd36": "Mrs. Claus", - "\ud83e\udd36\ud83c\udffb": "Mrs. Claus: light skin tone", - "\ud83e\udd36\ud83c\udffc": "Mrs. Claus: medium-light skin tone", - "\ud83e\udd36\ud83c\udffd": "Mrs. Claus: medium skin tone", - "\ud83e\udd36\ud83c\udffe": "Mrs. Claus: medium-dark skin tone", - "\ud83e\udd36\ud83c\udfff": "Mrs. Claus: dark skin tone", - "\ud83e\udd37": "person shrugging", - "\ud83e\udd37\ud83c\udffb": "person shrugging: light skin tone", - "\ud83e\udd37\ud83c\udffc": "person shrugging: medium-light skin tone", - "\ud83e\udd37\ud83c\udffd": "person shrugging: medium skin tone", - "\ud83e\udd37\ud83c\udffe": "person shrugging: medium-dark skin tone", - "\ud83e\udd37\ud83c\udfff": "person shrugging: dark skin tone", - "\ud83e\udd38": "person cartwheeling", - "\ud83e\udd38\ud83c\udffb": "person cartwheeling: light skin tone", - "\ud83e\udd38\ud83c\udffc": "person cartwheeling: medium-light skin tone", - "\ud83e\udd38\ud83c\udffd": "person cartwheeling: medium skin tone", - "\ud83e\udd38\ud83c\udffe": "person cartwheeling: medium-dark skin tone", - "\ud83e\udd38\ud83c\udfff": "person cartwheeling: dark skin tone", - "\ud83e\udd39": "person juggling", - "\ud83e\udd39\ud83c\udffb": "person juggling: light skin tone", - "\ud83e\udd39\ud83c\udffc": "person juggling: medium-light skin tone", - "\ud83e\udd39\ud83c\udffd": "person juggling: medium skin tone", - "\ud83e\udd39\ud83c\udffe": "person juggling: medium-dark skin tone", - "\ud83e\udd39\ud83c\udfff": "person juggling: dark skin tone", - "\ud83e\udd3a": "person fencing", - "\ud83e\udd3c": "people wrestling", - "\ud83e\udd3d": "person playing water polo", - "\ud83e\udd3d\ud83c\udffb": "person playing water polo: light skin tone", - "\ud83e\udd3d\ud83c\udffc": "person playing water polo: medium-light skin tone", - "\ud83e\udd3d\ud83c\udffd": "person playing water polo: medium skin tone", - "\ud83e\udd3d\ud83c\udffe": "person playing water polo: medium-dark skin tone", - "\ud83e\udd3d\ud83c\udfff": "person playing water polo: dark skin tone", - "\ud83e\udd3e": "person playing handball", - "\ud83e\udd3e\ud83c\udffb": "person playing handball: light skin tone", - "\ud83e\udd3e\ud83c\udffc": "person playing handball: medium-light skin tone", - "\ud83e\udd3e\ud83c\udffd": "person playing handball: medium skin tone", - "\ud83e\udd3e\ud83c\udffe": "person playing handball: medium-dark skin tone", - "\ud83e\udd3e\ud83c\udfff": "person playing handball: dark skin tone", - "\ud83e\udd3f": "diving mask", - "\ud83e\udd40": "wilted flower", - "\ud83e\udd41": "drum", - "\ud83e\udd42": "clinking glasses", - "\ud83e\udd43": "tumbler glass", - "\ud83e\udd44": "spoon", - "\ud83e\udd45": "goal net", - "\ud83e\udd47": "1st place medal", - "\ud83e\udd48": "2nd place medal", - "\ud83e\udd49": "3rd place medal", - "\ud83e\udd4a": "boxing glove", - "\ud83e\udd4b": "martial arts uniform", - "\ud83e\udd4c": "curling stone", - "\ud83e\udd4d": "lacrosse", - "\ud83e\udd4e": "softball", - "\ud83e\udd4f": "flying disc", - "\ud83e\udd50": "croissant", - "\ud83e\udd51": "avocado", - "\ud83e\udd52": "cucumber", - "\ud83e\udd53": "bacon", - "\ud83e\udd54": "potato", - "\ud83e\udd55": "carrot", - "\ud83e\udd56": "baguette bread", - "\ud83e\udd57": "green salad", - "\ud83e\udd58": "shallow pan of food", - "\ud83e\udd59": "stuffed flatbread", - "\ud83e\udd5a": "egg", - "\ud83e\udd5b": "glass of milk", - "\ud83e\udd5c": "peanuts", - "\ud83e\udd5d": "kiwi fruit", - "\ud83e\udd5e": "pancakes", - "\ud83e\udd5f": "dumpling", - "\ud83e\udd60": "fortune cookie", - "\ud83e\udd61": "takeout box", - "\ud83e\udd62": "chopsticks", - "\ud83e\udd63": "bowl with spoon", - "\ud83e\udd64": "cup with straw", - "\ud83e\udd65": "coconut", - "\ud83e\udd66": "broccoli", - "\ud83e\udd67": "pie", - "\ud83e\udd68": "pretzel", - "\ud83e\udd69": "cut of meat", - "\ud83e\udd6a": "sandwich", - "\ud83e\udd6b": "canned food", - "\ud83e\udd6c": "leafy green", - "\ud83e\udd6d": "mango", - "\ud83e\udd6e": "moon cake", - "\ud83e\udd6f": "bagel", - "\ud83e\udd70": "smiling face with hearts", - "\ud83e\udd71": "yawning face", - "\ud83e\udd72": "smiling face with tear", - "\ud83e\udd73": "partying face", - "\ud83e\udd74": "woozy face", - "\ud83e\udd75": "hot face", - "\ud83e\udd76": "cold face", - "\ud83e\udd77": "ninja", - "\ud83e\udd77\ud83c\udffb": "ninja: light skin tone", - "\ud83e\udd77\ud83c\udffc": "ninja: medium-light skin tone", - "\ud83e\udd77\ud83c\udffd": "ninja: medium skin tone", - "\ud83e\udd77\ud83c\udffe": "ninja: medium-dark skin tone", - "\ud83e\udd77\ud83c\udfff": "ninja: dark skin tone", - "\ud83e\udd78": "disguised face", - "\ud83e\udd79": "face holding back tears", - "\ud83e\udd7a": "pleading face", - "\ud83e\udd7b": "sari", - "\ud83e\udd7c": "lab coat", - "\ud83e\udd7d": "goggles", - "\ud83e\udd7e": "hiking boot", - "\ud83e\udd7f": "flat shoe", - "\ud83e\udd80": "crab", - "\ud83e\udd81": "lion", - "\ud83e\udd82": "scorpion", - "\ud83e\udd83": "turkey", - "\ud83e\udd84": "unicorn", - "\ud83e\udd85": "eagle", - "\ud83e\udd86": "duck", - "\ud83e\udd87": "bat", - "\ud83e\udd88": "shark", - "\ud83e\udd89": "owl", - "\ud83e\udd8a": "fox", - "\ud83e\udd8b": "butterfly", - "\ud83e\udd8c": "deer", - "\ud83e\udd8d": "gorilla", - "\ud83e\udd8e": "lizard", - "\ud83e\udd8f": "rhinoceros", - "\ud83e\udd90": "shrimp", - "\ud83e\udd91": "squid", - "\ud83e\udd92": "giraffe", - "\ud83e\udd93": "zebra", - "\ud83e\udd94": "hedgehog", - "\ud83e\udd95": "sauropod", - "\ud83e\udd96": "T-Rex", - "\ud83e\udd97": "cricket", - "\ud83e\udd98": "kangaroo", - "\ud83e\udd99": "llama", - "\ud83e\udd9a": "peacock", - "\ud83e\udd9b": "hippopotamus", - "\ud83e\udd9c": "parrot", - "\ud83e\udd9d": "raccoon", - "\ud83e\udd9e": "lobster", - "\ud83e\udd9f": "mosquito", - "\ud83e\udda0": "microbe", - "\ud83e\udda1": "badger", - "\ud83e\udda2": "swan", - "\ud83e\udda3": "mammoth", - "\ud83e\udda4": "dodo", - "\ud83e\udda5": "sloth", - "\ud83e\udda6": "otter", - "\ud83e\udda7": "orangutan", - "\ud83e\udda8": "skunk", - "\ud83e\udda9": "flamingo", - "\ud83e\uddaa": "oyster", - "\ud83e\uddab": "beaver", - "\ud83e\uddac": "bison", - "\ud83e\uddad": "seal", - "\ud83e\uddae": "guide dog", - "\ud83e\uddaf": "white cane", - "\ud83e\uddb4": "bone", - "\ud83e\uddb5": "leg", - "\ud83e\uddb5\ud83c\udffb": "leg: light skin tone", - "\ud83e\uddb5\ud83c\udffc": "leg: medium-light skin tone", - "\ud83e\uddb5\ud83c\udffd": "leg: medium skin tone", - "\ud83e\uddb5\ud83c\udffe": "leg: medium-dark skin tone", - "\ud83e\uddb5\ud83c\udfff": "leg: dark skin tone", - "\ud83e\uddb6": "foot", - "\ud83e\uddb6\ud83c\udffb": "foot: light skin tone", - "\ud83e\uddb6\ud83c\udffc": "foot: medium-light skin tone", - "\ud83e\uddb6\ud83c\udffd": "foot: medium skin tone", - "\ud83e\uddb6\ud83c\udffe": "foot: medium-dark skin tone", - "\ud83e\uddb6\ud83c\udfff": "foot: dark skin tone", - "\ud83e\uddb7": "tooth", - "\ud83e\uddb8": "superhero", - "\ud83e\uddb8\ud83c\udffb": "superhero: light skin tone", - "\ud83e\uddb8\ud83c\udffc": "superhero: medium-light skin tone", - "\ud83e\uddb8\ud83c\udffd": "superhero: medium skin tone", - "\ud83e\uddb8\ud83c\udffe": "superhero: medium-dark skin tone", - "\ud83e\uddb8\ud83c\udfff": "superhero: dark skin tone", - "\ud83e\uddb9": "supervillain", - "\ud83e\uddb9\ud83c\udffb": "supervillain: light skin tone", - "\ud83e\uddb9\ud83c\udffc": "supervillain: medium-light skin tone", - "\ud83e\uddb9\ud83c\udffd": "supervillain: medium skin tone", - "\ud83e\uddb9\ud83c\udffe": "supervillain: medium-dark skin tone", - "\ud83e\uddb9\ud83c\udfff": "supervillain: dark skin tone", - "\ud83e\uddba": "safety vest", - "\ud83e\uddbb": "ear with hearing aid", - "\ud83e\uddbb\ud83c\udffb": "ear with hearing aid: light skin tone", - "\ud83e\uddbb\ud83c\udffc": "ear with hearing aid: medium-light skin tone", - "\ud83e\uddbb\ud83c\udffd": "ear with hearing aid: medium skin tone", - "\ud83e\uddbb\ud83c\udffe": "ear with hearing aid: medium-dark skin tone", - "\ud83e\uddbb\ud83c\udfff": "ear with hearing aid: dark skin tone", - "\ud83e\uddbc": "motorized wheelchair", - "\ud83e\uddbd": "manual wheelchair", - "\ud83e\uddbe": "mechanical arm", - "\ud83e\uddbf": "mechanical leg", - "\ud83e\uddc0": "cheese wedge", - "\ud83e\uddc1": "cupcake", - "\ud83e\uddc2": "salt", - "\ud83e\uddc3": "beverage box", - "\ud83e\uddc4": "garlic", - "\ud83e\uddc5": "onion", - "\ud83e\uddc6": "falafel", - "\ud83e\uddc7": "waffle", - "\ud83e\uddc8": "butter", - "\ud83e\uddc9": "mate", - "\ud83e\uddca": "ice", - "\ud83e\uddcb": "bubble tea", - "\ud83e\uddcc": "troll", - "\ud83e\uddcd": "person standing", - "\ud83e\uddcd\ud83c\udffb": "person standing: light skin tone", - "\ud83e\uddcd\ud83c\udffc": "person standing: medium-light skin tone", - "\ud83e\uddcd\ud83c\udffd": "person standing: medium skin tone", - "\ud83e\uddcd\ud83c\udffe": "person standing: medium-dark skin tone", - "\ud83e\uddcd\ud83c\udfff": "person standing: dark skin tone", - "\ud83e\uddce": "person kneeling", - "\ud83e\uddce\ud83c\udffb": "person kneeling: light skin tone", - "\ud83e\uddce\ud83c\udffc": "person kneeling: medium-light skin tone", - "\ud83e\uddce\ud83c\udffd": "person kneeling: medium skin tone", - "\ud83e\uddce\ud83c\udffe": "person kneeling: medium-dark skin tone", - "\ud83e\uddce\ud83c\udfff": "person kneeling: dark skin tone", - "\ud83e\uddcf": "deaf person", - "\ud83e\uddcf\ud83c\udffb": "deaf person: light skin tone", - "\ud83e\uddcf\ud83c\udffc": "deaf person: medium-light skin tone", - "\ud83e\uddcf\ud83c\udffd": "deaf person: medium skin tone", - "\ud83e\uddcf\ud83c\udffe": "deaf person: medium-dark skin tone", - "\ud83e\uddcf\ud83c\udfff": "deaf person: dark skin tone", - "\ud83e\uddd0": "face with monocle", - "\ud83e\uddd1": "person", - "\ud83e\uddd1\ud83c\udffb": "person: light skin tone", - "\ud83e\uddd1\ud83c\udffc": "person: medium-light skin tone", - "\ud83e\uddd1\ud83c\udffd": "person: medium skin tone", - "\ud83e\uddd1\ud83c\udffe": "person: medium-dark skin tone", - "\ud83e\uddd1\ud83c\udfff": "person: dark skin tone", - "\ud83e\uddd2": "child", - "\ud83e\uddd2\ud83c\udffb": "child: light skin tone", - "\ud83e\uddd2\ud83c\udffc": "child: medium-light skin tone", - "\ud83e\uddd2\ud83c\udffd": "child: medium skin tone", - "\ud83e\uddd2\ud83c\udffe": "child: medium-dark skin tone", - "\ud83e\uddd2\ud83c\udfff": "child: dark skin tone", - "\ud83e\uddd3": "older person", - "\ud83e\uddd3\ud83c\udffb": "older person: light skin tone", - "\ud83e\uddd3\ud83c\udffc": "older person: medium-light skin tone", - "\ud83e\uddd3\ud83c\udffd": "older person: medium skin tone", - "\ud83e\uddd3\ud83c\udffe": "older person: medium-dark skin tone", - "\ud83e\uddd3\ud83c\udfff": "older person: dark skin tone", - "\ud83e\uddd4": "person: beard", - "\ud83e\uddd4\ud83c\udffb": "person: light skin tone, beard", - "\ud83e\uddd4\ud83c\udffc": "person: medium-light skin tone, beard", - "\ud83e\uddd4\ud83c\udffd": "person: medium skin tone, beard", - "\ud83e\uddd4\ud83c\udffe": "person: medium-dark skin tone, beard", - "\ud83e\uddd4\ud83c\udfff": "person: dark skin tone, beard", - "\ud83e\uddd5": "woman with headscarf", - "\ud83e\uddd5\ud83c\udffb": "woman with headscarf: light skin tone", - "\ud83e\uddd5\ud83c\udffc": "woman with headscarf: medium-light skin tone", - "\ud83e\uddd5\ud83c\udffd": "woman with headscarf: medium skin tone", - "\ud83e\uddd5\ud83c\udffe": "woman with headscarf: medium-dark skin tone", - "\ud83e\uddd5\ud83c\udfff": "woman with headscarf: dark skin tone", - "\ud83e\uddd6": "person in steamy room", - "\ud83e\uddd6\ud83c\udffb": "person in steamy room: light skin tone", - "\ud83e\uddd6\ud83c\udffc": "person in steamy room: medium-light skin tone", - "\ud83e\uddd6\ud83c\udffd": "person in steamy room: medium skin tone", - "\ud83e\uddd6\ud83c\udffe": "person in steamy room: medium-dark skin tone", - "\ud83e\uddd6\ud83c\udfff": "person in steamy room: dark skin tone", - "\ud83e\uddd7": "person climbing", - "\ud83e\uddd7\ud83c\udffb": "person climbing: light skin tone", - "\ud83e\uddd7\ud83c\udffc": "person climbing: medium-light skin tone", - "\ud83e\uddd7\ud83c\udffd": "person climbing: medium skin tone", - "\ud83e\uddd7\ud83c\udffe": "person climbing: medium-dark skin tone", - "\ud83e\uddd7\ud83c\udfff": "person climbing: dark skin tone", - "\ud83e\uddd8": "person in lotus position", - "\ud83e\uddd8\ud83c\udffb": "person in lotus position: light skin tone", - "\ud83e\uddd8\ud83c\udffc": "person in lotus position: medium-light skin tone", - "\ud83e\uddd8\ud83c\udffd": "person in lotus position: medium skin tone", - "\ud83e\uddd8\ud83c\udffe": "person in lotus position: medium-dark skin tone", - "\ud83e\uddd8\ud83c\udfff": "person in lotus position: dark skin tone", - "\ud83e\uddd9": "mage", - "\ud83e\uddd9\ud83c\udffb": "mage: light skin tone", - "\ud83e\uddd9\ud83c\udffc": "mage: medium-light skin tone", - "\ud83e\uddd9\ud83c\udffd": "mage: medium skin tone", - "\ud83e\uddd9\ud83c\udffe": "mage: medium-dark skin tone", - "\ud83e\uddd9\ud83c\udfff": "mage: dark skin tone", - "\ud83e\uddda": "fairy", - "\ud83e\uddda\ud83c\udffb": "fairy: light skin tone", - "\ud83e\uddda\ud83c\udffc": "fairy: medium-light skin tone", - "\ud83e\uddda\ud83c\udffd": "fairy: medium skin tone", - "\ud83e\uddda\ud83c\udffe": "fairy: medium-dark skin tone", - "\ud83e\uddda\ud83c\udfff": "fairy: dark skin tone", - "\ud83e\udddb": "vampire", - "\ud83e\udddb\ud83c\udffb": "vampire: light skin tone", - "\ud83e\udddb\ud83c\udffc": "vampire: medium-light skin tone", - "\ud83e\udddb\ud83c\udffd": "vampire: medium skin tone", - "\ud83e\udddb\ud83c\udffe": "vampire: medium-dark skin tone", - "\ud83e\udddb\ud83c\udfff": "vampire: dark skin tone", - "\ud83e\udddc": "merperson", - "\ud83e\udddc\ud83c\udffb": "merperson: light skin tone", - "\ud83e\udddc\ud83c\udffc": "merperson: medium-light skin tone", - "\ud83e\udddc\ud83c\udffd": "merperson: medium skin tone", - "\ud83e\udddc\ud83c\udffe": "merperson: medium-dark skin tone", - "\ud83e\udddc\ud83c\udfff": "merperson: dark skin tone", - "\ud83e\udddd": "elf", - "\ud83e\udddd\ud83c\udffb": "elf: light skin tone", - "\ud83e\udddd\ud83c\udffc": "elf: medium-light skin tone", - "\ud83e\udddd\ud83c\udffd": "elf: medium skin tone", - "\ud83e\udddd\ud83c\udffe": "elf: medium-dark skin tone", - "\ud83e\udddd\ud83c\udfff": "elf: dark skin tone", - "\ud83e\uddde": "genie", - "\ud83e\udddf": "zombie", - "\ud83e\udde0": "brain", - "\ud83e\udde1": "orange heart", - "\ud83e\udde2": "billed cap", - "\ud83e\udde3": "scarf", - "\ud83e\udde4": "gloves", - "\ud83e\udde5": "coat", - "\ud83e\udde6": "socks", - "\ud83e\udde7": "red envelope", - "\ud83e\udde8": "firecracker", - "\ud83e\udde9": "puzzle piece", - "\ud83e\uddea": "test tube", - "\ud83e\uddeb": "petri dish", - "\ud83e\uddec": "dna", - "\ud83e\udded": "compass", - "\ud83e\uddee": "abacus", - "\ud83e\uddef": "fire extinguisher", - "\ud83e\uddf0": "toolbox", - "\ud83e\uddf1": "brick", - "\ud83e\uddf2": "magnet", - "\ud83e\uddf3": "luggage", - "\ud83e\uddf4": "lotion bottle", - "\ud83e\uddf5": "thread", - "\ud83e\uddf6": "yarn", - "\ud83e\uddf7": "safety pin", - "\ud83e\uddf8": "teddy bear", - "\ud83e\uddf9": "broom", - "\ud83e\uddfa": "basket", - "\ud83e\uddfb": "roll of paper", - "\ud83e\uddfc": "soap", - "\ud83e\uddfd": "sponge", - "\ud83e\uddfe": "receipt", - "\ud83e\uddff": "nazar amulet", - "\ud83e\ude70": "ballet shoes", - "\ud83e\ude71": "one-piece swimsuit", - "\ud83e\ude72": "briefs", - "\ud83e\ude73": "shorts", - "\ud83e\ude74": "thong sandal", - "\ud83e\ude75": "light blue heart", - "\ud83e\ude76": "grey heart", - "\ud83e\ude77": "pink heart", - "\ud83e\ude78": "drop of blood", - "\ud83e\ude79": "adhesive bandage", - "\ud83e\ude7a": "stethoscope", - "\ud83e\ude7b": "x-ray", - "\ud83e\ude7c": "crutch", - "\ud83e\ude80": "yo-yo", - "\ud83e\ude81": "kite", - "\ud83e\ude82": "parachute", - "\ud83e\ude83": "boomerang", - "\ud83e\ude84": "magic wand", - "\ud83e\ude85": "pi\u00f1ata", - "\ud83e\ude86": "nesting dolls", - "\ud83e\ude87": "maracas", - "\ud83e\ude88": "flute", - "\ud83e\ude90": "ringed planet", - "\ud83e\ude91": "chair", - "\ud83e\ude92": "razor", - "\ud83e\ude93": "axe", - "\ud83e\ude94": "diya lamp", - "\ud83e\ude95": "banjo", - "\ud83e\ude96": "military helmet", - "\ud83e\ude97": "accordion", - "\ud83e\ude98": "long drum", - "\ud83e\ude99": "coin", - "\ud83e\ude9a": "carpentry saw", - "\ud83e\ude9b": "screwdriver", - "\ud83e\ude9c": "ladder", - "\ud83e\ude9d": "hook", - "\ud83e\ude9e": "mirror", - "\ud83e\ude9f": "window", - "\ud83e\udea0": "plunger", - "\ud83e\udea1": "sewing needle", - "\ud83e\udea2": "knot", - "\ud83e\udea3": "bucket", - "\ud83e\udea4": "mouse trap", - "\ud83e\udea5": "toothbrush", - "\ud83e\udea6": "headstone", - "\ud83e\udea7": "placard", - "\ud83e\udea8": "rock", - "\ud83e\udea9": "mirror ball", - "\ud83e\udeaa": "identification card", - "\ud83e\udeab": "low battery", - "\ud83e\udeac": "hamsa", - "\ud83e\udead": "folding hand fan", - "\ud83e\udeae": "hair pick", - "\ud83e\udeaf": "khanda", - "\ud83e\udeb0": "fly", - "\ud83e\udeb1": "worm", - "\ud83e\udeb2": "beetle", - "\ud83e\udeb3": "cockroach", - "\ud83e\udeb4": "potted plant", - "\ud83e\udeb5": "wood", - "\ud83e\udeb6": "feather", - "\ud83e\udeb7": "lotus", - "\ud83e\udeb8": "coral", - "\ud83e\udeb9": "empty nest", - "\ud83e\udeba": "nest with eggs", - "\ud83e\udebb": "hyacinth", - "\ud83e\udebc": "jellyfish", - "\ud83e\udebd": "wing", - "\ud83e\udebf": "goose", - "\ud83e\udec0": "anatomical heart", - "\ud83e\udec1": "lungs", - "\ud83e\udec2": "people hugging", - "\ud83e\udec3": "pregnant man", - "\ud83e\udec3\ud83c\udffb": "pregnant man: light skin tone", - "\ud83e\udec3\ud83c\udffc": "pregnant man: medium-light skin tone", - "\ud83e\udec3\ud83c\udffd": "pregnant man: medium skin tone", - "\ud83e\udec3\ud83c\udffe": "pregnant man: medium-dark skin tone", - "\ud83e\udec3\ud83c\udfff": "pregnant man: dark skin tone", - "\ud83e\udec4": "pregnant person", - "\ud83e\udec4\ud83c\udffb": "pregnant person: light skin tone", - "\ud83e\udec4\ud83c\udffc": "pregnant person: medium-light skin tone", - "\ud83e\udec4\ud83c\udffd": "pregnant person: medium skin tone", - "\ud83e\udec4\ud83c\udffe": "pregnant person: medium-dark skin tone", - "\ud83e\udec4\ud83c\udfff": "pregnant person: dark skin tone", - "\ud83e\udec5": "person with crown", - "\ud83e\udec5\ud83c\udffb": "person with crown: light skin tone", - "\ud83e\udec5\ud83c\udffc": "person with crown: medium-light skin tone", - "\ud83e\udec5\ud83c\udffd": "person with crown: medium skin tone", - "\ud83e\udec5\ud83c\udffe": "person with crown: medium-dark skin tone", - "\ud83e\udec5\ud83c\udfff": "person with crown: dark skin tone", - "\ud83e\udece": "moose", - "\ud83e\udecf": "donkey", - "\ud83e\uded0": "blueberries", - "\ud83e\uded1": "bell pepper", - "\ud83e\uded2": "olive", - "\ud83e\uded3": "flatbread", - "\ud83e\uded4": "tamale", - "\ud83e\uded5": "fondue", - "\ud83e\uded6": "teapot", - "\ud83e\uded7": "pouring liquid", - "\ud83e\uded8": "beans", - "\ud83e\uded9": "jar", - "\ud83e\udeda": "ginger root", - "\ud83e\udedb": "pea pod", - "\ud83e\udee0": "melting face", - "\ud83e\udee1": "saluting face", - "\ud83e\udee2": "face with open eyes and hand over mouth", - "\ud83e\udee3": "face with peeking eye", - "\ud83e\udee4": "face with diagonal mouth", - "\ud83e\udee5": "dotted line face", - "\ud83e\udee6": "biting lip", - "\ud83e\udee7": "bubbles", - "\ud83e\udee8": "shaking face", - "\ud83e\udef0": "hand with index finger and thumb crossed", - "\ud83e\udef0\ud83c\udffb": "hand with index finger and thumb crossed: light skin tone", - "\ud83e\udef0\ud83c\udffc": "hand with index finger and thumb crossed: medium-light skin tone", - "\ud83e\udef0\ud83c\udffd": "hand with index finger and thumb crossed: medium skin tone", - "\ud83e\udef0\ud83c\udffe": "hand with index finger and thumb crossed: medium-dark skin tone", - "\ud83e\udef0\ud83c\udfff": "hand with index finger and thumb crossed: dark skin tone", - "\ud83e\udef1": "rightwards hand", - "\ud83e\udef1\ud83c\udffb": "rightwards hand: light skin tone", - "\ud83e\udef1\ud83c\udffc": "rightwards hand: medium-light skin tone", - "\ud83e\udef1\ud83c\udffd": "rightwards hand: medium skin tone", - "\ud83e\udef1\ud83c\udffe": "rightwards hand: medium-dark skin tone", - "\ud83e\udef1\ud83c\udfff": "rightwards hand: dark skin tone", - "\ud83e\udef2": "leftwards hand", - "\ud83e\udef2\ud83c\udffb": "leftwards hand: light skin tone", - "\ud83e\udef2\ud83c\udffc": "leftwards hand: medium-light skin tone", - "\ud83e\udef2\ud83c\udffd": "leftwards hand: medium skin tone", - "\ud83e\udef2\ud83c\udffe": "leftwards hand: medium-dark skin tone", - "\ud83e\udef2\ud83c\udfff": "leftwards hand: dark skin tone", - "\ud83e\udef3": "palm down hand", - "\ud83e\udef3\ud83c\udffb": "palm down hand: light skin tone", - "\ud83e\udef3\ud83c\udffc": "palm down hand: medium-light skin tone", - "\ud83e\udef3\ud83c\udffd": "palm down hand: medium skin tone", - "\ud83e\udef3\ud83c\udffe": "palm down hand: medium-dark skin tone", - "\ud83e\udef3\ud83c\udfff": "palm down hand: dark skin tone", - "\ud83e\udef4": "palm up hand", - "\ud83e\udef4\ud83c\udffb": "palm up hand: light skin tone", - "\ud83e\udef4\ud83c\udffc": "palm up hand: medium-light skin tone", - "\ud83e\udef4\ud83c\udffd": "palm up hand: medium skin tone", - "\ud83e\udef4\ud83c\udffe": "palm up hand: medium-dark skin tone", - "\ud83e\udef4\ud83c\udfff": "palm up hand: dark skin tone", - "\ud83e\udef5": "index pointing at the viewer", - "\ud83e\udef5\ud83c\udffb": "index pointing at the viewer: light skin tone", - "\ud83e\udef5\ud83c\udffc": "index pointing at the viewer: medium-light skin tone", - "\ud83e\udef5\ud83c\udffd": "index pointing at the viewer: medium skin tone", - "\ud83e\udef5\ud83c\udffe": "index pointing at the viewer: medium-dark skin tone", - "\ud83e\udef5\ud83c\udfff": "index pointing at the viewer: dark skin tone", - "\ud83e\udef6": "heart hands", - "\ud83e\udef6\ud83c\udffb": "heart hands: light skin tone", - "\ud83e\udef6\ud83c\udffc": "heart hands: medium-light skin tone", - "\ud83e\udef6\ud83c\udffd": "heart hands: medium skin tone", - "\ud83e\udef6\ud83c\udffe": "heart hands: medium-dark skin tone", - "\ud83e\udef6\ud83c\udfff": "heart hands: dark skin tone", - "\ud83e\udef7": "leftwards pushing hand", - "\ud83e\udef7\ud83c\udffb": "leftwards pushing hand: light skin tone", - "\ud83e\udef7\ud83c\udffc": "leftwards pushing hand: medium-light skin tone", - "\ud83e\udef7\ud83c\udffd": "leftwards pushing hand: medium skin tone", - "\ud83e\udef7\ud83c\udffe": "leftwards pushing hand: medium-dark skin tone", - "\ud83e\udef7\ud83c\udfff": "leftwards pushing hand: dark skin tone", - "\ud83e\udef8": "rightwards pushing hand", - "\ud83e\udef8\ud83c\udffb": "rightwards pushing hand: light skin tone", - "\ud83e\udef8\ud83c\udffc": "rightwards pushing hand: medium-light skin tone", - "\ud83e\udef8\ud83c\udffd": "rightwards pushing hand: medium skin tone", - "\ud83e\udef8\ud83c\udffe": "rightwards pushing hand: medium-dark skin tone", - "\ud83e\udef8\ud83c\udfff": "rightwards pushing hand: dark skin tone" -} diff --git a/src/typescript/sdk/src/emoji_data/symbol-emojis.ts b/src/typescript/sdk/src/emoji_data/symbol-emojis.ts new file mode 100644 index 000000000..0d16c52bf --- /dev/null +++ b/src/typescript/sdk/src/emoji_data/symbol-emojis.ts @@ -0,0 +1,2308 @@ +// cspell:disable + +export const SYMBOL_EMOJIS = { + "🥇": "1st place medal", + "🥈": "2nd place medal", + "🥉": "3rd place medal", + "🅰️": "A button (blood type)", + "🆎": "AB button (blood type)", + "🏧": "ATM sign", + "♒": "Aquarius", + "♈": "Aries", + "🅱️": "B button (blood type)", + "🔙": "BACK arrow", + "🆑": "CL button", + "🆒": "COOL button", + "♋": "Cancer", + "♑": "Capricorn", + "🎄": "Christmas tree", + "🔚": "END arrow", + "🆓": "FREE button", + "♊": "Gemini", + "🆔": "ID button", + "🉑": 'Japanese "acceptable" button', + "🈸": 'Japanese "application" button', + "🉐": 'Japanese "bargain" button', + "㊗️": 'Japanese "congratulations" button', + "🈹": 'Japanese "discount" button', + "🈚": 'Japanese "free of charge" button', + "🈁": 'Japanese "here" button', + "🈷️": 'Japanese "monthly amount" button', + "🈵": 'Japanese "no vacancy" button', + "🈶": 'Japanese "not free of charge" button', + "🈺": 'Japanese "open for business" button', + "🈴": 'Japanese "passing grade" button', + "🈲": 'Japanese "prohibited" button', + "🈯": 'Japanese "reserved" button', + "㊙️": 'Japanese "secret" button', + "🈂️": 'Japanese "service charge" button', + "🈳": 'Japanese "vacancy" button', + "🏯": "Japanese castle", + "🎎": "Japanese dolls", + "🏣": "Japanese post office", + "🔰": "Japanese symbol for beginner", + "♌": "Leo", + "♎": "Libra", + "🤶": "Mrs. Claus", + "🤶🏿": "Mrs. Claus: dark skin tone", + "🤶🏻": "Mrs. Claus: light skin tone", + "🤶🏽": "Mrs. Claus: medium skin tone", + "🤶🏾": "Mrs. Claus: medium-dark skin tone", + "🤶🏼": "Mrs. Claus: medium-light skin tone", + "🆕": "NEW button", + "🆖": "NG button", + "🅾️": "O button (blood type)", + "🆗": "OK button", + "👌": "OK hand", + "👌🏿": "OK hand: dark skin tone", + "👌🏻": "OK hand: light skin tone", + "👌🏽": "OK hand: medium skin tone", + "👌🏾": "OK hand: medium-dark skin tone", + "👌🏼": "OK hand: medium-light skin tone", + "🔛": "ON! arrow", + "⛎": "Ophiuchus", + "🅿️": "P button", + "♓": "Pisces", + "🔜": "SOON arrow", + "🆘": "SOS button", + "♐": "Sagittarius", + "🎅": "Santa Claus", + "🎅🏿": "Santa Claus: dark skin tone", + "🎅🏻": "Santa Claus: light skin tone", + "🎅🏽": "Santa Claus: medium skin tone", + "🎅🏾": "Santa Claus: medium-dark skin tone", + "🎅🏼": "Santa Claus: medium-light skin tone", + "♏": "Scorpio", + "🗽": "Statue of Liberty", + "🦖": "T-Rex", + "🔝": "TOP arrow", + "♉": "Taurus", + "🗼": "Tokyo tower", + "🆙": "UP! button", + "🆚": "VS button", + "♍": "Virgo", + "💤": "ZZZ", + "🧮": "abacus", + "🪗": "accordion", + "🩹": "adhesive bandage", + "🎟️": "admission tickets", + "🚡": "aerial tramway", + "✈️": "airplane", + "🛬": "airplane arrival", + "🛫": "airplane departure", + "⏰": "alarm clock", + "⚗️": "alembic", + "👽": "alien", + "👾": "alien monster", + "🚑": "ambulance", + "🏈": "american football", + "🏺": "amphora", + "🫀": "anatomical heart", + "⚓": "anchor", + "💢": "anger symbol", + "😠": "angry face", + "👿": "angry face with horns", + "😧": "anguished face", + "🐜": "ant", + "📶": "antenna bars", + "😰": "anxious face with sweat", + "🚛": "articulated lorry", + "🎨": "artist palette", + "😲": "astonished face", + "⚛️": "atom symbol", + "🛺": "auto rickshaw", + "🚗": "automobile", + "🥑": "avocado", + "🪓": "axe", + "👶": "baby", + "👼": "baby angel", + "👼🏿": "baby angel: dark skin tone", + "👼🏻": "baby angel: light skin tone", + "👼🏽": "baby angel: medium skin tone", + "👼🏾": "baby angel: medium-dark skin tone", + "👼🏼": "baby angel: medium-light skin tone", + "🍼": "baby bottle", + "🐤": "baby chick", + "🚼": "baby symbol", + "👶🏿": "baby: dark skin tone", + "👶🏻": "baby: light skin tone", + "👶🏽": "baby: medium skin tone", + "👶🏾": "baby: medium-dark skin tone", + "👶🏼": "baby: medium-light skin tone", + "👇": "backhand index pointing down", + "👇🏿": "backhand index pointing down: dark skin tone", + "👇🏻": "backhand index pointing down: light skin tone", + "👇🏽": "backhand index pointing down: medium skin tone", + "👇🏾": "backhand index pointing down: medium-dark skin tone", + "👇🏼": "backhand index pointing down: medium-light skin tone", + "👈": "backhand index pointing left", + "👈🏿": "backhand index pointing left: dark skin tone", + "👈🏻": "backhand index pointing left: light skin tone", + "👈🏽": "backhand index pointing left: medium skin tone", + "👈🏾": "backhand index pointing left: medium-dark skin tone", + "👈🏼": "backhand index pointing left: medium-light skin tone", + "👉": "backhand index pointing right", + "👉🏿": "backhand index pointing right: dark skin tone", + "👉🏻": "backhand index pointing right: light skin tone", + "👉🏽": "backhand index pointing right: medium skin tone", + "👉🏾": "backhand index pointing right: medium-dark skin tone", + "👉🏼": "backhand index pointing right: medium-light skin tone", + "👆": "backhand index pointing up", + "👆🏿": "backhand index pointing up: dark skin tone", + "👆🏻": "backhand index pointing up: light skin tone", + "👆🏽": "backhand index pointing up: medium skin tone", + "👆🏾": "backhand index pointing up: medium-dark skin tone", + "👆🏼": "backhand index pointing up: medium-light skin tone", + "🎒": "backpack", + "🥓": "bacon", + "🦡": "badger", + "🏸": "badminton", + "🥯": "bagel", + "🛄": "baggage claim", + "🥖": "baguette bread", + "⚖️": "balance scale", + "🩰": "ballet shoes", + "🎈": "balloon", + "🗳️": "ballot box with ballot", + "🍌": "banana", + "🪕": "banjo", + "🏦": "bank", + "📊": "bar chart", + "💈": "barber pole", + "⚾": "baseball", + "🧺": "basket", + "🏀": "basketball", + "🦇": "bat", + "🛁": "bathtub", + "🔋": "battery", + "🏖️": "beach with umbrella", + "😁": "beaming face with smiling eyes", + "🫘": "beans", + "🐻": "bear", + "💓": "beating heart", + "🦫": "beaver", + "🛏️": "bed", + "🍺": "beer mug", + "🪲": "beetle", + "🔔": "bell", + "🫑": "bell pepper", + "🔕": "bell with slash", + "🛎️": "bellhop bell", + "🍱": "bento box", + "🧃": "beverage box", + "🚲": "bicycle", + "👙": "bikini", + "🧢": "billed cap", + "☣️": "biohazard", + "🐦": "bird", + "🎂": "birthday cake", + "🦬": "bison", + "🫦": "biting lip", + "🐦‍⬛": "black bird", + "🐈‍⬛": "black cat", + "⚫": "black circle", + "🏴": "black flag", + "🖤": "black heart", + "⬛": "black large square", + "◼️": "black medium square", + "◾": "black medium-small square", + "✒️": "black nib", + "▪️": "black small square", + "🔲": "black square button", + "🌼": "blossom", + "🐡": "blowfish", + "📘": "blue book", + "🔵": "blue circle", + "💙": "blue heart", + "🟦": "blue square", + "🫐": "blueberries", + "🐗": "boar", + "💣": "bomb", + "🦴": "bone", + "🔖": "bookmark", + "📑": "bookmark tabs", + "📚": "books", + "🪃": "boomerang", + "🍾": "bottle with popping cork", + "💐": "bouquet", + "🏹": "bow and arrow", + "🥣": "bowl with spoon", + "🎳": "bowling", + "🥊": "boxing glove", + "👦": "boy", + "👦🏿": "boy: dark skin tone", + "👦🏻": "boy: light skin tone", + "👦🏽": "boy: medium skin tone", + "👦🏾": "boy: medium-dark skin tone", + "👦🏼": "boy: medium-light skin tone", + "🧠": "brain", + "🍞": "bread", + "🤱": "breast-feeding", + "🤱🏿": "breast-feeding: dark skin tone", + "🤱🏻": "breast-feeding: light skin tone", + "🤱🏽": "breast-feeding: medium skin tone", + "🤱🏾": "breast-feeding: medium-dark skin tone", + "🤱🏼": "breast-feeding: medium-light skin tone", + "🧱": "brick", + "🌉": "bridge at night", + "💼": "briefcase", + "🩲": "briefs", + "🔆": "bright button", + "🥦": "broccoli", + "💔": "broken heart", + "🧹": "broom", + "🟤": "brown circle", + "🤎": "brown heart", + "🟫": "brown square", + "🧋": "bubble tea", + "🫧": "bubbles", + "🪣": "bucket", + "🐛": "bug", + "🏗️": "building construction", + "🚅": "bullet train", + "🎯": "bullseye", + "🌯": "burrito", + "🚌": "bus", + "🚏": "bus stop", + "👤": "bust in silhouette", + "👥": "busts in silhouette", + "🧈": "butter", + "🦋": "butterfly", + "🌵": "cactus", + "📅": "calendar", + "🤙": "call me hand", + "🤙🏿": "call me hand: dark skin tone", + "🤙🏻": "call me hand: light skin tone", + "🤙🏽": "call me hand: medium skin tone", + "🤙🏾": "call me hand: medium-dark skin tone", + "🤙🏼": "call me hand: medium-light skin tone", + "🐪": "camel", + "📷": "camera", + "📸": "camera with flash", + "🏕️": "camping", + "🕯️": "candle", + "🍬": "candy", + "🥫": "canned food", + "🛶": "canoe", + "🗃️": "card file box", + "📇": "card index", + "🗂️": "card index dividers", + "🎠": "carousel horse", + "🎏": "carp streamer", + "🪚": "carpentry saw", + "🥕": "carrot", + "🏰": "castle", + "🐈": "cat", + "🐱": "cat face", + "😹": "cat with tears of joy", + "😼": "cat with wry smile", + "⛓️": "chains", + "🪑": "chair", + "📉": "chart decreasing", + "📈": "chart increasing", + "💹": "chart increasing with yen", + "☑️": "check box with check", + "✔️": "check mark", + "✅": "check mark button", + "🧀": "cheese wedge", + "🏁": "chequered flag", + "🍒": "cherries", + "🌸": "cherry blossom", + "♟️": "chess pawn", + "🌰": "chestnut", + "🐔": "chicken", + "🧒": "child", + "🧒🏿": "child: dark skin tone", + "🧒🏻": "child: light skin tone", + "🧒🏽": "child: medium skin tone", + "🧒🏾": "child: medium-dark skin tone", + "🧒🏼": "child: medium-light skin tone", + "🚸": "children crossing", + "🐿️": "chipmunk", + "🍫": "chocolate bar", + "🥢": "chopsticks", + "⛪": "church", + "🚬": "cigarette", + "🎦": "cinema", + "Ⓜ️": "circled M", + "🎪": "circus tent", + "🏙️": "cityscape", + "🌆": "cityscape at dusk", + "🗜️": "clamp", + "🎬": "clapper board", + "👏": "clapping hands", + "👏🏿": "clapping hands: dark skin tone", + "👏🏻": "clapping hands: light skin tone", + "👏🏽": "clapping hands: medium skin tone", + "👏🏾": "clapping hands: medium-dark skin tone", + "👏🏼": "clapping hands: medium-light skin tone", + "🏛️": "classical building", + "🍻": "clinking beer mugs", + "🥂": "clinking glasses", + "📋": "clipboard", + "🔃": "clockwise vertical arrows", + "📕": "closed book", + "📪": "closed mailbox with lowered flag", + "📫": "closed mailbox with raised flag", + "🌂": "closed umbrella", + "☁️": "cloud", + "🌩️": "cloud with lightning", + "⛈️": "cloud with lightning and rain", + "🌧️": "cloud with rain", + "🌨️": "cloud with snow", + "🤡": "clown face", + "♣️": "club suit", + "👝": "clutch bag", + "🧥": "coat", + "🪳": "cockroach", + "🍸": "cocktail glass", + "🥥": "coconut", + "⚰️": "coffin", + "🪙": "coin", + "🥶": "cold face", + "💥": "collision", + "☄️": "comet", + "🧭": "compass", + "💽": "computer disk", + "🖱️": "computer mouse", + "🎊": "confetti ball", + "😖": "confounded face", + "😕": "confused face", + "🚧": "construction", + "👷": "construction worker", + "👷🏿": "construction worker: dark skin tone", + "👷🏻": "construction worker: light skin tone", + "👷🏽": "construction worker: medium skin tone", + "👷🏾": "construction worker: medium-dark skin tone", + "👷🏼": "construction worker: medium-light skin tone", + "🎛️": "control knobs", + "🏪": "convenience store", + "🍚": "cooked rice", + "🍪": "cookie", + "🍳": "cooking", + "©️": "copyright", + "🪸": "coral", + "🛋️": "couch and lamp", + "🔄": "counterclockwise arrows button", + "💑": "couple with heart", + "💑🏿": "couple with heart: dark skin tone", + "💑🏻": "couple with heart: light skin tone", + "💑🏽": "couple with heart: medium skin tone", + "💑🏾": "couple with heart: medium-dark skin tone", + "💑🏼": "couple with heart: medium-light skin tone", + "🐄": "cow", + "🐮": "cow face", + "🤠": "cowboy hat face", + "🦀": "crab", + "🖍️": "crayon", + "💳": "credit card", + "🌙": "crescent moon", + "🦗": "cricket", + "🏏": "cricket game", + "🐊": "crocodile", + "🥐": "croissant", + "❌": "cross mark", + "❎": "cross mark button", + "🤞": "crossed fingers", + "🤞🏿": "crossed fingers: dark skin tone", + "🤞🏻": "crossed fingers: light skin tone", + "🤞🏽": "crossed fingers: medium skin tone", + "🤞🏾": "crossed fingers: medium-dark skin tone", + "🤞🏼": "crossed fingers: medium-light skin tone", + "🎌": "crossed flags", + "⚔️": "crossed swords", + "👑": "crown", + "🩼": "crutch", + "😿": "crying cat", + "😢": "crying face", + "🔮": "crystal ball", + "🥒": "cucumber", + "🥤": "cup with straw", + "🧁": "cupcake", + "🥌": "curling stone", + "➰": "curly loop", + "💱": "currency exchange", + "🍛": "curry rice", + "🍮": "custard", + "🛃": "customs", + "🥩": "cut of meat", + "🌀": "cyclone", + "🗡️": "dagger", + "🍡": "dango", + "💨": "dashing away", + "🧏": "deaf person", + "🧏🏿": "deaf person: dark skin tone", + "🧏🏻": "deaf person: light skin tone", + "🧏🏽": "deaf person: medium skin tone", + "🧏🏾": "deaf person: medium-dark skin tone", + "🧏🏼": "deaf person: medium-light skin tone", + "🌳": "deciduous tree", + "🦌": "deer", + "🚚": "delivery truck", + "🏬": "department store", + "🏚️": "derelict house", + "🏜️": "desert", + "🏝️": "desert island", + "🖥️": "desktop computer", + "🕵️": "detective", + "🕵🏿": "detective: dark skin tone", + "🕵🏻": "detective: light skin tone", + "🕵🏽": "detective: medium skin tone", + "🕵🏾": "detective: medium-dark skin tone", + "🕵🏼": "detective: medium-light skin tone", + "♦️": "diamond suit", + "💠": "diamond with a dot", + "🔅": "dim button", + "😞": "disappointed face", + "🥸": "disguised face", + "➗": "divide", + "🤿": "diving mask", + "🪔": "diya lamp", + "💫": "dizzy", + "🧬": "dna", + "🦤": "dodo", + "🐕": "dog", + "🐶": "dog face", + "💵": "dollar banknote", + "🐬": "dolphin", + "🫏": "donkey", + "🚪": "door", + "🫥": "dotted line face", + "🔯": "dotted six-pointed star", + "➿": "double curly loop", + "‼️": "double exclamation mark", + "🍩": "doughnut", + "🕊️": "dove", + "⬇️": "down arrow", + "↙️": "down-left arrow", + "↘️": "down-right arrow", + "😓": "downcast face with sweat", + "🔽": "downwards button", + "🐉": "dragon", + "🐲": "dragon face", + "👗": "dress", + "🤤": "drooling face", + "🩸": "drop of blood", + "💧": "droplet", + "🥁": "drum", + "🦆": "duck", + "🥟": "dumpling", + "📀": "dvd", + "📧": "e-mail", + "🦅": "eagle", + "👂": "ear", + "🌽": "ear of corn", + "🦻": "ear with hearing aid", + "🦻🏿": "ear with hearing aid: dark skin tone", + "🦻🏻": "ear with hearing aid: light skin tone", + "🦻🏽": "ear with hearing aid: medium skin tone", + "🦻🏾": "ear with hearing aid: medium-dark skin tone", + "🦻🏼": "ear with hearing aid: medium-light skin tone", + "👂🏿": "ear: dark skin tone", + "👂🏻": "ear: light skin tone", + "👂🏽": "ear: medium skin tone", + "👂🏾": "ear: medium-dark skin tone", + "👂🏼": "ear: medium-light skin tone", + "🥚": "egg", + "🍆": "eggplant", + "🕗": "eight o'clock", + "✴️": "eight-pointed star", + "✳️": "eight-spoked asterisk", + "🕣": "eight-thirty", + "⏏️": "eject button", + "🔌": "electric plug", + "🐘": "elephant", + "🛗": "elevator", + "🕚": "eleven o'clock", + "🕦": "eleven-thirty", + "🧝": "elf", + "🧝🏿": "elf: dark skin tone", + "🧝🏻": "elf: light skin tone", + "🧝🏽": "elf: medium skin tone", + "🧝🏾": "elf: medium-dark skin tone", + "🧝🏼": "elf: medium-light skin tone", + "🪹": "empty nest", + "😡": "enraged face", + "✉️": "envelope", + "📩": "envelope with arrow", + "💶": "euro banknote", + "🌲": "evergreen tree", + "🐑": "ewe", + "⁉️": "exclamation question mark", + "🤯": "exploding head", + "😑": "expressionless face", + "👁️": "eye", + "👀": "eyes", + "😘": "face blowing a kiss", + "🥹": "face holding back tears", + "😋": "face savoring food", + "😱": "face screaming in fear", + "🤮": "face vomiting", + "😵": "face with crossed-out eyes", + "🫤": "face with diagonal mouth", + "🤭": "face with hand over mouth", + "🤕": "face with head-bandage", + "😷": "face with medical mask", + "🧐": "face with monocle", + "🫢": "face with open eyes and hand over mouth", + "😮": "face with open mouth", + "🫣": "face with peeking eye", + "🤨": "face with raised eyebrow", + "🙄": "face with rolling eyes", + "😤": "face with steam from nose", + "🤬": "face with symbols on mouth", + "😂": "face with tears of joy", + "🤒": "face with thermometer", + "😛": "face with tongue", + "😶": "face without mouth", + "🏭": "factory", + "🧚": "fairy", + "🧚🏿": "fairy: dark skin tone", + "🧚🏻": "fairy: light skin tone", + "🧚🏽": "fairy: medium skin tone", + "🧚🏾": "fairy: medium-dark skin tone", + "🧚🏼": "fairy: medium-light skin tone", + "🧆": "falafel", + "🍂": "fallen leaf", + "👪": "family", + "⏬": "fast down button", + "⏪": "fast reverse button", + "⏫": "fast up button", + "⏩": "fast-forward button", + "📠": "fax machine", + "😨": "fearful face", + "🪶": "feather", + "♀️": "female sign", + "🎡": "ferris wheel", + "⛴️": "ferry", + "🏑": "field hockey", + "🗄️": "file cabinet", + "📁": "file folder", + "🎞️": "film frames", + "📽️": "film projector", + "🔥": "fire", + "🚒": "fire engine", + "🧯": "fire extinguisher", + "🧨": "firecracker", + "🎆": "fireworks", + "🌓": "first quarter moon", + "🌛": "first quarter moon face", + "🐟": "fish", + "🍥": "fish cake with swirl", + "🎣": "fishing pole", + "🕔": "five o'clock", + "🕠": "five-thirty", + "⛳": "flag in hole", + "🇦🇫": "flag: Afghanistan", + "🇦🇱": "flag: Albania", + "🇩🇿": "flag: Algeria", + "🇦🇸": "flag: American Samoa", + "🇦🇩": "flag: Andorra", + "🇦🇴": "flag: Angola", + "🇦🇮": "flag: Anguilla", + "🇦🇶": "flag: Antarctica", + "🇦🇬": "flag: Antigua & Barbuda", + "🇦🇷": "flag: Argentina", + "🇦🇲": "flag: Armenia", + "🇦🇼": "flag: Aruba", + "🇦🇨": "flag: Ascension Island", + "🇦🇺": "flag: Australia", + "🇦🇹": "flag: Austria", + "🇦🇿": "flag: Azerbaijan", + "🇧🇸": "flag: Bahamas", + "🇧🇭": "flag: Bahrain", + "🇧🇩": "flag: Bangladesh", + "🇧🇧": "flag: Barbados", + "🇧🇾": "flag: Belarus", + "🇧🇪": "flag: Belgium", + "🇧🇿": "flag: Belize", + "🇧🇯": "flag: Benin", + "🇧🇲": "flag: Bermuda", + "🇧🇹": "flag: Bhutan", + "🇧🇴": "flag: Bolivia", + "🇧🇦": "flag: Bosnia & Herzegovina", + "🇧🇼": "flag: Botswana", + "🇧🇻": "flag: Bouvet Island", + "🇧🇷": "flag: Brazil", + "🇮🇴": "flag: British Indian Ocean Territory", + "🇻🇬": "flag: British Virgin Islands", + "🇧🇳": "flag: Brunei", + "🇧🇬": "flag: Bulgaria", + "🇧🇫": "flag: Burkina Faso", + "🇧🇮": "flag: Burundi", + "🇰🇭": "flag: Cambodia", + "🇨🇲": "flag: Cameroon", + "🇨🇦": "flag: Canada", + "🇮🇨": "flag: Canary Islands", + "🇨🇻": "flag: Cape Verde", + "🇧🇶": "flag: Caribbean Netherlands", + "🇰🇾": "flag: Cayman Islands", + "🇨🇫": "flag: Central African Republic", + "🇪🇦": "flag: Ceuta & Melilla", + "🇹🇩": "flag: Chad", + "🇨🇱": "flag: Chile", + "🇨🇳": "flag: China", + "🇨🇽": "flag: Christmas Island", + "🇨🇵": "flag: Clipperton Island", + "🇨🇨": "flag: Cocos (Keeling) Islands", + "🇨🇴": "flag: Colombia", + "🇰🇲": "flag: Comoros", + "🇨🇬": "flag: Congo - Brazzaville", + "🇨🇩": "flag: Congo - Kinshasa", + "🇨🇰": "flag: Cook Islands", + "🇨🇷": "flag: Costa Rica", + "🇭🇷": "flag: Croatia", + "🇨🇺": "flag: Cuba", + "🇨🇼": "flag: Curaçao", + "🇨🇾": "flag: Cyprus", + "🇨🇿": "flag: Czechia", + "🇨🇮": "flag: Côte d'Ivoire", + "🇩🇰": "flag: Denmark", + "🇩🇬": "flag: Diego Garcia", + "🇩🇯": "flag: Djibouti", + "🇩🇲": "flag: Dominica", + "🇩🇴": "flag: Dominican Republic", + "🇪🇨": "flag: Ecuador", + "🇪🇬": "flag: Egypt", + "🇸🇻": "flag: El Salvador", + "🇬🇶": "flag: Equatorial Guinea", + "🇪🇷": "flag: Eritrea", + "🇪🇪": "flag: Estonia", + "🇸🇿": "flag: Eswatini", + "🇪🇹": "flag: Ethiopia", + "🇪🇺": "flag: European Union", + "🇫🇰": "flag: Falkland Islands", + "🇫🇴": "flag: Faroe Islands", + "🇫🇯": "flag: Fiji", + "🇫🇮": "flag: Finland", + "🇫🇷": "flag: France", + "🇬🇫": "flag: French Guiana", + "🇵🇫": "flag: French Polynesia", + "🇹🇫": "flag: French Southern Territories", + "🇬🇦": "flag: Gabon", + "🇬🇲": "flag: Gambia", + "🇬🇪": "flag: Georgia", + "🇩🇪": "flag: Germany", + "🇬🇭": "flag: Ghana", + "🇬🇮": "flag: Gibraltar", + "🇬🇷": "flag: Greece", + "🇬🇱": "flag: Greenland", + "🇬🇩": "flag: Grenada", + "🇬🇵": "flag: Guadeloupe", + "🇬🇺": "flag: Guam", + "🇬🇹": "flag: Guatemala", + "🇬🇬": "flag: Guernsey", + "🇬🇳": "flag: Guinea", + "🇬🇼": "flag: Guinea-Bissau", + "🇬🇾": "flag: Guyana", + "🇭🇹": "flag: Haiti", + "🇭🇲": "flag: Heard & McDonald Islands", + "🇭🇳": "flag: Honduras", + "🇭🇰": "flag: Hong Kong SAR China", + "🇭🇺": "flag: Hungary", + "🇮🇸": "flag: Iceland", + "🇮🇳": "flag: India", + "🇮🇩": "flag: Indonesia", + "🇮🇷": "flag: Iran", + "🇮🇶": "flag: Iraq", + "🇮🇪": "flag: Ireland", + "🇮🇲": "flag: Isle of Man", + "🇮🇱": "flag: Israel", + "🇮🇹": "flag: Italy", + "🇯🇲": "flag: Jamaica", + "🇯🇵": "flag: Japan", + "🇯🇪": "flag: Jersey", + "🇯🇴": "flag: Jordan", + "🇰🇿": "flag: Kazakhstan", + "🇰🇪": "flag: Kenya", + "🇰🇮": "flag: Kiribati", + "🇽🇰": "flag: Kosovo", + "🇰🇼": "flag: Kuwait", + "🇰🇬": "flag: Kyrgyzstan", + "🇱🇦": "flag: Laos", + "🇱🇻": "flag: Latvia", + "🇱🇧": "flag: Lebanon", + "🇱🇸": "flag: Lesotho", + "🇱🇷": "flag: Liberia", + "🇱🇾": "flag: Libya", + "🇱🇮": "flag: Liechtenstein", + "🇱🇹": "flag: Lithuania", + "🇱🇺": "flag: Luxembourg", + "🇲🇴": "flag: Macao SAR China", + "🇲🇬": "flag: Madagascar", + "🇲🇼": "flag: Malawi", + "🇲🇾": "flag: Malaysia", + "🇲🇻": "flag: Maldives", + "🇲🇱": "flag: Mali", + "🇲🇹": "flag: Malta", + "🇲🇭": "flag: Marshall Islands", + "🇲🇶": "flag: Martinique", + "🇲🇷": "flag: Mauritania", + "🇲🇺": "flag: Mauritius", + "🇾🇹": "flag: Mayotte", + "🇲🇽": "flag: Mexico", + "🇫🇲": "flag: Micronesia", + "🇲🇩": "flag: Moldova", + "🇲🇨": "flag: Monaco", + "🇲🇳": "flag: Mongolia", + "🇲🇪": "flag: Montenegro", + "🇲🇸": "flag: Montserrat", + "🇲🇦": "flag: Morocco", + "🇲🇿": "flag: Mozambique", + "🇲🇲": "flag: Myanmar (Burma)", + "🇳🇦": "flag: Namibia", + "🇳🇷": "flag: Nauru", + "🇳🇵": "flag: Nepal", + "🇳🇱": "flag: Netherlands", + "🇳🇨": "flag: New Caledonia", + "🇳🇿": "flag: New Zealand", + "🇳🇮": "flag: Nicaragua", + "🇳🇪": "flag: Niger", + "🇳🇬": "flag: Nigeria", + "🇳🇺": "flag: Niue", + "🇳🇫": "flag: Norfolk Island", + "🇰🇵": "flag: North Korea", + "🇲🇰": "flag: North Macedonia", + "🇲🇵": "flag: Northern Mariana Islands", + "🇳🇴": "flag: Norway", + "🇴🇲": "flag: Oman", + "🇵🇰": "flag: Pakistan", + "🇵🇼": "flag: Palau", + "🇵🇸": "flag: Palestinian Territories", + "🇵🇦": "flag: Panama", + "🇵🇬": "flag: Papua New Guinea", + "🇵🇾": "flag: Paraguay", + "🇵🇪": "flag: Peru", + "🇵🇭": "flag: Philippines", + "🇵🇳": "flag: Pitcairn Islands", + "🇵🇱": "flag: Poland", + "🇵🇹": "flag: Portugal", + "🇵🇷": "flag: Puerto Rico", + "🇶🇦": "flag: Qatar", + "🇷🇴": "flag: Romania", + "🇷🇺": "flag: Russia", + "🇷🇼": "flag: Rwanda", + "🇷🇪": "flag: Réunion", + "🇼🇸": "flag: Samoa", + "🇸🇲": "flag: San Marino", + "🇸🇦": "flag: Saudi Arabia", + "🇸🇳": "flag: Senegal", + "🇷🇸": "flag: Serbia", + "🇸🇨": "flag: Seychelles", + "🇸🇱": "flag: Sierra Leone", + "🇸🇬": "flag: Singapore", + "🇸🇽": "flag: Sint Maarten", + "🇸🇰": "flag: Slovakia", + "🇸🇮": "flag: Slovenia", + "🇸🇧": "flag: Solomon Islands", + "🇸🇴": "flag: Somalia", + "🇿🇦": "flag: South Africa", + "🇬🇸": "flag: South Georgia & South Sandwich Islands", + "🇰🇷": "flag: South Korea", + "🇸🇸": "flag: South Sudan", + "🇪🇸": "flag: Spain", + "🇱🇰": "flag: Sri Lanka", + "🇧🇱": "flag: St. Barthélemy", + "🇸🇭": "flag: St. Helena", + "🇰🇳": "flag: St. Kitts & Nevis", + "🇱🇨": "flag: St. Lucia", + "🇲🇫": "flag: St. Martin", + "🇵🇲": "flag: St. Pierre & Miquelon", + "🇻🇨": "flag: St. Vincent & Grenadines", + "🇸🇩": "flag: Sudan", + "🇸🇷": "flag: Suriname", + "🇸🇯": "flag: Svalbard & Jan Mayen", + "🇸🇪": "flag: Sweden", + "🇨🇭": "flag: Switzerland", + "🇸🇾": "flag: Syria", + "🇸🇹": "flag: São Tomé & Príncipe", + "🇹🇼": "flag: Taiwan", + "🇹🇯": "flag: Tajikistan", + "🇹🇿": "flag: Tanzania", + "🇹🇭": "flag: Thailand", + "🇹🇱": "flag: Timor-Leste", + "🇹🇬": "flag: Togo", + "🇹🇰": "flag: Tokelau", + "🇹🇴": "flag: Tonga", + "🇹🇹": "flag: Trinidad & Tobago", + "🇹🇦": "flag: Tristan da Cunha", + "🇹🇳": "flag: Tunisia", + "🇹🇲": "flag: Turkmenistan", + "🇹🇨": "flag: Turks & Caicos Islands", + "🇹🇻": "flag: Tuvalu", + "🇹🇷": "flag: Türkiye", + "🇺🇲": "flag: U.S. Outlying Islands", + "🇻🇮": "flag: U.S. Virgin Islands", + "🇺🇬": "flag: Uganda", + "🇺🇦": "flag: Ukraine", + "🇦🇪": "flag: United Arab Emirates", + "🇬🇧": "flag: United Kingdom", + "🇺🇳": "flag: United Nations", + "🇺🇸": "flag: United States", + "🇺🇾": "flag: Uruguay", + "🇺🇿": "flag: Uzbekistan", + "🇻🇺": "flag: Vanuatu", + "🇻🇦": "flag: Vatican City", + "🇻🇪": "flag: Venezuela", + "🇻🇳": "flag: Vietnam", + "🇼🇫": "flag: Wallis & Futuna", + "🇪🇭": "flag: Western Sahara", + "🇾🇪": "flag: Yemen", + "🇿🇲": "flag: Zambia", + "🇿🇼": "flag: Zimbabwe", + "🇦🇽": "flag: Åland Islands", + "🦩": "flamingo", + "🔦": "flashlight", + "🥿": "flat shoe", + "🫓": "flatbread", + "⚜️": "fleur-de-lis", + "💪": "flexed biceps", + "💪🏿": "flexed biceps: dark skin tone", + "💪🏻": "flexed biceps: light skin tone", + "💪🏽": "flexed biceps: medium skin tone", + "💪🏾": "flexed biceps: medium-dark skin tone", + "💪🏼": "flexed biceps: medium-light skin tone", + "💾": "floppy disk", + "🎴": "flower playing cards", + "😳": "flushed face", + "🪈": "flute", + "🪰": "fly", + "🥏": "flying disc", + "🛸": "flying saucer", + "🌫️": "fog", + "🌁": "foggy", + "🙏": "folded hands", + "🙏🏿": "folded hands: dark skin tone", + "🙏🏻": "folded hands: light skin tone", + "🙏🏽": "folded hands: medium skin tone", + "🙏🏾": "folded hands: medium-dark skin tone", + "🙏🏼": "folded hands: medium-light skin tone", + "🪭": "folding hand fan", + "🫕": "fondue", + "🦶": "foot", + "🦶🏿": "foot: dark skin tone", + "🦶🏻": "foot: light skin tone", + "🦶🏽": "foot: medium skin tone", + "🦶🏾": "foot: medium-dark skin tone", + "🦶🏼": "foot: medium-light skin tone", + "👣": "footprints", + "🍴": "fork and knife", + "🍽️": "fork and knife with plate", + "🥠": "fortune cookie", + "⛲": "fountain", + "🖋️": "fountain pen", + "🍀": "four leaf clover", + "🕓": "four o'clock", + "🕟": "four-thirty", + "🦊": "fox", + "🖼️": "framed picture", + "🍟": "french fries", + "🍤": "fried shrimp", + "🐸": "frog", + "🐥": "front-facing baby chick", + "☹️": "frowning face", + "😦": "frowning face with open mouth", + "⛽": "fuel pump", + "🌕": "full moon", + "🌝": "full moon face", + "⚱️": "funeral urn", + "🎲": "game die", + "🧄": "garlic", + "⚙️": "gear", + "💎": "gem stone", + "🧞": "genie", + "👻": "ghost", + "🫚": "ginger root", + "🦒": "giraffe", + "👧": "girl", + "👧🏿": "girl: dark skin tone", + "👧🏻": "girl: light skin tone", + "👧🏽": "girl: medium skin tone", + "👧🏾": "girl: medium-dark skin tone", + "👧🏼": "girl: medium-light skin tone", + "🥛": "glass of milk", + "👓": "glasses", + "🌎": "globe showing Americas", + "🌏": "globe showing Asia-Australia", + "🌍": "globe showing Europe-Africa", + "🌐": "globe with meridians", + "🧤": "gloves", + "🌟": "glowing star", + "🥅": "goal net", + "🐐": "goat", + "👺": "goblin", + "🥽": "goggles", + "🪿": "goose", + "🦍": "gorilla", + "🎓": "graduation cap", + "🍇": "grapes", + "🍏": "green apple", + "📗": "green book", + "🟢": "green circle", + "💚": "green heart", + "🥗": "green salad", + "🟩": "green square", + "🩶": "grey heart", + "😬": "grimacing face", + "😺": "grinning cat", + "😸": "grinning cat with smiling eyes", + "😀": "grinning face", + "😃": "grinning face with big eyes", + "😄": "grinning face with smiling eyes", + "😅": "grinning face with sweat", + "😆": "grinning squinting face", + "💗": "growing heart", + "💂": "guard", + "💂🏿": "guard: dark skin tone", + "💂🏻": "guard: light skin tone", + "💂🏽": "guard: medium skin tone", + "💂🏾": "guard: medium-dark skin tone", + "💂🏼": "guard: medium-light skin tone", + "🦮": "guide dog", + "🎸": "guitar", + "🪮": "hair pick", + "🍔": "hamburger", + "🔨": "hammer", + "⚒️": "hammer and pick", + "🛠️": "hammer and wrench", + "🪬": "hamsa", + "🐹": "hamster", + "🖐️": "hand with fingers splayed", + "🖐🏿": "hand with fingers splayed: dark skin tone", + "🖐🏻": "hand with fingers splayed: light skin tone", + "🖐🏽": "hand with fingers splayed: medium skin tone", + "🖐🏾": "hand with fingers splayed: medium-dark skin tone", + "🖐🏼": "hand with fingers splayed: medium-light skin tone", + "🫰": "hand with index finger and thumb crossed", + "🫰🏿": "hand with index finger and thumb crossed: dark skin tone", + "🫰🏻": "hand with index finger and thumb crossed: light skin tone", + "🫰🏽": "hand with index finger and thumb crossed: medium skin tone", + "🫰🏾": "hand with index finger and thumb crossed: medium-dark skin tone", + "🫰🏼": "hand with index finger and thumb crossed: medium-light skin tone", + "👜": "handbag", + "🤝": "handshake", + "🤝🏿": "handshake: dark skin tone", + "🤝🏻": "handshake: light skin tone", + "🤝🏽": "handshake: medium skin tone", + "🤝🏾": "handshake: medium-dark skin tone", + "🤝🏼": "handshake: medium-light skin tone", + "🐣": "hatching chick", + "🎧": "headphone", + "🪦": "headstone", + "🙉": "hear-no-evil monkey", + "💟": "heart decoration", + "❣️": "heart exclamation", + "🫶": "heart hands", + "🫶🏿": "heart hands: dark skin tone", + "🫶🏻": "heart hands: light skin tone", + "🫶🏽": "heart hands: medium skin tone", + "🫶🏾": "heart hands: medium-dark skin tone", + "🫶🏼": "heart hands: medium-light skin tone", + "♥️": "heart suit", + "💘": "heart with arrow", + "💝": "heart with ribbon", + "💲": "heavy dollar sign", + "🟰": "heavy equals sign", + "🦔": "hedgehog", + "🚁": "helicopter", + "🌿": "herb", + "🌺": "hibiscus", + "⚡": "high voltage", + "👠": "high-heeled shoe", + "🚄": "high-speed train", + "🥾": "hiking boot", + "🛕": "hindu temple", + "🦛": "hippopotamus", + "🕳️": "hole", + "⭕": "hollow red circle", + "🍯": "honey pot", + "🐝": "honeybee", + "🪝": "hook", + "🚥": "horizontal traffic light", + "🐎": "horse", + "🐴": "horse face", + "🏇": "horse racing", + "🏇🏿": "horse racing: dark skin tone", + "🏇🏻": "horse racing: light skin tone", + "🏇🏽": "horse racing: medium skin tone", + "🏇🏾": "horse racing: medium-dark skin tone", + "🏇🏼": "horse racing: medium-light skin tone", + "🏥": "hospital", + "☕": "hot beverage", + "🌭": "hot dog", + "🥵": "hot face", + "🌶️": "hot pepper", + "♨️": "hot springs", + "🏨": "hotel", + "⌛": "hourglass done", + "⏳": "hourglass not done", + "🏠": "house", + "🏡": "house with garden", + "🏘️": "houses", + "💯": "hundred points", + "😯": "hushed face", + "🛖": "hut", + "🪻": "hyacinth", + "🧊": "ice", + "🍨": "ice cream", + "🏒": "ice hockey", + "⛸️": "ice skate", + "🪪": "identification card", + "📥": "inbox tray", + "📨": "incoming envelope", + "🫵": "index pointing at the viewer", + "🫵🏿": "index pointing at the viewer: dark skin tone", + "🫵🏻": "index pointing at the viewer: light skin tone", + "🫵🏽": "index pointing at the viewer: medium skin tone", + "🫵🏾": "index pointing at the viewer: medium-dark skin tone", + "🫵🏼": "index pointing at the viewer: medium-light skin tone", + "☝️": "index pointing up", + "☝🏿": "index pointing up: dark skin tone", + "☝🏻": "index pointing up: light skin tone", + "☝🏽": "index pointing up: medium skin tone", + "☝🏾": "index pointing up: medium-dark skin tone", + "☝🏼": "index pointing up: medium-light skin tone", + "♾️": "infinity", + ℹ️: "information", + "🔤": "input latin letters", + "🔡": "input latin lowercase", + "🔠": "input latin uppercase", + "🔢": "input numbers", + "🔣": "input symbols", + "🎃": "jack-o-lantern", + "🫙": "jar", + "👖": "jeans", + "🪼": "jellyfish", + "🃏": "joker", + "🕹️": "joystick", + "🕋": "kaaba", + "🦘": "kangaroo", + "🔑": "key", + "⌨️": "keyboard", + "#️⃣": "keycap: #", + "*️⃣": "keycap: *", + "0️⃣": "keycap: 0", + "1️⃣": "keycap: 1", + "🔟": "keycap: 10", + "2️⃣": "keycap: 2", + "3️⃣": "keycap: 3", + "4️⃣": "keycap: 4", + "5️⃣": "keycap: 5", + "6️⃣": "keycap: 6", + "7️⃣": "keycap: 7", + "8️⃣": "keycap: 8", + "9️⃣": "keycap: 9", + "🪯": "khanda", + "🛴": "kick scooter", + "👘": "kimono", + "💏": "kiss", + "💋": "kiss mark", + "💏🏿": "kiss: dark skin tone", + "💏🏻": "kiss: light skin tone", + "💏🏽": "kiss: medium skin tone", + "💏🏾": "kiss: medium-dark skin tone", + "💏🏼": "kiss: medium-light skin tone", + "😽": "kissing cat", + "😗": "kissing face", + "😚": "kissing face with closed eyes", + "😙": "kissing face with smiling eyes", + "🔪": "kitchen knife", + "🪁": "kite", + "🥝": "kiwi fruit", + "🪢": "knot", + "🐨": "koala", + "🥼": "lab coat", + "🏷️": "label", + "🥍": "lacrosse", + "🪜": "ladder", + "🐞": "lady beetle", + "💻": "laptop", + "🔷": "large blue diamond", + "🔶": "large orange diamond", + "🌗": "last quarter moon", + "🌜": "last quarter moon face", + "⏮️": "last track button", + "✝️": "latin cross", + "🍃": "leaf fluttering in wind", + "🥬": "leafy green", + "📒": "ledger", + "⬅️": "left arrow", + "↪️": "left arrow curving right", + "🛅": "left luggage", + "🗨️": "left speech bubble", + "🤛": "left-facing fist", + "🤛🏿": "left-facing fist: dark skin tone", + "🤛🏻": "left-facing fist: light skin tone", + "🤛🏽": "left-facing fist: medium skin tone", + "🤛🏾": "left-facing fist: medium-dark skin tone", + "🤛🏼": "left-facing fist: medium-light skin tone", + "↔️": "left-right arrow", + "🫲": "leftwards hand", + "🫲🏿": "leftwards hand: dark skin tone", + "🫲🏻": "leftwards hand: light skin tone", + "🫲🏽": "leftwards hand: medium skin tone", + "🫲🏾": "leftwards hand: medium-dark skin tone", + "🫲🏼": "leftwards hand: medium-light skin tone", + "🫷": "leftwards pushing hand", + "🫷🏿": "leftwards pushing hand: dark skin tone", + "🫷🏻": "leftwards pushing hand: light skin tone", + "🫷🏽": "leftwards pushing hand: medium skin tone", + "🫷🏾": "leftwards pushing hand: medium-dark skin tone", + "🫷🏼": "leftwards pushing hand: medium-light skin tone", + "🦵": "leg", + "🦵🏿": "leg: dark skin tone", + "🦵🏻": "leg: light skin tone", + "🦵🏽": "leg: medium skin tone", + "🦵🏾": "leg: medium-dark skin tone", + "🦵🏼": "leg: medium-light skin tone", + "🍋": "lemon", + "🐆": "leopard", + "🎚️": "level slider", + "🩵": "light blue heart", + "💡": "light bulb", + "🚈": "light rail", + "🔗": "link", + "🖇️": "linked paperclips", + "🦁": "lion", + "💄": "lipstick", + "🚮": "litter in bin sign", + "🦎": "lizard", + "🦙": "llama", + "🦞": "lobster", + "🔒": "locked", + "🔐": "locked with key", + "🔏": "locked with pen", + "🚂": "locomotive", + "🍭": "lollipop", + "🪘": "long drum", + "🧴": "lotion bottle", + "🪷": "lotus", + "😭": "loudly crying face", + "📢": "loudspeaker", + "🏩": "love hotel", + "💌": "love letter", + "🤟": "love-you gesture", + "🤟🏿": "love-you gesture: dark skin tone", + "🤟🏻": "love-you gesture: light skin tone", + "🤟🏽": "love-you gesture: medium skin tone", + "🤟🏾": "love-you gesture: medium-dark skin tone", + "🤟🏼": "love-you gesture: medium-light skin tone", + "🪫": "low battery", + "🧳": "luggage", + "🫁": "lungs", + "🤥": "lying face", + "🧙": "mage", + "🧙🏿": "mage: dark skin tone", + "🧙🏻": "mage: light skin tone", + "🧙🏽": "mage: medium skin tone", + "🧙🏾": "mage: medium-dark skin tone", + "🧙🏼": "mage: medium-light skin tone", + "🪄": "magic wand", + "🧲": "magnet", + "🔍": "magnifying glass tilted left", + "🔎": "magnifying glass tilted right", + "🀄": "mahjong red dragon", + "♂️": "male sign", + "🦣": "mammoth", + "👨": "man", + "🕺": "man dancing", + "🕺🏿": "man dancing: dark skin tone", + "🕺🏻": "man dancing: light skin tone", + "🕺🏽": "man dancing: medium skin tone", + "🕺🏾": "man dancing: medium-dark skin tone", + "🕺🏼": "man dancing: medium-light skin tone", + "👞": "man's shoe", + "👨🏿": "man: dark skin tone", + "👨🏻": "man: light skin tone", + "👨🏽": "man: medium skin tone", + "👨🏾": "man: medium-dark skin tone", + "👨🏼": "man: medium-light skin tone", + "🥭": "mango", + "🕰️": "mantelpiece clock", + "🦽": "manual wheelchair", + "🗾": "map of Japan", + "🍁": "maple leaf", + "🪇": "maracas", + "🥋": "martial arts uniform", + "🧉": "mate", + "🍖": "meat on bone", + "🦾": "mechanical arm", + "🦿": "mechanical leg", + "⚕️": "medical symbol", + "📣": "megaphone", + "🍈": "melon", + "🫠": "melting face", + "📝": "memo", + "👬": "men holding hands", + "👬🏿": "men holding hands: dark skin tone", + "👬🏻": "men holding hands: light skin tone", + "👬🏽": "men holding hands: medium skin tone", + "👬🏾": "men holding hands: medium-dark skin tone", + "👬🏼": "men holding hands: medium-light skin tone", + "🚹": "men's room", + "🕎": "menorah", + "🧜": "merperson", + "🧜🏿": "merperson: dark skin tone", + "🧜🏻": "merperson: light skin tone", + "🧜🏽": "merperson: medium skin tone", + "🧜🏾": "merperson: medium-dark skin tone", + "🧜🏼": "merperson: medium-light skin tone", + "🚇": "metro", + "🦠": "microbe", + "🎤": "microphone", + "🔬": "microscope", + "🖕": "middle finger", + "🖕🏿": "middle finger: dark skin tone", + "🖕🏻": "middle finger: light skin tone", + "🖕🏽": "middle finger: medium skin tone", + "🖕🏾": "middle finger: medium-dark skin tone", + "🖕🏼": "middle finger: medium-light skin tone", + "🪖": "military helmet", + "🎖️": "military medal", + "🌌": "milky way", + "🚐": "minibus", + "➖": "minus", + "🪞": "mirror", + "🪩": "mirror ball", + "🗿": "moai", + "📱": "mobile phone", + "📴": "mobile phone off", + "📲": "mobile phone with arrow", + "💰": "money bag", + "💸": "money with wings", + "🤑": "money-mouth face", + "🐒": "monkey", + "🐵": "monkey face", + "🚝": "monorail", + "🥮": "moon cake", + "🎑": "moon viewing ceremony", + "🫎": "moose", + "🕌": "mosque", + "🦟": "mosquito", + "🛥️": "motor boat", + "🛵": "motor scooter", + "🏍️": "motorcycle", + "🦼": "motorized wheelchair", + "🛣️": "motorway", + "🗻": "mount fuji", + "⛰️": "mountain", + "🚠": "mountain cableway", + "🚞": "mountain railway", + "🐁": "mouse", + "🐭": "mouse face", + "🪤": "mouse trap", + "👄": "mouth", + "🎥": "movie camera", + "✖️": "multiply", + "🍄": "mushroom", + "🎹": "musical keyboard", + "🎵": "musical note", + "🎶": "musical notes", + "🎼": "musical score", + "🔇": "muted speaker", + "💅": "nail polish", + "💅🏿": "nail polish: dark skin tone", + "💅🏻": "nail polish: light skin tone", + "💅🏽": "nail polish: medium skin tone", + "💅🏾": "nail polish: medium-dark skin tone", + "💅🏼": "nail polish: medium-light skin tone", + "📛": "name badge", + "🏞️": "national park", + "🤢": "nauseated face", + "🧿": "nazar amulet", + "👔": "necktie", + "🤓": "nerd face", + "🪺": "nest with eggs", + "🪆": "nesting dolls", + "😐": "neutral face", + "🌑": "new moon", + "🌚": "new moon face", + "📰": "newspaper", + "⏭️": "next track button", + "🌃": "night with stars", + "🕘": "nine o'clock", + "🕤": "nine-thirty", + "🥷": "ninja", + "🥷🏿": "ninja: dark skin tone", + "🥷🏻": "ninja: light skin tone", + "🥷🏽": "ninja: medium skin tone", + "🥷🏾": "ninja: medium-dark skin tone", + "🥷🏼": "ninja: medium-light skin tone", + "🚳": "no bicycles", + "⛔": "no entry", + "🚯": "no littering", + "📵": "no mobile phones", + "🔞": "no one under eighteen", + "🚷": "no pedestrians", + "🚭": "no smoking", + "🚱": "non-potable water", + "👃": "nose", + "👃🏿": "nose: dark skin tone", + "👃🏻": "nose: light skin tone", + "👃🏽": "nose: medium skin tone", + "👃🏾": "nose: medium-dark skin tone", + "👃🏼": "nose: medium-light skin tone", + "📓": "notebook", + "📔": "notebook with decorative cover", + "🔩": "nut and bolt", + "🐙": "octopus", + "🍢": "oden", + "🏢": "office building", + "👹": "ogre", + "🛢️": "oil drum", + "🗝️": "old key", + "👴": "old man", + "👴🏿": "old man: dark skin tone", + "👴🏻": "old man: light skin tone", + "👴🏽": "old man: medium skin tone", + "👴🏾": "old man: medium-dark skin tone", + "👴🏼": "old man: medium-light skin tone", + "👵": "old woman", + "👵🏿": "old woman: dark skin tone", + "👵🏻": "old woman: light skin tone", + "👵🏽": "old woman: medium skin tone", + "👵🏾": "old woman: medium-dark skin tone", + "👵🏼": "old woman: medium-light skin tone", + "🧓": "older person", + "🧓🏿": "older person: dark skin tone", + "🧓🏻": "older person: light skin tone", + "🧓🏽": "older person: medium skin tone", + "🧓🏾": "older person: medium-dark skin tone", + "🧓🏼": "older person: medium-light skin tone", + "🫒": "olive", + "🕉️": "om", + "🚘": "oncoming automobile", + "🚍": "oncoming bus", + "👊": "oncoming fist", + "👊🏿": "oncoming fist: dark skin tone", + "👊🏻": "oncoming fist: light skin tone", + "👊🏽": "oncoming fist: medium skin tone", + "👊🏾": "oncoming fist: medium-dark skin tone", + "👊🏼": "oncoming fist: medium-light skin tone", + "🚔": "oncoming police car", + "🚖": "oncoming taxi", + "🕐": "one o'clock", + "🩱": "one-piece swimsuit", + "🕜": "one-thirty", + "🧅": "onion", + "📖": "open book", + "📂": "open file folder", + "👐": "open hands", + "👐🏿": "open hands: dark skin tone", + "👐🏻": "open hands: light skin tone", + "👐🏽": "open hands: medium skin tone", + "👐🏾": "open hands: medium-dark skin tone", + "👐🏼": "open hands: medium-light skin tone", + "📭": "open mailbox with lowered flag", + "📬": "open mailbox with raised flag", + "💿": "optical disk", + "📙": "orange book", + "🟠": "orange circle", + "🧡": "orange heart", + "🟧": "orange square", + "🦧": "orangutan", + "☦️": "orthodox cross", + "🦦": "otter", + "📤": "outbox tray", + "🦉": "owl", + "🐂": "ox", + "🦪": "oyster", + "📦": "package", + "📄": "page facing up", + "📃": "page with curl", + "📟": "pager", + "🖌️": "paintbrush", + "🫳": "palm down hand", + "🫳🏿": "palm down hand: dark skin tone", + "🫳🏻": "palm down hand: light skin tone", + "🫳🏽": "palm down hand: medium skin tone", + "🫳🏾": "palm down hand: medium-dark skin tone", + "🫳🏼": "palm down hand: medium-light skin tone", + "🌴": "palm tree", + "🫴": "palm up hand", + "🫴🏿": "palm up hand: dark skin tone", + "🫴🏻": "palm up hand: light skin tone", + "🫴🏽": "palm up hand: medium skin tone", + "🫴🏾": "palm up hand: medium-dark skin tone", + "🫴🏼": "palm up hand: medium-light skin tone", + "🤲": "palms up together", + "🤲🏿": "palms up together: dark skin tone", + "🤲🏻": "palms up together: light skin tone", + "🤲🏽": "palms up together: medium skin tone", + "🤲🏾": "palms up together: medium-dark skin tone", + "🤲🏼": "palms up together: medium-light skin tone", + "🥞": "pancakes", + "🐼": "panda", + "📎": "paperclip", + "🪂": "parachute", + "🦜": "parrot", + "〽️": "part alternation mark", + "🎉": "party popper", + "🥳": "partying face", + "🛳️": "passenger ship", + "🛂": "passport control", + "⏸️": "pause button", + "🐾": "paw prints", + "🫛": "pea pod", + "☮️": "peace symbol", + "🍑": "peach", + "🦚": "peacock", + "🥜": "peanuts", + "🍐": "pear", + "🖊️": "pen", + "✏️": "pencil", + "🐧": "penguin", + "😔": "pensive face", + "🫂": "people hugging", + "👯": "people with bunny ears", + "🤼": "people wrestling", + "🎭": "performing arts", + "😣": "persevering face", + "🧑": "person", + "🚴": "person biking", + "🚴🏿": "person biking: dark skin tone", + "🚴🏻": "person biking: light skin tone", + "🚴🏽": "person biking: medium skin tone", + "🚴🏾": "person biking: medium-dark skin tone", + "🚴🏼": "person biking: medium-light skin tone", + "⛹️": "person bouncing ball", + "⛹🏿": "person bouncing ball: dark skin tone", + "⛹🏻": "person bouncing ball: light skin tone", + "⛹🏽": "person bouncing ball: medium skin tone", + "⛹🏾": "person bouncing ball: medium-dark skin tone", + "⛹🏼": "person bouncing ball: medium-light skin tone", + "🙇": "person bowing", + "🙇🏿": "person bowing: dark skin tone", + "🙇🏻": "person bowing: light skin tone", + "🙇🏽": "person bowing: medium skin tone", + "🙇🏾": "person bowing: medium-dark skin tone", + "🙇🏼": "person bowing: medium-light skin tone", + "🤸": "person cartwheeling", + "🤸🏿": "person cartwheeling: dark skin tone", + "🤸🏻": "person cartwheeling: light skin tone", + "🤸🏽": "person cartwheeling: medium skin tone", + "🤸🏾": "person cartwheeling: medium-dark skin tone", + "🤸🏼": "person cartwheeling: medium-light skin tone", + "🧗": "person climbing", + "🧗🏿": "person climbing: dark skin tone", + "🧗🏻": "person climbing: light skin tone", + "🧗🏽": "person climbing: medium skin tone", + "🧗🏾": "person climbing: medium-dark skin tone", + "🧗🏼": "person climbing: medium-light skin tone", + "🤦": "person facepalming", + "🤦🏿": "person facepalming: dark skin tone", + "🤦🏻": "person facepalming: light skin tone", + "🤦🏽": "person facepalming: medium skin tone", + "🤦🏾": "person facepalming: medium-dark skin tone", + "🤦🏼": "person facepalming: medium-light skin tone", + "🤺": "person fencing", + "🙍": "person frowning", + "🙍🏿": "person frowning: dark skin tone", + "🙍🏻": "person frowning: light skin tone", + "🙍🏽": "person frowning: medium skin tone", + "🙍🏾": "person frowning: medium-dark skin tone", + "🙍🏼": "person frowning: medium-light skin tone", + "🙅": "person gesturing NO", + "🙅🏿": "person gesturing NO: dark skin tone", + "🙅🏻": "person gesturing NO: light skin tone", + "🙅🏽": "person gesturing NO: medium skin tone", + "🙅🏾": "person gesturing NO: medium-dark skin tone", + "🙅🏼": "person gesturing NO: medium-light skin tone", + "🙆": "person gesturing OK", + "🙆🏿": "person gesturing OK: dark skin tone", + "🙆🏻": "person gesturing OK: light skin tone", + "🙆🏽": "person gesturing OK: medium skin tone", + "🙆🏾": "person gesturing OK: medium-dark skin tone", + "🙆🏼": "person gesturing OK: medium-light skin tone", + "💇": "person getting haircut", + "💇🏿": "person getting haircut: dark skin tone", + "💇🏻": "person getting haircut: light skin tone", + "💇🏽": "person getting haircut: medium skin tone", + "💇🏾": "person getting haircut: medium-dark skin tone", + "💇🏼": "person getting haircut: medium-light skin tone", + "💆": "person getting massage", + "💆🏿": "person getting massage: dark skin tone", + "💆🏻": "person getting massage: light skin tone", + "💆🏽": "person getting massage: medium skin tone", + "💆🏾": "person getting massage: medium-dark skin tone", + "💆🏼": "person getting massage: medium-light skin tone", + "🏌️": "person golfing", + "🏌🏿": "person golfing: dark skin tone", + "🏌🏻": "person golfing: light skin tone", + "🏌🏽": "person golfing: medium skin tone", + "🏌🏾": "person golfing: medium-dark skin tone", + "🏌🏼": "person golfing: medium-light skin tone", + "🛌": "person in bed", + "🛌🏿": "person in bed: dark skin tone", + "🛌🏻": "person in bed: light skin tone", + "🛌🏽": "person in bed: medium skin tone", + "🛌🏾": "person in bed: medium-dark skin tone", + "🛌🏼": "person in bed: medium-light skin tone", + "🧘": "person in lotus position", + "🧘🏿": "person in lotus position: dark skin tone", + "🧘🏻": "person in lotus position: light skin tone", + "🧘🏽": "person in lotus position: medium skin tone", + "🧘🏾": "person in lotus position: medium-dark skin tone", + "🧘🏼": "person in lotus position: medium-light skin tone", + "🧖": "person in steamy room", + "🧖🏿": "person in steamy room: dark skin tone", + "🧖🏻": "person in steamy room: light skin tone", + "🧖🏽": "person in steamy room: medium skin tone", + "🧖🏾": "person in steamy room: medium-dark skin tone", + "🧖🏼": "person in steamy room: medium-light skin tone", + "🕴️": "person in suit levitating", + "🕴🏿": "person in suit levitating: dark skin tone", + "🕴🏻": "person in suit levitating: light skin tone", + "🕴🏽": "person in suit levitating: medium skin tone", + "🕴🏾": "person in suit levitating: medium-dark skin tone", + "🕴🏼": "person in suit levitating: medium-light skin tone", + "🤵": "person in tuxedo", + "🤵🏿": "person in tuxedo: dark skin tone", + "🤵🏻": "person in tuxedo: light skin tone", + "🤵🏽": "person in tuxedo: medium skin tone", + "🤵🏾": "person in tuxedo: medium-dark skin tone", + "🤵🏼": "person in tuxedo: medium-light skin tone", + "🤹": "person juggling", + "🤹🏿": "person juggling: dark skin tone", + "🤹🏻": "person juggling: light skin tone", + "🤹🏽": "person juggling: medium skin tone", + "🤹🏾": "person juggling: medium-dark skin tone", + "🤹🏼": "person juggling: medium-light skin tone", + "🧎": "person kneeling", + "🧎🏿": "person kneeling: dark skin tone", + "🧎🏻": "person kneeling: light skin tone", + "🧎🏽": "person kneeling: medium skin tone", + "🧎🏾": "person kneeling: medium-dark skin tone", + "🧎🏼": "person kneeling: medium-light skin tone", + "🏋️": "person lifting weights", + "🏋🏿": "person lifting weights: dark skin tone", + "🏋🏻": "person lifting weights: light skin tone", + "🏋🏽": "person lifting weights: medium skin tone", + "🏋🏾": "person lifting weights: medium-dark skin tone", + "🏋🏼": "person lifting weights: medium-light skin tone", + "🚵": "person mountain biking", + "🚵🏿": "person mountain biking: dark skin tone", + "🚵🏻": "person mountain biking: light skin tone", + "🚵🏽": "person mountain biking: medium skin tone", + "🚵🏾": "person mountain biking: medium-dark skin tone", + "🚵🏼": "person mountain biking: medium-light skin tone", + "🤾": "person playing handball", + "🤾🏿": "person playing handball: dark skin tone", + "🤾🏻": "person playing handball: light skin tone", + "🤾🏽": "person playing handball: medium skin tone", + "🤾🏾": "person playing handball: medium-dark skin tone", + "🤾🏼": "person playing handball: medium-light skin tone", + "🤽": "person playing water polo", + "🤽🏿": "person playing water polo: dark skin tone", + "🤽🏻": "person playing water polo: light skin tone", + "🤽🏽": "person playing water polo: medium skin tone", + "🤽🏾": "person playing water polo: medium-dark skin tone", + "🤽🏼": "person playing water polo: medium-light skin tone", + "🙎": "person pouting", + "🙎🏿": "person pouting: dark skin tone", + "🙎🏻": "person pouting: light skin tone", + "🙎🏽": "person pouting: medium skin tone", + "🙎🏾": "person pouting: medium-dark skin tone", + "🙎🏼": "person pouting: medium-light skin tone", + "🙋": "person raising hand", + "🙋🏿": "person raising hand: dark skin tone", + "🙋🏻": "person raising hand: light skin tone", + "🙋🏽": "person raising hand: medium skin tone", + "🙋🏾": "person raising hand: medium-dark skin tone", + "🙋🏼": "person raising hand: medium-light skin tone", + "🚣": "person rowing boat", + "🚣🏿": "person rowing boat: dark skin tone", + "🚣🏻": "person rowing boat: light skin tone", + "🚣🏽": "person rowing boat: medium skin tone", + "🚣🏾": "person rowing boat: medium-dark skin tone", + "🚣🏼": "person rowing boat: medium-light skin tone", + "🏃": "person running", + "🏃🏿": "person running: dark skin tone", + "🏃🏻": "person running: light skin tone", + "🏃🏽": "person running: medium skin tone", + "🏃🏾": "person running: medium-dark skin tone", + "🏃🏼": "person running: medium-light skin tone", + "🤷": "person shrugging", + "🤷🏿": "person shrugging: dark skin tone", + "🤷🏻": "person shrugging: light skin tone", + "🤷🏽": "person shrugging: medium skin tone", + "🤷🏾": "person shrugging: medium-dark skin tone", + "🤷🏼": "person shrugging: medium-light skin tone", + "🧍": "person standing", + "🧍🏿": "person standing: dark skin tone", + "🧍🏻": "person standing: light skin tone", + "🧍🏽": "person standing: medium skin tone", + "🧍🏾": "person standing: medium-dark skin tone", + "🧍🏼": "person standing: medium-light skin tone", + "🏄": "person surfing", + "🏄🏿": "person surfing: dark skin tone", + "🏄🏻": "person surfing: light skin tone", + "🏄🏽": "person surfing: medium skin tone", + "🏄🏾": "person surfing: medium-dark skin tone", + "🏄🏼": "person surfing: medium-light skin tone", + "🏊": "person swimming", + "🏊🏿": "person swimming: dark skin tone", + "🏊🏻": "person swimming: light skin tone", + "🏊🏽": "person swimming: medium skin tone", + "🏊🏾": "person swimming: medium-dark skin tone", + "🏊🏼": "person swimming: medium-light skin tone", + "🛀": "person taking bath", + "🛀🏿": "person taking bath: dark skin tone", + "🛀🏻": "person taking bath: light skin tone", + "🛀🏽": "person taking bath: medium skin tone", + "🛀🏾": "person taking bath: medium-dark skin tone", + "🛀🏼": "person taking bath: medium-light skin tone", + "💁": "person tipping hand", + "💁🏿": "person tipping hand: dark skin tone", + "💁🏻": "person tipping hand: light skin tone", + "💁🏽": "person tipping hand: medium skin tone", + "💁🏾": "person tipping hand: medium-dark skin tone", + "💁🏼": "person tipping hand: medium-light skin tone", + "🚶": "person walking", + "🚶🏿": "person walking: dark skin tone", + "🚶🏻": "person walking: light skin tone", + "🚶🏽": "person walking: medium skin tone", + "🚶🏾": "person walking: medium-dark skin tone", + "🚶🏼": "person walking: medium-light skin tone", + "👳": "person wearing turban", + "👳🏿": "person wearing turban: dark skin tone", + "👳🏻": "person wearing turban: light skin tone", + "👳🏽": "person wearing turban: medium skin tone", + "👳🏾": "person wearing turban: medium-dark skin tone", + "👳🏼": "person wearing turban: medium-light skin tone", + "🫅": "person with crown", + "🫅🏿": "person with crown: dark skin tone", + "🫅🏻": "person with crown: light skin tone", + "🫅🏽": "person with crown: medium skin tone", + "🫅🏾": "person with crown: medium-dark skin tone", + "🫅🏼": "person with crown: medium-light skin tone", + "👲": "person with skullcap", + "👲🏿": "person with skullcap: dark skin tone", + "👲🏻": "person with skullcap: light skin tone", + "👲🏽": "person with skullcap: medium skin tone", + "👲🏾": "person with skullcap: medium-dark skin tone", + "👲🏼": "person with skullcap: medium-light skin tone", + "👰": "person with veil", + "👰🏿": "person with veil: dark skin tone", + "👰🏻": "person with veil: light skin tone", + "👰🏽": "person with veil: medium skin tone", + "👰🏾": "person with veil: medium-dark skin tone", + "👰🏼": "person with veil: medium-light skin tone", + "🧔": "person: beard", + "👱": "person: blond hair", + "🧑🏿": "person: dark skin tone", + "🧔🏿": "person: dark skin tone, beard", + "👱🏿": "person: dark skin tone, blond hair", + "🧑🏻": "person: light skin tone", + "🧔🏻": "person: light skin tone, beard", + "👱🏻": "person: light skin tone, blond hair", + "🧑🏽": "person: medium skin tone", + "🧔🏽": "person: medium skin tone, beard", + "👱🏽": "person: medium skin tone, blond hair", + "🧑🏾": "person: medium-dark skin tone", + "🧔🏾": "person: medium-dark skin tone, beard", + "👱🏾": "person: medium-dark skin tone, blond hair", + "🧑🏼": "person: medium-light skin tone", + "🧔🏼": "person: medium-light skin tone, beard", + "👱🏼": "person: medium-light skin tone, blond hair", + "🧫": "petri dish", + "⛏️": "pick", + "🛻": "pickup truck", + "🥧": "pie", + "🐖": "pig", + "🐷": "pig face", + "🐽": "pig nose", + "💩": "pile of poo", + "💊": "pill", + "🤌": "pinched fingers", + "🤌🏿": "pinched fingers: dark skin tone", + "🤌🏻": "pinched fingers: light skin tone", + "🤌🏽": "pinched fingers: medium skin tone", + "🤌🏾": "pinched fingers: medium-dark skin tone", + "🤌🏼": "pinched fingers: medium-light skin tone", + "🤏": "pinching hand", + "🤏🏿": "pinching hand: dark skin tone", + "🤏🏻": "pinching hand: light skin tone", + "🤏🏽": "pinching hand: medium skin tone", + "🤏🏾": "pinching hand: medium-dark skin tone", + "🤏🏼": "pinching hand: medium-light skin tone", + "🎍": "pine decoration", + "🍍": "pineapple", + "🏓": "ping pong", + "🩷": "pink heart", + "🍕": "pizza", + "🪅": "piñata", + "🪧": "placard", + "🛐": "place of worship", + "▶️": "play button", + "⏯️": "play or pause button", + "🛝": "playground slide", + "🥺": "pleading face", + "🪠": "plunger", + "➕": "plus", + "🚓": "police car", + "🚨": "police car light", + "👮": "police officer", + "👮🏿": "police officer: dark skin tone", + "👮🏻": "police officer: light skin tone", + "👮🏽": "police officer: medium skin tone", + "👮🏾": "police officer: medium-dark skin tone", + "👮🏼": "police officer: medium-light skin tone", + "🐩": "poodle", + "🎱": "pool 8 ball", + "🍿": "popcorn", + "🏤": "post office", + "📯": "postal horn", + "📮": "postbox", + "🍲": "pot of food", + "🚰": "potable water", + "🥔": "potato", + "🪴": "potted plant", + "🍗": "poultry leg", + "💷": "pound banknote", + "🫗": "pouring liquid", + "😾": "pouting cat", + "📿": "prayer beads", + "🫃": "pregnant man", + "🫃🏿": "pregnant man: dark skin tone", + "🫃🏻": "pregnant man: light skin tone", + "🫃🏽": "pregnant man: medium skin tone", + "🫃🏾": "pregnant man: medium-dark skin tone", + "🫃🏼": "pregnant man: medium-light skin tone", + "🫄": "pregnant person", + "🫄🏿": "pregnant person: dark skin tone", + "🫄🏻": "pregnant person: light skin tone", + "🫄🏽": "pregnant person: medium skin tone", + "🫄🏾": "pregnant person: medium-dark skin tone", + "🫄🏼": "pregnant person: medium-light skin tone", + "🤰": "pregnant woman", + "🤰🏿": "pregnant woman: dark skin tone", + "🤰🏻": "pregnant woman: light skin tone", + "🤰🏽": "pregnant woman: medium skin tone", + "🤰🏾": "pregnant woman: medium-dark skin tone", + "🤰🏼": "pregnant woman: medium-light skin tone", + "🥨": "pretzel", + "🤴": "prince", + "🤴🏿": "prince: dark skin tone", + "🤴🏻": "prince: light skin tone", + "🤴🏽": "prince: medium skin tone", + "🤴🏾": "prince: medium-dark skin tone", + "🤴🏼": "prince: medium-light skin tone", + "👸": "princess", + "👸🏿": "princess: dark skin tone", + "👸🏻": "princess: light skin tone", + "👸🏽": "princess: medium skin tone", + "👸🏾": "princess: medium-dark skin tone", + "👸🏼": "princess: medium-light skin tone", + "🖨️": "printer", + "🚫": "prohibited", + "🟣": "purple circle", + "💜": "purple heart", + "🟪": "purple square", + "👛": "purse", + "📌": "pushpin", + "🧩": "puzzle piece", + "🐇": "rabbit", + "🐰": "rabbit face", + "🦝": "raccoon", + "🏎️": "racing car", + "📻": "radio", + "🔘": "radio button", + "☢️": "radioactive", + "🚃": "railway car", + "🛤️": "railway track", + "🌈": "rainbow", + "🤚": "raised back of hand", + "🤚🏿": "raised back of hand: dark skin tone", + "🤚🏻": "raised back of hand: light skin tone", + "🤚🏽": "raised back of hand: medium skin tone", + "🤚🏾": "raised back of hand: medium-dark skin tone", + "🤚🏼": "raised back of hand: medium-light skin tone", + "✊": "raised fist", + "✊🏿": "raised fist: dark skin tone", + "✊🏻": "raised fist: light skin tone", + "✊🏽": "raised fist: medium skin tone", + "✊🏾": "raised fist: medium-dark skin tone", + "✊🏼": "raised fist: medium-light skin tone", + "✋": "raised hand", + "✋🏿": "raised hand: dark skin tone", + "✋🏻": "raised hand: light skin tone", + "✋🏽": "raised hand: medium skin tone", + "✋🏾": "raised hand: medium-dark skin tone", + "✋🏼": "raised hand: medium-light skin tone", + "🙌": "raising hands", + "🙌🏿": "raising hands: dark skin tone", + "🙌🏻": "raising hands: light skin tone", + "🙌🏽": "raising hands: medium skin tone", + "🙌🏾": "raising hands: medium-dark skin tone", + "🙌🏼": "raising hands: medium-light skin tone", + "🐏": "ram", + "🐀": "rat", + "🪒": "razor", + "🧾": "receipt", + "⏺️": "record button", + "♻️": "recycling symbol", + "🍎": "red apple", + "🔴": "red circle", + "🧧": "red envelope", + "❗": "red exclamation mark", + "❤️": "red heart", + "🏮": "red paper lantern", + "❓": "red question mark", + "🟥": "red square", + "🔻": "red triangle pointed down", + "🔺": "red triangle pointed up", + "®️": "registered", + "😌": "relieved face", + "🎗️": "reminder ribbon", + "🔁": "repeat button", + "🔂": "repeat single button", + "⛑️": "rescue worker's helmet", + "🚻": "restroom", + "◀️": "reverse button", + "💞": "revolving hearts", + "🦏": "rhinoceros", + "🎀": "ribbon", + "🍙": "rice ball", + "🍘": "rice cracker", + "🗯️": "right anger bubble", + "➡️": "right arrow", + "⤵️": "right arrow curving down", + "↩️": "right arrow curving left", + "⤴️": "right arrow curving up", + "🤜": "right-facing fist", + "🤜🏿": "right-facing fist: dark skin tone", + "🤜🏻": "right-facing fist: light skin tone", + "🤜🏽": "right-facing fist: medium skin tone", + "🤜🏾": "right-facing fist: medium-dark skin tone", + "🤜🏼": "right-facing fist: medium-light skin tone", + "🫱": "rightwards hand", + "🫱🏿": "rightwards hand: dark skin tone", + "🫱🏻": "rightwards hand: light skin tone", + "🫱🏽": "rightwards hand: medium skin tone", + "🫱🏾": "rightwards hand: medium-dark skin tone", + "🫱🏼": "rightwards hand: medium-light skin tone", + "🫸": "rightwards pushing hand", + "🫸🏿": "rightwards pushing hand: dark skin tone", + "🫸🏻": "rightwards pushing hand: light skin tone", + "🫸🏽": "rightwards pushing hand: medium skin tone", + "🫸🏾": "rightwards pushing hand: medium-dark skin tone", + "🫸🏼": "rightwards pushing hand: medium-light skin tone", + "💍": "ring", + "🛟": "ring buoy", + "🪐": "ringed planet", + "🍠": "roasted sweet potato", + "🤖": "robot", + "🪨": "rock", + "🚀": "rocket", + "🧻": "roll of paper", + "🗞️": "rolled-up newspaper", + "🎢": "roller coaster", + "🛼": "roller skate", + "🤣": "rolling on the floor laughing", + "🐓": "rooster", + "🌹": "rose", + "🏵️": "rosette", + "📍": "round pushpin", + "🏉": "rugby football", + "🎽": "running shirt", + "👟": "running shoe", + "😥": "sad but relieved face", + "🧷": "safety pin", + "🦺": "safety vest", + "⛵": "sailboat", + "🍶": "sake", + "🧂": "salt", + "🫡": "saluting face", + "🥪": "sandwich", + "🥻": "sari", + "🛰️": "satellite", + "📡": "satellite antenna", + "🦕": "sauropod", + "🎷": "saxophone", + "🧣": "scarf", + "🏫": "school", + "✂️": "scissors", + "🦂": "scorpion", + "🪛": "screwdriver", + "📜": "scroll", + "🦭": "seal", + "💺": "seat", + "🙈": "see-no-evil monkey", + "🌱": "seedling", + "🤳": "selfie", + "🤳🏿": "selfie: dark skin tone", + "🤳🏻": "selfie: light skin tone", + "🤳🏽": "selfie: medium skin tone", + "🤳🏾": "selfie: medium-dark skin tone", + "🤳🏼": "selfie: medium-light skin tone", + "🕖": "seven o'clock", + "🕢": "seven-thirty", + "🪡": "sewing needle", + "🫨": "shaking face", + "🥘": "shallow pan of food", + "☘️": "shamrock", + "🦈": "shark", + "🍧": "shaved ice", + "🌾": "sheaf of rice", + "🛡️": "shield", + "⛩️": "shinto shrine", + "🚢": "ship", + "🌠": "shooting star", + "🛍️": "shopping bags", + "🛒": "shopping cart", + "🍰": "shortcake", + "🩳": "shorts", + "🚿": "shower", + "🦐": "shrimp", + "🔀": "shuffle tracks button", + "🤫": "shushing face", + "🤘": "sign of the horns", + "🤘🏿": "sign of the horns: dark skin tone", + "🤘🏻": "sign of the horns: light skin tone", + "🤘🏽": "sign of the horns: medium skin tone", + "🤘🏾": "sign of the horns: medium-dark skin tone", + "🤘🏼": "sign of the horns: medium-light skin tone", + "🕕": "six o'clock", + "🕡": "six-thirty", + "🛹": "skateboard", + "⛷️": "skier", + "🎿": "skis", + "💀": "skull", + "☠️": "skull and crossbones", + "🦨": "skunk", + "🛷": "sled", + "😴": "sleeping face", + "😪": "sleepy face", + "🙁": "slightly frowning face", + "🙂": "slightly smiling face", + "🎰": "slot machine", + "🦥": "sloth", + "🛩️": "small airplane", + "🔹": "small blue diamond", + "🔸": "small orange diamond", + "😻": "smiling cat with heart-eyes", + "☺️": "smiling face", + "😇": "smiling face with halo", + "😍": "smiling face with heart-eyes", + "🥰": "smiling face with hearts", + "😈": "smiling face with horns", + "🤗": "smiling face with open hands", + "😊": "smiling face with smiling eyes", + "😎": "smiling face with sunglasses", + "🥲": "smiling face with tear", + "😏": "smirking face", + "🐌": "snail", + "🐍": "snake", + "🤧": "sneezing face", + "🏔️": "snow-capped mountain", + "🏂": "snowboarder", + "🏂🏿": "snowboarder: dark skin tone", + "🏂🏻": "snowboarder: light skin tone", + "🏂🏽": "snowboarder: medium skin tone", + "🏂🏾": "snowboarder: medium-dark skin tone", + "🏂🏼": "snowboarder: medium-light skin tone", + "❄️": "snowflake", + "☃️": "snowman", + "⛄": "snowman without snow", + "🧼": "soap", + "⚽": "soccer ball", + "🧦": "socks", + "🍦": "soft ice cream", + "🥎": "softball", + "♠️": "spade suit", + "🍝": "spaghetti", + "❇️": "sparkle", + "🎇": "sparkler", + "✨": "sparkles", + "💖": "sparkling heart", + "🙊": "speak-no-evil monkey", + "🔊": "speaker high volume", + "🔈": "speaker low volume", + "🔉": "speaker medium volume", + "🗣️": "speaking head", + "💬": "speech balloon", + "🚤": "speedboat", + "🕷️": "spider", + "🕸️": "spider web", + "🗓️": "spiral calendar", + "🗒️": "spiral notepad", + "🐚": "spiral shell", + "🧽": "sponge", + "🥄": "spoon", + "🚙": "sport utility vehicle", + "🏅": "sports medal", + "🐳": "spouting whale", + "🦑": "squid", + "😝": "squinting face with tongue", + "🏟️": "stadium", + "⭐": "star", + "☪️": "star and crescent", + "✡️": "star of David", + "🤩": "star-struck", + "🚉": "station", + "🍜": "steaming bowl", + "🩺": "stethoscope", + "⏹️": "stop button", + "🛑": "stop sign", + "⏱️": "stopwatch", + "📏": "straight ruler", + "🍓": "strawberry", + "🎙️": "studio microphone", + "🥙": "stuffed flatbread", + "☀️": "sun", + "⛅": "sun behind cloud", + "🌥️": "sun behind large cloud", + "🌦️": "sun behind rain cloud", + "🌤️": "sun behind small cloud", + "🌞": "sun with face", + "🌻": "sunflower", + "🕶️": "sunglasses", + "🌅": "sunrise", + "🌄": "sunrise over mountains", + "🌇": "sunset", + "🦸": "superhero", + "🦸🏿": "superhero: dark skin tone", + "🦸🏻": "superhero: light skin tone", + "🦸🏽": "superhero: medium skin tone", + "🦸🏾": "superhero: medium-dark skin tone", + "🦸🏼": "superhero: medium-light skin tone", + "🦹": "supervillain", + "🦹🏿": "supervillain: dark skin tone", + "🦹🏻": "supervillain: light skin tone", + "🦹🏽": "supervillain: medium skin tone", + "🦹🏾": "supervillain: medium-dark skin tone", + "🦹🏼": "supervillain: medium-light skin tone", + "🍣": "sushi", + "🚟": "suspension railway", + "🦢": "swan", + "💦": "sweat droplets", + "🕍": "synagogue", + "💉": "syringe", + "👕": "t-shirt", + "🌮": "taco", + "🥡": "takeout box", + "🫔": "tamale", + "🎋": "tanabata tree", + "🍊": "tangerine", + "🚕": "taxi", + "🍵": "teacup without handle", + "🫖": "teapot", + "📆": "tear-off calendar", + "🧸": "teddy bear", + "☎️": "telephone", + "📞": "telephone receiver", + "🔭": "telescope", + "📺": "television", + "🕙": "ten o'clock", + "🕥": "ten-thirty", + "🎾": "tennis", + "⛺": "tent", + "🧪": "test tube", + "🌡️": "thermometer", + "🤔": "thinking face", + "🩴": "thong sandal", + "💭": "thought balloon", + "🧵": "thread", + "🕒": "three o'clock", + "🕞": "three-thirty", + "👎": "thumbs down", + "👎🏿": "thumbs down: dark skin tone", + "👎🏻": "thumbs down: light skin tone", + "👎🏽": "thumbs down: medium skin tone", + "👎🏾": "thumbs down: medium-dark skin tone", + "👎🏼": "thumbs down: medium-light skin tone", + "👍": "thumbs up", + "👍🏿": "thumbs up: dark skin tone", + "👍🏻": "thumbs up: light skin tone", + "👍🏽": "thumbs up: medium skin tone", + "👍🏾": "thumbs up: medium-dark skin tone", + "👍🏼": "thumbs up: medium-light skin tone", + "🎫": "ticket", + "🐅": "tiger", + "🐯": "tiger face", + "⏲️": "timer clock", + "😫": "tired face", + "🚽": "toilet", + "🍅": "tomato", + "👅": "tongue", + "🧰": "toolbox", + "🦷": "tooth", + "🪥": "toothbrush", + "🎩": "top hat", + "🌪️": "tornado", + "🖲️": "trackball", + "🚜": "tractor", + "™️": "trade mark", + "🚆": "train", + "🚊": "tram", + "🚋": "tram car", + "⚧️": "transgender symbol", + "🚩": "triangular flag", + "📐": "triangular ruler", + "🔱": "trident emblem", + "🧌": "troll", + "🚎": "trolleybus", + "🏆": "trophy", + "🍹": "tropical drink", + "🐠": "tropical fish", + "🎺": "trumpet", + "🌷": "tulip", + "🥃": "tumbler glass", + "🦃": "turkey", + "🐢": "turtle", + "🕛": "twelve o'clock", + "🕧": "twelve-thirty", + "💕": "two hearts", + "🕑": "two o'clock", + "🐫": "two-hump camel", + "🕝": "two-thirty", + "☂️": "umbrella", + "⛱️": "umbrella on ground", + "☔": "umbrella with rain drops", + "😒": "unamused face", + "🦄": "unicorn", + "🔓": "unlocked", + "⬆️": "up arrow", + "↕️": "up-down arrow", + "↖️": "up-left arrow", + "↗️": "up-right arrow", + "🙃": "upside-down face", + "🔼": "upwards button", + "🧛": "vampire", + "🧛🏿": "vampire: dark skin tone", + "🧛🏻": "vampire: light skin tone", + "🧛🏽": "vampire: medium skin tone", + "🧛🏾": "vampire: medium-dark skin tone", + "🧛🏼": "vampire: medium-light skin tone", + "🚦": "vertical traffic light", + "📳": "vibration mode", + "✌️": "victory hand", + "✌🏿": "victory hand: dark skin tone", + "✌🏻": "victory hand: light skin tone", + "✌🏽": "victory hand: medium skin tone", + "✌🏾": "victory hand: medium-dark skin tone", + "✌🏼": "victory hand: medium-light skin tone", + "📹": "video camera", + "🎮": "video game", + "📼": "videocassette", + "🎻": "violin", + "🌋": "volcano", + "🏐": "volleyball", + "🖖": "vulcan salute", + "🖖🏿": "vulcan salute: dark skin tone", + "🖖🏻": "vulcan salute: light skin tone", + "🖖🏽": "vulcan salute: medium skin tone", + "🖖🏾": "vulcan salute: medium-dark skin tone", + "🖖🏼": "vulcan salute: medium-light skin tone", + "🧇": "waffle", + "🌘": "waning crescent moon", + "🌖": "waning gibbous moon", + "⚠️": "warning", + "🗑️": "wastebasket", + "⌚": "watch", + "🐃": "water buffalo", + "🚾": "water closet", + "🔫": "water pistol", + "🌊": "water wave", + "🍉": "watermelon", + "👋": "waving hand", + "👋🏿": "waving hand: dark skin tone", + "👋🏻": "waving hand: light skin tone", + "👋🏽": "waving hand: medium skin tone", + "👋🏾": "waving hand: medium-dark skin tone", + "👋🏼": "waving hand: medium-light skin tone", + "〰️": "wavy dash", + "🌒": "waxing crescent moon", + "🌔": "waxing gibbous moon", + "🙀": "weary cat", + "😩": "weary face", + "💒": "wedding", + "🐋": "whale", + "🛞": "wheel", + "☸️": "wheel of dharma", + "♿": "wheelchair symbol", + "🦯": "white cane", + "⚪": "white circle", + "❕": "white exclamation mark", + "🏳️": "white flag", + "💮": "white flower", + "🤍": "white heart", + "⬜": "white large square", + "◻️": "white medium square", + "◽": "white medium-small square", + "❔": "white question mark", + "▫️": "white small square", + "🔳": "white square button", + "🥀": "wilted flower", + "🎐": "wind chime", + "🌬️": "wind face", + "🪟": "window", + "🍷": "wine glass", + "🪽": "wing", + "😉": "winking face", + "😜": "winking face with tongue", + "🛜": "wireless", + "🐺": "wolf", + "👩": "woman", + "👫": "woman and man holding hands", + "👫🏿": "woman and man holding hands: dark skin tone", + "👫🏻": "woman and man holding hands: light skin tone", + "👫🏽": "woman and man holding hands: medium skin tone", + "👫🏾": "woman and man holding hands: medium-dark skin tone", + "👫🏼": "woman and man holding hands: medium-light skin tone", + "💃": "woman dancing", + "💃🏿": "woman dancing: dark skin tone", + "💃🏻": "woman dancing: light skin tone", + "💃🏽": "woman dancing: medium skin tone", + "💃🏾": "woman dancing: medium-dark skin tone", + "💃🏼": "woman dancing: medium-light skin tone", + "🧕": "woman with headscarf", + "🧕🏿": "woman with headscarf: dark skin tone", + "🧕🏻": "woman with headscarf: light skin tone", + "🧕🏽": "woman with headscarf: medium skin tone", + "🧕🏾": "woman with headscarf: medium-dark skin tone", + "🧕🏼": "woman with headscarf: medium-light skin tone", + "👢": "woman's boot", + "👚": "woman's clothes", + "👒": "woman's hat", + "👡": "woman's sandal", + "👩🏿": "woman: dark skin tone", + "👩🏻": "woman: light skin tone", + "👩🏽": "woman: medium skin tone", + "👩🏾": "woman: medium-dark skin tone", + "👩🏼": "woman: medium-light skin tone", + "👭": "women holding hands", + "👭🏿": "women holding hands: dark skin tone", + "👭🏻": "women holding hands: light skin tone", + "👭🏽": "women holding hands: medium skin tone", + "👭🏾": "women holding hands: medium-dark skin tone", + "👭🏼": "women holding hands: medium-light skin tone", + "🚺": "women's room", + "🪵": "wood", + "🥴": "woozy face", + "🗺️": "world map", + "🪱": "worm", + "😟": "worried face", + "🎁": "wrapped gift", + "🔧": "wrench", + "✍️": "writing hand", + "✍🏿": "writing hand: dark skin tone", + "✍🏻": "writing hand: light skin tone", + "✍🏽": "writing hand: medium skin tone", + "✍🏾": "writing hand: medium-dark skin tone", + "✍🏼": "writing hand: medium-light skin tone", + "🩻": "x-ray", + "🧶": "yarn", + "🥱": "yawning face", + "🟡": "yellow circle", + "💛": "yellow heart", + "🟨": "yellow square", + "💴": "yen banknote", + "☯️": "yin yang", + "🪀": "yo-yo", + "🤪": "zany face", + "🦓": "zebra", + "🤐": "zipper-mouth face", + "🧟": "zombie", +} as const; diff --git a/src/typescript/sdk/src/emoji_data/symbol-names.json b/src/typescript/sdk/src/emoji_data/symbol-names.json deleted file mode 100644 index a2829741b..000000000 --- a/src/typescript/sdk/src/emoji_data/symbol-names.json +++ /dev/null @@ -1,2306 +0,0 @@ -{ - "1st place medal": null, - "2nd place medal": null, - "3rd place medal": null, - "A button (blood type)": null, - "AB button (blood type)": null, - "ATM sign": null, - "Aquarius": null, - "Aries": null, - "B button (blood type)": null, - "BACK arrow": null, - "CL button": null, - "COOL button": null, - "Cancer": null, - "Capricorn": null, - "Christmas tree": null, - "END arrow": null, - "FREE button": null, - "Gemini": null, - "ID button": null, - "Japanese \"acceptable\" button": null, - "Japanese \"application\" button": null, - "Japanese \"bargain\" button": null, - "Japanese \"congratulations\" button": null, - "Japanese \"discount\" button": null, - "Japanese \"free of charge\" button": null, - "Japanese \"here\" button": null, - "Japanese \"monthly amount\" button": null, - "Japanese \"no vacancy\" button": null, - "Japanese \"not free of charge\" button": null, - "Japanese \"open for business\" button": null, - "Japanese \"passing grade\" button": null, - "Japanese \"prohibited\" button": null, - "Japanese \"reserved\" button": null, - "Japanese \"secret\" button": null, - "Japanese \"service charge\" button": null, - "Japanese \"vacancy\" button": null, - "Japanese castle": null, - "Japanese dolls": null, - "Japanese post office": null, - "Japanese symbol for beginner": null, - "Leo": null, - "Libra": null, - "Mrs. Claus": null, - "Mrs. Claus: dark skin tone": null, - "Mrs. Claus: light skin tone": null, - "Mrs. Claus: medium skin tone": null, - "Mrs. Claus: medium-dark skin tone": null, - "Mrs. Claus: medium-light skin tone": null, - "NEW button": null, - "NG button": null, - "O button (blood type)": null, - "OK button": null, - "OK hand": null, - "OK hand: dark skin tone": null, - "OK hand: light skin tone": null, - "OK hand: medium skin tone": null, - "OK hand: medium-dark skin tone": null, - "OK hand: medium-light skin tone": null, - "ON! arrow": null, - "Ophiuchus": null, - "P button": null, - "Pisces": null, - "SOON arrow": null, - "SOS button": null, - "Sagittarius": null, - "Santa Claus": null, - "Santa Claus: dark skin tone": null, - "Santa Claus: light skin tone": null, - "Santa Claus: medium skin tone": null, - "Santa Claus: medium-dark skin tone": null, - "Santa Claus: medium-light skin tone": null, - "Scorpio": null, - "Statue of Liberty": null, - "T-Rex": null, - "TOP arrow": null, - "Taurus": null, - "Tokyo tower": null, - "UP! button": null, - "VS button": null, - "Virgo": null, - "ZZZ": null, - "abacus": null, - "accordion": null, - "adhesive bandage": null, - "admission tickets": null, - "aerial tramway": null, - "airplane": null, - "airplane arrival": null, - "airplane departure": null, - "alarm clock": null, - "alembic": null, - "alien": null, - "alien monster": null, - "ambulance": null, - "american football": null, - "amphora": null, - "anatomical heart": null, - "anchor": null, - "anger symbol": null, - "angry face": null, - "angry face with horns": null, - "anguished face": null, - "ant": null, - "antenna bars": null, - "anxious face with sweat": null, - "articulated lorry": null, - "artist palette": null, - "astonished face": null, - "atom symbol": null, - "auto rickshaw": null, - "automobile": null, - "avocado": null, - "axe": null, - "baby": null, - "baby angel": null, - "baby angel: dark skin tone": null, - "baby angel: light skin tone": null, - "baby angel: medium skin tone": null, - "baby angel: medium-dark skin tone": null, - "baby angel: medium-light skin tone": null, - "baby bottle": null, - "baby chick": null, - "baby symbol": null, - "baby: dark skin tone": null, - "baby: light skin tone": null, - "baby: medium skin tone": null, - "baby: medium-dark skin tone": null, - "baby: medium-light skin tone": null, - "backhand index pointing down": null, - "backhand index pointing down: dark skin tone": null, - "backhand index pointing down: light skin tone": null, - "backhand index pointing down: medium skin tone": null, - "backhand index pointing down: medium-dark skin tone": null, - "backhand index pointing down: medium-light skin tone": null, - "backhand index pointing left": null, - "backhand index pointing left: dark skin tone": null, - "backhand index pointing left: light skin tone": null, - "backhand index pointing left: medium skin tone": null, - "backhand index pointing left: medium-dark skin tone": null, - "backhand index pointing left: medium-light skin tone": null, - "backhand index pointing right": null, - "backhand index pointing right: dark skin tone": null, - "backhand index pointing right: light skin tone": null, - "backhand index pointing right: medium skin tone": null, - "backhand index pointing right: medium-dark skin tone": null, - "backhand index pointing right: medium-light skin tone": null, - "backhand index pointing up": null, - "backhand index pointing up: dark skin tone": null, - "backhand index pointing up: light skin tone": null, - "backhand index pointing up: medium skin tone": null, - "backhand index pointing up: medium-dark skin tone": null, - "backhand index pointing up: medium-light skin tone": null, - "backpack": null, - "bacon": null, - "badger": null, - "badminton": null, - "bagel": null, - "baggage claim": null, - "baguette bread": null, - "balance scale": null, - "ballet shoes": null, - "balloon": null, - "ballot box with ballot": null, - "banana": null, - "banjo": null, - "bank": null, - "bar chart": null, - "barber pole": null, - "baseball": null, - "basket": null, - "basketball": null, - "bat": null, - "bathtub": null, - "battery": null, - "beach with umbrella": null, - "beaming face with smiling eyes": null, - "beans": null, - "bear": null, - "beating heart": null, - "beaver": null, - "bed": null, - "beer mug": null, - "beetle": null, - "bell": null, - "bell pepper": null, - "bell with slash": null, - "bellhop bell": null, - "bento box": null, - "beverage box": null, - "bicycle": null, - "bikini": null, - "billed cap": null, - "biohazard": null, - "bird": null, - "birthday cake": null, - "bison": null, - "biting lip": null, - "black bird": null, - "black cat": null, - "black circle": null, - "black flag": null, - "black heart": null, - "black large square": null, - "black medium square": null, - "black medium-small square": null, - "black nib": null, - "black small square": null, - "black square button": null, - "blossom": null, - "blowfish": null, - "blue book": null, - "blue circle": null, - "blue heart": null, - "blue square": null, - "blueberries": null, - "boar": null, - "bomb": null, - "bone": null, - "bookmark": null, - "bookmark tabs": null, - "books": null, - "boomerang": null, - "bottle with popping cork": null, - "bouquet": null, - "bow and arrow": null, - "bowl with spoon": null, - "bowling": null, - "boxing glove": null, - "boy": null, - "boy: dark skin tone": null, - "boy: light skin tone": null, - "boy: medium skin tone": null, - "boy: medium-dark skin tone": null, - "boy: medium-light skin tone": null, - "brain": null, - "bread": null, - "breast-feeding": null, - "breast-feeding: dark skin tone": null, - "breast-feeding: light skin tone": null, - "breast-feeding: medium skin tone": null, - "breast-feeding: medium-dark skin tone": null, - "breast-feeding: medium-light skin tone": null, - "brick": null, - "bridge at night": null, - "briefcase": null, - "briefs": null, - "bright button": null, - "broccoli": null, - "broken heart": null, - "broom": null, - "brown circle": null, - "brown heart": null, - "brown square": null, - "bubble tea": null, - "bubbles": null, - "bucket": null, - "bug": null, - "building construction": null, - "bullet train": null, - "bullseye": null, - "burrito": null, - "bus": null, - "bus stop": null, - "bust in silhouette": null, - "busts in silhouette": null, - "butter": null, - "butterfly": null, - "cactus": null, - "calendar": null, - "call me hand": null, - "call me hand: dark skin tone": null, - "call me hand: light skin tone": null, - "call me hand: medium skin tone": null, - "call me hand: medium-dark skin tone": null, - "call me hand: medium-light skin tone": null, - "camel": null, - "camera": null, - "camera with flash": null, - "camping": null, - "candle": null, - "candy": null, - "canned food": null, - "canoe": null, - "card file box": null, - "card index": null, - "card index dividers": null, - "carousel horse": null, - "carp streamer": null, - "carpentry saw": null, - "carrot": null, - "castle": null, - "cat": null, - "cat face": null, - "cat with tears of joy": null, - "cat with wry smile": null, - "chains": null, - "chair": null, - "chart decreasing": null, - "chart increasing": null, - "chart increasing with yen": null, - "check box with check": null, - "check mark": null, - "check mark button": null, - "cheese wedge": null, - "chequered flag": null, - "cherries": null, - "cherry blossom": null, - "chess pawn": null, - "chestnut": null, - "chicken": null, - "child": null, - "child: dark skin tone": null, - "child: light skin tone": null, - "child: medium skin tone": null, - "child: medium-dark skin tone": null, - "child: medium-light skin tone": null, - "children crossing": null, - "chipmunk": null, - "chocolate bar": null, - "chopsticks": null, - "church": null, - "cigarette": null, - "cinema": null, - "circled M": null, - "circus tent": null, - "cityscape": null, - "cityscape at dusk": null, - "clamp": null, - "clapper board": null, - "clapping hands": null, - "clapping hands: dark skin tone": null, - "clapping hands: light skin tone": null, - "clapping hands: medium skin tone": null, - "clapping hands: medium-dark skin tone": null, - "clapping hands: medium-light skin tone": null, - "classical building": null, - "clinking beer mugs": null, - "clinking glasses": null, - "clipboard": null, - "clockwise vertical arrows": null, - "closed book": null, - "closed mailbox with lowered flag": null, - "closed mailbox with raised flag": null, - "closed umbrella": null, - "cloud": null, - "cloud with lightning": null, - "cloud with lightning and rain": null, - "cloud with rain": null, - "cloud with snow": null, - "clown face": null, - "club suit": null, - "clutch bag": null, - "coat": null, - "cockroach": null, - "cocktail glass": null, - "coconut": null, - "coffin": null, - "coin": null, - "cold face": null, - "collision": null, - "comet": null, - "compass": null, - "computer disk": null, - "computer mouse": null, - "confetti ball": null, - "confounded face": null, - "confused face": null, - "construction": null, - "construction worker": null, - "construction worker: dark skin tone": null, - "construction worker: light skin tone": null, - "construction worker: medium skin tone": null, - "construction worker: medium-dark skin tone": null, - "construction worker: medium-light skin tone": null, - "control knobs": null, - "convenience store": null, - "cooked rice": null, - "cookie": null, - "cooking": null, - "copyright": null, - "coral": null, - "couch and lamp": null, - "counterclockwise arrows button": null, - "couple with heart": null, - "couple with heart: dark skin tone": null, - "couple with heart: light skin tone": null, - "couple with heart: medium skin tone": null, - "couple with heart: medium-dark skin tone": null, - "couple with heart: medium-light skin tone": null, - "cow": null, - "cow face": null, - "cowboy hat face": null, - "crab": null, - "crayon": null, - "credit card": null, - "crescent moon": null, - "cricket": null, - "cricket game": null, - "crocodile": null, - "croissant": null, - "cross mark": null, - "cross mark button": null, - "crossed fingers": null, - "crossed fingers: dark skin tone": null, - "crossed fingers: light skin tone": null, - "crossed fingers: medium skin tone": null, - "crossed fingers: medium-dark skin tone": null, - "crossed fingers: medium-light skin tone": null, - "crossed flags": null, - "crossed swords": null, - "crown": null, - "crutch": null, - "crying cat": null, - "crying face": null, - "crystal ball": null, - "cucumber": null, - "cup with straw": null, - "cupcake": null, - "curling stone": null, - "curly loop": null, - "currency exchange": null, - "curry rice": null, - "custard": null, - "customs": null, - "cut of meat": null, - "cyclone": null, - "dagger": null, - "dango": null, - "dashing away": null, - "deaf person": null, - "deaf person: dark skin tone": null, - "deaf person: light skin tone": null, - "deaf person: medium skin tone": null, - "deaf person: medium-dark skin tone": null, - "deaf person: medium-light skin tone": null, - "deciduous tree": null, - "deer": null, - "delivery truck": null, - "department store": null, - "derelict house": null, - "desert": null, - "desert island": null, - "desktop computer": null, - "detective": null, - "detective: dark skin tone": null, - "detective: light skin tone": null, - "detective: medium skin tone": null, - "detective: medium-dark skin tone": null, - "detective: medium-light skin tone": null, - "diamond suit": null, - "diamond with a dot": null, - "dim button": null, - "disappointed face": null, - "disguised face": null, - "divide": null, - "diving mask": null, - "diya lamp": null, - "dizzy": null, - "dna": null, - "dodo": null, - "dog": null, - "dog face": null, - "dollar banknote": null, - "dolphin": null, - "donkey": null, - "door": null, - "dotted line face": null, - "dotted six-pointed star": null, - "double curly loop": null, - "double exclamation mark": null, - "doughnut": null, - "dove": null, - "down arrow": null, - "down-left arrow": null, - "down-right arrow": null, - "downcast face with sweat": null, - "downwards button": null, - "dragon": null, - "dragon face": null, - "dress": null, - "drooling face": null, - "drop of blood": null, - "droplet": null, - "drum": null, - "duck": null, - "dumpling": null, - "dvd": null, - "e-mail": null, - "eagle": null, - "ear": null, - "ear of corn": null, - "ear with hearing aid": null, - "ear with hearing aid: dark skin tone": null, - "ear with hearing aid: light skin tone": null, - "ear with hearing aid: medium skin tone": null, - "ear with hearing aid: medium-dark skin tone": null, - "ear with hearing aid: medium-light skin tone": null, - "ear: dark skin tone": null, - "ear: light skin tone": null, - "ear: medium skin tone": null, - "ear: medium-dark skin tone": null, - "ear: medium-light skin tone": null, - "egg": null, - "eggplant": null, - "eight o'clock": null, - "eight-pointed star": null, - "eight-spoked asterisk": null, - "eight-thirty": null, - "eject button": null, - "electric plug": null, - "elephant": null, - "elevator": null, - "eleven o'clock": null, - "eleven-thirty": null, - "elf": null, - "elf: dark skin tone": null, - "elf: light skin tone": null, - "elf: medium skin tone": null, - "elf: medium-dark skin tone": null, - "elf: medium-light skin tone": null, - "empty nest": null, - "enraged face": null, - "envelope": null, - "envelope with arrow": null, - "euro banknote": null, - "evergreen tree": null, - "ewe": null, - "exclamation question mark": null, - "exploding head": null, - "expressionless face": null, - "eye": null, - "eyes": null, - "face blowing a kiss": null, - "face holding back tears": null, - "face savoring food": null, - "face screaming in fear": null, - "face vomiting": null, - "face with crossed-out eyes": null, - "face with diagonal mouth": null, - "face with hand over mouth": null, - "face with head-bandage": null, - "face with medical mask": null, - "face with monocle": null, - "face with open eyes and hand over mouth": null, - "face with open mouth": null, - "face with peeking eye": null, - "face with raised eyebrow": null, - "face with rolling eyes": null, - "face with steam from nose": null, - "face with symbols on mouth": null, - "face with tears of joy": null, - "face with thermometer": null, - "face with tongue": null, - "face without mouth": null, - "factory": null, - "fairy": null, - "fairy: dark skin tone": null, - "fairy: light skin tone": null, - "fairy: medium skin tone": null, - "fairy: medium-dark skin tone": null, - "fairy: medium-light skin tone": null, - "falafel": null, - "fallen leaf": null, - "family": null, - "fast down button": null, - "fast reverse button": null, - "fast up button": null, - "fast-forward button": null, - "fax machine": null, - "fearful face": null, - "feather": null, - "female sign": null, - "ferris wheel": null, - "ferry": null, - "field hockey": null, - "file cabinet": null, - "file folder": null, - "film frames": null, - "film projector": null, - "fire": null, - "fire engine": null, - "fire extinguisher": null, - "firecracker": null, - "fireworks": null, - "first quarter moon": null, - "first quarter moon face": null, - "fish": null, - "fish cake with swirl": null, - "fishing pole": null, - "five o'clock": null, - "five-thirty": null, - "flag in hole": null, - "flag: Afghanistan": null, - "flag: Albania": null, - "flag: Algeria": null, - "flag: American Samoa": null, - "flag: Andorra": null, - "flag: Angola": null, - "flag: Anguilla": null, - "flag: Antarctica": null, - "flag: Antigua & Barbuda": null, - "flag: Argentina": null, - "flag: Armenia": null, - "flag: Aruba": null, - "flag: Ascension Island": null, - "flag: Australia": null, - "flag: Austria": null, - "flag: Azerbaijan": null, - "flag: Bahamas": null, - "flag: Bahrain": null, - "flag: Bangladesh": null, - "flag: Barbados": null, - "flag: Belarus": null, - "flag: Belgium": null, - "flag: Belize": null, - "flag: Benin": null, - "flag: Bermuda": null, - "flag: Bhutan": null, - "flag: Bolivia": null, - "flag: Bosnia & Herzegovina": null, - "flag: Botswana": null, - "flag: Bouvet Island": null, - "flag: Brazil": null, - "flag: British Indian Ocean Territory": null, - "flag: British Virgin Islands": null, - "flag: Brunei": null, - "flag: Bulgaria": null, - "flag: Burkina Faso": null, - "flag: Burundi": null, - "flag: Cambodia": null, - "flag: Cameroon": null, - "flag: Canada": null, - "flag: Canary Islands": null, - "flag: Cape Verde": null, - "flag: Caribbean Netherlands": null, - "flag: Cayman Islands": null, - "flag: Central African Republic": null, - "flag: Ceuta & Melilla": null, - "flag: Chad": null, - "flag: Chile": null, - "flag: China": null, - "flag: Christmas Island": null, - "flag: Clipperton Island": null, - "flag: Cocos (Keeling) Islands": null, - "flag: Colombia": null, - "flag: Comoros": null, - "flag: Congo - Brazzaville": null, - "flag: Congo - Kinshasa": null, - "flag: Cook Islands": null, - "flag: Costa Rica": null, - "flag: Croatia": null, - "flag: Cuba": null, - "flag: Cura\u00e7ao": null, - "flag: Cyprus": null, - "flag: Czechia": null, - "flag: C\u00f4te d'Ivoire": null, - "flag: Denmark": null, - "flag: Diego Garcia": null, - "flag: Djibouti": null, - "flag: Dominica": null, - "flag: Dominican Republic": null, - "flag: Ecuador": null, - "flag: Egypt": null, - "flag: El Salvador": null, - "flag: Equatorial Guinea": null, - "flag: Eritrea": null, - "flag: Estonia": null, - "flag: Eswatini": null, - "flag: Ethiopia": null, - "flag: European Union": null, - "flag: Falkland Islands": null, - "flag: Faroe Islands": null, - "flag: Fiji": null, - "flag: Finland": null, - "flag: France": null, - "flag: French Guiana": null, - "flag: French Polynesia": null, - "flag: French Southern Territories": null, - "flag: Gabon": null, - "flag: Gambia": null, - "flag: Georgia": null, - "flag: Germany": null, - "flag: Ghana": null, - "flag: Gibraltar": null, - "flag: Greece": null, - "flag: Greenland": null, - "flag: Grenada": null, - "flag: Guadeloupe": null, - "flag: Guam": null, - "flag: Guatemala": null, - "flag: Guernsey": null, - "flag: Guinea": null, - "flag: Guinea-Bissau": null, - "flag: Guyana": null, - "flag: Haiti": null, - "flag: Heard & McDonald Islands": null, - "flag: Honduras": null, - "flag: Hong Kong SAR China": null, - "flag: Hungary": null, - "flag: Iceland": null, - "flag: India": null, - "flag: Indonesia": null, - "flag: Iran": null, - "flag: Iraq": null, - "flag: Ireland": null, - "flag: Isle of Man": null, - "flag: Israel": null, - "flag: Italy": null, - "flag: Jamaica": null, - "flag: Japan": null, - "flag: Jersey": null, - "flag: Jordan": null, - "flag: Kazakhstan": null, - "flag: Kenya": null, - "flag: Kiribati": null, - "flag: Kosovo": null, - "flag: Kuwait": null, - "flag: Kyrgyzstan": null, - "flag: Laos": null, - "flag: Latvia": null, - "flag: Lebanon": null, - "flag: Lesotho": null, - "flag: Liberia": null, - "flag: Libya": null, - "flag: Liechtenstein": null, - "flag: Lithuania": null, - "flag: Luxembourg": null, - "flag: Macao SAR China": null, - "flag: Madagascar": null, - "flag: Malawi": null, - "flag: Malaysia": null, - "flag: Maldives": null, - "flag: Mali": null, - "flag: Malta": null, - "flag: Marshall Islands": null, - "flag: Martinique": null, - "flag: Mauritania": null, - "flag: Mauritius": null, - "flag: Mayotte": null, - "flag: Mexico": null, - "flag: Micronesia": null, - "flag: Moldova": null, - "flag: Monaco": null, - "flag: Mongolia": null, - "flag: Montenegro": null, - "flag: Montserrat": null, - "flag: Morocco": null, - "flag: Mozambique": null, - "flag: Myanmar (Burma)": null, - "flag: Namibia": null, - "flag: Nauru": null, - "flag: Nepal": null, - "flag: Netherlands": null, - "flag: New Caledonia": null, - "flag: New Zealand": null, - "flag: Nicaragua": null, - "flag: Niger": null, - "flag: Nigeria": null, - "flag: Niue": null, - "flag: Norfolk Island": null, - "flag: North Korea": null, - "flag: North Macedonia": null, - "flag: Northern Mariana Islands": null, - "flag: Norway": null, - "flag: Oman": null, - "flag: Pakistan": null, - "flag: Palau": null, - "flag: Palestinian Territories": null, - "flag: Panama": null, - "flag: Papua New Guinea": null, - "flag: Paraguay": null, - "flag: Peru": null, - "flag: Philippines": null, - "flag: Pitcairn Islands": null, - "flag: Poland": null, - "flag: Portugal": null, - "flag: Puerto Rico": null, - "flag: Qatar": null, - "flag: Romania": null, - "flag: Russia": null, - "flag: Rwanda": null, - "flag: R\u00e9union": null, - "flag: Samoa": null, - "flag: San Marino": null, - "flag: Saudi Arabia": null, - "flag: Senegal": null, - "flag: Serbia": null, - "flag: Seychelles": null, - "flag: Sierra Leone": null, - "flag: Singapore": null, - "flag: Sint Maarten": null, - "flag: Slovakia": null, - "flag: Slovenia": null, - "flag: Solomon Islands": null, - "flag: Somalia": null, - "flag: South Africa": null, - "flag: South Georgia & South Sandwich Islands": null, - "flag: South Korea": null, - "flag: South Sudan": null, - "flag: Spain": null, - "flag: Sri Lanka": null, - "flag: St. Barth\u00e9lemy": null, - "flag: St. Helena": null, - "flag: St. Kitts & Nevis": null, - "flag: St. Lucia": null, - "flag: St. Martin": null, - "flag: St. Pierre & Miquelon": null, - "flag: St. Vincent & Grenadines": null, - "flag: Sudan": null, - "flag: Suriname": null, - "flag: Svalbard & Jan Mayen": null, - "flag: Sweden": null, - "flag: Switzerland": null, - "flag: Syria": null, - "flag: S\u00e3o Tom\u00e9 & Pr\u00edncipe": null, - "flag: Taiwan": null, - "flag: Tajikistan": null, - "flag: Tanzania": null, - "flag: Thailand": null, - "flag: Timor-Leste": null, - "flag: Togo": null, - "flag: Tokelau": null, - "flag: Tonga": null, - "flag: Trinidad & Tobago": null, - "flag: Tristan da Cunha": null, - "flag: Tunisia": null, - "flag: Turkmenistan": null, - "flag: Turks & Caicos Islands": null, - "flag: Tuvalu": null, - "flag: T\u00fcrkiye": null, - "flag: U.S. Outlying Islands": null, - "flag: U.S. Virgin Islands": null, - "flag: Uganda": null, - "flag: Ukraine": null, - "flag: United Arab Emirates": null, - "flag: United Kingdom": null, - "flag: United Nations": null, - "flag: United States": null, - "flag: Uruguay": null, - "flag: Uzbekistan": null, - "flag: Vanuatu": null, - "flag: Vatican City": null, - "flag: Venezuela": null, - "flag: Vietnam": null, - "flag: Wallis & Futuna": null, - "flag: Western Sahara": null, - "flag: Yemen": null, - "flag: Zambia": null, - "flag: Zimbabwe": null, - "flag: \u00c5land Islands": null, - "flamingo": null, - "flashlight": null, - "flat shoe": null, - "flatbread": null, - "fleur-de-lis": null, - "flexed biceps": null, - "flexed biceps: dark skin tone": null, - "flexed biceps: light skin tone": null, - "flexed biceps: medium skin tone": null, - "flexed biceps: medium-dark skin tone": null, - "flexed biceps: medium-light skin tone": null, - "floppy disk": null, - "flower playing cards": null, - "flushed face": null, - "flute": null, - "fly": null, - "flying disc": null, - "flying saucer": null, - "fog": null, - "foggy": null, - "folded hands": null, - "folded hands: dark skin tone": null, - "folded hands: light skin tone": null, - "folded hands: medium skin tone": null, - "folded hands: medium-dark skin tone": null, - "folded hands: medium-light skin tone": null, - "folding hand fan": null, - "fondue": null, - "foot": null, - "foot: dark skin tone": null, - "foot: light skin tone": null, - "foot: medium skin tone": null, - "foot: medium-dark skin tone": null, - "foot: medium-light skin tone": null, - "footprints": null, - "fork and knife": null, - "fork and knife with plate": null, - "fortune cookie": null, - "fountain": null, - "fountain pen": null, - "four leaf clover": null, - "four o'clock": null, - "four-thirty": null, - "fox": null, - "framed picture": null, - "french fries": null, - "fried shrimp": null, - "frog": null, - "front-facing baby chick": null, - "frowning face": null, - "frowning face with open mouth": null, - "fuel pump": null, - "full moon": null, - "full moon face": null, - "funeral urn": null, - "game die": null, - "garlic": null, - "gear": null, - "gem stone": null, - "genie": null, - "ghost": null, - "ginger root": null, - "giraffe": null, - "girl": null, - "girl: dark skin tone": null, - "girl: light skin tone": null, - "girl: medium skin tone": null, - "girl: medium-dark skin tone": null, - "girl: medium-light skin tone": null, - "glass of milk": null, - "glasses": null, - "globe showing Americas": null, - "globe showing Asia-Australia": null, - "globe showing Europe-Africa": null, - "globe with meridians": null, - "gloves": null, - "glowing star": null, - "goal net": null, - "goat": null, - "goblin": null, - "goggles": null, - "goose": null, - "gorilla": null, - "graduation cap": null, - "grapes": null, - "green apple": null, - "green book": null, - "green circle": null, - "green heart": null, - "green salad": null, - "green square": null, - "grey heart": null, - "grimacing face": null, - "grinning cat": null, - "grinning cat with smiling eyes": null, - "grinning face": null, - "grinning face with big eyes": null, - "grinning face with smiling eyes": null, - "grinning face with sweat": null, - "grinning squinting face": null, - "growing heart": null, - "guard": null, - "guard: dark skin tone": null, - "guard: light skin tone": null, - "guard: medium skin tone": null, - "guard: medium-dark skin tone": null, - "guard: medium-light skin tone": null, - "guide dog": null, - "guitar": null, - "hair pick": null, - "hamburger": null, - "hammer": null, - "hammer and pick": null, - "hammer and wrench": null, - "hamsa": null, - "hamster": null, - "hand with fingers splayed": null, - "hand with fingers splayed: dark skin tone": null, - "hand with fingers splayed: light skin tone": null, - "hand with fingers splayed: medium skin tone": null, - "hand with fingers splayed: medium-dark skin tone": null, - "hand with fingers splayed: medium-light skin tone": null, - "hand with index finger and thumb crossed": null, - "hand with index finger and thumb crossed: dark skin tone": null, - "hand with index finger and thumb crossed: light skin tone": null, - "hand with index finger and thumb crossed: medium skin tone": null, - "hand with index finger and thumb crossed: medium-dark skin tone": null, - "hand with index finger and thumb crossed: medium-light skin tone": null, - "handbag": null, - "handshake": null, - "handshake: dark skin tone": null, - "handshake: light skin tone": null, - "handshake: medium skin tone": null, - "handshake: medium-dark skin tone": null, - "handshake: medium-light skin tone": null, - "hatching chick": null, - "headphone": null, - "headstone": null, - "hear-no-evil monkey": null, - "heart decoration": null, - "heart exclamation": null, - "heart hands": null, - "heart hands: dark skin tone": null, - "heart hands: light skin tone": null, - "heart hands: medium skin tone": null, - "heart hands: medium-dark skin tone": null, - "heart hands: medium-light skin tone": null, - "heart suit": null, - "heart with arrow": null, - "heart with ribbon": null, - "heavy dollar sign": null, - "heavy equals sign": null, - "hedgehog": null, - "helicopter": null, - "herb": null, - "hibiscus": null, - "high voltage": null, - "high-heeled shoe": null, - "high-speed train": null, - "hiking boot": null, - "hindu temple": null, - "hippopotamus": null, - "hole": null, - "hollow red circle": null, - "honey pot": null, - "honeybee": null, - "hook": null, - "horizontal traffic light": null, - "horse": null, - "horse face": null, - "horse racing": null, - "horse racing: dark skin tone": null, - "horse racing: light skin tone": null, - "horse racing: medium skin tone": null, - "horse racing: medium-dark skin tone": null, - "horse racing: medium-light skin tone": null, - "hospital": null, - "hot beverage": null, - "hot dog": null, - "hot face": null, - "hot pepper": null, - "hot springs": null, - "hotel": null, - "hourglass done": null, - "hourglass not done": null, - "house": null, - "house with garden": null, - "houses": null, - "hundred points": null, - "hushed face": null, - "hut": null, - "hyacinth": null, - "ice": null, - "ice cream": null, - "ice hockey": null, - "ice skate": null, - "identification card": null, - "inbox tray": null, - "incoming envelope": null, - "index pointing at the viewer": null, - "index pointing at the viewer: dark skin tone": null, - "index pointing at the viewer: light skin tone": null, - "index pointing at the viewer: medium skin tone": null, - "index pointing at the viewer: medium-dark skin tone": null, - "index pointing at the viewer: medium-light skin tone": null, - "index pointing up": null, - "index pointing up: dark skin tone": null, - "index pointing up: light skin tone": null, - "index pointing up: medium skin tone": null, - "index pointing up: medium-dark skin tone": null, - "index pointing up: medium-light skin tone": null, - "infinity": null, - "information": null, - "input latin letters": null, - "input latin lowercase": null, - "input latin uppercase": null, - "input numbers": null, - "input symbols": null, - "jack-o-lantern": null, - "jar": null, - "jeans": null, - "jellyfish": null, - "joker": null, - "joystick": null, - "kaaba": null, - "kangaroo": null, - "key": null, - "keyboard": null, - "keycap: #": null, - "keycap: *": null, - "keycap: 0": null, - "keycap: 1": null, - "keycap: 10": null, - "keycap: 2": null, - "keycap: 3": null, - "keycap: 4": null, - "keycap: 5": null, - "keycap: 6": null, - "keycap: 7": null, - "keycap: 8": null, - "keycap: 9": null, - "khanda": null, - "kick scooter": null, - "kimono": null, - "kiss": null, - "kiss mark": null, - "kiss: dark skin tone": null, - "kiss: light skin tone": null, - "kiss: medium skin tone": null, - "kiss: medium-dark skin tone": null, - "kiss: medium-light skin tone": null, - "kissing cat": null, - "kissing face": null, - "kissing face with closed eyes": null, - "kissing face with smiling eyes": null, - "kitchen knife": null, - "kite": null, - "kiwi fruit": null, - "knot": null, - "koala": null, - "lab coat": null, - "label": null, - "lacrosse": null, - "ladder": null, - "lady beetle": null, - "laptop": null, - "large blue diamond": null, - "large orange diamond": null, - "last quarter moon": null, - "last quarter moon face": null, - "last track button": null, - "latin cross": null, - "leaf fluttering in wind": null, - "leafy green": null, - "ledger": null, - "left arrow": null, - "left arrow curving right": null, - "left luggage": null, - "left speech bubble": null, - "left-facing fist": null, - "left-facing fist: dark skin tone": null, - "left-facing fist: light skin tone": null, - "left-facing fist: medium skin tone": null, - "left-facing fist: medium-dark skin tone": null, - "left-facing fist: medium-light skin tone": null, - "left-right arrow": null, - "leftwards hand": null, - "leftwards hand: dark skin tone": null, - "leftwards hand: light skin tone": null, - "leftwards hand: medium skin tone": null, - "leftwards hand: medium-dark skin tone": null, - "leftwards hand: medium-light skin tone": null, - "leftwards pushing hand": null, - "leftwards pushing hand: dark skin tone": null, - "leftwards pushing hand: light skin tone": null, - "leftwards pushing hand: medium skin tone": null, - "leftwards pushing hand: medium-dark skin tone": null, - "leftwards pushing hand: medium-light skin tone": null, - "leg": null, - "leg: dark skin tone": null, - "leg: light skin tone": null, - "leg: medium skin tone": null, - "leg: medium-dark skin tone": null, - "leg: medium-light skin tone": null, - "lemon": null, - "leopard": null, - "level slider": null, - "light blue heart": null, - "light bulb": null, - "light rail": null, - "link": null, - "linked paperclips": null, - "lion": null, - "lipstick": null, - "litter in bin sign": null, - "lizard": null, - "llama": null, - "lobster": null, - "locked": null, - "locked with key": null, - "locked with pen": null, - "locomotive": null, - "lollipop": null, - "long drum": null, - "lotion bottle": null, - "lotus": null, - "loudly crying face": null, - "loudspeaker": null, - "love hotel": null, - "love letter": null, - "love-you gesture": null, - "love-you gesture: dark skin tone": null, - "love-you gesture: light skin tone": null, - "love-you gesture: medium skin tone": null, - "love-you gesture: medium-dark skin tone": null, - "love-you gesture: medium-light skin tone": null, - "low battery": null, - "luggage": null, - "lungs": null, - "lying face": null, - "mage": null, - "mage: dark skin tone": null, - "mage: light skin tone": null, - "mage: medium skin tone": null, - "mage: medium-dark skin tone": null, - "mage: medium-light skin tone": null, - "magic wand": null, - "magnet": null, - "magnifying glass tilted left": null, - "magnifying glass tilted right": null, - "mahjong red dragon": null, - "male sign": null, - "mammoth": null, - "man": null, - "man dancing": null, - "man dancing: dark skin tone": null, - "man dancing: light skin tone": null, - "man dancing: medium skin tone": null, - "man dancing: medium-dark skin tone": null, - "man dancing: medium-light skin tone": null, - "man's shoe": null, - "man: dark skin tone": null, - "man: light skin tone": null, - "man: medium skin tone": null, - "man: medium-dark skin tone": null, - "man: medium-light skin tone": null, - "mango": null, - "mantelpiece clock": null, - "manual wheelchair": null, - "map of Japan": null, - "maple leaf": null, - "maracas": null, - "martial arts uniform": null, - "mate": null, - "meat on bone": null, - "mechanical arm": null, - "mechanical leg": null, - "medical symbol": null, - "megaphone": null, - "melon": null, - "melting face": null, - "memo": null, - "men holding hands": null, - "men holding hands: dark skin tone": null, - "men holding hands: light skin tone": null, - "men holding hands: medium skin tone": null, - "men holding hands: medium-dark skin tone": null, - "men holding hands: medium-light skin tone": null, - "men's room": null, - "menorah": null, - "merperson": null, - "merperson: dark skin tone": null, - "merperson: light skin tone": null, - "merperson: medium skin tone": null, - "merperson: medium-dark skin tone": null, - "merperson: medium-light skin tone": null, - "metro": null, - "microbe": null, - "microphone": null, - "microscope": null, - "middle finger": null, - "middle finger: dark skin tone": null, - "middle finger: light skin tone": null, - "middle finger: medium skin tone": null, - "middle finger: medium-dark skin tone": null, - "middle finger: medium-light skin tone": null, - "military helmet": null, - "military medal": null, - "milky way": null, - "minibus": null, - "minus": null, - "mirror": null, - "mirror ball": null, - "moai": null, - "mobile phone": null, - "mobile phone off": null, - "mobile phone with arrow": null, - "money bag": null, - "money with wings": null, - "money-mouth face": null, - "monkey": null, - "monkey face": null, - "monorail": null, - "moon cake": null, - "moon viewing ceremony": null, - "moose": null, - "mosque": null, - "mosquito": null, - "motor boat": null, - "motor scooter": null, - "motorcycle": null, - "motorized wheelchair": null, - "motorway": null, - "mount fuji": null, - "mountain": null, - "mountain cableway": null, - "mountain railway": null, - "mouse": null, - "mouse face": null, - "mouse trap": null, - "mouth": null, - "movie camera": null, - "multiply": null, - "mushroom": null, - "musical keyboard": null, - "musical note": null, - "musical notes": null, - "musical score": null, - "muted speaker": null, - "nail polish": null, - "nail polish: dark skin tone": null, - "nail polish: light skin tone": null, - "nail polish: medium skin tone": null, - "nail polish: medium-dark skin tone": null, - "nail polish: medium-light skin tone": null, - "name badge": null, - "national park": null, - "nauseated face": null, - "nazar amulet": null, - "necktie": null, - "nerd face": null, - "nest with eggs": null, - "nesting dolls": null, - "neutral face": null, - "new moon": null, - "new moon face": null, - "newspaper": null, - "next track button": null, - "night with stars": null, - "nine o'clock": null, - "nine-thirty": null, - "ninja": null, - "ninja: dark skin tone": null, - "ninja: light skin tone": null, - "ninja: medium skin tone": null, - "ninja: medium-dark skin tone": null, - "ninja: medium-light skin tone": null, - "no bicycles": null, - "no entry": null, - "no littering": null, - "no mobile phones": null, - "no one under eighteen": null, - "no pedestrians": null, - "no smoking": null, - "non-potable water": null, - "nose": null, - "nose: dark skin tone": null, - "nose: light skin tone": null, - "nose: medium skin tone": null, - "nose: medium-dark skin tone": null, - "nose: medium-light skin tone": null, - "notebook": null, - "notebook with decorative cover": null, - "nut and bolt": null, - "octopus": null, - "oden": null, - "office building": null, - "ogre": null, - "oil drum": null, - "old key": null, - "old man": null, - "old man: dark skin tone": null, - "old man: light skin tone": null, - "old man: medium skin tone": null, - "old man: medium-dark skin tone": null, - "old man: medium-light skin tone": null, - "old woman": null, - "old woman: dark skin tone": null, - "old woman: light skin tone": null, - "old woman: medium skin tone": null, - "old woman: medium-dark skin tone": null, - "old woman: medium-light skin tone": null, - "older person": null, - "older person: dark skin tone": null, - "older person: light skin tone": null, - "older person: medium skin tone": null, - "older person: medium-dark skin tone": null, - "older person: medium-light skin tone": null, - "olive": null, - "om": null, - "oncoming automobile": null, - "oncoming bus": null, - "oncoming fist": null, - "oncoming fist: dark skin tone": null, - "oncoming fist: light skin tone": null, - "oncoming fist: medium skin tone": null, - "oncoming fist: medium-dark skin tone": null, - "oncoming fist: medium-light skin tone": null, - "oncoming police car": null, - "oncoming taxi": null, - "one o'clock": null, - "one-piece swimsuit": null, - "one-thirty": null, - "onion": null, - "open book": null, - "open file folder": null, - "open hands": null, - "open hands: dark skin tone": null, - "open hands: light skin tone": null, - "open hands: medium skin tone": null, - "open hands: medium-dark skin tone": null, - "open hands: medium-light skin tone": null, - "open mailbox with lowered flag": null, - "open mailbox with raised flag": null, - "optical disk": null, - "orange book": null, - "orange circle": null, - "orange heart": null, - "orange square": null, - "orangutan": null, - "orthodox cross": null, - "otter": null, - "outbox tray": null, - "owl": null, - "ox": null, - "oyster": null, - "package": null, - "page facing up": null, - "page with curl": null, - "pager": null, - "paintbrush": null, - "palm down hand": null, - "palm down hand: dark skin tone": null, - "palm down hand: light skin tone": null, - "palm down hand: medium skin tone": null, - "palm down hand: medium-dark skin tone": null, - "palm down hand: medium-light skin tone": null, - "palm tree": null, - "palm up hand": null, - "palm up hand: dark skin tone": null, - "palm up hand: light skin tone": null, - "palm up hand: medium skin tone": null, - "palm up hand: medium-dark skin tone": null, - "palm up hand: medium-light skin tone": null, - "palms up together": null, - "palms up together: dark skin tone": null, - "palms up together: light skin tone": null, - "palms up together: medium skin tone": null, - "palms up together: medium-dark skin tone": null, - "palms up together: medium-light skin tone": null, - "pancakes": null, - "panda": null, - "paperclip": null, - "parachute": null, - "parrot": null, - "part alternation mark": null, - "party popper": null, - "partying face": null, - "passenger ship": null, - "passport control": null, - "pause button": null, - "paw prints": null, - "pea pod": null, - "peace symbol": null, - "peach": null, - "peacock": null, - "peanuts": null, - "pear": null, - "pen": null, - "pencil": null, - "penguin": null, - "pensive face": null, - "people hugging": null, - "people with bunny ears": null, - "people wrestling": null, - "performing arts": null, - "persevering face": null, - "person": null, - "person biking": null, - "person biking: dark skin tone": null, - "person biking: light skin tone": null, - "person biking: medium skin tone": null, - "person biking: medium-dark skin tone": null, - "person biking: medium-light skin tone": null, - "person bouncing ball": null, - "person bouncing ball: dark skin tone": null, - "person bouncing ball: light skin tone": null, - "person bouncing ball: medium skin tone": null, - "person bouncing ball: medium-dark skin tone": null, - "person bouncing ball: medium-light skin tone": null, - "person bowing": null, - "person bowing: dark skin tone": null, - "person bowing: light skin tone": null, - "person bowing: medium skin tone": null, - "person bowing: medium-dark skin tone": null, - "person bowing: medium-light skin tone": null, - "person cartwheeling": null, - "person cartwheeling: dark skin tone": null, - "person cartwheeling: light skin tone": null, - "person cartwheeling: medium skin tone": null, - "person cartwheeling: medium-dark skin tone": null, - "person cartwheeling: medium-light skin tone": null, - "person climbing": null, - "person climbing: dark skin tone": null, - "person climbing: light skin tone": null, - "person climbing: medium skin tone": null, - "person climbing: medium-dark skin tone": null, - "person climbing: medium-light skin tone": null, - "person facepalming": null, - "person facepalming: dark skin tone": null, - "person facepalming: light skin tone": null, - "person facepalming: medium skin tone": null, - "person facepalming: medium-dark skin tone": null, - "person facepalming: medium-light skin tone": null, - "person fencing": null, - "person frowning": null, - "person frowning: dark skin tone": null, - "person frowning: light skin tone": null, - "person frowning: medium skin tone": null, - "person frowning: medium-dark skin tone": null, - "person frowning: medium-light skin tone": null, - "person gesturing NO": null, - "person gesturing NO: dark skin tone": null, - "person gesturing NO: light skin tone": null, - "person gesturing NO: medium skin tone": null, - "person gesturing NO: medium-dark skin tone": null, - "person gesturing NO: medium-light skin tone": null, - "person gesturing OK": null, - "person gesturing OK: dark skin tone": null, - "person gesturing OK: light skin tone": null, - "person gesturing OK: medium skin tone": null, - "person gesturing OK: medium-dark skin tone": null, - "person gesturing OK: medium-light skin tone": null, - "person getting haircut": null, - "person getting haircut: dark skin tone": null, - "person getting haircut: light skin tone": null, - "person getting haircut: medium skin tone": null, - "person getting haircut: medium-dark skin tone": null, - "person getting haircut: medium-light skin tone": null, - "person getting massage": null, - "person getting massage: dark skin tone": null, - "person getting massage: light skin tone": null, - "person getting massage: medium skin tone": null, - "person getting massage: medium-dark skin tone": null, - "person getting massage: medium-light skin tone": null, - "person golfing": null, - "person golfing: dark skin tone": null, - "person golfing: light skin tone": null, - "person golfing: medium skin tone": null, - "person golfing: medium-dark skin tone": null, - "person golfing: medium-light skin tone": null, - "person in bed": null, - "person in bed: dark skin tone": null, - "person in bed: light skin tone": null, - "person in bed: medium skin tone": null, - "person in bed: medium-dark skin tone": null, - "person in bed: medium-light skin tone": null, - "person in lotus position": null, - "person in lotus position: dark skin tone": null, - "person in lotus position: light skin tone": null, - "person in lotus position: medium skin tone": null, - "person in lotus position: medium-dark skin tone": null, - "person in lotus position: medium-light skin tone": null, - "person in steamy room": null, - "person in steamy room: dark skin tone": null, - "person in steamy room: light skin tone": null, - "person in steamy room: medium skin tone": null, - "person in steamy room: medium-dark skin tone": null, - "person in steamy room: medium-light skin tone": null, - "person in suit levitating": null, - "person in suit levitating: dark skin tone": null, - "person in suit levitating: light skin tone": null, - "person in suit levitating: medium skin tone": null, - "person in suit levitating: medium-dark skin tone": null, - "person in suit levitating: medium-light skin tone": null, - "person in tuxedo": null, - "person in tuxedo: dark skin tone": null, - "person in tuxedo: light skin tone": null, - "person in tuxedo: medium skin tone": null, - "person in tuxedo: medium-dark skin tone": null, - "person in tuxedo: medium-light skin tone": null, - "person juggling": null, - "person juggling: dark skin tone": null, - "person juggling: light skin tone": null, - "person juggling: medium skin tone": null, - "person juggling: medium-dark skin tone": null, - "person juggling: medium-light skin tone": null, - "person kneeling": null, - "person kneeling: dark skin tone": null, - "person kneeling: light skin tone": null, - "person kneeling: medium skin tone": null, - "person kneeling: medium-dark skin tone": null, - "person kneeling: medium-light skin tone": null, - "person lifting weights": null, - "person lifting weights: dark skin tone": null, - "person lifting weights: light skin tone": null, - "person lifting weights: medium skin tone": null, - "person lifting weights: medium-dark skin tone": null, - "person lifting weights: medium-light skin tone": null, - "person mountain biking": null, - "person mountain biking: dark skin tone": null, - "person mountain biking: light skin tone": null, - "person mountain biking: medium skin tone": null, - "person mountain biking: medium-dark skin tone": null, - "person mountain biking: medium-light skin tone": null, - "person playing handball": null, - "person playing handball: dark skin tone": null, - "person playing handball: light skin tone": null, - "person playing handball: medium skin tone": null, - "person playing handball: medium-dark skin tone": null, - "person playing handball: medium-light skin tone": null, - "person playing water polo": null, - "person playing water polo: dark skin tone": null, - "person playing water polo: light skin tone": null, - "person playing water polo: medium skin tone": null, - "person playing water polo: medium-dark skin tone": null, - "person playing water polo: medium-light skin tone": null, - "person pouting": null, - "person pouting: dark skin tone": null, - "person pouting: light skin tone": null, - "person pouting: medium skin tone": null, - "person pouting: medium-dark skin tone": null, - "person pouting: medium-light skin tone": null, - "person raising hand": null, - "person raising hand: dark skin tone": null, - "person raising hand: light skin tone": null, - "person raising hand: medium skin tone": null, - "person raising hand: medium-dark skin tone": null, - "person raising hand: medium-light skin tone": null, - "person rowing boat": null, - "person rowing boat: dark skin tone": null, - "person rowing boat: light skin tone": null, - "person rowing boat: medium skin tone": null, - "person rowing boat: medium-dark skin tone": null, - "person rowing boat: medium-light skin tone": null, - "person running": null, - "person running: dark skin tone": null, - "person running: light skin tone": null, - "person running: medium skin tone": null, - "person running: medium-dark skin tone": null, - "person running: medium-light skin tone": null, - "person shrugging": null, - "person shrugging: dark skin tone": null, - "person shrugging: light skin tone": null, - "person shrugging: medium skin tone": null, - "person shrugging: medium-dark skin tone": null, - "person shrugging: medium-light skin tone": null, - "person standing": null, - "person standing: dark skin tone": null, - "person standing: light skin tone": null, - "person standing: medium skin tone": null, - "person standing: medium-dark skin tone": null, - "person standing: medium-light skin tone": null, - "person surfing": null, - "person surfing: dark skin tone": null, - "person surfing: light skin tone": null, - "person surfing: medium skin tone": null, - "person surfing: medium-dark skin tone": null, - "person surfing: medium-light skin tone": null, - "person swimming": null, - "person swimming: dark skin tone": null, - "person swimming: light skin tone": null, - "person swimming: medium skin tone": null, - "person swimming: medium-dark skin tone": null, - "person swimming: medium-light skin tone": null, - "person taking bath": null, - "person taking bath: dark skin tone": null, - "person taking bath: light skin tone": null, - "person taking bath: medium skin tone": null, - "person taking bath: medium-dark skin tone": null, - "person taking bath: medium-light skin tone": null, - "person tipping hand": null, - "person tipping hand: dark skin tone": null, - "person tipping hand: light skin tone": null, - "person tipping hand: medium skin tone": null, - "person tipping hand: medium-dark skin tone": null, - "person tipping hand: medium-light skin tone": null, - "person walking": null, - "person walking: dark skin tone": null, - "person walking: light skin tone": null, - "person walking: medium skin tone": null, - "person walking: medium-dark skin tone": null, - "person walking: medium-light skin tone": null, - "person wearing turban": null, - "person wearing turban: dark skin tone": null, - "person wearing turban: light skin tone": null, - "person wearing turban: medium skin tone": null, - "person wearing turban: medium-dark skin tone": null, - "person wearing turban: medium-light skin tone": null, - "person with crown": null, - "person with crown: dark skin tone": null, - "person with crown: light skin tone": null, - "person with crown: medium skin tone": null, - "person with crown: medium-dark skin tone": null, - "person with crown: medium-light skin tone": null, - "person with skullcap": null, - "person with skullcap: dark skin tone": null, - "person with skullcap: light skin tone": null, - "person with skullcap: medium skin tone": null, - "person with skullcap: medium-dark skin tone": null, - "person with skullcap: medium-light skin tone": null, - "person with veil": null, - "person with veil: dark skin tone": null, - "person with veil: light skin tone": null, - "person with veil: medium skin tone": null, - "person with veil: medium-dark skin tone": null, - "person with veil: medium-light skin tone": null, - "person: beard": null, - "person: blond hair": null, - "person: dark skin tone": null, - "person: dark skin tone, beard": null, - "person: dark skin tone, blond hair": null, - "person: light skin tone": null, - "person: light skin tone, beard": null, - "person: light skin tone, blond hair": null, - "person: medium skin tone": null, - "person: medium skin tone, beard": null, - "person: medium skin tone, blond hair": null, - "person: medium-dark skin tone": null, - "person: medium-dark skin tone, beard": null, - "person: medium-dark skin tone, blond hair": null, - "person: medium-light skin tone": null, - "person: medium-light skin tone, beard": null, - "person: medium-light skin tone, blond hair": null, - "petri dish": null, - "pick": null, - "pickup truck": null, - "pie": null, - "pig": null, - "pig face": null, - "pig nose": null, - "pile of poo": null, - "pill": null, - "pinched fingers": null, - "pinched fingers: dark skin tone": null, - "pinched fingers: light skin tone": null, - "pinched fingers: medium skin tone": null, - "pinched fingers: medium-dark skin tone": null, - "pinched fingers: medium-light skin tone": null, - "pinching hand": null, - "pinching hand: dark skin tone": null, - "pinching hand: light skin tone": null, - "pinching hand: medium skin tone": null, - "pinching hand: medium-dark skin tone": null, - "pinching hand: medium-light skin tone": null, - "pine decoration": null, - "pineapple": null, - "ping pong": null, - "pink heart": null, - "pizza": null, - "pi\u00f1ata": null, - "placard": null, - "place of worship": null, - "play button": null, - "play or pause button": null, - "playground slide": null, - "pleading face": null, - "plunger": null, - "plus": null, - "police car": null, - "police car light": null, - "police officer": null, - "police officer: dark skin tone": null, - "police officer: light skin tone": null, - "police officer: medium skin tone": null, - "police officer: medium-dark skin tone": null, - "police officer: medium-light skin tone": null, - "poodle": null, - "pool 8 ball": null, - "popcorn": null, - "post office": null, - "postal horn": null, - "postbox": null, - "pot of food": null, - "potable water": null, - "potato": null, - "potted plant": null, - "poultry leg": null, - "pound banknote": null, - "pouring liquid": null, - "pouting cat": null, - "prayer beads": null, - "pregnant man": null, - "pregnant man: dark skin tone": null, - "pregnant man: light skin tone": null, - "pregnant man: medium skin tone": null, - "pregnant man: medium-dark skin tone": null, - "pregnant man: medium-light skin tone": null, - "pregnant person": null, - "pregnant person: dark skin tone": null, - "pregnant person: light skin tone": null, - "pregnant person: medium skin tone": null, - "pregnant person: medium-dark skin tone": null, - "pregnant person: medium-light skin tone": null, - "pregnant woman": null, - "pregnant woman: dark skin tone": null, - "pregnant woman: light skin tone": null, - "pregnant woman: medium skin tone": null, - "pregnant woman: medium-dark skin tone": null, - "pregnant woman: medium-light skin tone": null, - "pretzel": null, - "prince": null, - "prince: dark skin tone": null, - "prince: light skin tone": null, - "prince: medium skin tone": null, - "prince: medium-dark skin tone": null, - "prince: medium-light skin tone": null, - "princess": null, - "princess: dark skin tone": null, - "princess: light skin tone": null, - "princess: medium skin tone": null, - "princess: medium-dark skin tone": null, - "princess: medium-light skin tone": null, - "printer": null, - "prohibited": null, - "purple circle": null, - "purple heart": null, - "purple square": null, - "purse": null, - "pushpin": null, - "puzzle piece": null, - "rabbit": null, - "rabbit face": null, - "raccoon": null, - "racing car": null, - "radio": null, - "radio button": null, - "radioactive": null, - "railway car": null, - "railway track": null, - "rainbow": null, - "raised back of hand": null, - "raised back of hand: dark skin tone": null, - "raised back of hand: light skin tone": null, - "raised back of hand: medium skin tone": null, - "raised back of hand: medium-dark skin tone": null, - "raised back of hand: medium-light skin tone": null, - "raised fist": null, - "raised fist: dark skin tone": null, - "raised fist: light skin tone": null, - "raised fist: medium skin tone": null, - "raised fist: medium-dark skin tone": null, - "raised fist: medium-light skin tone": null, - "raised hand": null, - "raised hand: dark skin tone": null, - "raised hand: light skin tone": null, - "raised hand: medium skin tone": null, - "raised hand: medium-dark skin tone": null, - "raised hand: medium-light skin tone": null, - "raising hands": null, - "raising hands: dark skin tone": null, - "raising hands: light skin tone": null, - "raising hands: medium skin tone": null, - "raising hands: medium-dark skin tone": null, - "raising hands: medium-light skin tone": null, - "ram": null, - "rat": null, - "razor": null, - "receipt": null, - "record button": null, - "recycling symbol": null, - "red apple": null, - "red circle": null, - "red envelope": null, - "red exclamation mark": null, - "red heart": null, - "red paper lantern": null, - "red question mark": null, - "red square": null, - "red triangle pointed down": null, - "red triangle pointed up": null, - "registered": null, - "relieved face": null, - "reminder ribbon": null, - "repeat button": null, - "repeat single button": null, - "rescue worker's helmet": null, - "restroom": null, - "reverse button": null, - "revolving hearts": null, - "rhinoceros": null, - "ribbon": null, - "rice ball": null, - "rice cracker": null, - "right anger bubble": null, - "right arrow": null, - "right arrow curving down": null, - "right arrow curving left": null, - "right arrow curving up": null, - "right-facing fist": null, - "right-facing fist: dark skin tone": null, - "right-facing fist: light skin tone": null, - "right-facing fist: medium skin tone": null, - "right-facing fist: medium-dark skin tone": null, - "right-facing fist: medium-light skin tone": null, - "rightwards hand": null, - "rightwards hand: dark skin tone": null, - "rightwards hand: light skin tone": null, - "rightwards hand: medium skin tone": null, - "rightwards hand: medium-dark skin tone": null, - "rightwards hand: medium-light skin tone": null, - "rightwards pushing hand": null, - "rightwards pushing hand: dark skin tone": null, - "rightwards pushing hand: light skin tone": null, - "rightwards pushing hand: medium skin tone": null, - "rightwards pushing hand: medium-dark skin tone": null, - "rightwards pushing hand: medium-light skin tone": null, - "ring": null, - "ring buoy": null, - "ringed planet": null, - "roasted sweet potato": null, - "robot": null, - "rock": null, - "rocket": null, - "roll of paper": null, - "rolled-up newspaper": null, - "roller coaster": null, - "roller skate": null, - "rolling on the floor laughing": null, - "rooster": null, - "rose": null, - "rosette": null, - "round pushpin": null, - "rugby football": null, - "running shirt": null, - "running shoe": null, - "sad but relieved face": null, - "safety pin": null, - "safety vest": null, - "sailboat": null, - "sake": null, - "salt": null, - "saluting face": null, - "sandwich": null, - "sari": null, - "satellite": null, - "satellite antenna": null, - "sauropod": null, - "saxophone": null, - "scarf": null, - "school": null, - "scissors": null, - "scorpion": null, - "screwdriver": null, - "scroll": null, - "seal": null, - "seat": null, - "see-no-evil monkey": null, - "seedling": null, - "selfie": null, - "selfie: dark skin tone": null, - "selfie: light skin tone": null, - "selfie: medium skin tone": null, - "selfie: medium-dark skin tone": null, - "selfie: medium-light skin tone": null, - "seven o'clock": null, - "seven-thirty": null, - "sewing needle": null, - "shaking face": null, - "shallow pan of food": null, - "shamrock": null, - "shark": null, - "shaved ice": null, - "sheaf of rice": null, - "shield": null, - "shinto shrine": null, - "ship": null, - "shooting star": null, - "shopping bags": null, - "shopping cart": null, - "shortcake": null, - "shorts": null, - "shower": null, - "shrimp": null, - "shuffle tracks button": null, - "shushing face": null, - "sign of the horns": null, - "sign of the horns: dark skin tone": null, - "sign of the horns: light skin tone": null, - "sign of the horns: medium skin tone": null, - "sign of the horns: medium-dark skin tone": null, - "sign of the horns: medium-light skin tone": null, - "six o'clock": null, - "six-thirty": null, - "skateboard": null, - "skier": null, - "skis": null, - "skull": null, - "skull and crossbones": null, - "skunk": null, - "sled": null, - "sleeping face": null, - "sleepy face": null, - "slightly frowning face": null, - "slightly smiling face": null, - "slot machine": null, - "sloth": null, - "small airplane": null, - "small blue diamond": null, - "small orange diamond": null, - "smiling cat with heart-eyes": null, - "smiling face": null, - "smiling face with halo": null, - "smiling face with heart-eyes": null, - "smiling face with hearts": null, - "smiling face with horns": null, - "smiling face with open hands": null, - "smiling face with smiling eyes": null, - "smiling face with sunglasses": null, - "smiling face with tear": null, - "smirking face": null, - "snail": null, - "snake": null, - "sneezing face": null, - "snow-capped mountain": null, - "snowboarder": null, - "snowboarder: dark skin tone": null, - "snowboarder: light skin tone": null, - "snowboarder: medium skin tone": null, - "snowboarder: medium-dark skin tone": null, - "snowboarder: medium-light skin tone": null, - "snowflake": null, - "snowman": null, - "snowman without snow": null, - "soap": null, - "soccer ball": null, - "socks": null, - "soft ice cream": null, - "softball": null, - "spade suit": null, - "spaghetti": null, - "sparkle": null, - "sparkler": null, - "sparkles": null, - "sparkling heart": null, - "speak-no-evil monkey": null, - "speaker high volume": null, - "speaker low volume": null, - "speaker medium volume": null, - "speaking head": null, - "speech balloon": null, - "speedboat": null, - "spider": null, - "spider web": null, - "spiral calendar": null, - "spiral notepad": null, - "spiral shell": null, - "sponge": null, - "spoon": null, - "sport utility vehicle": null, - "sports medal": null, - "spouting whale": null, - "squid": null, - "squinting face with tongue": null, - "stadium": null, - "star": null, - "star and crescent": null, - "star of David": null, - "star-struck": null, - "station": null, - "steaming bowl": null, - "stethoscope": null, - "stop button": null, - "stop sign": null, - "stopwatch": null, - "straight ruler": null, - "strawberry": null, - "studio microphone": null, - "stuffed flatbread": null, - "sun": null, - "sun behind cloud": null, - "sun behind large cloud": null, - "sun behind rain cloud": null, - "sun behind small cloud": null, - "sun with face": null, - "sunflower": null, - "sunglasses": null, - "sunrise": null, - "sunrise over mountains": null, - "sunset": null, - "superhero": null, - "superhero: dark skin tone": null, - "superhero: light skin tone": null, - "superhero: medium skin tone": null, - "superhero: medium-dark skin tone": null, - "superhero: medium-light skin tone": null, - "supervillain": null, - "supervillain: dark skin tone": null, - "supervillain: light skin tone": null, - "supervillain: medium skin tone": null, - "supervillain: medium-dark skin tone": null, - "supervillain: medium-light skin tone": null, - "sushi": null, - "suspension railway": null, - "swan": null, - "sweat droplets": null, - "synagogue": null, - "syringe": null, - "t-shirt": null, - "taco": null, - "takeout box": null, - "tamale": null, - "tanabata tree": null, - "tangerine": null, - "taxi": null, - "teacup without handle": null, - "teapot": null, - "tear-off calendar": null, - "teddy bear": null, - "telephone": null, - "telephone receiver": null, - "telescope": null, - "television": null, - "ten o'clock": null, - "ten-thirty": null, - "tennis": null, - "tent": null, - "test tube": null, - "thermometer": null, - "thinking face": null, - "thong sandal": null, - "thought balloon": null, - "thread": null, - "three o'clock": null, - "three-thirty": null, - "thumbs down": null, - "thumbs down: dark skin tone": null, - "thumbs down: light skin tone": null, - "thumbs down: medium skin tone": null, - "thumbs down: medium-dark skin tone": null, - "thumbs down: medium-light skin tone": null, - "thumbs up": null, - "thumbs up: dark skin tone": null, - "thumbs up: light skin tone": null, - "thumbs up: medium skin tone": null, - "thumbs up: medium-dark skin tone": null, - "thumbs up: medium-light skin tone": null, - "ticket": null, - "tiger": null, - "tiger face": null, - "timer clock": null, - "tired face": null, - "toilet": null, - "tomato": null, - "tongue": null, - "toolbox": null, - "tooth": null, - "toothbrush": null, - "top hat": null, - "tornado": null, - "trackball": null, - "tractor": null, - "trade mark": null, - "train": null, - "tram": null, - "tram car": null, - "transgender symbol": null, - "triangular flag": null, - "triangular ruler": null, - "trident emblem": null, - "troll": null, - "trolleybus": null, - "trophy": null, - "tropical drink": null, - "tropical fish": null, - "trumpet": null, - "tulip": null, - "tumbler glass": null, - "turkey": null, - "turtle": null, - "twelve o'clock": null, - "twelve-thirty": null, - "two hearts": null, - "two o'clock": null, - "two-hump camel": null, - "two-thirty": null, - "umbrella": null, - "umbrella on ground": null, - "umbrella with rain drops": null, - "unamused face": null, - "unicorn": null, - "unlocked": null, - "up arrow": null, - "up-down arrow": null, - "up-left arrow": null, - "up-right arrow": null, - "upside-down face": null, - "upwards button": null, - "vampire": null, - "vampire: dark skin tone": null, - "vampire: light skin tone": null, - "vampire: medium skin tone": null, - "vampire: medium-dark skin tone": null, - "vampire: medium-light skin tone": null, - "vertical traffic light": null, - "vibration mode": null, - "victory hand": null, - "victory hand: dark skin tone": null, - "victory hand: light skin tone": null, - "victory hand: medium skin tone": null, - "victory hand: medium-dark skin tone": null, - "victory hand: medium-light skin tone": null, - "video camera": null, - "video game": null, - "videocassette": null, - "violin": null, - "volcano": null, - "volleyball": null, - "vulcan salute": null, - "vulcan salute: dark skin tone": null, - "vulcan salute: light skin tone": null, - "vulcan salute: medium skin tone": null, - "vulcan salute: medium-dark skin tone": null, - "vulcan salute: medium-light skin tone": null, - "waffle": null, - "waning crescent moon": null, - "waning gibbous moon": null, - "warning": null, - "wastebasket": null, - "watch": null, - "water buffalo": null, - "water closet": null, - "water pistol": null, - "water wave": null, - "watermelon": null, - "waving hand": null, - "waving hand: dark skin tone": null, - "waving hand: light skin tone": null, - "waving hand: medium skin tone": null, - "waving hand: medium-dark skin tone": null, - "waving hand: medium-light skin tone": null, - "wavy dash": null, - "waxing crescent moon": null, - "waxing gibbous moon": null, - "weary cat": null, - "weary face": null, - "wedding": null, - "whale": null, - "wheel": null, - "wheel of dharma": null, - "wheelchair symbol": null, - "white cane": null, - "white circle": null, - "white exclamation mark": null, - "white flag": null, - "white flower": null, - "white heart": null, - "white large square": null, - "white medium square": null, - "white medium-small square": null, - "white question mark": null, - "white small square": null, - "white square button": null, - "wilted flower": null, - "wind chime": null, - "wind face": null, - "window": null, - "wine glass": null, - "wing": null, - "winking face": null, - "winking face with tongue": null, - "wireless": null, - "wolf": null, - "woman": null, - "woman and man holding hands": null, - "woman and man holding hands: dark skin tone": null, - "woman and man holding hands: light skin tone": null, - "woman and man holding hands: medium skin tone": null, - "woman and man holding hands: medium-dark skin tone": null, - "woman and man holding hands: medium-light skin tone": null, - "woman dancing": null, - "woman dancing: dark skin tone": null, - "woman dancing: light skin tone": null, - "woman dancing: medium skin tone": null, - "woman dancing: medium-dark skin tone": null, - "woman dancing: medium-light skin tone": null, - "woman with headscarf": null, - "woman with headscarf: dark skin tone": null, - "woman with headscarf: light skin tone": null, - "woman with headscarf: medium skin tone": null, - "woman with headscarf: medium-dark skin tone": null, - "woman with headscarf: medium-light skin tone": null, - "woman's boot": null, - "woman's clothes": null, - "woman's hat": null, - "woman's sandal": null, - "woman: dark skin tone": null, - "woman: light skin tone": null, - "woman: medium skin tone": null, - "woman: medium-dark skin tone": null, - "woman: medium-light skin tone": null, - "women holding hands": null, - "women holding hands: dark skin tone": null, - "women holding hands: light skin tone": null, - "women holding hands: medium skin tone": null, - "women holding hands: medium-dark skin tone": null, - "women holding hands: medium-light skin tone": null, - "women's room": null, - "wood": null, - "woozy face": null, - "world map": null, - "worm": null, - "worried face": null, - "wrapped gift": null, - "wrench": null, - "writing hand": null, - "writing hand: dark skin tone": null, - "writing hand: light skin tone": null, - "writing hand: medium skin tone": null, - "writing hand: medium-dark skin tone": null, - "writing hand: medium-light skin tone": null, - "x-ray": null, - "yarn": null, - "yawning face": null, - "yellow circle": null, - "yellow heart": null, - "yellow square": null, - "yen banknote": null, - "yin yang": null, - "yo-yo": null, - "zany face": null, - "zebra": null, - "zipper-mouth face": null, - "zombie": null -} diff --git a/src/typescript/sdk/src/emoji_data/types.ts b/src/typescript/sdk/src/emoji_data/types.ts index 8fdd84afa..12968f261 100644 --- a/src/typescript/sdk/src/emoji_data/types.ts +++ b/src/typescript/sdk/src/emoji_data/types.ts @@ -1,19 +1,11 @@ import { type MarketMetadataModel } from "../indexer-v2/types"; -import { type getEmojicoinMarketAddressAndTypeTags } from "../markets"; -import type AllSymbolEmojiJSON from "./symbol-emojis.json"; -import type AllChatEmojiJSON from "./chat-emojis.json"; -import { type symbolBytesToEmojis } from "./utils"; -// Note the name data JSON files are not duplicated data, they are purely for type resolution. -import type SymbolNamesJSON from "./symbol-names.json"; -import type ChatNamesJSON from "./chat-names.json"; +import { type CHAT_EMOJIS } from "./chat-emojis"; +import { type SYMBOL_EMOJIS } from "./symbol-emojis"; -export type AllSymbolEmojiData = typeof AllSymbolEmojiJSON; -export type SymbolEmoji = keyof AllSymbolEmojiData; -export type SymbolEmojiName = keyof typeof SymbolNamesJSON; - -export type AllChatEmojiData = typeof AllChatEmojiJSON; -export type ChatEmoji = keyof AllChatEmojiData; -export type ChatEmojiName = keyof typeof ChatNamesJSON; +export type SymbolEmoji = keyof typeof SYMBOL_EMOJIS; +export type SymbolEmojiName = (typeof SYMBOL_EMOJIS)[keyof typeof SYMBOL_EMOJIS]; +export type ChatEmoji = keyof typeof CHAT_EMOJIS; +export type ChatEmojiName = (typeof CHAT_EMOJIS)[keyof typeof CHAT_EMOJIS]; export type AnyEmoji = SymbolEmoji | ChatEmoji; export type AnyEmojiName = SymbolEmojiName | ChatEmojiName; @@ -60,12 +52,3 @@ export type RegisteredMarketInfo = Pick< MarketMetadataModel, "marketID" | "emojis" | "symbolEmojis" | "symbolData" >; - -/** - * Represents either the raw emoji symbol or symbol array or the emoji data. - * This should *NOT* represent emojis as hex strings/bytes. - */ -export type EmojicoinSymbol = string | string[] | SymbolEmojiData | SymbolEmojiData[]; - -export type DerivedEmojicoinData = ReturnType & - ReturnType & { symbolBytes: `0x${string}` }; diff --git a/src/typescript/sdk/src/emoji_data/utils.ts b/src/typescript/sdk/src/emoji_data/utils.ts index 70b15ed70..2eb04dc21 100644 --- a/src/typescript/sdk/src/emoji_data/utils.ts +++ b/src/typescript/sdk/src/emoji_data/utils.ts @@ -64,37 +64,6 @@ export const getEmojiData = (input: HexInput | SymbolEmojiName): SymbolEmojiData */ export const isValidEmoji = (emoji: string): boolean => SYMBOL_EMOJI_DATA.hasEmoji(emoji); -/** - * This parses an input string to see if it's a valid symbol. - * It not only checks that each individual emoji is valid, but also that the total number - * of bytes is valid as well. - * @param symbol the symbol to be checked. - * @returns whether or not the symbol is a valid symbol. - * - * @example - * ```typescript - * isValidSymbol('🟥🟥'); // true - * isValidSymbol('🟥🟥🟥🟥🟥'); // false (too long) - * ``` - */ -export const isValidMarketSymbol = (symbol: string): boolean => { - const numBytes = new TextEncoder().encode(symbol).length; - if (numBytes > MAX_SYMBOL_LENGTH || numBytes === 0) { - return false; - } - const emojis = getEmojisInString(symbol); - const reconstructed = Array.from(emojis).join(""); - if (reconstructed !== symbol) { - return false; - } - for (const emoji of emojis) { - if (!isValidEmoji(emoji)) { - return false; - } - } - return true; -}; - /** * Parses a string passed in and maps each individual emoji to its corresponding data. * If none of the emojis are valid, no error is thrown, the array is just empty. diff --git a/src/typescript/sdk/src/emojicoin_dot_fun/index.ts b/src/typescript/sdk/src/emojicoin_dot_fun/index.ts index 96ffaa7e7..348ba2435 100644 --- a/src/typescript/sdk/src/emojicoin_dot_fun/index.ts +++ b/src/typescript/sdk/src/emojicoin_dot_fun/index.ts @@ -1,5 +1,7 @@ -export * as AptosFramework from "./aptos-framework"; -export * as EmojicoinDotFun from "./emojicoin-dot-fun"; +export * from "./calculate-swap-price"; +export * from "./events"; +export * from "./serialize-args-to-json"; export * from "./types"; export * from "./utils"; -export * from "./calculate-swap-price"; +export * as AptosFramework from "./aptos-framework"; +export * as EmojicoinDotFun from "./emojicoin-dot-fun"; diff --git a/src/typescript/sdk/src/index.ts b/src/typescript/sdk/src/index.ts index b77285518..a4fc610b7 100644 --- a/src/typescript/sdk/src/index.ts +++ b/src/typescript/sdk/src/index.ts @@ -4,4 +4,3 @@ export * from "./emojicoin_dot_fun"; export * from "./markets"; export * from "./types"; export * from "./utils"; -export * from "./mini-processor"; diff --git a/src/typescript/sdk/src/indexer-v2/index.ts b/src/typescript/sdk/src/indexer-v2/index.ts new file mode 100644 index 000000000..40754103a --- /dev/null +++ b/src/typescript/sdk/src/indexer-v2/index.ts @@ -0,0 +1,4 @@ +export * from "./json-bigint"; +export * from "./mini-processor"; +export * from "./queries"; +export * from "./types"; diff --git a/src/typescript/sdk/src/mini-processor/event-groups/builder.ts b/src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/builder.ts similarity index 98% rename from src/typescript/sdk/src/mini-processor/event-groups/builder.ts rename to src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/builder.ts index 4859d953b..e64ecab2a 100644 --- a/src/typescript/sdk/src/mini-processor/event-groups/builder.ts +++ b/src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/builder.ts @@ -1,15 +1,15 @@ import { AccountAddress, type TransactionPayloadResponse } from "@aptos-labs/ts-sdk"; +import { type AccountAddressString } from "../../../emojicoin_dot_fun"; import { - type AnyNumberString, + type Types, isChatEvent, - isLiquidityEvent, isMarketRegistrationEvent, - isPeriodicStateEvent, - isStateEvent, isSwapEvent, - type Types, -} from "../../types"; -import { type AccountAddressString } from "../../emojicoin_dot_fun/types"; + isLiquidityEvent, + isStateEvent, + isPeriodicStateEvent, + type AnyNumberString, +} from "../../../types"; export type TxnInfo = { version: bigint; diff --git a/src/typescript/sdk/src/mini-processor/event-groups/index.ts b/src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/index.ts similarity index 97% rename from src/typescript/sdk/src/mini-processor/event-groups/index.ts rename to src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/index.ts index 3e0235407..9b4dc75c8 100644 --- a/src/typescript/sdk/src/mini-processor/event-groups/index.ts +++ b/src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/index.ts @@ -1,13 +1,13 @@ import { type UserTransactionResponse } from "@aptos-labs/ts-sdk"; -import { toMarketEmojiData } from "../../emoji_data"; -import { type AccountAddressString, getMarketAddress, getEvents } from "../../emojicoin_dot_fun"; +import { toMarketEmojiData } from "../../../emoji_data"; +import { type AccountAddressString, getMarketAddress, getEvents } from "../../../emojicoin_dot_fun"; import { GuidGetters, type MarketMetadataModel, type StateEventData, type DatabaseModels, type TransactionMetadata, -} from "../../indexer-v2/types"; +} from "../../types"; import { EventGroupBuilder, type EventWithMarket, @@ -18,7 +18,7 @@ import { import { getMiscLatestStateEventFieldsFromWriteSet } from "../parse-write-set"; import { addModelsForBumpEvent, toPeriodicStateEventData } from "./utils"; -import { type Events } from "../../emojicoin_dot_fun/events"; +import { type Events } from "../../../emojicoin_dot_fun/events"; export type BumpEventModel = | DatabaseModels["chat_events"] diff --git a/src/typescript/sdk/src/mini-processor/event-groups/utils.ts b/src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/utils.ts similarity index 97% rename from src/typescript/sdk/src/mini-processor/event-groups/utils.ts rename to src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/utils.ts index b43979fa7..1e7100f28 100644 --- a/src/typescript/sdk/src/mini-processor/event-groups/utils.ts +++ b/src/typescript/sdk/src/indexer-v2/mini-processor/event-groups/utils.ts @@ -1,5 +1,5 @@ import { type UserTransactionResponse } from "@aptos-labs/ts-sdk"; -import { rawPeriodToEnum } from "../../const"; +import { rawPeriodToEnum } from "../../../const"; import { GuidGetters, type MarketMetadataModel, @@ -7,7 +7,7 @@ import { type DatabaseModels, toTransactionMetadataForUserLiquidityPools, type TransactionMetadata, -} from "../../indexer-v2/types"; +} from "../../types"; import { type BumpEvent } from "./builder"; import { isChatEvent, @@ -15,9 +15,9 @@ import { isMarketRegistrationEvent, isSwapEvent, type Types, -} from "../../types"; +} from "../../../types"; import { type EventsModels, type UserLiquidityPoolsMap } from "."; -import { type AccountAddressString } from "../../emojicoin_dot_fun"; +import { type AccountAddressString } from "../../../emojicoin_dot_fun"; import { getLPCoinBalanceFromWriteSet } from "../parse-write-set"; const toChatEventData = (event: Types["ChatEvent"]): DatabaseModels["chat_events"]["chat"] => ({ diff --git a/src/typescript/sdk/src/mini-processor/index.ts b/src/typescript/sdk/src/indexer-v2/mini-processor/index.ts similarity index 100% rename from src/typescript/sdk/src/mini-processor/index.ts rename to src/typescript/sdk/src/indexer-v2/mini-processor/index.ts diff --git a/src/typescript/sdk/src/mini-processor/parse-write-set.ts b/src/typescript/sdk/src/indexer-v2/mini-processor/parse-write-set.ts similarity index 88% rename from src/typescript/sdk/src/mini-processor/parse-write-set.ts rename to src/typescript/sdk/src/indexer-v2/mini-processor/parse-write-set.ts index dce213995..f29119ca4 100644 --- a/src/typescript/sdk/src/mini-processor/parse-write-set.ts +++ b/src/typescript/sdk/src/indexer-v2/mini-processor/parse-write-set.ts @@ -3,14 +3,14 @@ import { type HexInput, type UserTransactionResponse, } from "@aptos-labs/ts-sdk"; -import { getEvents } from "../emojicoin_dot_fun/utils"; +import { getEvents } from "../../emojicoin_dot_fun/utils"; import { calculateTvlGrowth, getEmojicoinMarketAddressAndTypeTags, getMarketResourceFromWriteSet, -} from "../markets/utils"; -import { Period, rawPeriodToEnum } from "../const"; -import { getCoinBalanceFromChanges } from "../utils/parse-changes-for-balances"; +} from "../../markets/utils"; +import { Period, rawPeriodToEnum } from "../../const"; +import { getCoinBalanceFromChanges } from "../../utils/parse-changes-for-balances"; export const getMiscLatestStateEventFieldsFromWriteSet = (response: UserTransactionResponse) => { const events = getEvents(response); diff --git a/src/typescript/sdk/src/indexer-v2/queries/utils.ts b/src/typescript/sdk/src/indexer-v2/queries/utils.ts index 5a2212df4..cc5004f61 100644 --- a/src/typescript/sdk/src/indexer-v2/queries/utils.ts +++ b/src/typescript/sdk/src/indexer-v2/queries/utils.ts @@ -9,10 +9,8 @@ import { type PostgrestBuilder, type PostgrestTransformBuilder, } from "@supabase/postgrest-js"; -import { type Account, type AccountAddressInput } from "@aptos-labs/ts-sdk"; import { type AnyNumberString } from "../../types/types"; import { type DatabaseJsonType, postgresTimestampToDate, TableName } from "../types/json-types"; -import { toAccountAddress } from "../../utils"; import { postgrest } from "./client"; import { type DatabaseModels } from "../types"; @@ -203,17 +201,3 @@ export function queryHelperWithCount< return query; } - -/** - * Strip leading zeroes from an address. - * - * @param address either the account object, an account address, or a string. - * @returns the address without any leading zeroes, still prefixed with "0x". - * - */ -/* eslint-disable-next-line import/no-unused-modules */ -export const stripLeadingZeroes = (address: T | AccountAddressInput) => - // prettier-ignore - toAccountAddress(address) - .toString() - .replace(/^0x0+/, "0x"); diff --git a/src/typescript/sdk/src/indexer-v2/types/index.ts b/src/typescript/sdk/src/indexer-v2/types/index.ts index 8ec5a42a3..cfb50140a 100644 --- a/src/typescript/sdk/src/indexer-v2/types/index.ts +++ b/src/typescript/sdk/src/indexer-v2/types/index.ts @@ -697,3 +697,7 @@ export const isGlobalStateEventModel = ( export const isEventModelWithMarket = (data: AnyEventModel): data is EventModelWithMarket => !isGlobalStateEventModel(data); + +export * from "./common"; +export * from "./json-types"; +export * from "./postgres-numeric-types"; diff --git a/src/typescript/sdk/src/indexer-v2/types/json-types.ts b/src/typescript/sdk/src/indexer-v2/types/json-types.ts index bd2c1b3f0..67d5edb9d 100644 --- a/src/typescript/sdk/src/indexer-v2/types/json-types.ts +++ b/src/typescript/sdk/src/indexer-v2/types/json-types.ts @@ -19,7 +19,7 @@ export type PeriodTypeFromDatabase = | "period_4h" | "period_1d"; -type PeriodTypeFromBroker = +export type PeriodTypeFromBroker = | "OneMinute" | "FiveMinutes" | "FifteenMinutes" @@ -28,7 +28,7 @@ type PeriodTypeFromBroker = | "FourHours" | "OneDay"; -type TriggerTypeFromDatabase = +export type TriggerTypeFromDatabase = | "package_publication" | "market_registration" | "swap_buy" @@ -37,7 +37,7 @@ type TriggerTypeFromDatabase = | "remove_liquidity" | "chat"; -type TriggerTypeFromBroker = +export type TriggerTypeFromBroker = | "PackagePublication" | "MarketRegistration" | "SwapBuy" diff --git a/src/typescript/sdk/src/markets/utils.ts b/src/typescript/sdk/src/markets/utils.ts index 74552e772..b4163e5a0 100644 --- a/src/typescript/sdk/src/markets/utils.ts +++ b/src/typescript/sdk/src/markets/utils.ts @@ -38,12 +38,10 @@ import { } from "../types/types"; import type JsonTypes from "../types/json-types"; import { - type DerivedEmojicoinData, - type EmojicoinSymbol, encodeEmojis, symbolBytesToEmojis, - type SymbolEmoji, type SymbolEmojiData, + type SymbolEmoji, } from "../emoji_data"; import { STRUCT_STRINGS, TYPE_TAGS } from "../utils"; import { getAptosClient } from "../utils/aptos-client"; @@ -94,9 +92,14 @@ export function getEmojicoinMarketAddressAndTypeTags(args: { /** * Helper function to get all emoji data based from a symbol. * + * Do *not* pass emojis as hex strings to this function, they should be actual emojis if they're + * passed as strings. + * * Note that the market metadata is implicitly derived from the hardcoded module address constant. */ -export const getEmojicoinData = (symbol: EmojicoinSymbol): DerivedEmojicoinData => { +export const getEmojicoinData = ( + symbol: string | string[] | SymbolEmojiData | SymbolEmojiData[] +) => { const symbolArray = Array.isArray(symbol) ? symbol : ([symbol] as Array | Array); diff --git a/src/typescript/sdk/src/queries/client-utils/candlestick.ts b/src/typescript/sdk/src/queries/client-utils/candlestick.ts deleted file mode 100644 index e638bdb05..000000000 --- a/src/typescript/sdk/src/queries/client-utils/candlestick.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* eslint-disable import/no-unused-modules */ // Still this bug where it thinks this doesn't export. -import { PeriodDuration } from "../../const"; -import { type Types } from "../../types"; - -/** - * Tip: Use the PeriodDuration enum to access the keys of an object of this type. - * - * @example - * const candlesticks = await getInitialCandlesticks(marketID); - * const oneDayCandlesticks = candlesticks[PeriodDuration.PERIOD_1D]; - * const oneHourCandlesticks = candlesticks[PeriodDuration.PERIOD_1H]; - * const oneMinuteCandlesticks = candlesticks[PeriodDuration.PERIOD_1M]; - */ -export type GroupedPeriodicStateEvents = Record; - -export const createEmptyGroupedCandlesticks = (): GroupedPeriodicStateEvents => ({ - [PeriodDuration.PERIOD_1M]: [], - [PeriodDuration.PERIOD_5M]: [], - [PeriodDuration.PERIOD_15M]: [], - [PeriodDuration.PERIOD_30M]: [], - [PeriodDuration.PERIOD_1H]: [], - [PeriodDuration.PERIOD_4H]: [], - [PeriodDuration.PERIOD_1D]: [], -}); - -// TODO: Put this in the event store...? -/** - * @see {@link GroupedPeriodicStateEvents} - */ -export const toGroupedCandlesticks = (candlesticks: Types["PeriodicStateEvent"][]) => { - const grouped = createEmptyGroupedCandlesticks(); - - for (const candlestick of candlesticks) { - const periodInEvent = Number(candlestick.periodicStateMetadata.period) as PeriodDuration; - grouped[periodInEvent].push(candlestick); - } - - return grouped; -}; diff --git a/src/typescript/sdk/src/queries/const.ts b/src/typescript/sdk/src/queries/const.ts index aec5616fc..32db155d5 100644 --- a/src/typescript/sdk/src/queries/const.ts +++ b/src/typescript/sdk/src/queries/const.ts @@ -23,17 +23,3 @@ export const toOrderBy = (input: OrderByStrings | OrderBy) => { throw new Error(`Invalid order by value: ${input}`); } }; - -export const toOrderByString = (input: OrderByStrings | OrderBy): OrderByStrings => { - if (typeof input === "string") { - return input; - } - switch (input) { - case ORDER_BY.ASC: - return "asc"; - case ORDER_BY.DESC: - return "desc"; - default: - return "desc"; - } -}; diff --git a/src/typescript/sdk/src/queries/index.ts b/src/typescript/sdk/src/queries/index.ts index 8adf250ea..17d8d2f74 100644 --- a/src/typescript/sdk/src/queries/index.ts +++ b/src/typescript/sdk/src/queries/index.ts @@ -1,5 +1 @@ -if (process.env.NODE_ENV !== "test") { - require("server-only"); -} - export * from "./const"; diff --git a/src/typescript/sdk/src/server/index.ts b/src/typescript/sdk/src/server/index.ts new file mode 100644 index 000000000..77b0d3c78 --- /dev/null +++ b/src/typescript/sdk/src/server/index.ts @@ -0,0 +1 @@ +export * from "./env"; diff --git a/src/typescript/sdk/src/types/index.ts b/src/typescript/sdk/src/types/index.ts index 2e1c2a008..3580567d6 100644 --- a/src/typescript/sdk/src/types/index.ts +++ b/src/typescript/sdk/src/types/index.ts @@ -1,7 +1,7 @@ export * from "./core"; export { type default as JsonTypes } from "./json-types"; -export * from "./types"; export * from "./postgrest-types"; +export * from "./types"; /** * Flatten a type to remove any nested properties from unions and intersections. diff --git a/src/typescript/sdk/src/utils/aptos-utils.ts b/src/typescript/sdk/src/utils/aptos-utils.ts index 5995b617f..befdd44fe 100644 --- a/src/typescript/sdk/src/utils/aptos-utils.ts +++ b/src/typescript/sdk/src/utils/aptos-utils.ts @@ -10,10 +10,6 @@ import { } from "@aptos-labs/ts-sdk"; import { sha3_256 } from "@noble/hashes/sha3"; -export function toAptos(aptos: Aptos | AptosConfig): Aptos { - return aptos instanceof Aptos ? aptos : new Aptos(aptos); -} - export function toConfig(aptos: Aptos | AptosConfig): AptosConfig { return aptos instanceof Aptos ? aptos.config : aptos; } diff --git a/src/typescript/sdk/src/utils/index.ts b/src/typescript/sdk/src/utils/index.ts index b3ec761ed..f586543a2 100644 --- a/src/typescript/sdk/src/utils/index.ts +++ b/src/typescript/sdk/src/utils/index.ts @@ -1,6 +1,12 @@ export * from "./account-address"; +export * from "./aptos-client"; +export * from "./aptos-utils"; +export * from "./bonding-curve"; +export * from "./compare-bigint"; export * from "./hex"; export * from "./misc"; +export * from "./nominal-price"; +export * from "./parse-changes-for-balances"; +export * from "./sum-emoji-bytes"; export * from "./type-tags"; -export * from "./compare-bigint"; export * from "./validation"; diff --git a/src/typescript/sdk/src/utils/misc.ts b/src/typescript/sdk/src/utils/misc.ts index 22c944835..50cbed8ea 100644 --- a/src/typescript/sdk/src/utils/misc.ts +++ b/src/typescript/sdk/src/utils/misc.ts @@ -14,69 +14,18 @@ import { isSwapEvent, } from "../types"; -// No nanoseconds because dealing with overflow is a pain (aka using a bigint) and we don't need it. -export enum UnitOfTime { - Microseconds, - Milliseconds, - Seconds, - Minutes, - Hours, - Days, - Weeks, -} - -// No nanoseconds because dealing with overflow is a pain (aka using a bigint) and we don't need it. -// NOTE: This specifically for converting from a UnitOfTime to milliseconds. -export const UNIT_OF_TIME_MULTIPLIERS: Record = { - [UnitOfTime.Microseconds]: 1 / 1000, - [UnitOfTime.Milliseconds]: 1, - [UnitOfTime.Seconds]: 1000, - [UnitOfTime.Minutes]: 1000 * 60, - [UnitOfTime.Hours]: 1000 * 60 * 60, - [UnitOfTime.Days]: 1000 * 60 * 60 * 24, - [UnitOfTime.Weeks]: 1000 * 60 * 60 * 24 * 7, -}; - /** - * Sleep the current thread for the given amount of time, with an optional specifier - * for the unit of time. + * Sleep for a given amount of time. * - * - * @param amount the numeric amount of time to sleep - * @param unitOfTime the unit of time to sleep for - * @default unitOfTime milliseconds. + * @param amount the numeric amount of time to sleep in milliseconds. * */ -export async function sleep( - amount: number, - unitOfTime: UnitOfTime = UnitOfTime.Milliseconds -): Promise { +export async function sleep(amount: number): Promise { return new Promise((resolve) => { - setTimeout(resolve, amount * UNIT_OF_TIME_MULTIPLIERS[unitOfTime]); + setTimeout(resolve, amount); }); } -/** - * - * This is a helper function to specify the unit of time for `Date.now()`. - * - * Note that this function returns a fractional, floating point value. - * - * @param unitOfTime {@link UnitOfTime} - * @returns the elapsed {@link UnitOfTime} since the Unix epoch, as a floating point number. - * - * @example - * ``` - * const time = getTime(UnitOfTime.Seconds); - * // `time` is the number of seconds since the Unix epoch. - * const time = getTime(UnitOfTime.Days); - * // `time` is the number of days since the Unix epoch. - * ``` - */ -export function getTime(unitOfTime: UnitOfTime) { - return Date.now() / UNIT_OF_TIME_MULTIPLIERS[unitOfTime]; -} - /** * This function calculates the period boundary for a swap or state event. * @param event diff --git a/src/typescript/sdk/tests/e2e/broker/websockets.test.ts b/src/typescript/sdk/tests/e2e/broker/websockets.test.ts index efe7b8906..1e0112dd7 100644 --- a/src/typescript/sdk/tests/e2e/broker/websockets.test.ts +++ b/src/typescript/sdk/tests/e2e/broker/websockets.test.ts @@ -22,8 +22,8 @@ import { Swap, SwapWithRewards, } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; -import { EXACT_TRANSITION_INPUT_AMOUNT, getAptosClient } from "../../../src/utils/test"; -import { getFundedAccounts } from "../../../src/utils/test/test-accounts"; +import { EXACT_TRANSITION_INPUT_AMOUNT, getAptosClient } from "../../utils"; +import { getFundedAccounts } from "../../utils/test-accounts"; import { type BrokerEvent } from "../../../src/broker-v2/types"; import { isChatEventModel, diff --git a/src/typescript/sdk/tests/e2e/calculate-reserves-and-supply.test.ts b/src/typescript/sdk/tests/e2e/calculate-reserves-and-supply.test.ts index 3a0ffccf8..a47e52d15 100644 --- a/src/typescript/sdk/tests/e2e/calculate-reserves-and-supply.test.ts +++ b/src/typescript/sdk/tests/e2e/calculate-reserves-and-supply.test.ts @@ -9,10 +9,10 @@ import { zip, } from "../../src"; import { getMarketAddress } from "../../src/emojicoin_dot_fun"; -import { getFundedAccounts } from "../../src/utils/test/test-accounts"; +import { getFundedAccounts } from "../utils/test-accounts"; import { EmojicoinClient } from "../../src/client/emojicoin-client"; import { getCoinBalanceFromChanges } from "../../src/utils/parse-changes-for-balances"; -import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../src/utils/test"; +import { EXACT_TRANSITION_INPUT_AMOUNT } from "../utils/helpers"; import { isInBondingCurve } from "../../src/utils/bonding-curve"; import { type UserTransactionResponse } from "@aptos-labs/ts-sdk"; import { type SwapEventModel } from "../../src/indexer-v2/types"; diff --git a/src/typescript/sdk/tests/e2e/calculate-swap.test.ts b/src/typescript/sdk/tests/e2e/calculate-swap.test.ts index 4dce14ff5..ef3670ce1 100644 --- a/src/typescript/sdk/tests/e2e/calculate-swap.test.ts +++ b/src/typescript/sdk/tests/e2e/calculate-swap.test.ts @@ -14,8 +14,8 @@ import { zip, } from "../../src"; import { calculateSwapNetProceeds, getMarketAddress } from "../../src/emojicoin_dot_fun"; -import { getPublishHelpers } from "../../src/utils/test"; -import { getFundedAccounts } from "../../src/utils/test/test-accounts"; +import { getPublishHelpers } from "../utils/helpers"; +import { getFundedAccounts } from "../utils/test-accounts"; import { EmojicoinClient } from "../../src/client/emojicoin-client"; import { TransferCoins } from "../../src/emojicoin_dot_fun/aptos-framework"; import { getExactTransitionInputAmount } from "./helpers/misc"; diff --git a/src/typescript/sdk/tests/e2e/chat.test.ts b/src/typescript/sdk/tests/e2e/chat.test.ts index d1fb8ee3f..d80064c42 100644 --- a/src/typescript/sdk/tests/e2e/chat.test.ts +++ b/src/typescript/sdk/tests/e2e/chat.test.ts @@ -2,10 +2,10 @@ import { Ed25519Account } from "@aptos-labs/ts-sdk"; import { ONE_APT } from "../../src/const"; import { getRegistryAddress, toChatEvent } from "../../src"; import { EmojicoinDotFun } from "../../src/emojicoin_dot_fun"; -import { getPublishHelpers } from "../../src/utils/test"; +import { getPublishHelpers } from "../utils"; import { getEmojicoinMarketAddressAndTypeTags } from "../../src/markets/utils"; import { STRUCT_STRINGS } from "../../src/utils/type-tags"; -import { getFundedAccount } from "../../src/utils/test/test-accounts"; +import { getFundedAccount } from "../utils/test-accounts"; jest.setTimeout(20000); diff --git a/src/typescript/sdk/tests/e2e/emoji-data.test.ts b/src/typescript/sdk/tests/e2e/emoji-data.test.ts index 7e929b0c9..014f8236f 100644 --- a/src/typescript/sdk/tests/e2e/emoji-data.test.ts +++ b/src/typescript/sdk/tests/e2e/emoji-data.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ // cspell:word writeset import { AccountAddress, type WriteSetChangeWriteTableItem } from "@aptos-labs/ts-sdk"; -import { getPublishHelpers } from "../../src/utils/test/helpers"; +import { getPublishHelpers } from "../utils/helpers"; import { CHAT_EMOJI_DATA, SYMBOL_EMOJI_DATA, @@ -12,11 +12,11 @@ import { isWriteSetChangeWriteTableItem, normalizeHex, } from "../../src"; -import SymbolEmojiJson from "../../src/emoji_data/symbol-emojis.json"; -import ChatEmojiJson from "../../src/emoji_data/chat-emojis.json"; -import { getPublishTransactionFromIndexer } from "../../src/utils/test/get-publish-txn-from-indexer"; -import { getFundedAccount } from "../../src/utils/test/test-accounts"; -import TestHelpers from "../../src/utils/test/helpers"; +import { SYMBOL_EMOJIS } from "../../src/emoji_data/symbol-emojis"; +import { CHAT_EMOJIS } from "../../src/emoji_data/chat-emojis"; +import { getPublishTransactionFromIndexer } from "../utils/get-publish-txn-from-indexer"; +import { getFundedAccount } from "../utils/test-accounts"; +import TestHelpers from "../utils/helpers"; import { waitForEmojicoinIndexer } from "../../src/indexer-v2/queries"; import { fetchMarketRegistrationEvents } from "./queries"; import { ORDER_BY } from "../../src/queries"; @@ -58,7 +58,7 @@ describe("verification of typescript emoji JSON data", () => { // From the Move changesets. const numEmojisAdded = symbolEmojisInWriteSets.length; // From our TS JSON file. - const jsonEntries = Object.entries(SymbolEmojiJson); + const jsonEntries = Object.entries(SYMBOL_EMOJIS); const encoder = new TextEncoder(); const emojisInJSON = jsonEntries.map(([symbol, _name]) => normalizeHex(encoder.encode(symbol))); @@ -132,7 +132,7 @@ describe("verification of typescript emoji JSON data", () => { // From the Move changesets. const numEmojisAdded = chatEmojisInWriteSet.length; // From our TS JSON file. - const jsonEntries = Object.entries(ChatEmojiJson); + const jsonEntries = Object.entries(CHAT_EMOJIS); const encoder = new TextEncoder(); const emojisInJSON = jsonEntries.map(([symbol, _name]) => normalizeHex(encoder.encode(symbol))); diff --git a/src/typescript/sdk/tests/e2e/exact-transition-amount.test.ts b/src/typescript/sdk/tests/e2e/exact-transition-amount.test.ts index 0516e29b8..95110407f 100644 --- a/src/typescript/sdk/tests/e2e/exact-transition-amount.test.ts +++ b/src/typescript/sdk/tests/e2e/exact-transition-amount.test.ts @@ -1,9 +1,9 @@ import { INTEGRATOR_FEE_RATE_BPS } from "../../src/const"; import { SYMBOL_EMOJI_DATA, type SymbolEmoji, zip } from "../../src"; -import { getFundedAccounts } from "../../src/utils/test/test-accounts"; +import { getFundedAccounts } from "../utils/test-accounts"; import { EmojicoinClient } from "../../src/client/emojicoin-client"; import { getExactTransitionInputAmount } from "./helpers/misc"; -import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../src/utils/test"; +import { EXACT_TRANSITION_INPUT_AMOUNT } from "../utils"; import { isInBondingCurve } from "../../src/utils/bonding-curve"; jest.setTimeout(30000); diff --git a/src/typescript/sdk/tests/e2e/fund.test.ts b/src/typescript/sdk/tests/e2e/fund.test.ts index 37f6bcef0..7beb21539 100644 --- a/src/typescript/sdk/tests/e2e/fund.test.ts +++ b/src/typescript/sdk/tests/e2e/fund.test.ts @@ -1,6 +1,6 @@ import { Ed25519Account, isUserTransactionResponse } from "@aptos-labs/ts-sdk"; import { ONE_APT } from "../../src"; -import { getAptosClient } from "../../src/utils/test"; +import { getAptosClient } from "../utils"; jest.setTimeout(10000); diff --git a/src/typescript/sdk/tests/e2e/helpers/misc.ts b/src/typescript/sdk/tests/e2e/helpers/misc.ts index d0cdcfda4..37ce1fe42 100644 --- a/src/typescript/sdk/tests/e2e/helpers/misc.ts +++ b/src/typescript/sdk/tests/e2e/helpers/misc.ts @@ -1,51 +1,7 @@ -import { type AccountAddressInput, type UserTransactionResponse } from "@aptos-labs/ts-sdk"; -import { - BASIS_POINTS_PER_UNIT, - getEvents, - getMarketResourceFromWriteSet, - INTEGRATOR_FEE_RATE_BPS, - Period, - periodEnumToRawDuration, - rawPeriodToEnum, - type Types, -} from "../../../src"; +import { BASIS_POINTS_PER_UNIT, INTEGRATOR_FEE_RATE_BPS } from "../../../src"; import postgres from "postgres"; import Big from "big.js"; -import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../src/utils/test"; - -export const getTrackerFromWriteSet = ( - res: UserTransactionResponse, - marketAddress: AccountAddressInput, - period: T -) => { - const market = getMarketResourceFromWriteSet(res, marketAddress); - const tracker = market?.periodicStateTrackers.find((t) => rawPeriodToEnum(t.period) === period); - return tracker; -}; - -/** - * Get the periodic state tracker's period expiry time by converting the start time to - * milliseconds and adding 1 minute, then converting that to a Date object. - * - * @param tracker The periodic state tracker to get the period expiry for. - * @param period The period to get the expiry for. - * @returns The period expiry time as a Date object. - */ -export const getPeriodExpiryDate = ( - tracker: Types["PeriodicStateTracker"], - period: T -): Date => { - // Convert from micro to milliseconds. This value is never fractional, per the smart contract. - const millisecondStartTime = Number(tracker.startTime / 1000n); - const periodDuration = periodEnumToRawDuration(period); - const periodDurationMilliseconds = periodDuration.valueOf() / 1000; - return new Date(millisecondStartTime + periodDurationMilliseconds); -}; - -export const getOneMinutePeriodicStateEvents = (res: UserTransactionResponse) => - getEvents(res).periodicStateEvents.filter( - (e) => rawPeriodToEnum(e.periodicStateMetadata.period) === Period.Period1M - ); +import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../utils"; export const getDbConnection = () => { return postgres(process.env.DB_URL!); diff --git a/src/typescript/sdk/tests/e2e/publish.test.ts b/src/typescript/sdk/tests/e2e/publish.test.ts index 74e507dd8..7d2df7b93 100644 --- a/src/typescript/sdk/tests/e2e/publish.test.ts +++ b/src/typescript/sdk/tests/e2e/publish.test.ts @@ -1,7 +1,7 @@ import { AccountAddress, Network, isUserTransactionResponse } from "@aptos-labs/ts-sdk"; -import { getModuleExists, publishPackage } from "../../src/utils/test/publish"; +import { getModuleExists, publishPackage } from "../utils/publish"; import { EMOJICOIN_DOT_FUN_MODULE_NAME, MODULE_ADDRESS, ONE_APT } from "../../src"; -import { getPublishHelpers } from "../../src/utils/test"; +import { getPublishHelpers } from "../utils"; jest.setTimeout(60000); jest.retryTimes(3); diff --git a/src/typescript/sdk/tests/e2e/queries/address.test.ts b/src/typescript/sdk/tests/e2e/queries/address.test.ts index 88801ad73..af354a5b0 100644 --- a/src/typescript/sdk/tests/e2e/queries/address.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/address.test.ts @@ -1,10 +1,10 @@ import { getEvents } from "../../../src"; import { Chat } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; import { fetchChatEvents } from "../../../src/indexer-v2/queries"; -import { getAptosClient } from "../../../src/utils/test"; +import { getAptosClient } from "../../utils"; import RowEqualityChecks from "./equality-checks"; -import { getFundedAccount } from "../../../src/utils/test/test-accounts"; -import TestHelpers from "../../../src/utils/test/helpers"; +import { getFundedAccount } from "../../utils/test-accounts"; +import TestHelpers from "../../utils/helpers"; jest.setTimeout(20000); diff --git a/src/typescript/sdk/tests/e2e/queries/client/liquidity-pools.test.ts b/src/typescript/sdk/tests/e2e/queries/client/liquidity-pools.test.ts index c83e462d9..72a62ce1a 100644 --- a/src/typescript/sdk/tests/e2e/queries/client/liquidity-pools.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/client/liquidity-pools.test.ts @@ -2,8 +2,8 @@ import { type UserTransactionResponse } from "@aptos-labs/ts-sdk"; import { maxBigInt, ONE_APT, toSequenceNumberOptions, type SymbolEmoji } from "../../../../src"; -import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../../src/utils/test/helpers"; -import { getFundedAccounts } from "../../../../src/utils/test/test-accounts"; +import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../utils/helpers"; +import { getFundedAccounts } from "../../../utils/test-accounts"; import { waitForEmojicoinIndexer } from "../../../../src/indexer-v2/queries/utils"; import { fetchMarkets, fetchUserLiquidityPools } from "../../../../src/indexer-v2/queries"; import { LIMIT } from "../../../../src/queries"; diff --git a/src/typescript/sdk/tests/e2e/queries/client/market-state.test.ts b/src/typescript/sdk/tests/e2e/queries/client/market-state.test.ts index 791ea51fd..691204f87 100644 --- a/src/typescript/sdk/tests/e2e/queries/client/market-state.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/client/market-state.test.ts @@ -1,5 +1,5 @@ import { type SymbolEmoji } from "../../../../src"; -import { getFundedAccount } from "../../../../src/utils/test/test-accounts"; +import { getFundedAccount } from "../../../utils/test-accounts"; import { waitForEmojicoinIndexer } from "../../../../src/indexer-v2/queries/utils"; import { fetchMarketState } from "../../../../src/indexer-v2/queries"; import { type MarketStateModel } from "../../../../src/indexer-v2/types"; diff --git a/src/typescript/sdk/tests/e2e/queries/client/submit.test.ts b/src/typescript/sdk/tests/e2e/queries/client/submit.test.ts index d6c726166..cda9c7ed3 100644 --- a/src/typescript/sdk/tests/e2e/queries/client/submit.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/client/submit.test.ts @@ -11,7 +11,7 @@ import { zip, type SymbolEmoji, } from "../../../../src"; -import { getFundedAccount } from "../../../../src/utils/test/test-accounts"; +import { getFundedAccount } from "../../../utils/test-accounts"; import { EmojicoinClient } from "../../../../src/client/emojicoin-client"; import { Aptos, @@ -20,8 +20,8 @@ import { type EntryFunctionPayloadResponse, Network, } from "@aptos-labs/ts-sdk"; -import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../../src/utils/test/helpers"; -import { calculatePeriodBoundariesCrossed } from "../../../../src/utils/test"; +import { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../utils/helpers"; +import { calculatePeriodBoundariesCrossed } from "../../../utils"; jest.setTimeout(15000); diff --git a/src/typescript/sdk/tests/e2e/queries/liquidity-pools.test.ts b/src/typescript/sdk/tests/e2e/queries/liquidity-pools.test.ts index 62d3b0c02..f69c550fb 100644 --- a/src/typescript/sdk/tests/e2e/queries/liquidity-pools.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/liquidity-pools.test.ts @@ -2,12 +2,12 @@ import { type TypeTag, type UserTransactionResponse } from "@aptos-labs/ts-sdk"; import { maxBigInt, type SymbolEmoji } from "../../../src"; -import TestHelpers, { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../src/utils/test/helpers"; -import { getFundedAccounts } from "../../../src/utils/test/test-accounts"; +import TestHelpers, { EXACT_TRANSITION_INPUT_AMOUNT } from "../../utils/helpers"; +import { getFundedAccounts } from "../../utils/test-accounts"; import { waitForEmojicoinIndexer } from "../../../src/indexer-v2/queries/utils"; import { ProvideLiquidity, Swap } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; -import { getAptosClient } from "../../../src/utils/test"; +import { getAptosClient } from "../../utils"; import { fetchMarkets, fetchUserLiquidityPools } from "../../../src/indexer-v2/queries"; import { LIMIT } from "../../../src/queries"; diff --git a/src/typescript/sdk/tests/e2e/queries/market-state.test.ts b/src/typescript/sdk/tests/e2e/queries/market-state.test.ts index 721826a5d..ce1abbbe7 100644 --- a/src/typescript/sdk/tests/e2e/queries/market-state.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/market-state.test.ts @@ -1,12 +1,13 @@ -import { getEventsAsProcessorModelsFromResponse, type SymbolEmoji } from "../../../src"; -import TestHelpers from "../../../src/utils/test/helpers"; -import { getFundedAccount } from "../../../src/utils/test/test-accounts"; +import { type SymbolEmoji } from "../../../src"; +import TestHelpers from "../../utils/helpers"; +import { getFundedAccount } from "../../utils/test-accounts"; import { waitForEmojicoinIndexer } from "../../../src/indexer-v2/queries/utils"; import { SwapWithRewards } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; -import { getAptosClient } from "../../../src/utils/test"; +import { getAptosClient } from "../../utils"; import { fetchMarketState } from "../../../src/indexer-v2/queries"; import { type MarketStateModel } from "../../../src/indexer-v2/types"; import { type JsonValue } from "../../../src/types/json-types"; +import { getEventsAsProcessorModelsFromResponse } from "../../../src/indexer-v2/mini-processor"; jest.setTimeout(20000); diff --git a/src/typescript/sdk/tests/e2e/queries/num-markets.test.ts b/src/typescript/sdk/tests/e2e/queries/num-markets.test.ts index 3f5884efc..be17b9b2c 100644 --- a/src/typescript/sdk/tests/e2e/queries/num-markets.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/num-markets.test.ts @@ -2,8 +2,8 @@ import { getRegistryResourceFromWriteSet, toRegistryView } from "../../../src"; import { type SymbolEmojiName } from "../../../src/emoji_data/types"; import { RegistryView } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; import { getAptosClient } from "../../../src/utils/aptos-client"; -import TestHelpers from "../../../src/utils/test/helpers"; -import { getFundedAccounts } from "../../../src/utils/test/test-accounts"; +import TestHelpers from "../../utils/helpers"; +import { getFundedAccounts } from "../../utils/test-accounts"; jest.setTimeout(20000); diff --git a/src/typescript/sdk/tests/e2e/queries/price-feed.test.ts b/src/typescript/sdk/tests/e2e/queries/price-feed.test.ts index 42ceb2763..228dc1710 100644 --- a/src/typescript/sdk/tests/e2e/queries/price-feed.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/price-feed.test.ts @@ -2,7 +2,7 @@ import { fetchPriceFeedWithMarketState, waitForEmojicoinIndexer, } from "../../../src/indexer-v2/queries"; -import { getFundedAccount } from "../../../src/utils/test/test-accounts"; +import { getFundedAccount } from "../../utils/test-accounts"; import { EmojicoinClient } from "../../../src/client/emojicoin-client"; import { type AnyNumberString, diff --git a/src/typescript/sdk/tests/e2e/queries/search-emojis.test.ts b/src/typescript/sdk/tests/e2e/queries/search-emojis.test.ts index b406fc541..c11508f68 100644 --- a/src/typescript/sdk/tests/e2e/queries/search-emojis.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/search-emojis.test.ts @@ -1,6 +1,6 @@ import { type SymbolEmojiName, namesToEmojis } from "../../../src"; -import TestHelpers from "../../../src/utils/test/helpers"; -import { getFundedAccounts } from "../../../src/utils/test/test-accounts"; +import TestHelpers from "../../utils/helpers"; +import { getFundedAccounts } from "../../utils/test-accounts"; import { fetchMarkets } from "../../../src/indexer-v2/queries/app/home"; import { waitForEmojicoinIndexer } from "../../../src/indexer-v2/queries/utils"; diff --git a/src/typescript/sdk/tests/e2e/queries/simple.test.ts b/src/typescript/sdk/tests/e2e/queries/simple.test.ts index 6ab776b5e..a243a8cf2 100644 --- a/src/typescript/sdk/tests/e2e/queries/simple.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/simple.test.ts @@ -1,16 +1,16 @@ import { type SymbolEmojiName, getEvents, ONE_APT } from "../../../src"; -import TestHelpers, { EXACT_TRANSITION_INPUT_AMOUNT } from "../../../src/utils/test/helpers"; +import TestHelpers, { EXACT_TRANSITION_INPUT_AMOUNT } from "../../utils/helpers"; import { Chat, ProvideLiquidity, Swap } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; import { fetchChatEvents, fetchSwapEvents, fetchUserLiquidityPools, } from "../../../src/indexer-v2/queries"; -import { getAptosClient } from "../../../src/utils/test"; +import { getAptosClient } from "../../utils"; import RowEqualityChecks from "./equality-checks"; import { queryHelper } from "../../../src/indexer-v2/queries/utils"; import { TableName } from "../../../src/indexer-v2/types/json-types"; -import { getFundedAccounts } from "../../../src/utils/test/test-accounts"; +import { getFundedAccounts } from "../../utils/test-accounts"; import { postgrest } from "../../../src/indexer-v2/queries/client"; import { fetchLatestStateEventForMarket, fetchLiquidityEvents } from "."; diff --git a/src/typescript/sdk/tests/e2e/queries/sorted/sort-queries.test.ts b/src/typescript/sdk/tests/e2e/queries/sorted/sort-queries.test.ts index ff793143c..527de36c3 100644 --- a/src/typescript/sdk/tests/e2e/queries/sorted/sort-queries.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/sorted/sort-queries.test.ts @@ -7,13 +7,12 @@ import { sleep, SYMBOL_EMOJI_DATA, type SymbolEmojiName, - UnitOfTime, } from "../../../../src"; -import TestHelpers from "../../../../src/utils/test/helpers"; -import { getFundedAccounts } from "../../../../src/utils/test/test-accounts"; +import TestHelpers from "../../../utils/helpers"; +import { getFundedAccounts } from "../../../utils/test-accounts"; import { waitForEmojicoinIndexer } from "../../../../src/indexer-v2/queries/utils"; import { Swap } from "../../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; -import { getAptosClient } from "../../../../src/utils/test"; +import { getAptosClient } from "../../../utils"; import { fetchMarkets } from "../../../../src/indexer-v2/queries/app/home"; import { SortMarketsBy } from "../../../../src/indexer-v2/types/common"; import { @@ -66,7 +65,7 @@ describe("sorting queries for the sort filters on the home page", () => { }); // Sleep in reverse order to mix up the bump order of the markets so it doesn't match // the volume queries, since the inputAmounts are in order according to the index `i`. - await sleep(marketEmojiNames.length - i, UnitOfTime.Seconds); + await sleep((marketEmojiNames.length - i) * 1000); const swap = Swap.submit({ aptosConfig: aptos.config, swapper: registrants[i], diff --git a/src/typescript/sdk/tests/e2e/queries/volume.test.ts b/src/typescript/sdk/tests/e2e/queries/volume.test.ts index 465cf5ded..9b5d57e48 100644 --- a/src/typescript/sdk/tests/e2e/queries/volume.test.ts +++ b/src/typescript/sdk/tests/e2e/queries/volume.test.ts @@ -3,173 +3,22 @@ import { type UserTransactionResponse, type Account, } from "@aptos-labs/ts-sdk"; -import { - maxBigInt, - getEvents, - getPeriodBoundary, - getPeriodBoundaryAsDate, - ONE_APT, - Period, - sleep, - sum, - sumByKey, -} from "../../../src"; +import { maxBigInt, getEvents, sum, sumByKey } from "../../../src"; import { Swap } from "../../../src/emojicoin_dot_fun/emojicoin-dot-fun"; -import { getAptosClient } from "../../../src/utils/test"; -import { getFundedAccounts } from "../../../src/utils/test/test-accounts"; +import { getAptosClient } from "../../utils"; +import { getFundedAccounts } from "../../utils/test-accounts"; import { type Events } from "../../../src/emojicoin_dot_fun/events"; -import { getTxnBatchHighestVersion } from "../../../src/utils/test/get-txn-batch-highest-version"; -import TestHelpers from "../../../src/utils/test/helpers"; -import { - getOneMinutePeriodicStateEvents, - getPeriodExpiryDate, - getTrackerFromWriteSet, -} from "../helpers"; -import { - fetchDailyVolumeForMarket, - fetchMarket1MPeriodsInLastDay, - fetchSwapEventsBySwapper, -} from "."; +import { getTxnBatchHighestVersion } from "../../utils/get-txn-batch-highest-version"; +import TestHelpers from "../../utils/helpers"; +import { fetchDailyVolumeForMarket, fetchSwapEventsBySwapper } from "."; // We need a long timeout because the test must wait for the 1-minute period to expire. jest.setTimeout(75000); -const TWENTY_FIVE_SECONDS = 20 * 1000; -const TWO_SECONDS = 2000; - describe("queries swap_events and returns accurate swap row data", () => { const aptos = getAptosClient(); const fundedAccounts = getFundedAccounts("011", "012", "013", "014", "015", "016"); - it("sums a market's daily volume over multiple 1-minute periods with 3 swaps", async () => { - // This test needs very specific conditions in order to verify accuracy in a reasonable amount - // of time. The easiest way to set it up correctly is by aligning the start time of the test - // with around half a minute before the end of the current 1-minute period. This way, we can - // ensure that the first swap is in the same period as the second swap, and the third swap - // creates a new period. This is the only way to ensure that the daily volume is accurately - // calculated across multiple periods. - const currentPeriodBoundary = getPeriodBoundaryAsDate(Date.now() * 1000, Period.Period1M); - const timeUntilNextPeriod = currentPeriodBoundary.getTime() - Date.now(); - if (timeUntilNextPeriod < TWENTY_FIVE_SECONDS) { - await sleep(timeUntilNextPeriod); - // There might be some drift between the current time in the js runtime and in the Aptos VM. - // We'll sleep for a little bit longer to ensure that the period has expired. - await sleep(2000); - } - - const swapper = fundedAccounts.pop()!; - const { marketAddress, emojicoin, emojicoinLP, integrator } = - await TestHelpers.registerMarketFromNames({ - registrant: swapper, - emojiNames: ["screwdriver"], - }); - - const swapCall = (inputAmount: bigint) => - Swap.submit({ - aptosConfig: aptos.config, - swapper, - marketAddress, - inputAmount, - isSell: false, - typeTags: [emojicoin, emojicoinLP], - integrator: integrator.accountAddress, - integratorFeeRateBPs: 0, - minOutputAmount: 1n, - }); - - const rand = Math.random; - const inputAmounts = [rand(), rand(), rand()] - .map((v) => v * ONE_APT) - .map(Math.floor) - .map(BigInt) as [bigint, bigint, bigint]; - - const first = await swapCall(inputAmounts[0]); - const firstQuoteVolume = getEvents(first).swapEvents[0].quoteVolume; - const firstEvents = getEvents(first); - const { marketID } = firstEvents.swapEvents[0]; - - // There should be no periodic state events emitted for the first swap, but right now this test - // must be flaky due to the way that period boundaries are calculated (explained above), so - // console.warn if we encounter a periodic state event and then fail + retry. - if (firstEvents.periodicStateEvents.length > 1) { - console.warn( - "This test is inherently flaky and started at an inopportune time with regards to the " + - "PERIOD_1M boundary. It will now fail- please re-run the tests." - ); - } - expect(firstEvents.periodicStateEvents.length).toEqual(0); - - const firstTracker = getTrackerFromWriteSet(first, marketAddress, Period.Period1M)!; - expect(firstTracker).toBeDefined(); - expect(firstTracker.volumeQuote).toEqual(firstQuoteVolume); - expect(firstTracker.startTime).toEqual(getPeriodBoundary(first.timestamp, Period.Period1M)); - - await fetchDailyVolumeForMarket({ marketID, minimumVersion: first.version }).then((r) => { - expect(r[0].dailyVolume).toEqual(firstQuoteVolume); - }); - let periods = await fetchMarket1MPeriodsInLastDay({ marketID }); - // The first period ever isn't tracked until the *end* of the period- so even with one swap, - // we won't see a period until this periodic state tracker ends. - expect(periods.length).toEqual(0); - const periodExpiry = getPeriodExpiryDate(firstTracker, Period.Period1M); - const enoughTime = periodExpiry.getTime() - Date.now() > TWO_SECONDS; - if (!enoughTime) { - console.warn("There may not be enough time to call the swap functions. The test may fail."); - } - - // Now call a second swap to ensure that it's slotted in with the first swap in the same - // 1-minute period. - - expect(getOneMinutePeriodicStateEvents(first).length).toEqual(0); - const second = await swapCall(inputAmounts[1]); - const secondEvents = getEvents(second); - const secondQuoteVolume = secondEvents.swapEvents[0].quoteVolume; - const secondTracker = getTrackerFromWriteSet(second, marketAddress, Period.Period1M)!; - expect(secondTracker).toBeDefined(); - expect(secondTracker.startTime).toEqual(firstTracker.startTime); - expect(secondTracker.volumeQuote).toEqual(firstQuoteVolume + secondQuoteVolume); - - // There should be no periodic state events emitted for the second swap. - expect(getOneMinutePeriodicStateEvents(second).length).toEqual(0); - - await fetchDailyVolumeForMarket({ marketID, minimumVersion: second.version }).then((r) => { - expect(r[0].dailyVolume).toEqual(firstQuoteVolume + secondQuoteVolume); - }); - periods = await fetchMarket1MPeriodsInLastDay({ marketID }); - expect(periods.length).toEqual(0); - - // Sleep until the period expiry time. - await sleep(periodExpiry.getTime() - Date.now()); - // There might be some drift between the current time in the js runtime and in the Aptos VM. - // We'll sleep for a little bit longer to ensure that the period has expired. - await sleep(2000); - - // Now perform another swap and ensure that the daily volume has been accurately updated. - const third = await swapCall(inputAmounts[2]); - const thirdSwapTimestamp = BigInt(third.timestamp); - const thirdTracker = getTrackerFromWriteSet(third, marketAddress, Period.Period1M)!; - expect(thirdTracker).toBeDefined(); - expect(thirdTracker.startTime).toEqual(getPeriodBoundary(thirdSwapTimestamp, Period.Period1M)); - const thirdEvents = getEvents(third); - const thirdQuoteVolume = thirdEvents.swapEvents[0].quoteVolume; - expect(thirdTracker.volumeQuote).toEqual(thirdQuoteVolume); - - // *Now* we should see periodic state events being emitted. - expect(getOneMinutePeriodicStateEvents(third).length).toEqual(1); - - // Make sure the indexer processor saw the new periodic state event. - periods = await fetchMarket1MPeriodsInLastDay({ marketID, minimumVersion: third.version }); - expect(periods.length).toEqual(1); - - // Ensure that the total daily volume is accurate. - const only1MPeriodsVolume = sumByKey(periods, "volume"); - expect(only1MPeriodsVolume).toEqual(firstQuoteVolume + secondQuoteVolume); - - await fetchDailyVolumeForMarket({ marketID }).then((r) => { - expect(r[0].dailyVolume).toEqual(firstQuoteVolume + secondQuoteVolume + thirdQuoteVolume); - }); - }); - it("sums the volume by user and market daily volume", async () => { const swappersAndVolumes = [ [fundedAccounts.pop()!, 100n] as const, diff --git a/src/typescript/sdk/tests/e2e/register.test.ts b/src/typescript/sdk/tests/e2e/register.test.ts index 5f4cc6ba6..a394a5fa6 100644 --- a/src/typescript/sdk/tests/e2e/register.test.ts +++ b/src/typescript/sdk/tests/e2e/register.test.ts @@ -9,9 +9,9 @@ import { getRegistryAddress, } from "../../src"; import { EmojicoinDotFun } from "../../src/emojicoin_dot_fun"; -import { getPublishHelpers } from "../../src/utils/test"; +import { getPublishHelpers } from "../utils"; import { standardizeAddress } from "../../src/utils/account-address"; -import { getFundedAccount } from "../../src/utils/test/test-accounts"; +import { getFundedAccount } from "../utils/test-accounts"; jest.setTimeout(20000); diff --git a/src/typescript/sdk/tests/e2e/swap.test.ts b/src/typescript/sdk/tests/e2e/swap.test.ts index 70cf86232..a0c4c8876 100644 --- a/src/typescript/sdk/tests/e2e/swap.test.ts +++ b/src/typescript/sdk/tests/e2e/swap.test.ts @@ -7,7 +7,7 @@ import { import { ONE_APT } from "../../src/const"; import { SYMBOL_EMOJI_DATA } from "../../src"; import { EmojicoinDotFun } from "../../src/emojicoin_dot_fun"; -import { getPublishHelpers } from "../../src/utils/test"; +import { getPublishHelpers } from "../utils"; import { getEmojicoinMarketAddressAndTypeTags, getRegistrationGracePeriodFlag, @@ -18,7 +18,7 @@ import { getCoinBalanceFromChanges, getFeeStatement, } from "../../src/utils/parse-changes-for-balances"; -import { getFundedAccount } from "../../src/utils/test/test-accounts"; +import { getFundedAccount } from "../utils/test-accounts"; jest.setTimeout(90000); diff --git a/src/typescript/sdk/tests/e2e/views.test.ts b/src/typescript/sdk/tests/e2e/views.test.ts index 6e83384fc..9415a4bd7 100644 --- a/src/typescript/sdk/tests/e2e/views.test.ts +++ b/src/typescript/sdk/tests/e2e/views.test.ts @@ -1,6 +1,6 @@ import { Hex, type HexInput } from "@aptos-labs/ts-sdk"; import * as EmojicoinDotFun from "../../src/emojicoin_dot_fun/emojicoin-dot-fun"; -import { getPublishHelpers } from "../../src/utils/test"; +import { getPublishHelpers } from "../utils"; jest.setTimeout(15000); diff --git a/src/typescript/sdk/tests/post-test.ts b/src/typescript/sdk/tests/post-test.ts index 4e0a386be..41f1d3b12 100644 --- a/src/typescript/sdk/tests/post-test.ts +++ b/src/typescript/sdk/tests/post-test.ts @@ -1,5 +1,5 @@ /* eslint-disable no-underscore-dangle */ -import { DockerTestHarness } from "../src/utils/test/docker/docker-test-harness"; +import { DockerTestHarness } from "./utils/docker/docker-test-harness"; export default async function postTest() { await DockerTestHarness.stop({ frontend: false }); diff --git a/src/typescript/sdk/tests/pre-test.ts b/src/typescript/sdk/tests/pre-test.ts index 52e14def5..f04e5406f 100644 --- a/src/typescript/sdk/tests/pre-test.ts +++ b/src/typescript/sdk/tests/pre-test.ts @@ -1,6 +1,6 @@ /* eslint-disable no-underscore-dangle */ import WebSocket from "ws"; -import { DockerTestHarness } from "../src/utils/test/docker/docker-test-harness"; +import { DockerTestHarness } from "./utils/docker/docker-test-harness"; // process.env.NO_TEST_SETUP => to skip the docker container test setup, like for unit tests. // process.env.FILTER_TEST_LOGS => quiet mode, don't output logs that print to the console a lot. diff --git a/src/typescript/sdk/tests/tsconfig.json b/src/typescript/sdk/tests/tsconfig.json index 96155ae09..b133d3b05 100644 --- a/src/typescript/sdk/tests/tsconfig.json +++ b/src/typescript/sdk/tests/tsconfig.json @@ -1,7 +1,9 @@ { + "compilerOptions": { + "noEmit": true + }, "extends": "../tsconfig.json", "include": [ - "**/*.ts", - "../src/utils/aptos-client.ts" + "./**/*" ] } diff --git a/src/typescript/sdk/tests/unit/emoji-regex.test.ts b/src/typescript/sdk/tests/unit/emoji-regex.test.ts index 91ea17abd..88d4a37a1 100644 --- a/src/typescript/sdk/tests/unit/emoji-regex.test.ts +++ b/src/typescript/sdk/tests/unit/emoji-regex.test.ts @@ -1,15 +1,8 @@ -import fs from "fs"; -import path from "path"; import { CHAT_EMOJI_DATA, type ChatEmoji, SYMBOL_EMOJI_DATA, type SymbolEmoji } from "../../src"; -import { - encodeEmojis, - getEmojisInString, - isValidMarketSymbol, - symbolToEmojis, -} from "../../src/emoji_data/utils"; -import SymbolEmojiData from "../../src/emoji_data/symbol-emojis.json"; -import { getGitRoot } from "../../src/utils/test"; +import { encodeEmojis, getEmojisInString, symbolToEmojis } from "../../src/emoji_data/utils"; +import { SYMBOL_EMOJIS } from "../../src/emoji_data/symbol-emojis"; import { toChatMessageEntryFunctionArgs } from "../../src/emoji_data/chat-message"; +import { isValidMarketSymbol } from "../utils/market-symbol"; describe("tests emojis against the emoji regex to ensure they're properly validated", () => { it("tests a few single emojis", () => { @@ -67,8 +60,8 @@ describe("tests the emojis in a string, and the emoji data for each one", () => }); it("maps the emojis to their corresponding data", () => { - const symbols = new Set(Object.keys(SymbolEmojiData)); - const names = new Set(Object.values(SymbolEmojiData)); + const symbols = new Set(Object.keys(SYMBOL_EMOJIS)); + const names = new Set(Object.values(SYMBOL_EMOJIS)); const emojis = new Array("🎅", "🎅🏽", "🎅🏼", "🎅🏿", "🌎", "🇧🇷", "⭐").map((v) => SYMBOL_EMOJI_DATA.byEmojiStrict(v) ); @@ -89,8 +82,8 @@ describe("tests the emojis in a string, and the emoji data for each one", () => const symbol = " 🎅🎅🏽🎅🏼🎅🏿 🌎🇧🇷 ⭐ ..."; const emojiData = symbolToEmojis(symbol); expect(emojiData.emojis).toHaveLength(7); - const symbols = new Set(Object.keys(SymbolEmojiData)); - const names = new Set(Object.values(SymbolEmojiData)); + const symbols = new Set(Object.keys(SYMBOL_EMOJIS)); + const names = new Set(Object.values(SYMBOL_EMOJIS)); emojiData.emojis.forEach((emoji) => { expect(symbols.has(emoji.emoji)).toBe(true); expect(names.has(emoji.name)).toBe(true); @@ -119,33 +112,6 @@ describe("tests the emojis in a string, and the emoji data for each one", () => } }); - it("ensures the Rust processor has the same emoji data as the TypeScript SDK", () => { - const gitRoot = getGitRoot(); - const tsPath = path.join(gitRoot, "src/typescript/sdk/src/emoji_data/symbol-emojis.json"); - const rustPath = path.join( - gitRoot, - "src/rust/processor", - "rust/processor", - "src/db/common/models/emojicoin_models", - "parsers/emojis/symbol-emojis.json" - ); - const tsData = fs.readFileSync(tsPath); - const tsJSON = JSON.parse(tsData.toString()); - const rustJSON = (() => { - try { - const rustData = fs.readFileSync(rustPath).toString(); - return JSON.parse(rustData); - } catch (e) { - // File not found. If we're in CI, that's fine. Only need to check this infrequently. - if (process.env.CI || process.env.GITHUB_ACTIONS) { - return tsJSON; - } - return "[]"; - } - })(); - expect(JSON.stringify(tsJSON) === JSON.stringify(rustJSON)); - }); - it("constructs the chat message entry function args with the helper function correctly", () => { // Symbol emojis. const a: SymbolEmoji[] = ["⛄", "🎽", "🏃🏻"]; diff --git a/src/typescript/sdk/tests/unit/git-root.test.ts b/src/typescript/sdk/tests/unit/git-root.test.ts index ead2aa978..f85321336 100644 --- a/src/typescript/sdk/tests/unit/git-root.test.ts +++ b/src/typescript/sdk/tests/unit/git-root.test.ts @@ -1,5 +1,5 @@ import path from "path"; -import { getGitRoot } from "../../src/utils/test/helpers"; +import { getGitRoot } from "../utils/helpers"; describe("ensures find git root works as expected", () => { it("should find the correct git root", () => { diff --git a/src/typescript/sdk/tests/unit/period-boundaries.test.ts b/src/typescript/sdk/tests/unit/period-boundaries.test.ts index 2b0939302..610ec055e 100644 --- a/src/typescript/sdk/tests/unit/period-boundaries.test.ts +++ b/src/typescript/sdk/tests/unit/period-boundaries.test.ts @@ -1,6 +1,6 @@ import { PERIODS, PeriodDuration, getPeriodStartTime } from "../../src"; -import { calculatePeriodBoundariesCrossed } from "../../src/utils/test"; -import { SAMPLE_STATE_EVENT, SAMPLE_SWAP_EVENT } from "../../src/utils/test/sample-data"; +import { calculatePeriodBoundariesCrossed } from "../utils"; +import { SAMPLE_STATE_EVENT, SAMPLE_SWAP_EVENT } from "../utils/sample-data"; const swap = SAMPLE_SWAP_EVENT; const state = SAMPLE_STATE_EVENT; diff --git a/src/typescript/sdk/tests/unit/sleep.test.ts b/src/typescript/sdk/tests/unit/sleep.test.ts deleted file mode 100644 index 8066adee4..000000000 --- a/src/typescript/sdk/tests/unit/sleep.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { getTime, sleep, UNIT_OF_TIME_MULTIPLIERS, UnitOfTime } from "../../src"; - -jest.retryTimes(3); - -describe("sleep utility function with units of time", () => { - it("converts units of time to milliseconds", () => { - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Microseconds]).toEqual(0.001); - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Milliseconds]).toEqual(1); - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Seconds]).toBeCloseTo(1000, 1); - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Minutes]).toBeCloseTo(1000 * 60, 1); - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Hours]).toBeCloseTo(1000 * 60 * 60, 1); - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Days]).toBeCloseTo(1000 * 60 * 60 * 24, 1); - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Weeks]).toBeCloseTo(1000 * 60 * 60 * 24 * 7, 1); - }); - - it("sleeps one tenth of a second for each unit of time", async () => { - const inputs = [ - [UnitOfTime.Microseconds, 100_000], - [UnitOfTime.Milliseconds, 100], - [UnitOfTime.Seconds, 0.1], - [UnitOfTime.Minutes, 0.1 / 60], - [UnitOfTime.Hours, 0.1 / (60 * 60)], - [UnitOfTime.Days, 0.1 / (60 * 60 * 24)], - [UnitOfTime.Weeks, 0.1 / (60 * 60 * 24 * 7)], - ] as const; - - // Note that jest screws up the `startTime` values if you don't index each start time. - const startTimes = Array.from({ length: inputs.length }, () => 0); - const results = inputs.map(async ([unit, amt], i) => { - startTimes[i] = Date.now(); - return sleep(amt, unit).then(() => { - const endTime = Date.now(); - return endTime - startTimes[i]; - }); - }); - const res = await Promise.all(results); - res.forEach((r) => { - // The difference between end time and start time should be 100 milliseconds, with a grace - // period of 10 ms after the expected time. - // However, due to rounding errors, this will sometimes appear as having occurred before - // 100 ms, so we allow a 1 ms leeway (99) on the lower end. - expect(r).toBeGreaterThanOrEqual(99); - expect(r).toBeLessThanOrEqual(110); - }); - }); - - it("converts the time with microsecond granularity", () => { - const nowInDays = Date.now() / (1000 * 60 * 60 * 24); - const res = getTime(UnitOfTime.Days); - // If the difference is greater than 1 microsecond, then the test is invalid. - expect((nowInDays - res) * 1_000_000).toBeLessThan(1); - }); - - it("should not overflow for 1000 years", () => { - // In milliseconds. - const now = Date.now(); - const aThousandYearsFromNow6 = now + UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Days] * 365 * 1000; - expect(UNIT_OF_TIME_MULTIPLIERS[UnitOfTime.Microseconds] * aThousandYearsFromNow6).toBeLessThan( - Number.MAX_SAFE_INTEGER - ); - expect(aThousandYearsFromNow6).toBeLessThan(Number.MAX_SAFE_INTEGER); - }); -}); diff --git a/src/typescript/sdk/src/utils/test/calculate-periodic-boundaries-crossed.ts b/src/typescript/sdk/tests/utils/calculate-periodic-boundaries-crossed.ts similarity index 94% rename from src/typescript/sdk/src/utils/test/calculate-periodic-boundaries-crossed.ts rename to src/typescript/sdk/tests/utils/calculate-periodic-boundaries-crossed.ts index a96365989..4ff21e206 100644 --- a/src/typescript/sdk/src/utils/test/calculate-periodic-boundaries-crossed.ts +++ b/src/typescript/sdk/tests/utils/calculate-periodic-boundaries-crossed.ts @@ -1,6 +1,6 @@ -import { type Period, periodEnumToRawDuration, PERIODS } from "../../const"; -import { type AnyNumberString } from "../../types"; -import { getPeriodBoundary } from "../misc"; +import { type Period, periodEnumToRawDuration, PERIODS } from "../../src/const"; +import { type AnyNumberString } from "../../src/types"; +import { getPeriodBoundary } from "../../src/utils/misc"; /** * Calculates the number of period boundaries crossed between two times. Since this will always diff --git a/src/typescript/sdk/src/utils/test/docker/docker-test-harness.ts b/src/typescript/sdk/tests/utils/docker/docker-test-harness.ts similarity index 97% rename from src/typescript/sdk/src/utils/test/docker/docker-test-harness.ts rename to src/typescript/sdk/tests/utils/docker/docker-test-harness.ts index 44a3833f8..41442c0d6 100644 --- a/src/typescript/sdk/src/utils/test/docker/docker-test-harness.ts +++ b/src/typescript/sdk/tests/utils/docker/docker-test-harness.ts @@ -4,7 +4,7 @@ import path from "node:path"; import os from "node:os"; import { kill } from "node:process"; -import { waitFor } from "../.."; +import { waitFor } from "../../../src/utils"; import { getGitRoot } from "../helpers"; import { type ContainerName } from "./logs"; import { @@ -14,8 +14,8 @@ import { execPromise, spawnWrapper, } from "./utils"; -import { EMOJICOIN_INDEXER_URL } from "../../../server/env"; -import { TableName } from "../../../indexer-v2/types/json-types"; +import { EMOJICOIN_INDEXER_URL } from "../../../src/server/env"; +import { TableName } from "../../../src/indexer-v2/types/json-types"; import { readFileSync, writeFileSync } from "node:fs"; import { execSync } from "node:child_process"; diff --git a/src/typescript/sdk/src/utils/test/docker/logs.ts b/src/typescript/sdk/tests/utils/docker/logs.ts similarity index 100% rename from src/typescript/sdk/src/utils/test/docker/logs.ts rename to src/typescript/sdk/tests/utils/docker/logs.ts diff --git a/src/typescript/sdk/src/utils/test/docker/utils.ts b/src/typescript/sdk/tests/utils/docker/utils.ts similarity index 100% rename from src/typescript/sdk/src/utils/test/docker/utils.ts rename to src/typescript/sdk/tests/utils/docker/utils.ts diff --git a/src/typescript/sdk/src/utils/test/ensure-write-file-sync.ts b/src/typescript/sdk/tests/utils/ensure-write-file-sync.ts similarity index 100% rename from src/typescript/sdk/src/utils/test/ensure-write-file-sync.ts rename to src/typescript/sdk/tests/utils/ensure-write-file-sync.ts diff --git a/src/typescript/sdk/src/utils/test/get-publish-txn-from-indexer.ts b/src/typescript/sdk/tests/utils/get-publish-txn-from-indexer.ts similarity index 91% rename from src/typescript/sdk/src/utils/test/get-publish-txn-from-indexer.ts rename to src/typescript/sdk/tests/utils/get-publish-txn-from-indexer.ts index 186a8f5a8..f0e8de463 100644 --- a/src/typescript/sdk/src/utils/test/get-publish-txn-from-indexer.ts +++ b/src/typescript/sdk/tests/utils/get-publish-txn-from-indexer.ts @@ -4,8 +4,8 @@ import { isUserTransactionResponse, type TransactionResponse, } from "@aptos-labs/ts-sdk"; -import { getEvents, Trigger } from "../.."; -import { getAptosClient } from "../aptos-client"; +import { getEvents, Trigger } from "../../src"; +import { getAptosClient } from "../../src/utils/aptos-client"; import { getPublisherPrivateKey } from "./helpers"; export const getPublishTransactionFromIndexer = async () => { diff --git a/src/typescript/sdk/src/utils/test/get-txn-batch-highest-version.ts b/src/typescript/sdk/tests/utils/get-txn-batch-highest-version.ts similarity index 84% rename from src/typescript/sdk/src/utils/test/get-txn-batch-highest-version.ts rename to src/typescript/sdk/tests/utils/get-txn-batch-highest-version.ts index 74cedb48a..8a4501739 100644 --- a/src/typescript/sdk/src/utils/test/get-txn-batch-highest-version.ts +++ b/src/typescript/sdk/tests/utils/get-txn-batch-highest-version.ts @@ -1,5 +1,5 @@ import { type UserTransactionResponse } from "@aptos-labs/ts-sdk"; -import { compareBigInt } from "../compare-bigint"; +import { compareBigInt } from "../../src/utils/compare-bigint"; export const getTxnBatchHighestVersion = (responses: Array) => { const response = responses.sort((a, b) => compareBigInt(a.version, b.version)).at(-1); diff --git a/src/typescript/sdk/src/utils/test/helpers.ts b/src/typescript/sdk/tests/utils/helpers.ts similarity index 95% rename from src/typescript/sdk/src/utils/test/helpers.ts rename to src/typescript/sdk/tests/utils/helpers.ts index 81f3261f4..b18f10325 100644 --- a/src/typescript/sdk/src/utils/test/helpers.ts +++ b/src/typescript/sdk/tests/utils/helpers.ts @@ -7,9 +7,9 @@ import { } from "@aptos-labs/ts-sdk"; import path from "path"; import findGitRoot from "find-git-root"; -import { getAptosClient } from "../aptos-client"; -import { getEmojicoinMarketAddressAndTypeTags } from "../../markets/utils"; -import { EmojicoinDotFun, getEvents } from "../../emojicoin_dot_fun"; +import { getAptosClient } from "../../src/utils/aptos-client"; +import { getEmojicoinMarketAddressAndTypeTags } from "../../src/markets/utils"; +import { EmojicoinDotFun, getEvents } from "../../src/emojicoin_dot_fun"; import { generateRandomSymbol, type JsonTypes, @@ -20,8 +20,8 @@ import { type SymbolEmojiName, toMarketEmojiData, type Types, -} from "../.."; -import { type Events } from "../../emojicoin_dot_fun/events"; +} from "../../src"; +import { type Events } from "../../src/emojicoin_dot_fun/events"; // The exact amount of APT to trigger a transition out of the bonding curve. Note that the // fee integrator rate BPs must be set to 0 for this to work. diff --git a/src/typescript/sdk/src/utils/test/index.ts b/src/typescript/sdk/tests/utils/index.ts similarity index 75% rename from src/typescript/sdk/src/utils/test/index.ts rename to src/typescript/sdk/tests/utils/index.ts index f28febebe..3990c2fd3 100644 --- a/src/typescript/sdk/src/utils/test/index.ts +++ b/src/typescript/sdk/tests/utils/index.ts @@ -1,4 +1,4 @@ -export * from "../aptos-client"; +export * from "../../src/utils/aptos-client"; export * from "./helpers"; export * from "./publish"; export * from "./load-priv-key"; diff --git a/src/typescript/sdk/src/utils/test/load-priv-key.ts b/src/typescript/sdk/tests/utils/load-priv-key.ts similarity index 96% rename from src/typescript/sdk/src/utils/test/load-priv-key.ts rename to src/typescript/sdk/tests/utils/load-priv-key.ts index 341044bed..de2fd54fa 100644 --- a/src/typescript/sdk/src/utils/test/load-priv-key.ts +++ b/src/typescript/sdk/tests/utils/load-priv-key.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import { Account, AccountAddress, Ed25519PrivateKey } from "@aptos-labs/ts-sdk"; -import { VERCEL } from "../../const"; +import { VERCEL } from "../../src/const"; export const getTestPublisherPrivateKey = () => { if (VERCEL) { diff --git a/src/typescript/sdk/tests/utils/market-symbol.ts b/src/typescript/sdk/tests/utils/market-symbol.ts new file mode 100644 index 000000000..0a1287e50 --- /dev/null +++ b/src/typescript/sdk/tests/utils/market-symbol.ts @@ -0,0 +1,32 @@ +import { MAX_SYMBOL_LENGTH, getEmojisInString, isValidEmoji } from "../../src"; + +/** + * This parses an input string to see if it's a valid symbol. + * It not only checks that each individual emoji is valid, but also that the total number + * of bytes is valid as well. + * @param symbol the symbol to be checked. + * @returns whether or not the symbol is a valid symbol. + * + * @example + * ```typescript + * isValidSymbol('🟥🟥'); // true + * isValidSymbol('🟥🟥🟥🟥🟥'); // false (too long) + * ``` + */ +export const isValidMarketSymbol = (symbol: string): boolean => { + const numBytes = new TextEncoder().encode(symbol).length; + if (numBytes > MAX_SYMBOL_LENGTH || numBytes === 0) { + return false; + } + const emojis = getEmojisInString(symbol); + const reconstructed = Array.from(emojis).join(""); + if (reconstructed !== symbol) { + return false; + } + for (const emoji of emojis) { + if (!isValidEmoji(emoji)) { + return false; + } + } + return true; +}; diff --git a/src/typescript/sdk/src/utils/test/print-divider.ts b/src/typescript/sdk/tests/utils/print-divider.ts similarity index 100% rename from src/typescript/sdk/src/utils/test/print-divider.ts rename to src/typescript/sdk/tests/utils/print-divider.ts diff --git a/src/typescript/sdk/src/utils/test/publish.ts b/src/typescript/sdk/tests/utils/publish.ts similarity index 98% rename from src/typescript/sdk/src/utils/test/publish.ts rename to src/typescript/sdk/tests/utils/publish.ts index f1f0776df..bd8e3cbd5 100644 --- a/src/typescript/sdk/src/utils/test/publish.ts +++ b/src/typescript/sdk/tests/utils/publish.ts @@ -9,8 +9,8 @@ import { Ed25519PrivateKey, } from "@aptos-labs/ts-sdk"; import path from "path"; -import { getAptosClient } from "../aptos-client"; -import { MAX_GAS_FOR_PUBLISH, ONE_APT, EMOJICOIN_DOT_FUN_MODULE_NAME } from "../.."; +import { getAptosClient } from "../../src/utils/aptos-client"; +import { MAX_GAS_FOR_PUBLISH, ONE_APT, EMOJICOIN_DOT_FUN_MODULE_NAME } from "../../src"; import { getGitRoot } from "./helpers"; type ResultJSON = { diff --git a/src/typescript/sdk/src/utils/test/sample-data.ts b/src/typescript/sdk/tests/utils/sample-data.ts similarity index 94% rename from src/typescript/sdk/src/utils/test/sample-data.ts rename to src/typescript/sdk/tests/utils/sample-data.ts index 279e95f96..56bede1fc 100644 --- a/src/typescript/sdk/src/utils/test/sample-data.ts +++ b/src/typescript/sdk/tests/utils/sample-data.ts @@ -1,5 +1,5 @@ -import { Trigger } from "../.."; -import { type Types } from "../../types/types"; +import { Trigger } from "../../src"; +import { type Types } from "../../src/types/types"; export const SAMPLE_SWAP_EVENT: Types["SwapEvent"] = { marketID: 1n, diff --git a/src/typescript/sdk/src/utils/test/test-accounts.json b/src/typescript/sdk/tests/utils/test-accounts.json similarity index 100% rename from src/typescript/sdk/src/utils/test/test-accounts.json rename to src/typescript/sdk/tests/utils/test-accounts.json diff --git a/src/typescript/sdk/src/utils/test/test-accounts.ts b/src/typescript/sdk/tests/utils/test-accounts.ts similarity index 100% rename from src/typescript/sdk/src/utils/test/test-accounts.ts rename to src/typescript/sdk/tests/utils/test-accounts.ts diff --git a/src/typescript/sdk/tsconfig.json b/src/typescript/sdk/tsconfig.json index 6029f5013..b187ab821 100644 --- a/src/typescript/sdk/tsconfig.json +++ b/src/typescript/sdk/tsconfig.json @@ -17,10 +17,9 @@ "module": "esnext", "moduleDetection": "force", "moduleResolution": "bundler", - "noEmit": false, + "noEmit": true, "noImplicitAny": true, "noImplicitThis": true, - "outDir": "./dist", "preserveWatchOutput": true, "resolveJsonModule": true, "skipLibCheck": true, diff --git a/src/typescript/sdk/tsconfig.publish.json b/src/typescript/sdk/tsconfig.publish.json new file mode 100644 index 000000000..095bdf6fa --- /dev/null +++ b/src/typescript/sdk/tsconfig.publish.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "noEmit": false, + "outDir": "./dist" + }, + "exclude": [ + "node_modules", + "**/*.test.ts", + "**/*.spec.ts", + "tests/e2e/**/*", + "tests/unit/**/*" + ], + "extends": "./tsconfig.json", + "include": [ + "src", + "dist" + ] +}