From 468523f4ad85f99d78fd341ca4f5fc96f561a533 Mon Sep 17 00:00:00 2001 From: aschmitz <andy.schmitz@gmail.com> Date: Wed, 4 Oct 2017 02:56:37 -0500 Subject: Non-Serial ("Snowflake") IDs (#4801) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use non-serial IDs This change makes a number of nontrivial tweaks to the data model in Mastodon: * All IDs are now 8 byte integers (rather than mixed 4- and 8-byte) * IDs are now assigned as: * Top 6 bytes: millisecond-resolution time from epoch * Bottom 2 bytes: serial (within the millisecond) sequence number * See /lib/tasks/db.rake's `define_timestamp_id` for details, but note that the purpose of these changes is to make it difficult to determine the number of objects in a table from the ID of any object. * The Redis sorted set used for the feed will have values used to look up toots, rather than scores. This is almost always the same as the existing behavior, except in the case of boosted toots. This change was made because Redis stores scores as double-precision floats, which cannot store the new ID format exactly. Note that this doesn't cause problems with sorting/pagination, because ZREVRANGEBYSCORE sorts lexicographically when scores are tied. (This will still cause sorting issues when the ID gains a new significant digit, but that's extraordinarily uncommon.) Note a couple of tradeoffs have been made in this commit: * lib/tasks/db.rake is used to enforce many/most column constraints, because this commit seems likely to take a while to bring upstream. Enforcing a post-migrate hook is an easier way to maintain the code in the interim. * Boosted toots will appear in the timeline as many times as they have been boosted. This is a tradeoff due to the way the feed is saved in Redis at the moment, but will be handled by a future commit. This would effectively close Mastodon's #1059, as it is a snowflake-like system of generating IDs. However, given how involved the changes were simply within Mastodon, it may have unexpected interactions with some clients, if they store IDs as doubles (or as 4-byte integers). This was a problem that Twitter ran into with their "snowflake" transition, particularly in JavaScript clients that treated IDs as JS integers, rather than strings. It therefore would be useful to test these changes at least in the web interface and popular clients before pushing them to all users. * Fix JavaScript interface with long IDs Somewhat predictably, the JS interface handled IDs as numbers, which in JS are IEEE double-precision floats. This loses some precision when working with numbers as large as those generated by the new ID scheme, so we instead handle them here as strings. This is relatively simple, and doesn't appear to have caused any problems, but should definitely be tested more thoroughly than the built-in tests. Several days of use appear to support this working properly. BREAKING CHANGE: The major(!) change here is that IDs are now returned as strings by the REST endpoints, rather than as integers. In practice, relatively few changes were required to make the existing JS UI work with this change, but it will likely hit API clients pretty hard: it's an entirely different type to consume. (The one API client I tested, Tusky, handles this with no problems, however.) Twitter ran into this issue when introducing Snowflake IDs, and decided to instead introduce an `id_str` field in JSON responses. I have opted to *not* do that, and instead force all IDs to 64-bit integers represented by strings in one go. (I believe Twitter exacerbated their problem by rolling out the changes three times: once for statuses, once for DMs, and once for user IDs, as well as by leaving an integer ID value in JSON. As they said, "If youโre using the `id` field with JSON in a Javascript-related language, there is a very high likelihood that the integers will be silently munged by Javascript interpreters. In most cases, this will result in behavior such as being unable to load or delete a specific direct message, because the ID you're sending to the API is different than the actual identifier associated with the message." [1]) However, given that this is a significant change for API users, alternatives or a transition time may be appropriate. 1: https://blog.twitter.com/developer/en_us/a/2011/direct-messages-going-snowflake-on-sep-30-2011.html * Restructure feed pushes/unpushes This was necessary because the previous behavior used Redis zset scores to identify statuses, but those are IEEE double-precision floats, so we can't actually use them to identify all 64-bit IDs. However, it leaves the code in a much better state for refactoring reblog handling / coalescing. Feed-management code has been consolidated in FeedManager, including: * BatchedRemoveStatusService no longer directly manipulates feed zsets * RemoveStatusService no longer directly manipulates feed zsets * PrecomputeFeedService has moved its logic to FeedManager#populate_feed (PrecomputeFeedService largely made lots of calls to FeedManager, but didn't follow the normal adding-to-feed process.) This has the effect of unifying all of the feed push/unpush logic in FeedManager, making it much more tractable to update it in the future. Due to some additional checks that must be made during, for example, batch status removals, some Redis pipelining has been removed. It does not appear that this should cause significantly increased load, but if necessary, some optimizations are possible in batch cases. These were omitted in the pursuit of simplicity, but a batch_push and batch_unpush would be possible in the future. Tests were added to verify that pushes happen under expected conditions, and to verify reblog behavior (both on pushing and unpushing). In the case of unpushing, this includes testing behavior that currently leads to confusion such as Mastodon's #2817, but this codifies that the behavior is currently expected. * Rubocop fixes I could swear I made these changes already, but I must have lost them somewhere along the line. * Address review comments This addresses the first two comments from review of this feature: https://github.com/tootsuite/mastodon/pull/4801#discussion_r139336735 https://github.com/tootsuite/mastodon/pull/4801#discussion_r139336931 This adds an optional argument to FeedManager#key, the subtype of feed key to generate. It also tests to ensure that FeedManager's settings are such that reblogs won't be tracked forever. * Hardcode IdToBigints migration columns This addresses a comment during review: https://github.com/tootsuite/mastodon/pull/4801#discussion_r139337452 This means we'll need to make sure that all _id columns going forward are bigints, but that should happen automatically in most cases. * Additional fixes for stringified IDs in JSON These should be the last two. These were identified using eslint to try to identify any plain casts to JavaScript numbers. (Some such casts are legitimate, but these were not.) Adding the following to .eslintrc.yml will identify casts to numbers: ~~~ no-restricted-syntax: - warn - selector: UnaryExpression[operator='+'] > :not(Literal) message: Avoid the use of unary + - selector: CallExpression[callee.name='Number'] message: Casting with Number() may coerce string IDs to numbers ~~~ The remaining three casts appear legitimate: two casts to array indices, one in a server to turn an environment variable into a number. * Only implement timestamp IDs for Status IDs Per discussion in #4801, this is only being merged in for Status IDs at this point. We do this in a migration, as there is no longer use for a post-migration hook. We keep the initialization of the timestamp_id function as a Rake task, as it is also needed after db:schema:load (as db/schema.rb doesn't store Postgres functions). * Change internal streaming payloads to stringified IDs as well This is equivalent to 591a9af356faf2d5c7e66e3ec715502796c875cd from #5019, with an extra change for the addition to FeedManager#unpush. * Ensure we have a status_id_seq sequence Apparently this is not a given when specifying a custom ID function, so now we ensure it gets created. This uses the generic version of this function to more easily support adding additional tables with timestamp IDs in the future, although it would be possible to cut this down to a less generic version if necessary. It is only run during db:schema:load or the relevant migration, so the overhead is extraordinarily minimal. * Transition reblogs to new Redis format This provides a one-way migration to transition old Redis reblog entries into the new format, with a separate tracking entry for reblogs. It is not invertible because doing so could (if timestamp IDs are used) require a database query for each status in each users' feed, which is likely to be a significant toll on major instances. * Address review comments from @akihikodaki No functional changes. * Additional review changes * Heredoc cleanup * Run db:schema:load hooks for test in development This matches the behavior in Rails' ActiveRecord::Tasks::DatabaseTasks.each_current_configuration, which would otherwise break `rake db:setup` in development. It also moves some functionality out to a library, which will be a good place to put additional related functionality in the near future. --- lib/tasks/db.rake | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'lib/tasks') diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 7a055bf25..66468d999 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -1,5 +1,36 @@ # frozen_string_literal: true +require Rails.root.join('lib', 'mastodon', 'timestamp_ids') + +def each_schema_load_environment + # If we're in development, also run this for the test environment. + # This is a somewhat hacky way to do this, so here's why: + # 1. We have to define this before we load the schema, or we won't + # have a timestamp_id function when we get to it in the schema. + # 2. db:setup calls db:schema:load_if_ruby, which calls + # db:schema:load, which we define above as having a prerequisite + # of this task. + # 3. db:schema:load ends up running + # ActiveRecord::Tasks::DatabaseTasks.load_schema_current, which + # calls a private method `each_current_configuration`, which + # explicitly also does the loading for the `test` environment + # if the current environment is `development`, so we end up + # needing to do the same, and we can't even use the same method + # to do it. + + if Rails.env == 'development' + test_conf = ActiveRecord::Base.configurations['test'] + if test_conf['database']&.present? + ActiveRecord::Base.establish_connection(:test) + yield + + ActiveRecord::Base.establish_connection(Rails.env.to_sym) + end + end + + yield +end + namespace :db do namespace :migrate do desc 'Setup the db or migrate depending on state of db' @@ -16,4 +47,29 @@ namespace :db do end end end + + # Before we load the schema, define the timestamp_id function. + # Idiomatically, we might do this in a migration, but then it + # wouldn't end up in schema.rb, so we'd need to figure out a way to + # get it in before doing db:setup as well. This is simpler, and + # ensures it's always in place. + Rake::Task['db:schema:load'].enhance ['db:define_timestamp_id'] + + # After we load the schema, make sure we have sequences for each + # table using timestamp IDs. + Rake::Task['db:schema:load'].enhance do + Rake::Task['db:ensure_id_sequences_exist'].invoke + end + + task :define_timestamp_id do + each_schema_load_environment do + Mastodon::TimestampIds.define_timestamp_id + end + end + + task :ensure_id_sequences_exist do + each_schema_load_environment do + Mastodon::TimestampIds.ensure_id_sequences_exist + end + end end -- cgit From eb5ac234342db46c881d8e69644d3292b5eabb54 Mon Sep 17 00:00:00 2001 From: Eugen Rochko <eugen@zeonfederated.com> Date: Fri, 6 Oct 2017 03:42:21 +0200 Subject: Clean up code style of Mastodon::TimestampId module (#5232) * Clean up code style of Mastodon::TimestampId module * Update brakeman config --- config/brakeman.ignore | 42 ++++----- lib/mastodon/timestamp_ids.rb | 201 ++++++++++++++++++++++-------------------- lib/tasks/db.rake | 2 +- 3 files changed, 125 insertions(+), 120 deletions(-) (limited to 'lib/tasks') diff --git a/config/brakeman.ignore b/config/brakeman.ignore index ed6e121d2..2a1bc1997 100644 --- a/config/brakeman.ignore +++ b/config/brakeman.ignore @@ -57,6 +57,26 @@ "confidence": "Weak", "note": "" }, + { + "warning_type": "SQL Injection", + "warning_code": 0, + "fingerprint": "34efc76883080f8b1110a30c34ec4f903946ee56651aae46c62477f45d4fc412", + "check_name": "SQL", + "message": "Possible SQL injection", + "file": "lib/mastodon/timestamp_ids.rb", + "line": 63, + "link": "http://brakemanscanner.org/docs/warning_types/sql_injection/", + "code": "connection.execute(\" CREATE OR REPLACE FUNCTION timestamp_id(table_name text)\\n RETURNS bigint AS\\n $$\\n DECLARE\\n time_part bigint;\\n sequence_base bigint;\\n tail bigint;\\n BEGIN\\n time_part := (\\n -- Get the time in milliseconds\\n ((date_part('epoch', now()) * 1000))::bigint\\n -- And shift it over two bytes\\n << 16);\\n\\n sequence_base := (\\n 'x' ||\\n -- Take the first two bytes (four hex characters)\\n substr(\\n -- Of the MD5 hash of the data we documented\\n md5(table_name ||\\n '#{SecureRandom.hex(16)}' ||\\n time_part::text\\n ),\\n 1, 4\\n )\\n -- And turn it into a bigint\\n )::bit(16)::bigint;\\n\\n -- Finally, add our sequence number to our base, and chop\\n -- it to the last two bytes\\n tail := (\\n (sequence_base + nextval(table_name || '_id_seq'))\\n & 65535);\\n\\n -- Return the time part and the sequence part. OR appears\\n -- faster here than addition, but they're equivalent:\\n -- time_part has no trailing two bytes, and tail is only\\n -- the last two bytes.\\n RETURN time_part | tail;\\n END\\n $$ LANGUAGE plpgsql VOLATILE;\\n\")", + "render_path": null, + "location": { + "type": "method", + "class": "Mastodon::TimestampIds", + "method": "define_timestamp_id" + }, + "user_input": "SecureRandom.hex(16)", + "confidence": "Medium", + "note": "" + }, { "warning_type": "Dynamic Render Path", "warning_code": 15, @@ -210,26 +230,6 @@ "confidence": "Weak", "note": "" }, - { - "warning_type": "SQL Injection", - "warning_code": 0, - "fingerprint": "cd440d9d0bcb76225f4142030cec0bdec6ad119c537c108c9d514bf87bc34d29", - "check_name": "SQL", - "message": "Possible SQL injection", - "file": "lib/mastodon/timestamp_ids.rb", - "line": 69, - "link": "http://brakemanscanner.org/docs/warning_types/sql_injection/", - "code": "ActiveRecord::Base.connection.execute(\" CREATE OR REPLACE FUNCTION timestamp_id(table_name text)\\n RETURNS bigint AS\\n $$\\n DECLARE\\n time_part bigint;\\n sequence_base bigint;\\n tail bigint;\\n BEGIN\\n -- Our ID will be composed of the following:\\n -- 6 bytes (48 bits) of millisecond-level timestamp\\n -- 2 bytes (16 bits) of sequence data\\n\\n -- The 'sequence data' is intended to be unique within a\\n -- given millisecond, yet obscure the 'serial number' of\\n -- this row.\\n\\n -- To do this, we hash the following data:\\n -- * Table name (if provided, skipped if not)\\n -- * Secret salt (should not be guessable)\\n -- * Timestamp (again, millisecond-level granularity)\\n\\n -- We then take the first two bytes of that value, and add\\n -- the lowest two bytes of the table ID sequence number\\n -- (`table_name`_id_seq). This means that even if we insert\\n -- two rows at the same millisecond, they will have\\n -- distinct 'sequence data' portions.\\n\\n -- If this happens, and an attacker can see both such IDs,\\n -- they can determine which of the two entries was inserted\\n -- first, but not the total number of entries in the table\\n -- (even mod 2**16).\\n\\n -- The table name is included in the hash to ensure that\\n -- different tables derive separate sequence bases so rows\\n -- inserted in the same millisecond in different tables do\\n -- not reveal the table ID sequence number for one another.\\n\\n -- The secret salt is included in the hash to ensure that\\n -- external users cannot derive the sequence base given the\\n -- timestamp and table name, which would allow them to\\n -- compute the table ID sequence number.\\n\\n time_part := (\\n -- Get the time in milliseconds\\n ((date_part('epoch', now()) * 1000))::bigint\\n -- And shift it over two bytes\\n << 16);\\n\\n sequence_base := (\\n 'x' ||\\n -- Take the first two bytes (four hex characters)\\n substr(\\n -- Of the MD5 hash of the data we documented\\n md5(table_name ||\\n '#{SecureRandom.hex(16)}' ||\\n time_part::text\\n ),\\n 1, 4\\n )\\n -- And turn it into a bigint\\n )::bit(16)::bigint;\\n\\n -- Finally, add our sequence number to our base, and chop\\n -- it to the last two bytes\\n tail := (\\n (sequence_base + nextval(table_name || '_id_seq'))\\n & 65535);\\n\\n -- Return the time part and the sequence part. OR appears\\n -- faster here than addition, but they're equivalent:\\n -- time_part has no trailing two bytes, and tail is only\\n -- the last two bytes.\\n RETURN time_part | tail;\\n END\\n $$ LANGUAGE plpgsql VOLATILE;\\n\")", - "render_path": null, - "location": { - "type": "method", - "class": "Mastodon::TimestampIds", - "method": "s(:self).define_timestamp_id" - }, - "user_input": "SecureRandom.hex(16)", - "confidence": "Medium", - "note": "" - }, { "warning_type": "Cross-Site Scripting", "warning_code": 4, @@ -269,6 +269,6 @@ "note": "" } ], - "updated": "2017-10-05 20:06:40 +0200", + "updated": "2017-10-06 03:27:46 +0200", "brakeman_version": "4.0.1" } diff --git a/lib/mastodon/timestamp_ids.rb b/lib/mastodon/timestamp_ids.rb index d49b5c1b5..3b048a50c 100644 --- a/lib/mastodon/timestamp_ids.rb +++ b/lib/mastodon/timestamp_ids.rb @@ -1,120 +1,111 @@ # frozen_string_literal: true -module Mastodon - module TimestampIds - def self.define_timestamp_id - conn = ActiveRecord::Base.connection - - # Make sure we don't already have a `timestamp_id` function. - unless conn.execute(<<~SQL).values.first.first - SELECT EXISTS( - SELECT * FROM pg_proc WHERE proname = 'timestamp_id' - ); +module Mastodon::TimestampIds + DEFAULT_REGEX = /timestamp_id\('(?<seq_prefix>\w+)'/ + + class << self + # Our ID will be composed of the following: + # 6 bytes (48 bits) of millisecond-level timestamp + # 2 bytes (16 bits) of sequence data + # + # The 'sequence data' is intended to be unique within a + # given millisecond, yet obscure the 'serial number' of + # this row. + # + # To do this, we hash the following data: + # * Table name (if provided, skipped if not) + # * Secret salt (should not be guessable) + # * Timestamp (again, millisecond-level granularity) + # + # We then take the first two bytes of that value, and add + # the lowest two bytes of the table ID sequence number + # (`table_name`_id_seq). This means that even if we insert + # two rows at the same millisecond, they will have + # distinct 'sequence data' portions. + # + # If this happens, and an attacker can see both such IDs, + # they can determine which of the two entries was inserted + # first, but not the total number of entries in the table + # (even mod 2**16). + # + # The table name is included in the hash to ensure that + # different tables derive separate sequence bases so rows + # inserted in the same millisecond in different tables do + # not reveal the table ID sequence number for one another. + # + # The secret salt is included in the hash to ensure that + # external users cannot derive the sequence base given the + # timestamp and table name, which would allow them to + # compute the table ID sequence number. + def define_timestamp_id + return if already_defined? + + connection.execute(<<~SQL) + CREATE OR REPLACE FUNCTION timestamp_id(table_name text) + RETURNS bigint AS + $$ + DECLARE + time_part bigint; + sequence_base bigint; + tail bigint; + BEGIN + time_part := ( + -- Get the time in milliseconds + ((date_part('epoch', now()) * 1000))::bigint + -- And shift it over two bytes + << 16); + + sequence_base := ( + 'x' || + -- Take the first two bytes (four hex characters) + substr( + -- Of the MD5 hash of the data we documented + md5(table_name || + '#{SecureRandom.hex(16)}' || + time_part::text + ), + 1, 4 + ) + -- And turn it into a bigint + )::bit(16)::bigint; + + -- Finally, add our sequence number to our base, and chop + -- it to the last two bytes + tail := ( + (sequence_base + nextval(table_name || '_id_seq')) + & 65535); + + -- Return the time part and the sequence part. OR appears + -- faster here than addition, but they're equivalent: + -- time_part has no trailing two bytes, and tail is only + -- the last two bytes. + RETURN time_part | tail; + END + $$ LANGUAGE plpgsql VOLATILE; SQL - # The function doesn't exist, so we'll define it. - conn.execute(<<~SQL) - CREATE OR REPLACE FUNCTION timestamp_id(table_name text) - RETURNS bigint AS - $$ - DECLARE - time_part bigint; - sequence_base bigint; - tail bigint; - BEGIN - -- Our ID will be composed of the following: - -- 6 bytes (48 bits) of millisecond-level timestamp - -- 2 bytes (16 bits) of sequence data - - -- The 'sequence data' is intended to be unique within a - -- given millisecond, yet obscure the 'serial number' of - -- this row. - - -- To do this, we hash the following data: - -- * Table name (if provided, skipped if not) - -- * Secret salt (should not be guessable) - -- * Timestamp (again, millisecond-level granularity) - - -- We then take the first two bytes of that value, and add - -- the lowest two bytes of the table ID sequence number - -- (`table_name`_id_seq). This means that even if we insert - -- two rows at the same millisecond, they will have - -- distinct 'sequence data' portions. - - -- If this happens, and an attacker can see both such IDs, - -- they can determine which of the two entries was inserted - -- first, but not the total number of entries in the table - -- (even mod 2**16). - - -- The table name is included in the hash to ensure that - -- different tables derive separate sequence bases so rows - -- inserted in the same millisecond in different tables do - -- not reveal the table ID sequence number for one another. - - -- The secret salt is included in the hash to ensure that - -- external users cannot derive the sequence base given the - -- timestamp and table name, which would allow them to - -- compute the table ID sequence number. - - time_part := ( - -- Get the time in milliseconds - ((date_part('epoch', now()) * 1000))::bigint - -- And shift it over two bytes - << 16); - - sequence_base := ( - 'x' || - -- Take the first two bytes (four hex characters) - substr( - -- Of the MD5 hash of the data we documented - md5(table_name || - '#{SecureRandom.hex(16)}' || - time_part::text - ), - 1, 4 - ) - -- And turn it into a bigint - )::bit(16)::bigint; - - -- Finally, add our sequence number to our base, and chop - -- it to the last two bytes - tail := ( - (sequence_base + nextval(table_name || '_id_seq')) - & 65535); - - -- Return the time part and the sequence part. OR appears - -- faster here than addition, but they're equivalent: - -- time_part has no trailing two bytes, and tail is only - -- the last two bytes. - RETURN time_part | tail; - END - $$ LANGUAGE plpgsql VOLATILE; - SQL - end end - def self.ensure_id_sequences_exist - conn = ActiveRecord::Base.connection - + def ensure_id_sequences_exist # Find tables using timestamp IDs. - default_regex = /timestamp_id\('(?<seq_prefix>\w+)'/ - conn.tables.each do |table| + connection.tables.each do |table| # We're only concerned with "id" columns. - next unless (id_col = conn.columns(table).find { |col| col.name == 'id' }) + next unless (id_col = connection.columns(table).find { |col| col.name == 'id' }) # And only those that are using timestamp_id. - next unless (data = default_regex.match(id_col.default_function)) + next unless (data = DEFAULT_REGEX.match(id_col.default_function)) seq_name = data[:seq_prefix] + '_id_seq' + # If we were on Postgres 9.5+, we could do CREATE SEQUENCE IF # NOT EXISTS, but we can't depend on that. Instead, catch the # possible exception and ignore it. # Note that seq_name isn't a column name, but it's a # relation, like a column, and follows the same quoting rules # in Postgres. - conn.execute(<<~SQL) + connection.execute(<<~SQL) DO $$ BEGIN - CREATE SEQUENCE #{conn.quote_column_name(seq_name)}; + CREATE SEQUENCE #{connection.quote_column_name(seq_name)}; EXCEPTION WHEN duplicate_table THEN -- Do nothing, we have the sequence already. END @@ -122,5 +113,19 @@ module Mastodon SQL end end + + private + + def already_defined? + connection.execute(<<~SQL).values.first.first + SELECT EXISTS( + SELECT * FROM pg_proc WHERE proname = 'timestamp_id' + ); + SQL + end + + def connection + ActiveRecord::Base.connection + end end end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 66468d999..6af6bb6fb 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -20,10 +20,10 @@ def each_schema_load_environment if Rails.env == 'development' test_conf = ActiveRecord::Base.configurations['test'] + if test_conf['database']&.present? ActiveRecord::Base.establish_connection(:test) yield - ActiveRecord::Base.establish_connection(Rails.env.to_sym) end end -- cgit From fd7f0732fe26554c51218c4f67955e8050590d2c Mon Sep 17 00:00:00 2001 From: Nolan Lawson <nolan@nolanlawson.com> Date: Thu, 5 Oct 2017 18:42:34 -0700 Subject: Compress and combine emoji data (#5229) --- app/javascript/mastodon/actions/compose.js | 2 +- .../mastodon/components/autosuggest_emoji.js | 4 +- app/javascript/mastodon/emoji.js | 71 ---------- app/javascript/mastodon/emoji_data_compressed.js | 22 --- app/javascript/mastodon/emoji_data_light.js | 16 --- app/javascript/mastodon/emoji_index_light.js | 154 --------------------- app/javascript/mastodon/emoji_map.json | 1 - app/javascript/mastodon/emoji_utils.js | 137 ------------------ app/javascript/mastodon/emojione_light.js | 38 ----- .../compose/components/emoji_picker_dropdown.js | 2 +- app/javascript/mastodon/features/emoji/emoji.js | 72 ++++++++++ .../mastodon/features/emoji/emoji_compressed.js | 90 ++++++++++++ .../mastodon/features/emoji/emoji_map.json | 1 + .../features/emoji/emoji_mart_data_light.js | 41 ++++++ .../features/emoji/emoji_mart_search_light.js | 154 +++++++++++++++++++++ .../features/emoji/emoji_unicode_mapping_light.js | 35 +++++ .../mastodon/features/emoji/emoji_utils.js | 137 ++++++++++++++++++ .../mastodon/features/emoji/unicode_to_filename.js | 26 ++++ .../features/emoji/unicode_to_unified_name.js | 17 +++ app/javascript/mastodon/reducers/accounts.js | 2 +- app/javascript/mastodon/reducers/custom_emojis.js | 4 +- app/javascript/mastodon/reducers/statuses.js | 2 +- app/javascript/packs/public.js | 2 +- lib/tasks/emojis.rake | 2 +- spec/javascript/components/emoji_index.test.js | 20 ++- spec/javascript/components/emojify.test.js | 11 +- 26 files changed, 612 insertions(+), 451 deletions(-) delete mode 100644 app/javascript/mastodon/emoji.js delete mode 100644 app/javascript/mastodon/emoji_data_compressed.js delete mode 100644 app/javascript/mastodon/emoji_data_light.js delete mode 100644 app/javascript/mastodon/emoji_index_light.js delete mode 100644 app/javascript/mastodon/emoji_map.json delete mode 100644 app/javascript/mastodon/emoji_utils.js delete mode 100644 app/javascript/mastodon/emojione_light.js create mode 100644 app/javascript/mastodon/features/emoji/emoji.js create mode 100644 app/javascript/mastodon/features/emoji/emoji_compressed.js create mode 100644 app/javascript/mastodon/features/emoji/emoji_map.json create mode 100644 app/javascript/mastodon/features/emoji/emoji_mart_data_light.js create mode 100644 app/javascript/mastodon/features/emoji/emoji_mart_search_light.js create mode 100644 app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js create mode 100644 app/javascript/mastodon/features/emoji/emoji_utils.js create mode 100644 app/javascript/mastodon/features/emoji/unicode_to_filename.js create mode 100644 app/javascript/mastodon/features/emoji/unicode_to_unified_name.js (limited to 'lib/tasks') diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index ed4837ebd..560c00720 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -1,6 +1,6 @@ import api from '../api'; import { throttle } from 'lodash'; -import { search as emojiSearch } from '../emoji_index_light'; +import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; import { updateTimeline, diff --git a/app/javascript/mastodon/components/autosuggest_emoji.js b/app/javascript/mastodon/components/autosuggest_emoji.js index 31dc1dbb1..ce4383a60 100644 --- a/app/javascript/mastodon/components/autosuggest_emoji.js +++ b/app/javascript/mastodon/components/autosuggest_emoji.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { unicodeMapping } from '../emojione_light'; +import unicodeMapping from '../features/emoji/emoji_unicode_mapping_light'; const assetHost = process.env.CDN_HOST || ''; @@ -23,7 +23,7 @@ export default class AutosuggestEmoji extends React.PureComponent { return null; } - url = `${assetHost}/emoji/${mapping[0]}.svg`; + url = `${assetHost}/emoji/${mapping.filename}.svg`; } return ( diff --git a/app/javascript/mastodon/emoji.js b/app/javascript/mastodon/emoji.js deleted file mode 100644 index cf0077958..000000000 --- a/app/javascript/mastodon/emoji.js +++ /dev/null @@ -1,71 +0,0 @@ -import { unicodeMapping } from './emojione_light'; -import Trie from 'substring-trie'; - -const trie = new Trie(Object.keys(unicodeMapping)); - -const assetHost = process.env.CDN_HOST || ''; - -const emojify = (str, customEmojis = {}) => { - let rtn = ''; - for (;;) { - let match, i = 0, tag; - while (i < str.length && (tag = '<&:'.indexOf(str[i])) === -1 && !(match = trie.search(str.slice(i)))) { - i += str.codePointAt(i) < 65536 ? 1 : 2; - } - let rend, replacement = ''; - if (i === str.length) { - break; - } else if (str[i] === ':') { - if (!(() => { - rend = str.indexOf(':', i + 1) + 1; - if (!rend) return false; // no pair of ':' - const lt = str.indexOf('<', i + 1); - if (!(lt === -1 || lt >= rend)) return false; // tag appeared before closing ':' - const shortname = str.slice(i, rend); - // now got a replacee as ':shortname:' - // if you want additional emoji handler, add statements below which set replacement and return true. - if (shortname in customEmojis) { - replacement = `<img draggable="false" class="emojione" alt="${shortname}" title="${shortname}" src="${customEmojis[shortname]}" />`; - return true; - } - return false; - })()) rend = ++i; - } else if (tag >= 0) { // <, & - rend = str.indexOf('>;'[tag], i + 1) + 1; - if (!rend) break; - i = rend; - } else { // matched to unicode emoji - const [filename, shortCode] = unicodeMapping[match]; - replacement = `<img draggable="false" class="emojione" alt="${match}" title=":${shortCode}:" src="${assetHost}/emoji/${filename}.svg" />`; - rend = i + match.length; - } - rtn += str.slice(0, i) + replacement; - str = str.slice(rend); - } - return rtn + str; -}; - -export default emojify; - -export const buildCustomEmojis = customEmojis => { - const emojis = []; - - customEmojis.forEach(emoji => { - const shortcode = emoji.get('shortcode'); - const url = emoji.get('static_url'); - const name = shortcode.replace(':', ''); - - emojis.push({ - id: name, - name, - short_names: [name], - text: '', - emoticons: [], - keywords: [name], - imageUrl: url, - custom: true, - }); - }); - - return emojis; -}; diff --git a/app/javascript/mastodon/emoji_data_compressed.js b/app/javascript/mastodon/emoji_data_compressed.js deleted file mode 100644 index f69a3e46a..000000000 --- a/app/javascript/mastodon/emoji_data_compressed.js +++ /dev/null @@ -1,22 +0,0 @@ -// @preval -const data = require('emoji-mart/dist/data').default; -const pick = require('lodash/pick'); -const values = require('lodash/values'); - -const condensedEmojis = Object.keys(data.emojis).map(key => { - if (!data.emojis[key].short_names[0] === key) { - throw new Error('The condenser expects the first short_code to be the ' + - 'key. It may need to be rewritten if the emoji change such that this ' + - 'is no longer the case.'); - } - return values(pick(data.emojis[key], ['short_names', 'unified', 'search'])); -}); - -// JSON.parse/stringify is to emulate what @preval is doing and avoid any -// inconsistent behavior in dev mode -module.exports = JSON.parse(JSON.stringify({ - emojis: condensedEmojis, - skins: data.skins, - categories: data.categories, - short_names: data.short_names, -})); diff --git a/app/javascript/mastodon/emoji_data_light.js b/app/javascript/mastodon/emoji_data_light.js deleted file mode 100644 index f91ee592e..000000000 --- a/app/javascript/mastodon/emoji_data_light.js +++ /dev/null @@ -1,16 +0,0 @@ -const data = require('./emoji_data_compressed'); - -// decompress -const emojis = {}; -data.emojis.forEach(compressedEmoji => { - const [ short_names, unified, search ] = compressedEmoji; - emojis[short_names[0]] = { - short_names, - unified, - search, - }; -}); - -data.emojis = emojis; - -module.exports = data; diff --git a/app/javascript/mastodon/emoji_index_light.js b/app/javascript/mastodon/emoji_index_light.js deleted file mode 100644 index 0719eda5e..000000000 --- a/app/javascript/mastodon/emoji_index_light.js +++ /dev/null @@ -1,154 +0,0 @@ -// This code is largely borrowed from: -// https://github.com/missive/emoji-mart/blob/bbd4fbe/src/utils/emoji-index.js - -import data from './emoji_data_light'; -import { getData, getSanitizedData, intersect } from './emoji_utils'; - -let index = {}; -let emojisList = {}; -let emoticonsList = {}; -let previousInclude = []; -let previousExclude = []; - -for (let emoji in data.emojis) { - let emojiData = data.emojis[emoji], - { short_names, emoticons } = emojiData, - id = short_names[0]; - - for (let emoticon of (emoticons || [])) { - if (!emoticonsList[emoticon]) { - emoticonsList[emoticon] = id; - } - } - - emojisList[id] = getSanitizedData(id); -} - -function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) { - maxResults = maxResults || 75; - include = include || []; - exclude = exclude || []; - - if (custom.length) { - for (const emoji of custom) { - data.emojis[emoji.id] = getData(emoji); - emojisList[emoji.id] = getSanitizedData(emoji); - } - - data.categories.push({ - name: 'Custom', - emojis: custom.map(emoji => emoji.id), - }); - } - - let results = null; - let pool = data.emojis; - - if (value.length) { - if (value === '-' || value === '-1') { - return [emojisList['-1']]; - } - - let values = value.toLowerCase().split(/[\s|,|\-|_]+/); - - if (values.length > 2) { - values = [values[0], values[1]]; - } - - if (include.length || exclude.length) { - pool = {}; - - if (previousInclude !== include.sort().join(',') || previousExclude !== exclude.sort().join(',')) { - previousInclude = include.sort().join(','); - previousExclude = exclude.sort().join(','); - index = {}; - } - - for (let category of data.categories) { - let isIncluded = include && include.length ? include.indexOf(category.name.toLowerCase()) > -1 : true; - let isExcluded = exclude && exclude.length ? exclude.indexOf(category.name.toLowerCase()) > -1 : false; - if (!isIncluded || isExcluded) { - continue; - } - - for (let emojiId of category.emojis) { - pool[emojiId] = data.emojis[emojiId]; - } - } - } else if (previousInclude.length || previousExclude.length) { - index = {}; - } - - let allResults = values.map((value) => { - let aPool = pool; - let aIndex = index; - let length = 0; - - for (let char of value.split('')) { - length++; - - aIndex[char] = aIndex[char] || {}; - aIndex = aIndex[char]; - - if (!aIndex.results) { - let scores = {}; - - aIndex.results = []; - aIndex.pool = {}; - - for (let id in aPool) { - let emoji = aPool[id], - { search } = emoji, - sub = value.substr(0, length), - subIndex = search.indexOf(sub); - - if (subIndex !== -1) { - let score = subIndex + 1; - if (sub === id) { - score = 0; - } - - aIndex.results.push(emojisList[id]); - aIndex.pool[id] = emoji; - - scores[id] = score; - } - } - - aIndex.results.sort((a, b) => { - let aScore = scores[a.id], - bScore = scores[b.id]; - - return aScore - bScore; - }); - } - - aPool = aIndex.pool; - } - - return aIndex.results; - }).filter(a => a); - - if (allResults.length > 1) { - results = intersect(...allResults); - } else if (allResults.length) { - results = allResults[0]; - } else { - results = []; - } - } - - if (results) { - if (emojisToShowFilter) { - results = results.filter((result) => emojisToShowFilter(data.emojis[result.id].unified)); - } - - if (results && results.length > maxResults) { - results = results.slice(0, maxResults); - } - } - - return results; -} - -export { search }; diff --git a/app/javascript/mastodon/emoji_map.json b/app/javascript/mastodon/emoji_map.json deleted file mode 100644 index 13753ba84..000000000 --- a/app/javascript/mastodon/emoji_map.json +++ /dev/null @@ -1 +0,0 @@ -{"๐":"1f600","๐":"1f601","๐":"1f602","๐คฃ":"1f923","๐":"1f603","๐":"1f604","๐ ":"1f605","๐":"1f606","๐":"1f609","๐":"1f60a","๐":"1f60b","๐":"1f60e","๐":"1f60d","๐":"1f618","๐":"1f617","๐":"1f619","๐":"1f61a","โบ":"263a","๐":"1f642","๐ค":"1f917","๐คฉ":"1f929","๐ค":"1f914","๐คจ":"1f928","๐":"1f610","๐":"1f611","๐ถ":"1f636","๐":"1f644","๐":"1f60f","๐ฃ":"1f623","๐ฅ":"1f625","๐ฎ":"1f62e","๐ค":"1f910","๐ฏ":"1f62f","๐ช":"1f62a","๐ซ":"1f62b","๐ด":"1f634","๐":"1f60c","๐":"1f61b","๐":"1f61c","๐":"1f61d","๐คค":"1f924","๐":"1f612","๐":"1f613","๐":"1f614","๐":"1f615","๐":"1f643","๐ค":"1f911","๐ฒ":"1f632","โน":"2639","๐":"1f641","๐":"1f616","๐":"1f61e","๐":"1f61f","๐ค":"1f624","๐ข":"1f622","๐ญ":"1f62d","๐ฆ":"1f626","๐ง":"1f627","๐จ":"1f628","๐ฉ":"1f629","๐คฏ":"1f92f","๐ฌ":"1f62c","๐ฐ":"1f630","๐ฑ":"1f631","๐ณ":"1f633","๐คช":"1f92a","๐ต":"1f635","๐ก":"1f621","๐ ":"1f620","๐คฌ":"1f92c","๐ท":"1f637","๐ค":"1f912","๐ค":"1f915","๐คข":"1f922","๐คฎ":"1f92e","๐คง":"1f927","๐":"1f607","๐ค ":"1f920","๐คก":"1f921","๐คฅ":"1f925","๐คซ":"1f92b","๐คญ":"1f92d","๐ง":"1f9d0","๐ค":"1f913","๐":"1f608","๐ฟ":"1f47f","๐น":"1f479","๐บ":"1f47a","๐":"1f480","โ ":"2620","๐ป":"1f47b","๐ฝ":"1f47d","๐พ":"1f47e","๐ค":"1f916","๐ฉ":"1f4a9","๐บ":"1f63a","๐ธ":"1f638","๐น":"1f639","๐ป":"1f63b","๐ผ":"1f63c","๐ฝ":"1f63d","๐":"1f640","๐ฟ":"1f63f","๐พ":"1f63e","๐":"1f648","๐":"1f649","๐":"1f64a","๐ถ":"1f476","๐ง":"1f9d2","๐ฆ":"1f466","๐ง":"1f467","๐ง":"1f9d1","๐จ":"1f468","๐ฉ":"1f469","๐ง":"1f9d3","๐ด":"1f474","๐ต":"1f475","๐ฎ":"1f46e","๐ต":"1f575","๐":"1f482","๐ท":"1f477","๐คด":"1f934","๐ธ":"1f478","๐ณ":"1f473","๐ฒ":"1f472","๐ง":"1f9d5","๐ง":"1f9d4","๐ฑ":"1f471","๐คต":"1f935","๐ฐ":"1f470","๐คฐ":"1f930","๐คฑ":"1f931","๐ผ":"1f47c","๐ ":"1f385","๐คถ":"1f936","๐ง":"1f9d9","๐ง":"1f9da","๐ง":"1f9db","๐ง":"1f9dc","๐ง":"1f9dd","๐ง":"1f9de","๐ง":"1f9df","๐":"1f64d","๐":"1f64e","๐ ":"1f645","๐":"1f646","๐":"1f481","๐":"1f64b","๐":"1f647","๐คฆ":"1f926","๐คท":"1f937","๐":"1f486","๐":"1f487","๐ถ":"1f6b6","๐":"1f3c3","๐":"1f483","๐บ":"1f57a","๐ฏ":"1f46f","๐ง":"1f9d6","๐ง":"1f9d7","๐ง":"1f9d8","๐":"1f6c0","๐":"1f6cc","๐ด":"1f574","๐ฃ":"1f5e3","๐ค":"1f464","๐ฅ":"1f465","๐คบ":"1f93a","๐":"1f3c7","โท":"26f7","๐":"1f3c2","๐":"1f3cc","๐":"1f3c4","๐ฃ":"1f6a3","๐":"1f3ca","โน":"26f9","๐":"1f3cb","๐ด":"1f6b4","๐ต":"1f6b5","๐":"1f3ce","๐":"1f3cd","๐คธ":"1f938","๐คผ":"1f93c","๐คฝ":"1f93d","๐คพ":"1f93e","๐คน":"1f939","๐ซ":"1f46b","๐ฌ":"1f46c","๐ญ":"1f46d","๐":"1f48f","๐":"1f491","๐ช":"1f46a","๐คณ":"1f933","๐ช":"1f4aa","๐":"1f448","๐":"1f449","โ":"261d","๐":"1f446","๐":"1f595","๐":"1f447","โ":"270c","๐ค":"1f91e","๐":"1f596","๐ค":"1f918","๐ค":"1f919","๐":"1f590","โ":"270b","๐":"1f44c","๐":"1f44d","๐":"1f44e","โ":"270a","๐":"1f44a","๐ค":"1f91b","๐ค":"1f91c","๐ค":"1f91a","๐":"1f44b","๐ค":"1f91f","โ":"270d","๐":"1f44f","๐":"1f450","๐":"1f64c","๐คฒ":"1f932","๐":"1f64f","๐ค":"1f91d","๐ ":"1f485","๐":"1f442","๐":"1f443","๐ฃ":"1f463","๐":"1f440","๐":"1f441","๐ง ":"1f9e0","๐ ":"1f445","๐":"1f444","๐":"1f48b","๐":"1f498","โค":"2764","๐":"1f493","๐":"1f494","๐":"1f495","๐":"1f496","๐":"1f497","๐":"1f499","๐":"1f49a","๐":"1f49b","๐งก":"1f9e1","๐":"1f49c","๐ค":"1f5a4","๐":"1f49d","๐":"1f49e","๐":"1f49f","โฃ":"2763","๐":"1f48c","๐ค":"1f4a4","๐ข":"1f4a2","๐ฃ":"1f4a3","๐ฅ":"1f4a5","๐ฆ":"1f4a6","๐จ":"1f4a8","๐ซ":"1f4ab","๐ฌ":"1f4ac","๐จ":"1f5e8","๐ฏ":"1f5ef","๐ญ":"1f4ad","๐ณ":"1f573","๐":"1f453","๐ถ":"1f576","๐":"1f454","๐":"1f455","๐":"1f456","๐งฃ":"1f9e3","๐งค":"1f9e4","๐งฅ":"1f9e5","๐งฆ":"1f9e6","๐":"1f457","๐":"1f458","๐":"1f459","๐":"1f45a","๐":"1f45b","๐":"1f45c","๐":"1f45d","๐":"1f6cd","๐":"1f392","๐":"1f45e","๐":"1f45f","๐ ":"1f460","๐ก":"1f461","๐ข":"1f462","๐":"1f451","๐":"1f452","๐ฉ":"1f3a9","๐":"1f393","๐งข":"1f9e2","โ":"26d1","๐ฟ":"1f4ff","๐":"1f484","๐":"1f48d","๐":"1f48e","๐ต":"1f435","๐":"1f412","๐ฆ":"1f98d","๐ถ":"1f436","๐":"1f415","๐ฉ":"1f429","๐บ":"1f43a","๐ฆ":"1f98a","๐ฑ":"1f431","๐":"1f408","๐ฆ":"1f981","๐ฏ":"1f42f","๐ ":"1f405","๐":"1f406","๐ด":"1f434","๐":"1f40e","๐ฆ":"1f984","๐ฆ":"1f993","๐ฆ":"1f98c","๐ฎ":"1f42e","๐":"1f402","๐":"1f403","๐":"1f404","๐ท":"1f437","๐":"1f416","๐":"1f417","๐ฝ":"1f43d","๐":"1f40f","๐":"1f411","๐":"1f410","๐ช":"1f42a","๐ซ":"1f42b","๐ฆ":"1f992","๐":"1f418","๐ฆ":"1f98f","๐ญ":"1f42d","๐":"1f401","๐":"1f400","๐น":"1f439","๐ฐ":"1f430","๐":"1f407","๐ฟ":"1f43f","๐ฆ":"1f994","๐ฆ":"1f987","๐ป":"1f43b","๐จ":"1f428","๐ผ":"1f43c","๐พ":"1f43e","๐ฆ":"1f983","๐":"1f414","๐":"1f413","๐ฃ":"1f423","๐ค":"1f424","๐ฅ":"1f425","๐ฆ":"1f426","๐ง":"1f427","๐":"1f54a","๐ฆ ":"1f985","๐ฆ":"1f986","๐ฆ":"1f989","๐ธ":"1f438","๐":"1f40a","๐ข":"1f422","๐ฆ":"1f98e","๐":"1f40d","๐ฒ":"1f432","๐":"1f409","๐ฆ":"1f995","๐ฆ":"1f996","๐ณ":"1f433","๐":"1f40b","๐ฌ":"1f42c","๐":"1f41f","๐ ":"1f420","๐ก":"1f421","๐ฆ":"1f988","๐":"1f419","๐":"1f41a","๐ฆ":"1f980","๐ฆ":"1f990","๐ฆ":"1f991","๐":"1f40c","๐ฆ":"1f98b","๐":"1f41b","๐":"1f41c","๐":"1f41d","๐":"1f41e","๐ฆ":"1f997","๐ท":"1f577","๐ธ":"1f578","๐ฆ":"1f982","๐":"1f490","๐ธ":"1f338","๐ฎ":"1f4ae","๐ต":"1f3f5","๐น":"1f339","๐ฅ":"1f940","๐บ":"1f33a","๐ป":"1f33b","๐ผ":"1f33c","๐ท":"1f337","๐ฑ":"1f331","๐ฒ":"1f332","๐ณ":"1f333","๐ด":"1f334","๐ต":"1f335","๐พ":"1f33e","๐ฟ":"1f33f","โ":"2618","๐":"1f340","๐":"1f341","๐":"1f342","๐":"1f343","๐":"1f347","๐":"1f348","๐":"1f349","๐":"1f34a","๐":"1f34b","๐":"1f34c","๐":"1f34d","๐":"1f34e","๐":"1f34f","๐":"1f350","๐":"1f351","๐":"1f352","๐":"1f353","๐ฅ":"1f95d","๐ ":"1f345","๐ฅฅ":"1f965","๐ฅ":"1f951","๐":"1f346","๐ฅ":"1f954","๐ฅ":"1f955","๐ฝ":"1f33d","๐ถ":"1f336","๐ฅ":"1f952","๐ฅฆ":"1f966","๐":"1f344","๐ฅ":"1f95c","๐ฐ":"1f330","๐":"1f35e","๐ฅ":"1f950","๐ฅ":"1f956","๐ฅจ":"1f968","๐ฅ":"1f95e","๐ง":"1f9c0","๐":"1f356","๐":"1f357","๐ฅฉ":"1f969","๐ฅ":"1f953","๐":"1f354","๐":"1f35f","๐":"1f355","๐ญ":"1f32d","๐ฅช":"1f96a","๐ฎ":"1f32e","๐ฏ":"1f32f","๐ฅ":"1f959","๐ฅ":"1f95a","๐ณ":"1f373","๐ฅ":"1f958","๐ฒ":"1f372","๐ฅฃ":"1f963","๐ฅ":"1f957","๐ฟ":"1f37f","๐ฅซ":"1f96b","๐ฑ":"1f371","๐":"1f358","๐":"1f359","๐":"1f35a","๐":"1f35b","๐":"1f35c","๐":"1f35d","๐ ":"1f360","๐ข":"1f362","๐ฃ":"1f363","๐ค":"1f364","๐ฅ":"1f365","๐ก":"1f361","๐ฅ":"1f95f","๐ฅ ":"1f960","๐ฅก":"1f961","๐ฆ":"1f366","๐ง":"1f367","๐จ":"1f368","๐ฉ":"1f369","๐ช":"1f36a","๐":"1f382","๐ฐ":"1f370","๐ฅง":"1f967","๐ซ":"1f36b","๐ฌ":"1f36c","๐ญ":"1f36d","๐ฎ":"1f36e","๐ฏ":"1f36f","๐ผ":"1f37c","๐ฅ":"1f95b","โ":"2615","๐ต":"1f375","๐ถ":"1f376","๐พ":"1f37e","๐ท":"1f377","๐ธ":"1f378","๐น":"1f379","๐บ":"1f37a","๐ป":"1f37b","๐ฅ":"1f942","๐ฅ":"1f943","๐ฅค":"1f964","๐ฅข":"1f962","๐ฝ":"1f37d","๐ด":"1f374","๐ฅ":"1f944","๐ช":"1f52a","๐บ":"1f3fa","๐":"1f30d","๐":"1f30e","๐":"1f30f","๐":"1f310","๐บ":"1f5fa","๐พ":"1f5fe","๐":"1f3d4","โฐ":"26f0","๐":"1f30b","๐ป":"1f5fb","๐":"1f3d5","๐":"1f3d6","๐":"1f3dc","๐":"1f3dd","๐":"1f3de","๐":"1f3df","๐":"1f3db","๐":"1f3d7","๐":"1f3d8","๐":"1f3d9","๐":"1f3da","๐ ":"1f3e0","๐ก":"1f3e1","๐ข":"1f3e2","๐ฃ":"1f3e3","๐ค":"1f3e4","๐ฅ":"1f3e5","๐ฆ":"1f3e6","๐จ":"1f3e8","๐ฉ":"1f3e9","๐ช":"1f3ea","๐ซ":"1f3eb","๐ฌ":"1f3ec","๐ญ":"1f3ed","๐ฏ":"1f3ef","๐ฐ":"1f3f0","๐":"1f492","๐ผ":"1f5fc","๐ฝ":"1f5fd","โช":"26ea","๐":"1f54c","๐":"1f54d","โฉ":"26e9","๐":"1f54b","โฒ":"26f2","โบ":"26fa","๐":"1f301","๐":"1f303","๐":"1f304","๐ ":"1f305","๐":"1f306","๐":"1f307","๐":"1f309","โจ":"2668","๐":"1f30c","๐ ":"1f3a0","๐ก":"1f3a1","๐ข":"1f3a2","๐":"1f488","๐ช":"1f3aa","๐ญ":"1f3ad","๐ผ":"1f5bc","๐จ":"1f3a8","๐ฐ":"1f3b0","๐":"1f682","๐":"1f683","๐":"1f684","๐ ":"1f685","๐":"1f686","๐":"1f687","๐":"1f688","๐":"1f689","๐":"1f68a","๐":"1f69d","๐":"1f69e","๐":"1f68b","๐":"1f68c","๐":"1f68d","๐":"1f68e","๐":"1f690","๐":"1f691","๐":"1f692","๐":"1f693","๐":"1f694","๐":"1f695","๐":"1f696","๐":"1f697","๐":"1f698","๐":"1f699","๐":"1f69a","๐":"1f69b","๐":"1f69c","๐ฒ":"1f6b2","๐ด":"1f6f4","๐ต":"1f6f5","๐":"1f68f","๐ฃ":"1f6e3","๐ค":"1f6e4","โฝ":"26fd","๐จ":"1f6a8","๐ฅ":"1f6a5","๐ฆ":"1f6a6","๐ง":"1f6a7","๐":"1f6d1","โ":"2693","โต":"26f5","๐ถ":"1f6f6","๐ค":"1f6a4","๐ณ":"1f6f3","โด":"26f4","๐ฅ":"1f6e5","๐ข":"1f6a2","โ":"2708","๐ฉ":"1f6e9","๐ซ":"1f6eb","๐ฌ":"1f6ec","๐บ":"1f4ba","๐":"1f681","๐":"1f69f","๐ ":"1f6a0","๐ก":"1f6a1","๐ฐ":"1f6f0","๐":"1f680","๐ธ":"1f6f8","๐":"1f6ce","๐ช":"1f6aa","๐":"1f6cf","๐":"1f6cb","๐ฝ":"1f6bd","๐ฟ":"1f6bf","๐":"1f6c1","โ":"231b","โณ":"23f3","โ":"231a","โฐ":"23f0","โฑ":"23f1","โฒ":"23f2","๐ฐ":"1f570","๐":"1f55b","๐ง":"1f567","๐":"1f550","๐":"1f55c","๐":"1f551","๐":"1f55d","๐":"1f552","๐":"1f55e","๐":"1f553","๐":"1f55f","๐":"1f554","๐ ":"1f560","๐":"1f555","๐ก":"1f561","๐":"1f556","๐ข":"1f562","๐":"1f557","๐ฃ":"1f563","๐":"1f558","๐ค":"1f564","๐":"1f559","๐ฅ":"1f565","๐":"1f55a","๐ฆ":"1f566","๐":"1f311","๐":"1f312","๐":"1f313","๐":"1f314","๐":"1f315","๐":"1f316","๐":"1f317","๐":"1f318","๐":"1f319","๐":"1f31a","๐":"1f31b","๐":"1f31c","๐ก":"1f321","โ":"2600","๐":"1f31d","๐":"1f31e","โญ":"2b50","๐":"1f31f","๐ ":"1f320","โ":"2601","โ ":"26c5","โ":"26c8","๐ค":"1f324","๐ฅ":"1f325","๐ฆ":"1f326","๐ง":"1f327","๐จ":"1f328","๐ฉ":"1f329","๐ช":"1f32a","๐ซ":"1f32b","๐ฌ":"1f32c","๐":"1f300","๐":"1f308","๐":"1f302","โ":"2602","โ":"2614","โฑ":"26f1","โก":"26a1","โ":"2744","โ":"2603","โ":"26c4","โ":"2604","๐ฅ":"1f525","๐ง":"1f4a7","๐":"1f30a","๐":"1f383","๐":"1f384","๐":"1f386","๐":"1f387","โจ":"2728","๐":"1f388","๐":"1f389","๐":"1f38a","๐":"1f38b","๐":"1f38d","๐":"1f38e","๐":"1f38f","๐":"1f390","๐":"1f391","๐":"1f380","๐":"1f381","๐":"1f397","๐":"1f39f","๐ซ":"1f3ab","๐":"1f396","๐":"1f3c6","๐ ":"1f3c5","๐ฅ":"1f947","๐ฅ":"1f948","๐ฅ":"1f949","โฝ":"26bd","โพ":"26be","๐":"1f3c0","๐":"1f3d0","๐":"1f3c8","๐":"1f3c9","๐พ":"1f3be","๐ฑ":"1f3b1","๐ณ":"1f3b3","๐":"1f3cf","๐":"1f3d1","๐":"1f3d2","๐":"1f3d3","๐ธ":"1f3f8","๐ฅ":"1f94a","๐ฅ":"1f94b","๐ฅ ":"1f945","๐ฏ":"1f3af","โณ":"26f3","โธ":"26f8","๐ฃ":"1f3a3","๐ฝ":"1f3bd","๐ฟ":"1f3bf","๐ท":"1f6f7","๐ฅ":"1f94c","๐ฎ":"1f3ae","๐น":"1f579","๐ฒ":"1f3b2","โ ":"2660","โฅ":"2665","โฆ":"2666","โฃ":"2663","๐":"1f0cf","๐":"1f004","๐ด":"1f3b4","๐":"1f507","๐":"1f508","๐":"1f509","๐":"1f50a","๐ข":"1f4e2","๐ฃ":"1f4e3","๐ฏ":"1f4ef","๐":"1f514","๐":"1f515","๐ผ":"1f3bc","๐ต":"1f3b5","๐ถ":"1f3b6","๐":"1f399","๐":"1f39a","๐":"1f39b","๐ค":"1f3a4","๐ง":"1f3a7","๐ป":"1f4fb","๐ท":"1f3b7","๐ธ":"1f3b8","๐น":"1f3b9","๐บ":"1f3ba","๐ป":"1f3bb","๐ฅ":"1f941","๐ฑ":"1f4f1","๐ฒ":"1f4f2","โ":"260e","๐":"1f4de","๐":"1f4df","๐ ":"1f4e0","๐":"1f50b","๐":"1f50c","๐ป":"1f4bb","๐ฅ":"1f5a5","๐จ":"1f5a8","โจ":"2328","๐ฑ":"1f5b1","๐ฒ":"1f5b2","๐ฝ":"1f4bd","๐พ":"1f4be","๐ฟ":"1f4bf","๐":"1f4c0","๐ฅ":"1f3a5","๐":"1f39e","๐ฝ":"1f4fd","๐ฌ":"1f3ac","๐บ":"1f4fa","๐ท":"1f4f7","๐ธ":"1f4f8","๐น":"1f4f9","๐ผ":"1f4fc","๐":"1f50d","๐":"1f50e","๐ฌ":"1f52c","๐ญ":"1f52d","๐ก":"1f4e1","๐ฏ":"1f56f","๐ก":"1f4a1","๐ฆ":"1f526","๐ฎ":"1f3ee","๐":"1f4d4","๐":"1f4d5","๐":"1f4d6","๐":"1f4d7","๐":"1f4d8","๐":"1f4d9","๐":"1f4da","๐":"1f4d3","๐":"1f4d2","๐":"1f4c3","๐":"1f4dc","๐":"1f4c4","๐ฐ":"1f4f0","๐":"1f5de","๐":"1f4d1","๐":"1f516","๐ท":"1f3f7","๐ฐ":"1f4b0","๐ด":"1f4b4","๐ต":"1f4b5","๐ถ":"1f4b6","๐ท":"1f4b7","๐ธ":"1f4b8","๐ณ":"1f4b3","๐น":"1f4b9","๐ฑ":"1f4b1","๐ฒ":"1f4b2","โ":"2709","๐ง":"1f4e7","๐จ":"1f4e8","๐ฉ":"1f4e9","๐ค":"1f4e4","๐ฅ":"1f4e5","๐ฆ":"1f4e6","๐ซ":"1f4eb","๐ช":"1f4ea","๐ฌ":"1f4ec","๐ญ":"1f4ed","๐ฎ":"1f4ee","๐ณ":"1f5f3","โ":"270f","โ":"2712","๐":"1f58b","๐":"1f58a","๐":"1f58c","๐":"1f58d","๐":"1f4dd","๐ผ":"1f4bc","๐":"1f4c1","๐":"1f4c2","๐":"1f5c2","๐ ":"1f4c5","๐":"1f4c6","๐":"1f5d2","๐":"1f5d3","๐":"1f4c7","๐":"1f4c8","๐":"1f4c9","๐":"1f4ca","๐":"1f4cb","๐":"1f4cc","๐":"1f4cd","๐":"1f4ce","๐":"1f587","๐":"1f4cf","๐":"1f4d0","โ":"2702","๐":"1f5c3","๐":"1f5c4","๐":"1f5d1","๐":"1f512","๐":"1f513","๐":"1f50f","๐":"1f510","๐":"1f511","๐":"1f5dd","๐จ":"1f528","โ":"26cf","โ":"2692","๐ ":"1f6e0","๐ก":"1f5e1","โ":"2694","๐ซ":"1f52b","๐น":"1f3f9","๐ก":"1f6e1","๐ง":"1f527","๐ฉ":"1f529","โ":"2699","๐":"1f5dc","โ":"2697","โ":"2696","๐":"1f517","โ":"26d3","๐":"1f489","๐":"1f48a","๐ฌ":"1f6ac","โฐ":"26b0","โฑ":"26b1","๐ฟ":"1f5ff","๐ข":"1f6e2","๐ฎ":"1f52e","๐":"1f6d2","๐ง":"1f3e7","๐ฎ":"1f6ae","๐ฐ":"1f6b0","โฟ":"267f","๐น":"1f6b9","๐บ":"1f6ba","๐ป":"1f6bb","๐ผ":"1f6bc","๐พ":"1f6be","๐":"1f6c2","๐":"1f6c3","๐":"1f6c4","๐ ":"1f6c5","โ ":"26a0","๐ธ":"1f6b8","โ":"26d4","๐ซ":"1f6ab","๐ณ":"1f6b3","๐ญ":"1f6ad","๐ฏ":"1f6af","๐ฑ":"1f6b1","๐ท":"1f6b7","๐ต":"1f4f5","๐":"1f51e","โข":"2622","โฃ":"2623","โฌ":"2b06","โ":"2197","โก":"27a1","โ":"2198","โฌ":"2b07","โ":"2199","โฌ ":"2b05","โ":"2196","โ":"2195","โ":"2194","โฉ":"21a9","โช":"21aa","โคด":"2934","โคต":"2935","๐":"1f503","๐":"1f504","๐":"1f519","๐":"1f51a","๐":"1f51b","๐":"1f51c","๐":"1f51d","๐":"1f6d0","โ":"269b","๐":"1f549","โก":"2721","โธ":"2638","โฏ":"262f","โ":"271d","โฆ":"2626","โช":"262a","โฎ":"262e","๐":"1f54e","๐ฏ":"1f52f","โ":"2648","โ":"2649","โ":"264a","โ":"264b","โ":"264c","โ":"264d","โ":"264e","โ":"264f","โ":"2650","โ":"2651","โ":"2652","โ":"2653","โ":"26ce","๐":"1f500","๐":"1f501","๐":"1f502","โถ":"25b6","โฉ":"23e9","โญ":"23ed","โฏ":"23ef","โ":"25c0","โช":"23ea","โฎ":"23ee","๐ผ":"1f53c","โซ":"23eb","๐ฝ":"1f53d","โฌ":"23ec","โธ":"23f8","โน":"23f9","โบ":"23fa","โ":"23cf","๐ฆ":"1f3a6","๐ ":"1f505","๐":"1f506","๐ถ":"1f4f6","๐ณ":"1f4f3","๐ด":"1f4f4","โ":"2640","โ":"2642","โ":"2695","โป":"267b","โ":"269c","๐ฑ":"1f531","๐":"1f4db","๐ฐ":"1f530","โญ":"2b55","โ ":"2705","โ":"2611","โ":"2714","โ":"2716","โ":"274c","โ":"274e","โ":"2795","โ":"2796","โ":"2797","โฐ":"27b0","โฟ":"27bf","ใฝ":"303d","โณ":"2733","โด":"2734","โ":"2747","โผ":"203c","โ":"2049","โ":"2753","โ":"2754","โ":"2755","โ":"2757","ใฐ":"3030","ยฉ":"a9","ยฎ":"ae","โข":"2122","๐":"1f51f","๐ฏ":"1f4af","๐ ":"1f520","๐ก":"1f521","๐ข":"1f522","๐ฃ":"1f523","๐ค":"1f524","๐ ฐ":"1f170","๐":"1f18e","๐ ฑ":"1f171","๐":"1f191","๐":"1f192","๐":"1f193","โน":"2139","๐":"1f194","โ":"24c2","๐":"1f195","๐":"1f196","๐ พ":"1f17e","๐":"1f197","๐ ฟ":"1f17f","๐":"1f198","๐":"1f199","๐":"1f19a","๐":"1f201","๐":"1f202","๐ท":"1f237","๐ถ":"1f236","๐ฏ":"1f22f","๐":"1f250","๐น":"1f239","๐":"1f21a","๐ฒ":"1f232","๐":"1f251","๐ธ":"1f238","๐ด":"1f234","๐ณ":"1f233","ใ":"3297","ใ":"3299","๐บ":"1f23a","๐ต":"1f235","โช":"25aa","โซ":"25ab","โป":"25fb","โผ":"25fc","โฝ":"25fd","โพ":"25fe","โฌ":"2b1b","โฌ":"2b1c","๐ถ":"1f536","๐ท":"1f537","๐ธ":"1f538","๐น":"1f539","๐บ":"1f53a","๐ป":"1f53b","๐ ":"1f4a0","๐":"1f518","๐ฒ":"1f532","๐ณ":"1f533","โช":"26aa","โซ":"26ab","๐ด":"1f534","๐ต":"1f535","๐":"1f3c1","๐ฉ":"1f6a9","๐":"1f38c","๐ด":"1f3f4","๐ณ":"1f3f3","โบ๏ธ":"263a","โน๏ธ":"2639","โ ๏ธ":"2620","๐ถ๐ป":"1f476-1f3fb","๐ถ๐ผ":"1f476-1f3fc","๐ถ๐ฝ":"1f476-1f3fd","๐ถ๐พ":"1f476-1f3fe","๐ถ๐ฟ":"1f476-1f3ff","๐ง๐ป":"1f9d2-1f3fb","๐ง๐ผ":"1f9d2-1f3fc","๐ง๐ฝ":"1f9d2-1f3fd","๐ง๐พ":"1f9d2-1f3fe","๐ง๐ฟ":"1f9d2-1f3ff","๐ฆ๐ป":"1f466-1f3fb","๐ฆ๐ผ":"1f466-1f3fc","๐ฆ๐ฝ":"1f466-1f3fd","๐ฆ๐พ":"1f466-1f3fe","๐ฆ๐ฟ":"1f466-1f3ff","๐ง๐ป":"1f467-1f3fb","๐ง๐ผ":"1f467-1f3fc","๐ง๐ฝ":"1f467-1f3fd","๐ง๐พ":"1f467-1f3fe","๐ง๐ฟ":"1f467-1f3ff","๐ง๐ป":"1f9d1-1f3fb","๐ง๐ผ":"1f9d1-1f3fc","๐ง๐ฝ":"1f9d1-1f3fd","๐ง๐พ":"1f9d1-1f3fe","๐ง๐ฟ":"1f9d1-1f3ff","๐จ๐ป":"1f468-1f3fb","๐จ๐ผ":"1f468-1f3fc","๐จ๐ฝ":"1f468-1f3fd","๐จ๐พ":"1f468-1f3fe","๐จ๐ฟ":"1f468-1f3ff","๐ฉ๐ป":"1f469-1f3fb","๐ฉ๐ผ":"1f469-1f3fc","๐ฉ๐ฝ":"1f469-1f3fd","๐ฉ๐พ":"1f469-1f3fe","๐ฉ๐ฟ":"1f469-1f3ff","๐ง๐ป":"1f9d3-1f3fb","๐ง๐ผ":"1f9d3-1f3fc","๐ง๐ฝ":"1f9d3-1f3fd","๐ง๐พ":"1f9d3-1f3fe","๐ง๐ฟ":"1f9d3-1f3ff","๐ด๐ป":"1f474-1f3fb","๐ด๐ผ":"1f474-1f3fc","๐ด๐ฝ":"1f474-1f3fd","๐ด๐พ":"1f474-1f3fe","๐ด๐ฟ":"1f474-1f3ff","๐ต๐ป":"1f475-1f3fb","๐ต๐ผ":"1f475-1f3fc","๐ต๐ฝ":"1f475-1f3fd","๐ต๐พ":"1f475-1f3fe","๐ต๐ฟ":"1f475-1f3ff","๐ฎ๐ป":"1f46e-1f3fb","๐ฎ๐ผ":"1f46e-1f3fc","๐ฎ๐ฝ":"1f46e-1f3fd","๐ฎ๐พ":"1f46e-1f3fe","๐ฎ๐ฟ":"1f46e-1f3ff","๐ต๏ธ":"1f575","๐ต๐ป":"1f575-1f3fb","๐ต๐ผ":"1f575-1f3fc","๐ต๐ฝ":"1f575-1f3fd","๐ต๐พ":"1f575-1f3fe","๐ต๐ฟ":"1f575-1f3ff","๐๐ป":"1f482-1f3fb","๐๐ผ":"1f482-1f3fc","๐๐ฝ":"1f482-1f3fd","๐๐พ":"1f482-1f3fe","๐๐ฟ":"1f482-1f3ff","๐ท๐ป":"1f477-1f3fb","๐ท๐ผ":"1f477-1f3fc","๐ท๐ฝ":"1f477-1f3fd","๐ท๐พ":"1f477-1f3fe","๐ท๐ฟ":"1f477-1f3ff","๐คด๐ป":"1f934-1f3fb","๐คด๐ผ":"1f934-1f3fc","๐คด๐ฝ":"1f934-1f3fd","๐คด๐พ":"1f934-1f3fe","๐คด๐ฟ":"1f934-1f3ff","๐ธ๐ป":"1f478-1f3fb","๐ธ๐ผ":"1f478-1f3fc","๐ธ๐ฝ":"1f478-1f3fd","๐ธ๐พ":"1f478-1f3fe","๐ธ๐ฟ":"1f478-1f3ff","๐ณ๐ป":"1f473-1f3fb","๐ณ๐ผ":"1f473-1f3fc","๐ณ๐ฝ":"1f473-1f3fd","๐ณ๐พ":"1f473-1f3fe","๐ณ๐ฟ":"1f473-1f3ff","๐ฒ๐ป":"1f472-1f3fb","๐ฒ๐ผ":"1f472-1f3fc","๐ฒ๐ฝ":"1f472-1f3fd","๐ฒ๐พ":"1f472-1f3fe","๐ฒ๐ฟ":"1f472-1f3ff","๐ง๐ป":"1f9d5-1f3fb","๐ง๐ผ":"1f9d5-1f3fc","๐ง๐ฝ":"1f9d5-1f3fd","๐ง๐พ":"1f9d5-1f3fe","๐ง๐ฟ":"1f9d5-1f3ff","๐ง๐ป":"1f9d4-1f3fb","๐ง๐ผ":"1f9d4-1f3fc","๐ง๐ฝ":"1f9d4-1f3fd","๐ง๐พ":"1f9d4-1f3fe","๐ง๐ฟ":"1f9d4-1f3ff","๐ฑ๐ป":"1f471-1f3fb","๐ฑ๐ผ":"1f471-1f3fc","๐ฑ๐ฝ":"1f471-1f3fd","๐ฑ๐พ":"1f471-1f3fe","๐ฑ๐ฟ":"1f471-1f3ff","๐คต๐ป":"1f935-1f3fb","๐คต๐ผ":"1f935-1f3fc","๐คต๐ฝ":"1f935-1f3fd","๐คต๐พ":"1f935-1f3fe","๐คต๐ฟ":"1f935-1f3ff","๐ฐ๐ป":"1f470-1f3fb","๐ฐ๐ผ":"1f470-1f3fc","๐ฐ๐ฝ":"1f470-1f3fd","๐ฐ๐พ":"1f470-1f3fe","๐ฐ๐ฟ":"1f470-1f3ff","๐คฐ๐ป":"1f930-1f3fb","๐คฐ๐ผ":"1f930-1f3fc","๐คฐ๐ฝ":"1f930-1f3fd","๐คฐ๐พ":"1f930-1f3fe","๐คฐ๐ฟ":"1f930-1f3ff","๐คฑ๐ป":"1f931-1f3fb","๐คฑ๐ผ":"1f931-1f3fc","๐คฑ๐ฝ":"1f931-1f3fd","๐คฑ๐พ":"1f931-1f3fe","๐คฑ๐ฟ":"1f931-1f3ff","๐ผ๐ป":"1f47c-1f3fb","๐ผ๐ผ":"1f47c-1f3fc","๐ผ๐ฝ":"1f47c-1f3fd","๐ผ๐พ":"1f47c-1f3fe","๐ผ๐ฟ":"1f47c-1f3ff","๐ ๐ป":"1f385-1f3fb","๐ ๐ผ":"1f385-1f3fc","๐ ๐ฝ":"1f385-1f3fd","๐ ๐พ":"1f385-1f3fe","๐ ๐ฟ":"1f385-1f3ff","๐คถ๐ป":"1f936-1f3fb","๐คถ๐ผ":"1f936-1f3fc","๐คถ๐ฝ":"1f936-1f3fd","๐คถ๐พ":"1f936-1f3fe","๐คถ๐ฟ":"1f936-1f3ff","๐ง๐ป":"1f9d9-1f3fb","๐ง๐ผ":"1f9d9-1f3fc","๐ง๐ฝ":"1f9d9-1f3fd","๐ง๐พ":"1f9d9-1f3fe","๐ง๐ฟ":"1f9d9-1f3ff","๐ง๐ป":"1f9da-1f3fb","๐ง๐ผ":"1f9da-1f3fc","๐ง๐ฝ":"1f9da-1f3fd","๐ง๐พ":"1f9da-1f3fe","๐ง๐ฟ":"1f9da-1f3ff","๐ง๐ป":"1f9db-1f3fb","๐ง๐ผ":"1f9db-1f3fc","๐ง๐ฝ":"1f9db-1f3fd","๐ง๐พ":"1f9db-1f3fe","๐ง๐ฟ":"1f9db-1f3ff","๐ง๐ป":"1f9dc-1f3fb","๐ง๐ผ":"1f9dc-1f3fc","๐ง๐ฝ":"1f9dc-1f3fd","๐ง๐พ":"1f9dc-1f3fe","๐ง๐ฟ":"1f9dc-1f3ff","๐ง๐ป":"1f9dd-1f3fb","๐ง๐ผ":"1f9dd-1f3fc","๐ง๐ฝ":"1f9dd-1f3fd","๐ง๐พ":"1f9dd-1f3fe","๐ง๐ฟ":"1f9dd-1f3ff","๐๐ป":"1f64d-1f3fb","๐๐ผ":"1f64d-1f3fc","๐๐ฝ":"1f64d-1f3fd","๐๐พ":"1f64d-1f3fe","๐๐ฟ":"1f64d-1f3ff","๐๐ป":"1f64e-1f3fb","๐๐ผ":"1f64e-1f3fc","๐๐ฝ":"1f64e-1f3fd","๐๐พ":"1f64e-1f3fe","๐๐ฟ":"1f64e-1f3ff","๐ ๐ป":"1f645-1f3fb","๐ ๐ผ":"1f645-1f3fc","๐ ๐ฝ":"1f645-1f3fd","๐ ๐พ":"1f645-1f3fe","๐ ๐ฟ":"1f645-1f3ff","๐๐ป":"1f646-1f3fb","๐๐ผ":"1f646-1f3fc","๐๐ฝ":"1f646-1f3fd","๐๐พ":"1f646-1f3fe","๐๐ฟ":"1f646-1f3ff","๐๐ป":"1f481-1f3fb","๐๐ผ":"1f481-1f3fc","๐๐ฝ":"1f481-1f3fd","๐๐พ":"1f481-1f3fe","๐๐ฟ":"1f481-1f3ff","๐๐ป":"1f64b-1f3fb","๐๐ผ":"1f64b-1f3fc","๐๐ฝ":"1f64b-1f3fd","๐๐พ":"1f64b-1f3fe","๐๐ฟ":"1f64b-1f3ff","๐๐ป":"1f647-1f3fb","๐๐ผ":"1f647-1f3fc","๐๐ฝ":"1f647-1f3fd","๐๐พ":"1f647-1f3fe","๐๐ฟ":"1f647-1f3ff","๐คฆ๐ป":"1f926-1f3fb","๐คฆ๐ผ":"1f926-1f3fc","๐คฆ๐ฝ":"1f926-1f3fd","๐คฆ๐พ":"1f926-1f3fe","๐คฆ๐ฟ":"1f926-1f3ff","๐คท๐ป":"1f937-1f3fb","๐คท๐ผ":"1f937-1f3fc","๐คท๐ฝ":"1f937-1f3fd","๐คท๐พ":"1f937-1f3fe","๐คท๐ฟ":"1f937-1f3ff","๐๐ป":"1f486-1f3fb","๐๐ผ":"1f486-1f3fc","๐๐ฝ":"1f486-1f3fd","๐๐พ":"1f486-1f3fe","๐๐ฟ":"1f486-1f3ff","๐๐ป":"1f487-1f3fb","๐๐ผ":"1f487-1f3fc","๐๐ฝ":"1f487-1f3fd","๐๐พ":"1f487-1f3fe","๐๐ฟ":"1f487-1f3ff","๐ถ๐ป":"1f6b6-1f3fb","๐ถ๐ผ":"1f6b6-1f3fc","๐ถ๐ฝ":"1f6b6-1f3fd","๐ถ๐พ":"1f6b6-1f3fe","๐ถ๐ฟ":"1f6b6-1f3ff","๐๐ป":"1f3c3-1f3fb","๐๐ผ":"1f3c3-1f3fc","๐๐ฝ":"1f3c3-1f3fd","๐๐พ":"1f3c3-1f3fe","๐๐ฟ":"1f3c3-1f3ff","๐๐ป":"1f483-1f3fb","๐๐ผ":"1f483-1f3fc","๐๐ฝ":"1f483-1f3fd","๐๐พ":"1f483-1f3fe","๐๐ฟ":"1f483-1f3ff","๐บ๐ป":"1f57a-1f3fb","๐บ๐ผ":"1f57a-1f3fc","๐บ๐ฝ":"1f57a-1f3fd","๐บ๐พ":"1f57a-1f3fe","๐บ๐ฟ":"1f57a-1f3ff","๐ง๐ป":"1f9d6-1f3fb","๐ง๐ผ":"1f9d6-1f3fc","๐ง๐ฝ":"1f9d6-1f3fd","๐ง๐พ":"1f9d6-1f3fe","๐ง๐ฟ":"1f9d6-1f3ff","๐ง๐ป":"1f9d7-1f3fb","๐ง๐ผ":"1f9d7-1f3fc","๐ง๐ฝ":"1f9d7-1f3fd","๐ง๐พ":"1f9d7-1f3fe","๐ง๐ฟ":"1f9d7-1f3ff","๐ง๐ป":"1f9d8-1f3fb","๐ง๐ผ":"1f9d8-1f3fc","๐ง๐ฝ":"1f9d8-1f3fd","๐ง๐พ":"1f9d8-1f3fe","๐ง๐ฟ":"1f9d8-1f3ff","๐๐ป":"1f6c0-1f3fb","๐๐ผ":"1f6c0-1f3fc","๐๐ฝ":"1f6c0-1f3fd","๐๐พ":"1f6c0-1f3fe","๐๐ฟ":"1f6c0-1f3ff","๐๐ป":"1f6cc-1f3fb","๐๐ผ":"1f6cc-1f3fc","๐๐ฝ":"1f6cc-1f3fd","๐๐พ":"1f6cc-1f3fe","๐๐ฟ":"1f6cc-1f3ff","๐ด๏ธ":"1f574","๐ด๐ป":"1f574-1f3fb","๐ด๐ผ":"1f574-1f3fc","๐ด๐ฝ":"1f574-1f3fd","๐ด๐พ":"1f574-1f3fe","๐ด๐ฟ":"1f574-1f3ff","๐ฃ๏ธ":"1f5e3","๐๐ป":"1f3c7-1f3fb","๐๐ผ":"1f3c7-1f3fc","๐๐ฝ":"1f3c7-1f3fd","๐๐พ":"1f3c7-1f3fe","๐๐ฟ":"1f3c7-1f3ff","โท๏ธ":"26f7","๐๐ป":"1f3c2-1f3fb","๐๐ผ":"1f3c2-1f3fc","๐๐ฝ":"1f3c2-1f3fd","๐๐พ":"1f3c2-1f3fe","๐๐ฟ":"1f3c2-1f3ff","๐๏ธ":"1f3cc","๐๐ป":"1f3cc-1f3fb","๐๐ผ":"1f3cc-1f3fc","๐๐ฝ":"1f3cc-1f3fd","๐๐พ":"1f3cc-1f3fe","๐๐ฟ":"1f3cc-1f3ff","๐๐ป":"1f3c4-1f3fb","๐๐ผ":"1f3c4-1f3fc","๐๐ฝ":"1f3c4-1f3fd","๐๐พ":"1f3c4-1f3fe","๐๐ฟ":"1f3c4-1f3ff","๐ฃ๐ป":"1f6a3-1f3fb","๐ฃ๐ผ":"1f6a3-1f3fc","๐ฃ๐ฝ":"1f6a3-1f3fd","๐ฃ๐พ":"1f6a3-1f3fe","๐ฃ๐ฟ":"1f6a3-1f3ff","๐๐ป":"1f3ca-1f3fb","๐๐ผ":"1f3ca-1f3fc","๐๐ฝ":"1f3ca-1f3fd","๐๐พ":"1f3ca-1f3fe","๐๐ฟ":"1f3ca-1f3ff","โน๏ธ":"26f9","โน๐ป":"26f9-1f3fb","โน๐ผ":"26f9-1f3fc","โน๐ฝ":"26f9-1f3fd","โน๐พ":"26f9-1f3fe","โน๐ฟ":"26f9-1f3ff","๐๏ธ":"1f3cb","๐๐ป":"1f3cb-1f3fb","๐๐ผ":"1f3cb-1f3fc","๐๐ฝ":"1f3cb-1f3fd","๐๐พ":"1f3cb-1f3fe","๐๐ฟ":"1f3cb-1f3ff","๐ด๐ป":"1f6b4-1f3fb","๐ด๐ผ":"1f6b4-1f3fc","๐ด๐ฝ":"1f6b4-1f3fd","๐ด๐พ":"1f6b4-1f3fe","๐ด๐ฟ":"1f6b4-1f3ff","๐ต๐ป":"1f6b5-1f3fb","๐ต๐ผ":"1f6b5-1f3fc","๐ต๐ฝ":"1f6b5-1f3fd","๐ต๐พ":"1f6b5-1f3fe","๐ต๐ฟ":"1f6b5-1f3ff","๐๏ธ":"1f3ce","๐๏ธ":"1f3cd","๐คธ๐ป":"1f938-1f3fb","๐คธ๐ผ":"1f938-1f3fc","๐คธ๐ฝ":"1f938-1f3fd","๐คธ๐พ":"1f938-1f3fe","๐คธ๐ฟ":"1f938-1f3ff","๐คฝ๐ป":"1f93d-1f3fb","๐คฝ๐ผ":"1f93d-1f3fc","๐คฝ๐ฝ":"1f93d-1f3fd","๐คฝ๐พ":"1f93d-1f3fe","๐คฝ๐ฟ":"1f93d-1f3ff","๐คพ๐ป":"1f93e-1f3fb","๐คพ๐ผ":"1f93e-1f3fc","๐คพ๐ฝ":"1f93e-1f3fd","๐คพ๐พ":"1f93e-1f3fe","๐คพ๐ฟ":"1f93e-1f3ff","๐คน๐ป":"1f939-1f3fb","๐คน๐ผ":"1f939-1f3fc","๐คน๐ฝ":"1f939-1f3fd","๐คน๐พ":"1f939-1f3fe","๐คน๐ฟ":"1f939-1f3ff","๐คณ๐ป":"1f933-1f3fb","๐คณ๐ผ":"1f933-1f3fc","๐คณ๐ฝ":"1f933-1f3fd","๐คณ๐พ":"1f933-1f3fe","๐คณ๐ฟ":"1f933-1f3ff","๐ช๐ป":"1f4aa-1f3fb","๐ช๐ผ":"1f4aa-1f3fc","๐ช๐ฝ":"1f4aa-1f3fd","๐ช๐พ":"1f4aa-1f3fe","๐ช๐ฟ":"1f4aa-1f3ff","๐๐ป":"1f448-1f3fb","๐๐ผ":"1f448-1f3fc","๐๐ฝ":"1f448-1f3fd","๐๐พ":"1f448-1f3fe","๐๐ฟ":"1f448-1f3ff","๐๐ป":"1f449-1f3fb","๐๐ผ":"1f449-1f3fc","๐๐ฝ":"1f449-1f3fd","๐๐พ":"1f449-1f3fe","๐๐ฟ":"1f449-1f3ff","โ๏ธ":"261d","โ๐ป":"261d-1f3fb","โ๐ผ":"261d-1f3fc","โ๐ฝ":"261d-1f3fd","โ๐พ":"261d-1f3fe","โ๐ฟ":"261d-1f3ff","๐๐ป":"1f446-1f3fb","๐๐ผ":"1f446-1f3fc","๐๐ฝ":"1f446-1f3fd","๐๐พ":"1f446-1f3fe","๐๐ฟ":"1f446-1f3ff","๐๐ป":"1f595-1f3fb","๐๐ผ":"1f595-1f3fc","๐๐ฝ":"1f595-1f3fd","๐๐พ":"1f595-1f3fe","๐๐ฟ":"1f595-1f3ff","๐๐ป":"1f447-1f3fb","๐๐ผ":"1f447-1f3fc","๐๐ฝ":"1f447-1f3fd","๐๐พ":"1f447-1f3fe","๐๐ฟ":"1f447-1f3ff","โ๏ธ":"270c","โ๐ป":"270c-1f3fb","โ๐ผ":"270c-1f3fc","โ๐ฝ":"270c-1f3fd","โ๐พ":"270c-1f3fe","โ๐ฟ":"270c-1f3ff","๐ค๐ป":"1f91e-1f3fb","๐ค๐ผ":"1f91e-1f3fc","๐ค๐ฝ":"1f91e-1f3fd","๐ค๐พ":"1f91e-1f3fe","๐ค๐ฟ":"1f91e-1f3ff","๐๐ป":"1f596-1f3fb","๐๐ผ":"1f596-1f3fc","๐๐ฝ":"1f596-1f3fd","๐๐พ":"1f596-1f3fe","๐๐ฟ":"1f596-1f3ff","๐ค๐ป":"1f918-1f3fb","๐ค๐ผ":"1f918-1f3fc","๐ค๐ฝ":"1f918-1f3fd","๐ค๐พ":"1f918-1f3fe","๐ค๐ฟ":"1f918-1f3ff","๐ค๐ป":"1f919-1f3fb","๐ค๐ผ":"1f919-1f3fc","๐ค๐ฝ":"1f919-1f3fd","๐ค๐พ":"1f919-1f3fe","๐ค๐ฟ":"1f919-1f3ff","๐๏ธ":"1f590","๐๐ป":"1f590-1f3fb","๐๐ผ":"1f590-1f3fc","๐๐ฝ":"1f590-1f3fd","๐๐พ":"1f590-1f3fe","๐๐ฟ":"1f590-1f3ff","โ๐ป":"270b-1f3fb","โ๐ผ":"270b-1f3fc","โ๐ฝ":"270b-1f3fd","โ๐พ":"270b-1f3fe","โ๐ฟ":"270b-1f3ff","๐๐ป":"1f44c-1f3fb","๐๐ผ":"1f44c-1f3fc","๐๐ฝ":"1f44c-1f3fd","๐๐พ":"1f44c-1f3fe","๐๐ฟ":"1f44c-1f3ff","๐๐ป":"1f44d-1f3fb","๐๐ผ":"1f44d-1f3fc","๐๐ฝ":"1f44d-1f3fd","๐๐พ":"1f44d-1f3fe","๐๐ฟ":"1f44d-1f3ff","๐๐ป":"1f44e-1f3fb","๐๐ผ":"1f44e-1f3fc","๐๐ฝ":"1f44e-1f3fd","๐๐พ":"1f44e-1f3fe","๐๐ฟ":"1f44e-1f3ff","โ๐ป":"270a-1f3fb","โ๐ผ":"270a-1f3fc","โ๐ฝ":"270a-1f3fd","โ๐พ":"270a-1f3fe","โ๐ฟ":"270a-1f3ff","๐๐ป":"1f44a-1f3fb","๐๐ผ":"1f44a-1f3fc","๐๐ฝ":"1f44a-1f3fd","๐๐พ":"1f44a-1f3fe","๐๐ฟ":"1f44a-1f3ff","๐ค๐ป":"1f91b-1f3fb","๐ค๐ผ":"1f91b-1f3fc","๐ค๐ฝ":"1f91b-1f3fd","๐ค๐พ":"1f91b-1f3fe","๐ค๐ฟ":"1f91b-1f3ff","๐ค๐ป":"1f91c-1f3fb","๐ค๐ผ":"1f91c-1f3fc","๐ค๐ฝ":"1f91c-1f3fd","๐ค๐พ":"1f91c-1f3fe","๐ค๐ฟ":"1f91c-1f3ff","๐ค๐ป":"1f91a-1f3fb","๐ค๐ผ":"1f91a-1f3fc","๐ค๐ฝ":"1f91a-1f3fd","๐ค๐พ":"1f91a-1f3fe","๐ค๐ฟ":"1f91a-1f3ff","๐๐ป":"1f44b-1f3fb","๐๐ผ":"1f44b-1f3fc","๐๐ฝ":"1f44b-1f3fd","๐๐พ":"1f44b-1f3fe","๐๐ฟ":"1f44b-1f3ff","๐ค๐ป":"1f91f-1f3fb","๐ค๐ผ":"1f91f-1f3fc","๐ค๐ฝ":"1f91f-1f3fd","๐ค๐พ":"1f91f-1f3fe","๐ค๐ฟ":"1f91f-1f3ff","โ๏ธ":"270d","โ๐ป":"270d-1f3fb","โ๐ผ":"270d-1f3fc","โ๐ฝ":"270d-1f3fd","โ๐พ":"270d-1f3fe","โ๐ฟ":"270d-1f3ff","๐๐ป":"1f44f-1f3fb","๐๐ผ":"1f44f-1f3fc","๐๐ฝ":"1f44f-1f3fd","๐๐พ":"1f44f-1f3fe","๐๐ฟ":"1f44f-1f3ff","๐๐ป":"1f450-1f3fb","๐๐ผ":"1f450-1f3fc","๐๐ฝ":"1f450-1f3fd","๐๐พ":"1f450-1f3fe","๐๐ฟ":"1f450-1f3ff","๐๐ป":"1f64c-1f3fb","๐๐ผ":"1f64c-1f3fc","๐๐ฝ":"1f64c-1f3fd","๐๐พ":"1f64c-1f3fe","๐๐ฟ":"1f64c-1f3ff","๐คฒ๐ป":"1f932-1f3fb","๐คฒ๐ผ":"1f932-1f3fc","๐คฒ๐ฝ":"1f932-1f3fd","๐คฒ๐พ":"1f932-1f3fe","๐คฒ๐ฟ":"1f932-1f3ff","๐๐ป":"1f64f-1f3fb","๐๐ผ":"1f64f-1f3fc","๐๐ฝ":"1f64f-1f3fd","๐๐พ":"1f64f-1f3fe","๐๐ฟ":"1f64f-1f3ff","๐ ๐ป":"1f485-1f3fb","๐ ๐ผ":"1f485-1f3fc","๐ ๐ฝ":"1f485-1f3fd","๐ ๐พ":"1f485-1f3fe","๐ ๐ฟ":"1f485-1f3ff","๐๐ป":"1f442-1f3fb","๐๐ผ":"1f442-1f3fc","๐๐ฝ":"1f442-1f3fd","๐๐พ":"1f442-1f3fe","๐๐ฟ":"1f442-1f3ff","๐๐ป":"1f443-1f3fb","๐๐ผ":"1f443-1f3fc","๐๐ฝ":"1f443-1f3fd","๐๐พ":"1f443-1f3fe","๐๐ฟ":"1f443-1f3ff","๐๏ธ":"1f441","โค๏ธ":"2764","โฃ๏ธ":"2763","๐จ๏ธ":"1f5e8","๐ฏ๏ธ":"1f5ef","๐ณ๏ธ":"1f573","๐ถ๏ธ":"1f576","๐๏ธ":"1f6cd","โ๏ธ":"26d1","๐ฟ๏ธ":"1f43f","๐๏ธ":"1f54a","๐ท๏ธ":"1f577","๐ธ๏ธ":"1f578","๐ต๏ธ":"1f3f5","โ๏ธ":"2618","๐ถ๏ธ":"1f336","๐ฝ๏ธ":"1f37d","๐บ๏ธ":"1f5fa","๐๏ธ":"1f3d4","โฐ๏ธ":"26f0","๐๏ธ":"1f3d5","๐๏ธ":"1f3d6","๐๏ธ":"1f3dc","๐๏ธ":"1f3dd","๐๏ธ":"1f3de","๐๏ธ":"1f3df","๐๏ธ":"1f3db","๐๏ธ":"1f3d7","๐๏ธ":"1f3d8","๐๏ธ":"1f3d9","๐๏ธ":"1f3da","โฉ๏ธ":"26e9","โจ๏ธ":"2668","๐ผ๏ธ":"1f5bc","๐ฃ๏ธ":"1f6e3","๐ค๏ธ":"1f6e4","๐ณ๏ธ":"1f6f3","โด๏ธ":"26f4","๐ฅ๏ธ":"1f6e5","โ๏ธ":"2708","๐ฉ๏ธ":"1f6e9","๐ฐ๏ธ":"1f6f0","๐๏ธ":"1f6ce","๐๏ธ":"1f6cf","๐๏ธ":"1f6cb","โฑ๏ธ":"23f1","โฒ๏ธ":"23f2","๐ฐ๏ธ":"1f570","๐ก๏ธ":"1f321","โ๏ธ":"2600","โ๏ธ":"2601","โ๏ธ":"26c8","๐ค๏ธ":"1f324","๐ฅ๏ธ":"1f325","๐ฆ๏ธ":"1f326","๐ง๏ธ":"1f327","๐จ๏ธ":"1f328","๐ฉ๏ธ":"1f329","๐ช๏ธ":"1f32a","๐ซ๏ธ":"1f32b","๐ฌ๏ธ":"1f32c","โ๏ธ":"2602","โฑ๏ธ":"26f1","โ๏ธ":"2744","โ๏ธ":"2603","โ๏ธ":"2604","๐๏ธ":"1f397","๐๏ธ":"1f39f","๐๏ธ":"1f396","โธ๏ธ":"26f8","๐น๏ธ":"1f579","โ ๏ธ":"2660","โฅ๏ธ":"2665","โฆ๏ธ":"2666","โฃ๏ธ":"2663","๐๏ธ":"1f399","๐๏ธ":"1f39a","๐๏ธ":"1f39b","โ๏ธ":"260e","๐ฅ๏ธ":"1f5a5","๐จ๏ธ":"1f5a8","โจ๏ธ":"2328","๐ฑ๏ธ":"1f5b1","๐ฒ๏ธ":"1f5b2","๐๏ธ":"1f39e","๐ฝ๏ธ":"1f4fd","๐ฏ๏ธ":"1f56f","๐๏ธ":"1f5de","๐ท๏ธ":"1f3f7","โ๏ธ":"2709","๐ณ๏ธ":"1f5f3","โ๏ธ":"270f","โ๏ธ":"2712","๐๏ธ":"1f58b","๐๏ธ":"1f58a","๐๏ธ":"1f58c","๐๏ธ":"1f58d","๐๏ธ":"1f5c2","๐๏ธ":"1f5d2","๐๏ธ":"1f5d3","๐๏ธ":"1f587","โ๏ธ":"2702","๐๏ธ":"1f5c3","๐๏ธ":"1f5c4","๐๏ธ":"1f5d1","๐๏ธ":"1f5dd","โ๏ธ":"26cf","โ๏ธ":"2692","๐ ๏ธ":"1f6e0","๐ก๏ธ":"1f5e1","โ๏ธ":"2694","๐ก๏ธ":"1f6e1","โ๏ธ":"2699","๐๏ธ":"1f5dc","โ๏ธ":"2697","โ๏ธ":"2696","โ๏ธ":"26d3","โฐ๏ธ":"26b0","โฑ๏ธ":"26b1","๐ข๏ธ":"1f6e2","โ ๏ธ":"26a0","โข๏ธ":"2622","โฃ๏ธ":"2623","โฌ๏ธ":"2b06","โ๏ธ":"2197","โก๏ธ":"27a1","โ๏ธ":"2198","โฌ๏ธ":"2b07","โ๏ธ":"2199","โฌ ๏ธ":"2b05","โ๏ธ":"2196","โ๏ธ":"2195","โ๏ธ":"2194","โฉ๏ธ":"21a9","โช๏ธ":"21aa","โคด๏ธ":"2934","โคต๏ธ":"2935","โ๏ธ":"269b","๐๏ธ":"1f549","โก๏ธ":"2721","โธ๏ธ":"2638","โฏ๏ธ":"262f","โ๏ธ":"271d","โฆ๏ธ":"2626","โช๏ธ":"262a","โฎ๏ธ":"262e","โถ๏ธ":"25b6","โญ๏ธ":"23ed","โฏ๏ธ":"23ef","โ๏ธ":"25c0","โฎ๏ธ":"23ee","โธ๏ธ":"23f8","โน๏ธ":"23f9","โบ๏ธ":"23fa","โ๏ธ":"23cf","โ๏ธ":"2640","โ๏ธ":"2642","โ๏ธ":"2695","โป๏ธ":"267b","โ๏ธ":"269c","โ๏ธ":"2611","โ๏ธ":"2714","โ๏ธ":"2716","ใฝ๏ธ":"303d","โณ๏ธ":"2733","โด๏ธ":"2734","โ๏ธ":"2747","โผ๏ธ":"203c","โ๏ธ":"2049","ใฐ๏ธ":"3030","ยฉ๏ธ":"a9","ยฎ๏ธ":"ae","โข๏ธ":"2122","#โฃ":"23-20e3","*โฃ":"2a-20e3","0โฃ":"30-20e3","1โฃ":"31-20e3","2โฃ":"32-20e3","3โฃ":"33-20e3","4โฃ":"34-20e3","5โฃ":"35-20e3","6โฃ":"36-20e3","7โฃ":"37-20e3","8โฃ":"38-20e3","9โฃ":"39-20e3","๐ ฐ๏ธ":"1f170","๐ ฑ๏ธ":"1f171","โน๏ธ":"2139","โ๏ธ":"24c2","๐ พ๏ธ":"1f17e","๐ ฟ๏ธ":"1f17f","๐๏ธ":"1f202","๐ท๏ธ":"1f237","ใ๏ธ":"3297","ใ๏ธ":"3299","โช๏ธ":"25aa","โซ๏ธ":"25ab","โป๏ธ":"25fb","โผ๏ธ":"25fc","๐ณ๏ธ":"1f3f3","๐ฆ๐จ":"1f1e6-1f1e8","๐ฆ๐ฉ":"1f1e6-1f1e9","๐ฆ๐ช":"1f1e6-1f1ea","๐ฆ๐ซ":"1f1e6-1f1eb","๐ฆ๐ฌ":"1f1e6-1f1ec","๐ฆ๐ฎ":"1f1e6-1f1ee","๐ฆ๐ฑ":"1f1e6-1f1f1","๐ฆ๐ฒ":"1f1e6-1f1f2","๐ฆ๐ด":"1f1e6-1f1f4","๐ฆ๐ถ":"1f1e6-1f1f6","๐ฆ๐ท":"1f1e6-1f1f7","๐ฆ๐ธ":"1f1e6-1f1f8","๐ฆ๐น":"1f1e6-1f1f9","๐ฆ๐บ":"1f1e6-1f1fa","๐ฆ๐ผ":"1f1e6-1f1fc","๐ฆ๐ฝ":"1f1e6-1f1fd","๐ฆ๐ฟ":"1f1e6-1f1ff","๐ง๐ฆ":"1f1e7-1f1e6","๐ง๐ง":"1f1e7-1f1e7","๐ง๐ฉ":"1f1e7-1f1e9","๐ง๐ช":"1f1e7-1f1ea","๐ง๐ซ":"1f1e7-1f1eb","๐ง๐ฌ":"1f1e7-1f1ec","๐ง๐ญ":"1f1e7-1f1ed","๐ง๐ฎ":"1f1e7-1f1ee","๐ง๐ฏ":"1f1e7-1f1ef","๐ง๐ฑ":"1f1e7-1f1f1","๐ง๐ฒ":"1f1e7-1f1f2","๐ง๐ณ":"1f1e7-1f1f3","๐ง๐ด":"1f1e7-1f1f4","๐ง๐ถ":"1f1e7-1f1f6","๐ง๐ท":"1f1e7-1f1f7","๐ง๐ธ":"1f1e7-1f1f8","๐ง๐น":"1f1e7-1f1f9","๐ง๐ป":"1f1e7-1f1fb","๐ง๐ผ":"1f1e7-1f1fc","๐ง๐พ":"1f1e7-1f1fe","๐ง๐ฟ":"1f1e7-1f1ff","๐จ๐ฆ":"1f1e8-1f1e6","๐จ๐จ":"1f1e8-1f1e8","๐จ๐ฉ":"1f1e8-1f1e9","๐จ๐ซ":"1f1e8-1f1eb","๐จ๐ฌ":"1f1e8-1f1ec","๐จ๐ญ":"1f1e8-1f1ed","๐จ๐ฎ":"1f1e8-1f1ee","๐จ๐ฐ":"1f1e8-1f1f0","๐จ๐ฑ":"1f1e8-1f1f1","๐จ๐ฒ":"1f1e8-1f1f2","๐จ๐ณ":"1f1e8-1f1f3","๐จ๐ด":"1f1e8-1f1f4","๐จ๐ต":"1f1e8-1f1f5","๐จ๐ท":"1f1e8-1f1f7","๐จ๐บ":"1f1e8-1f1fa","๐จ๐ป":"1f1e8-1f1fb","๐จ๐ผ":"1f1e8-1f1fc","๐จ๐ฝ":"1f1e8-1f1fd","๐จ๐พ":"1f1e8-1f1fe","๐จ๐ฟ":"1f1e8-1f1ff","๐ฉ๐ช":"1f1e9-1f1ea","๐ฉ๐ฌ":"1f1e9-1f1ec","๐ฉ๐ฏ":"1f1e9-1f1ef","๐ฉ๐ฐ":"1f1e9-1f1f0","๐ฉ๐ฒ":"1f1e9-1f1f2","๐ฉ๐ด":"1f1e9-1f1f4","๐ฉ๐ฟ":"1f1e9-1f1ff","๐ช๐ฆ":"1f1ea-1f1e6","๐ช๐จ":"1f1ea-1f1e8","๐ช๐ช":"1f1ea-1f1ea","๐ช๐ฌ":"1f1ea-1f1ec","๐ช๐ญ":"1f1ea-1f1ed","๐ช๐ท":"1f1ea-1f1f7","๐ช๐ธ":"1f1ea-1f1f8","๐ช๐น":"1f1ea-1f1f9","๐ช๐บ":"1f1ea-1f1fa","๐ซ๐ฎ":"1f1eb-1f1ee","๐ซ๐ฏ":"1f1eb-1f1ef","๐ซ๐ฐ":"1f1eb-1f1f0","๐ซ๐ฒ":"1f1eb-1f1f2","๐ซ๐ด":"1f1eb-1f1f4","๐ซ๐ท":"1f1eb-1f1f7","๐ฌ๐ฆ":"1f1ec-1f1e6","๐ฌ๐ง":"1f1ec-1f1e7","๐ฌ๐ฉ":"1f1ec-1f1e9","๐ฌ๐ช":"1f1ec-1f1ea","๐ฌ๐ซ":"1f1ec-1f1eb","๐ฌ๐ฌ":"1f1ec-1f1ec","๐ฌ๐ญ":"1f1ec-1f1ed","๐ฌ๐ฎ":"1f1ec-1f1ee","๐ฌ๐ฑ":"1f1ec-1f1f1","๐ฌ๐ฒ":"1f1ec-1f1f2","๐ฌ๐ณ":"1f1ec-1f1f3","๐ฌ๐ต":"1f1ec-1f1f5","๐ฌ๐ถ":"1f1ec-1f1f6","๐ฌ๐ท":"1f1ec-1f1f7","๐ฌ๐ธ":"1f1ec-1f1f8","๐ฌ๐น":"1f1ec-1f1f9","๐ฌ๐บ":"1f1ec-1f1fa","๐ฌ๐ผ":"1f1ec-1f1fc","๐ฌ๐พ":"1f1ec-1f1fe","๐ญ๐ฐ":"1f1ed-1f1f0","๐ญ๐ฒ":"1f1ed-1f1f2","๐ญ๐ณ":"1f1ed-1f1f3","๐ญ๐ท":"1f1ed-1f1f7","๐ญ๐น":"1f1ed-1f1f9","๐ญ๐บ":"1f1ed-1f1fa","๐ฎ๐จ":"1f1ee-1f1e8","๐ฎ๐ฉ":"1f1ee-1f1e9","๐ฎ๐ช":"1f1ee-1f1ea","๐ฎ๐ฑ":"1f1ee-1f1f1","๐ฎ๐ฒ":"1f1ee-1f1f2","๐ฎ๐ณ":"1f1ee-1f1f3","๐ฎ๐ด":"1f1ee-1f1f4","๐ฎ๐ถ":"1f1ee-1f1f6","๐ฎ๐ท":"1f1ee-1f1f7","๐ฎ๐ธ":"1f1ee-1f1f8","๐ฎ๐น":"1f1ee-1f1f9","๐ฏ๐ช":"1f1ef-1f1ea","๐ฏ๐ฒ":"1f1ef-1f1f2","๐ฏ๐ด":"1f1ef-1f1f4","๐ฏ๐ต":"1f1ef-1f1f5","๐ฐ๐ช":"1f1f0-1f1ea","๐ฐ๐ฌ":"1f1f0-1f1ec","๐ฐ๐ญ":"1f1f0-1f1ed","๐ฐ๐ฎ":"1f1f0-1f1ee","๐ฐ๐ฒ":"1f1f0-1f1f2","๐ฐ๐ณ":"1f1f0-1f1f3","๐ฐ๐ต":"1f1f0-1f1f5","๐ฐ๐ท":"1f1f0-1f1f7","๐ฐ๐ผ":"1f1f0-1f1fc","๐ฐ๐พ":"1f1f0-1f1fe","๐ฐ๐ฟ":"1f1f0-1f1ff","๐ฑ๐ฆ":"1f1f1-1f1e6","๐ฑ๐ง":"1f1f1-1f1e7","๐ฑ๐จ":"1f1f1-1f1e8","๐ฑ๐ฎ":"1f1f1-1f1ee","๐ฑ๐ฐ":"1f1f1-1f1f0","๐ฑ๐ท":"1f1f1-1f1f7","๐ฑ๐ธ":"1f1f1-1f1f8","๐ฑ๐น":"1f1f1-1f1f9","๐ฑ๐บ":"1f1f1-1f1fa","๐ฑ๐ป":"1f1f1-1f1fb","๐ฑ๐พ":"1f1f1-1f1fe","๐ฒ๐ฆ":"1f1f2-1f1e6","๐ฒ๐จ":"1f1f2-1f1e8","๐ฒ๐ฉ":"1f1f2-1f1e9","๐ฒ๐ช":"1f1f2-1f1ea","๐ฒ๐ซ":"1f1f2-1f1eb","๐ฒ๐ฌ":"1f1f2-1f1ec","๐ฒ๐ญ":"1f1f2-1f1ed","๐ฒ๐ฐ":"1f1f2-1f1f0","๐ฒ๐ฑ":"1f1f2-1f1f1","๐ฒ๐ฒ":"1f1f2-1f1f2","๐ฒ๐ณ":"1f1f2-1f1f3","๐ฒ๐ด":"1f1f2-1f1f4","๐ฒ๐ต":"1f1f2-1f1f5","๐ฒ๐ถ":"1f1f2-1f1f6","๐ฒ๐ท":"1f1f2-1f1f7","๐ฒ๐ธ":"1f1f2-1f1f8","๐ฒ๐น":"1f1f2-1f1f9","๐ฒ๐บ":"1f1f2-1f1fa","๐ฒ๐ป":"1f1f2-1f1fb","๐ฒ๐ผ":"1f1f2-1f1fc","๐ฒ๐ฝ":"1f1f2-1f1fd","๐ฒ๐พ":"1f1f2-1f1fe","๐ฒ๐ฟ":"1f1f2-1f1ff","๐ณ๐ฆ":"1f1f3-1f1e6","๐ณ๐จ":"1f1f3-1f1e8","๐ณ๐ช":"1f1f3-1f1ea","๐ณ๐ซ":"1f1f3-1f1eb","๐ณ๐ฌ":"1f1f3-1f1ec","๐ณ๐ฎ":"1f1f3-1f1ee","๐ณ๐ฑ":"1f1f3-1f1f1","๐ณ๐ด":"1f1f3-1f1f4","๐ณ๐ต":"1f1f3-1f1f5","๐ณ๐ท":"1f1f3-1f1f7","๐ณ๐บ":"1f1f3-1f1fa","๐ณ๐ฟ":"1f1f3-1f1ff","๐ด๐ฒ":"1f1f4-1f1f2","๐ต๐ฆ":"1f1f5-1f1e6","๐ต๐ช":"1f1f5-1f1ea","๐ต๐ซ":"1f1f5-1f1eb","๐ต๐ฌ":"1f1f5-1f1ec","๐ต๐ญ":"1f1f5-1f1ed","๐ต๐ฐ":"1f1f5-1f1f0","๐ต๐ฑ":"1f1f5-1f1f1","๐ต๐ฒ":"1f1f5-1f1f2","๐ต๐ณ":"1f1f5-1f1f3","๐ต๐ท":"1f1f5-1f1f7","๐ต๐ธ":"1f1f5-1f1f8","๐ต๐น":"1f1f5-1f1f9","๐ต๐ผ":"1f1f5-1f1fc","๐ต๐พ":"1f1f5-1f1fe","๐ถ๐ฆ":"1f1f6-1f1e6","๐ท๐ช":"1f1f7-1f1ea","๐ท๐ด":"1f1f7-1f1f4","๐ท๐ธ":"1f1f7-1f1f8","๐ท๐บ":"1f1f7-1f1fa","๐ท๐ผ":"1f1f7-1f1fc","๐ธ๐ฆ":"1f1f8-1f1e6","๐ธ๐ง":"1f1f8-1f1e7","๐ธ๐จ":"1f1f8-1f1e8","๐ธ๐ฉ":"1f1f8-1f1e9","๐ธ๐ช":"1f1f8-1f1ea","๐ธ๐ฌ":"1f1f8-1f1ec","๐ธ๐ญ":"1f1f8-1f1ed","๐ธ๐ฎ":"1f1f8-1f1ee","๐ธ๐ฏ":"1f1f8-1f1ef","๐ธ๐ฐ":"1f1f8-1f1f0","๐ธ๐ฑ":"1f1f8-1f1f1","๐ธ๐ฒ":"1f1f8-1f1f2","๐ธ๐ณ":"1f1f8-1f1f3","๐ธ๐ด":"1f1f8-1f1f4","๐ธ๐ท":"1f1f8-1f1f7","๐ธ๐ธ":"1f1f8-1f1f8","๐ธ๐น":"1f1f8-1f1f9","๐ธ๐ป":"1f1f8-1f1fb","๐ธ๐ฝ":"1f1f8-1f1fd","๐ธ๐พ":"1f1f8-1f1fe","๐ธ๐ฟ":"1f1f8-1f1ff","๐น๐ฆ":"1f1f9-1f1e6","๐น๐จ":"1f1f9-1f1e8","๐น๐ฉ":"1f1f9-1f1e9","๐น๐ซ":"1f1f9-1f1eb","๐น๐ฌ":"1f1f9-1f1ec","๐น๐ญ":"1f1f9-1f1ed","๐น๐ฏ":"1f1f9-1f1ef","๐น๐ฐ":"1f1f9-1f1f0","๐น๐ฑ":"1f1f9-1f1f1","๐น๐ฒ":"1f1f9-1f1f2","๐น๐ณ":"1f1f9-1f1f3","๐น๐ด":"1f1f9-1f1f4","๐น๐ท":"1f1f9-1f1f7","๐น๐น":"1f1f9-1f1f9","๐น๐ป":"1f1f9-1f1fb","๐น๐ผ":"1f1f9-1f1fc","๐น๐ฟ":"1f1f9-1f1ff","๐บ๐ฆ":"1f1fa-1f1e6","๐บ๐ฌ":"1f1fa-1f1ec","๐บ๐ฒ":"1f1fa-1f1f2","๐บ๐ณ":"1f1fa-1f1f3","๐บ๐ธ":"1f1fa-1f1f8","๐บ๐พ":"1f1fa-1f1fe","๐บ๐ฟ":"1f1fa-1f1ff","๐ป๐ฆ":"1f1fb-1f1e6","๐ป๐จ":"1f1fb-1f1e8","๐ป๐ช":"1f1fb-1f1ea","๐ป๐ฌ":"1f1fb-1f1ec","๐ป๐ฎ":"1f1fb-1f1ee","๐ป๐ณ":"1f1fb-1f1f3","๐ป๐บ":"1f1fb-1f1fa","๐ผ๐ซ":"1f1fc-1f1eb","๐ผ๐ธ":"1f1fc-1f1f8","๐ฝ๐ฐ":"1f1fd-1f1f0","๐พ๐ช":"1f1fe-1f1ea","๐พ๐น":"1f1fe-1f1f9","๐ฟ๐ฆ":"1f1ff-1f1e6","๐ฟ๐ฒ":"1f1ff-1f1f2","๐ฟ๐ผ":"1f1ff-1f1fc","๐จโโ":"1f468-200d-2695-fe0f","๐ฉโโ":"1f469-200d-2695-fe0f","๐จโ๐":"1f468-200d-1f393","๐ฉโ๐":"1f469-200d-1f393","๐จโ๐ซ":"1f468-200d-1f3eb","๐ฉโ๐ซ":"1f469-200d-1f3eb","๐จโโ":"1f468-200d-2696-fe0f","๐ฉโโ":"1f469-200d-2696-fe0f","๐จโ๐พ":"1f468-200d-1f33e","๐ฉโ๐พ":"1f469-200d-1f33e","๐จโ๐ณ":"1f468-200d-1f373","๐ฉโ๐ณ":"1f469-200d-1f373","๐จโ๐ง":"1f468-200d-1f527","๐ฉโ๐ง":"1f469-200d-1f527","๐จโ๐ญ":"1f468-200d-1f3ed","๐ฉโ๐ญ":"1f469-200d-1f3ed","๐จโ๐ผ":"1f468-200d-1f4bc","๐ฉโ๐ผ":"1f469-200d-1f4bc","๐จโ๐ฌ":"1f468-200d-1f52c","๐ฉโ๐ฌ":"1f469-200d-1f52c","๐จโ๐ป":"1f468-200d-1f4bb","๐ฉโ๐ป":"1f469-200d-1f4bb","๐จโ๐ค":"1f468-200d-1f3a4","๐ฉโ๐ค":"1f469-200d-1f3a4","๐จโ๐จ":"1f468-200d-1f3a8","๐ฉโ๐จ":"1f469-200d-1f3a8","๐จโโ":"1f468-200d-2708-fe0f","๐ฉโโ":"1f469-200d-2708-fe0f","๐จโ๐":"1f468-200d-1f680","๐ฉโ๐":"1f469-200d-1f680","๐จโ๐":"1f468-200d-1f692","๐ฉโ๐":"1f469-200d-1f692","๐ฎโโ":"1f46e-200d-2642-fe0f","๐ฎโโ":"1f46e-200d-2640-fe0f","๐ตโโ":"1f575-fe0f-200d-2642-fe0f","๐ตโโ":"1f575-fe0f-200d-2640-fe0f","๐โโ":"1f482-200d-2642-fe0f","๐โโ":"1f482-200d-2640-fe0f","๐ทโโ":"1f477-200d-2642-fe0f","๐ทโโ":"1f477-200d-2640-fe0f","๐ณโโ":"1f473-200d-2642-fe0f","๐ณโโ":"1f473-200d-2640-fe0f","๐ฑโโ":"1f471-200d-2642-fe0f","๐ฑโโ":"1f471-200d-2640-fe0f","๐งโโ":"1f9d9-200d-2640-fe0f","๐งโโ":"1f9d9-200d-2642-fe0f","๐งโโ":"1f9da-200d-2640-fe0f","๐งโโ":"1f9da-200d-2642-fe0f","๐งโโ":"1f9db-200d-2640-fe0f","๐งโโ":"1f9db-200d-2642-fe0f","๐งโโ":"1f9dc-200d-2640-fe0f","๐งโโ":"1f9dc-200d-2642-fe0f","๐งโโ":"1f9dd-200d-2640-fe0f","๐งโโ":"1f9dd-200d-2642-fe0f","๐งโโ":"1f9de-200d-2640-fe0f","๐งโโ":"1f9de-200d-2642-fe0f","๐งโโ":"1f9df-200d-2640-fe0f","๐งโโ":"1f9df-200d-2642-fe0f","๐โโ":"1f64d-200d-2642-fe0f","๐โโ":"1f64d-200d-2640-fe0f","๐โโ":"1f64e-200d-2642-fe0f","๐โโ":"1f64e-200d-2640-fe0f","๐ โโ":"1f645-200d-2642-fe0f","๐ โโ":"1f645-200d-2640-fe0f","๐โโ":"1f646-200d-2642-fe0f","๐โโ":"1f646-200d-2640-fe0f","๐โโ":"1f481-200d-2642-fe0f","๐โโ":"1f481-200d-2640-fe0f","๐โโ":"1f64b-200d-2642-fe0f","๐โโ":"1f64b-200d-2640-fe0f","๐โโ":"1f647-200d-2642-fe0f","๐โโ":"1f647-200d-2640-fe0f","๐คฆโโ":"1f926-200d-2642-fe0f","๐คฆโโ":"1f926-200d-2640-fe0f","๐คทโโ":"1f937-200d-2642-fe0f","๐คทโโ":"1f937-200d-2640-fe0f","๐โโ":"1f486-200d-2642-fe0f","๐โโ":"1f486-200d-2640-fe0f","๐โโ":"1f487-200d-2642-fe0f","๐โโ":"1f487-200d-2640-fe0f","๐ถโโ":"1f6b6-200d-2642-fe0f","๐ถโโ":"1f6b6-200d-2640-fe0f","๐โโ":"1f3c3-200d-2642-fe0f","๐โโ":"1f3c3-200d-2640-fe0f","๐ฏโโ":"1f46f-200d-2642-fe0f","๐ฏโโ":"1f46f-200d-2640-fe0f","๐งโโ":"1f9d6-200d-2640-fe0f","๐งโโ":"1f9d6-200d-2642-fe0f","๐งโโ":"1f9d7-200d-2640-fe0f","๐งโโ":"1f9d7-200d-2642-fe0f","๐งโโ":"1f9d8-200d-2640-fe0f","๐งโโ":"1f9d8-200d-2642-fe0f","๐โโ":"1f3cc-fe0f-200d-2642-fe0f","๐โโ":"1f3cc-fe0f-200d-2640-fe0f","๐โโ":"1f3c4-200d-2642-fe0f","๐โโ":"1f3c4-200d-2640-fe0f","๐ฃโโ":"1f6a3-200d-2642-fe0f","๐ฃโโ":"1f6a3-200d-2640-fe0f","๐โโ":"1f3ca-200d-2642-fe0f","๐โโ":"1f3ca-200d-2640-fe0f","โนโโ":"26f9-fe0f-200d-2642-fe0f","โนโโ":"26f9-fe0f-200d-2640-fe0f","๐โโ":"1f3cb-fe0f-200d-2642-fe0f","๐โโ":"1f3cb-fe0f-200d-2640-fe0f","๐ดโโ":"1f6b4-200d-2642-fe0f","๐ดโโ":"1f6b4-200d-2640-fe0f","๐ตโโ":"1f6b5-200d-2642-fe0f","๐ตโโ":"1f6b5-200d-2640-fe0f","๐คธโโ":"1f938-200d-2642-fe0f","๐คธโโ":"1f938-200d-2640-fe0f","๐คผโโ":"1f93c-200d-2642-fe0f","๐คผโโ":"1f93c-200d-2640-fe0f","๐คฝโโ":"1f93d-200d-2642-fe0f","๐คฝโโ":"1f93d-200d-2640-fe0f","๐คพโโ":"1f93e-200d-2642-fe0f","๐คพโโ":"1f93e-200d-2640-fe0f","๐คนโโ":"1f939-200d-2642-fe0f","๐คนโโ":"1f939-200d-2640-fe0f","๐จโ๐ฆ":"1f468-200d-1f466","๐จโ๐ง":"1f468-200d-1f467","๐ฉโ๐ฆ":"1f469-200d-1f466","๐ฉโ๐ง":"1f469-200d-1f467","๐โ๐จ":"1f441-200d-1f5e8","#๏ธโฃ":"23-20e3","*๏ธโฃ":"2a-20e3","0๏ธโฃ":"30-20e3","1๏ธโฃ":"31-20e3","2๏ธโฃ":"32-20e3","3๏ธโฃ":"33-20e3","4๏ธโฃ":"34-20e3","5๏ธโฃ":"35-20e3","6๏ธโฃ":"36-20e3","7๏ธโฃ":"37-20e3","8๏ธโฃ":"38-20e3","9๏ธโฃ":"39-20e3","๐ณโ๐":"1f3f3-fe0f-200d-1f308","๐จโโ๏ธ":"1f468-200d-2695-fe0f","๐จ๐ปโโ":"1f468-1f3fb-200d-2695-fe0f","๐จ๐ผโโ":"1f468-1f3fc-200d-2695-fe0f","๐จ๐ฝโโ":"1f468-1f3fd-200d-2695-fe0f","๐จ๐พโโ":"1f468-1f3fe-200d-2695-fe0f","๐จ๐ฟโโ":"1f468-1f3ff-200d-2695-fe0f","๐ฉโโ๏ธ":"1f469-200d-2695-fe0f","๐ฉ๐ปโโ":"1f469-1f3fb-200d-2695-fe0f","๐ฉ๐ผโโ":"1f469-1f3fc-200d-2695-fe0f","๐ฉ๐ฝโโ":"1f469-1f3fd-200d-2695-fe0f","๐ฉ๐พโโ":"1f469-1f3fe-200d-2695-fe0f","๐ฉ๐ฟโโ":"1f469-1f3ff-200d-2695-fe0f","๐จ๐ปโ๐":"1f468-1f3fb-200d-1f393","๐จ๐ผโ๐":"1f468-1f3fc-200d-1f393","๐จ๐ฝโ๐":"1f468-1f3fd-200d-1f393","๐จ๐พโ๐":"1f468-1f3fe-200d-1f393","๐จ๐ฟโ๐":"1f468-1f3ff-200d-1f393","๐ฉ๐ปโ๐":"1f469-1f3fb-200d-1f393","๐ฉ๐ผโ๐":"1f469-1f3fc-200d-1f393","๐ฉ๐ฝโ๐":"1f469-1f3fd-200d-1f393","๐ฉ๐พโ๐":"1f469-1f3fe-200d-1f393","๐ฉ๐ฟโ๐":"1f469-1f3ff-200d-1f393","๐จ๐ปโ๐ซ":"1f468-1f3fb-200d-1f3eb","๐จ๐ผโ๐ซ":"1f468-1f3fc-200d-1f3eb","๐จ๐ฝโ๐ซ":"1f468-1f3fd-200d-1f3eb","๐จ๐พโ๐ซ":"1f468-1f3fe-200d-1f3eb","๐จ๐ฟโ๐ซ":"1f468-1f3ff-200d-1f3eb","๐ฉ๐ปโ๐ซ":"1f469-1f3fb-200d-1f3eb","๐ฉ๐ผโ๐ซ":"1f469-1f3fc-200d-1f3eb","๐ฉ๐ฝโ๐ซ":"1f469-1f3fd-200d-1f3eb","๐ฉ๐พโ๐ซ":"1f469-1f3fe-200d-1f3eb","๐ฉ๐ฟโ๐ซ":"1f469-1f3ff-200d-1f3eb","๐จโโ๏ธ":"1f468-200d-2696-fe0f","๐จ๐ปโโ":"1f468-1f3fb-200d-2696-fe0f","๐จ๐ผโโ":"1f468-1f3fc-200d-2696-fe0f","๐จ๐ฝโโ":"1f468-1f3fd-200d-2696-fe0f","๐จ๐พโโ":"1f468-1f3fe-200d-2696-fe0f","๐จ๐ฟโโ":"1f468-1f3ff-200d-2696-fe0f","๐ฉโโ๏ธ":"1f469-200d-2696-fe0f","๐ฉ๐ปโโ":"1f469-1f3fb-200d-2696-fe0f","๐ฉ๐ผโโ":"1f469-1f3fc-200d-2696-fe0f","๐ฉ๐ฝโโ":"1f469-1f3fd-200d-2696-fe0f","๐ฉ๐พโโ":"1f469-1f3fe-200d-2696-fe0f","๐ฉ๐ฟโโ":"1f469-1f3ff-200d-2696-fe0f","๐จ๐ปโ๐พ":"1f468-1f3fb-200d-1f33e","๐จ๐ผโ๐พ":"1f468-1f3fc-200d-1f33e","๐จ๐ฝโ๐พ":"1f468-1f3fd-200d-1f33e","๐จ๐พโ๐พ":"1f468-1f3fe-200d-1f33e","๐จ๐ฟโ๐พ":"1f468-1f3ff-200d-1f33e","๐ฉ๐ปโ๐พ":"1f469-1f3fb-200d-1f33e","๐ฉ๐ผโ๐พ":"1f469-1f3fc-200d-1f33e","๐ฉ๐ฝโ๐พ":"1f469-1f3fd-200d-1f33e","๐ฉ๐พโ๐พ":"1f469-1f3fe-200d-1f33e","๐ฉ๐ฟโ๐พ":"1f469-1f3ff-200d-1f33e","๐จ๐ปโ๐ณ":"1f468-1f3fb-200d-1f373","๐จ๐ผโ๐ณ":"1f468-1f3fc-200d-1f373","๐จ๐ฝโ๐ณ":"1f468-1f3fd-200d-1f373","๐จ๐พโ๐ณ":"1f468-1f3fe-200d-1f373","๐จ๐ฟโ๐ณ":"1f468-1f3ff-200d-1f373","๐ฉ๐ปโ๐ณ":"1f469-1f3fb-200d-1f373","๐ฉ๐ผโ๐ณ":"1f469-1f3fc-200d-1f373","๐ฉ๐ฝโ๐ณ":"1f469-1f3fd-200d-1f373","๐ฉ๐พโ๐ณ":"1f469-1f3fe-200d-1f373","๐ฉ๐ฟโ๐ณ":"1f469-1f3ff-200d-1f373","๐จ๐ปโ๐ง":"1f468-1f3fb-200d-1f527","๐จ๐ผโ๐ง":"1f468-1f3fc-200d-1f527","๐จ๐ฝโ๐ง":"1f468-1f3fd-200d-1f527","๐จ๐พโ๐ง":"1f468-1f3fe-200d-1f527","๐จ๐ฟโ๐ง":"1f468-1f3ff-200d-1f527","๐ฉ๐ปโ๐ง":"1f469-1f3fb-200d-1f527","๐ฉ๐ผโ๐ง":"1f469-1f3fc-200d-1f527","๐ฉ๐ฝโ๐ง":"1f469-1f3fd-200d-1f527","๐ฉ๐พโ๐ง":"1f469-1f3fe-200d-1f527","๐ฉ๐ฟโ๐ง":"1f469-1f3ff-200d-1f527","๐จ๐ปโ๐ญ":"1f468-1f3fb-200d-1f3ed","๐จ๐ผโ๐ญ":"1f468-1f3fc-200d-1f3ed","๐จ๐ฝโ๐ญ":"1f468-1f3fd-200d-1f3ed","๐จ๐พโ๐ญ":"1f468-1f3fe-200d-1f3ed","๐จ๐ฟโ๐ญ":"1f468-1f3ff-200d-1f3ed","๐ฉ๐ปโ๐ญ":"1f469-1f3fb-200d-1f3ed","๐ฉ๐ผโ๐ญ":"1f469-1f3fc-200d-1f3ed","๐ฉ๐ฝโ๐ญ":"1f469-1f3fd-200d-1f3ed","๐ฉ๐พโ๐ญ":"1f469-1f3fe-200d-1f3ed","๐ฉ๐ฟโ๐ญ":"1f469-1f3ff-200d-1f3ed","๐จ๐ปโ๐ผ":"1f468-1f3fb-200d-1f4bc","๐จ๐ผโ๐ผ":"1f468-1f3fc-200d-1f4bc","๐จ๐ฝโ๐ผ":"1f468-1f3fd-200d-1f4bc","๐จ๐พโ๐ผ":"1f468-1f3fe-200d-1f4bc","๐จ๐ฟโ๐ผ":"1f468-1f3ff-200d-1f4bc","๐ฉ๐ปโ๐ผ":"1f469-1f3fb-200d-1f4bc","๐ฉ๐ผโ๐ผ":"1f469-1f3fc-200d-1f4bc","๐ฉ๐ฝโ๐ผ":"1f469-1f3fd-200d-1f4bc","๐ฉ๐พโ๐ผ":"1f469-1f3fe-200d-1f4bc","๐ฉ๐ฟโ๐ผ":"1f469-1f3ff-200d-1f4bc","๐จ๐ปโ๐ฌ":"1f468-1f3fb-200d-1f52c","๐จ๐ผโ๐ฌ":"1f468-1f3fc-200d-1f52c","๐จ๐ฝโ๐ฌ":"1f468-1f3fd-200d-1f52c","๐จ๐พโ๐ฌ":"1f468-1f3fe-200d-1f52c","๐จ๐ฟโ๐ฌ":"1f468-1f3ff-200d-1f52c","๐ฉ๐ปโ๐ฌ":"1f469-1f3fb-200d-1f52c","๐ฉ๐ผโ๐ฌ":"1f469-1f3fc-200d-1f52c","๐ฉ๐ฝโ๐ฌ":"1f469-1f3fd-200d-1f52c","๐ฉ๐พโ๐ฌ":"1f469-1f3fe-200d-1f52c","๐ฉ๐ฟโ๐ฌ":"1f469-1f3ff-200d-1f52c","๐จ๐ปโ๐ป":"1f468-1f3fb-200d-1f4bb","๐จ๐ผโ๐ป":"1f468-1f3fc-200d-1f4bb","๐จ๐ฝโ๐ป":"1f468-1f3fd-200d-1f4bb","๐จ๐พโ๐ป":"1f468-1f3fe-200d-1f4bb","๐จ๐ฟโ๐ป":"1f468-1f3ff-200d-1f4bb","๐ฉ๐ปโ๐ป":"1f469-1f3fb-200d-1f4bb","๐ฉ๐ผโ๐ป":"1f469-1f3fc-200d-1f4bb","๐ฉ๐ฝโ๐ป":"1f469-1f3fd-200d-1f4bb","๐ฉ๐พโ๐ป":"1f469-1f3fe-200d-1f4bb","๐ฉ๐ฟโ๐ป":"1f469-1f3ff-200d-1f4bb","๐จ๐ปโ๐ค":"1f468-1f3fb-200d-1f3a4","๐จ๐ผโ๐ค":"1f468-1f3fc-200d-1f3a4","๐จ๐ฝโ๐ค":"1f468-1f3fd-200d-1f3a4","๐จ๐พโ๐ค":"1f468-1f3fe-200d-1f3a4","๐จ๐ฟโ๐ค":"1f468-1f3ff-200d-1f3a4","๐ฉ๐ปโ๐ค":"1f469-1f3fb-200d-1f3a4","๐ฉ๐ผโ๐ค":"1f469-1f3fc-200d-1f3a4","๐ฉ๐ฝโ๐ค":"1f469-1f3fd-200d-1f3a4","๐ฉ๐พโ๐ค":"1f469-1f3fe-200d-1f3a4","๐ฉ๐ฟโ๐ค":"1f469-1f3ff-200d-1f3a4","๐จ๐ปโ๐จ":"1f468-1f3fb-200d-1f3a8","๐จ๐ผโ๐จ":"1f468-1f3fc-200d-1f3a8","๐จ๐ฝโ๐จ":"1f468-1f3fd-200d-1f3a8","๐จ๐พโ๐จ":"1f468-1f3fe-200d-1f3a8","๐จ๐ฟโ๐จ":"1f468-1f3ff-200d-1f3a8","๐ฉ๐ปโ๐จ":"1f469-1f3fb-200d-1f3a8","๐ฉ๐ผโ๐จ":"1f469-1f3fc-200d-1f3a8","๐ฉ๐ฝโ๐จ":"1f469-1f3fd-200d-1f3a8","๐ฉ๐พโ๐จ":"1f469-1f3fe-200d-1f3a8","๐ฉ๐ฟโ๐จ":"1f469-1f3ff-200d-1f3a8","๐จโโ๏ธ":"1f468-200d-2708-fe0f","๐จ๐ปโโ":"1f468-1f3fb-200d-2708-fe0f","๐จ๐ผโโ":"1f468-1f3fc-200d-2708-fe0f","๐จ๐ฝโโ":"1f468-1f3fd-200d-2708-fe0f","๐จ๐พโโ":"1f468-1f3fe-200d-2708-fe0f","๐จ๐ฟโโ":"1f468-1f3ff-200d-2708-fe0f","๐ฉโโ๏ธ":"1f469-200d-2708-fe0f","๐ฉ๐ปโโ":"1f469-1f3fb-200d-2708-fe0f","๐ฉ๐ผโโ":"1f469-1f3fc-200d-2708-fe0f","๐ฉ๐ฝโโ":"1f469-1f3fd-200d-2708-fe0f","๐ฉ๐พโโ":"1f469-1f3fe-200d-2708-fe0f","๐ฉ๐ฟโโ":"1f469-1f3ff-200d-2708-fe0f","๐จ๐ปโ๐":"1f468-1f3fb-200d-1f680","๐จ๐ผโ๐":"1f468-1f3fc-200d-1f680","๐จ๐ฝโ๐":"1f468-1f3fd-200d-1f680","๐จ๐พโ๐":"1f468-1f3fe-200d-1f680","๐จ๐ฟโ๐":"1f468-1f3ff-200d-1f680","๐ฉ๐ปโ๐":"1f469-1f3fb-200d-1f680","๐ฉ๐ผโ๐":"1f469-1f3fc-200d-1f680","๐ฉ๐ฝโ๐":"1f469-1f3fd-200d-1f680","๐ฉ๐พโ๐":"1f469-1f3fe-200d-1f680","๐ฉ๐ฟโ๐":"1f469-1f3ff-200d-1f680","๐จ๐ปโ๐":"1f468-1f3fb-200d-1f692","๐จ๐ผโ๐":"1f468-1f3fc-200d-1f692","๐จ๐ฝโ๐":"1f468-1f3fd-200d-1f692","๐จ๐พโ๐":"1f468-1f3fe-200d-1f692","๐จ๐ฟโ๐":"1f468-1f3ff-200d-1f692","๐ฉ๐ปโ๐":"1f469-1f3fb-200d-1f692","๐ฉ๐ผโ๐":"1f469-1f3fc-200d-1f692","๐ฉ๐ฝโ๐":"1f469-1f3fd-200d-1f692","๐ฉ๐พโ๐":"1f469-1f3fe-200d-1f692","๐ฉ๐ฟโ๐":"1f469-1f3ff-200d-1f692","๐ฎโโ๏ธ":"1f46e-200d-2642-fe0f","๐ฎ๐ปโโ":"1f46e-1f3fb-200d-2642-fe0f","๐ฎ๐ผโโ":"1f46e-1f3fc-200d-2642-fe0f","๐ฎ๐ฝโโ":"1f46e-1f3fd-200d-2642-fe0f","๐ฎ๐พโโ":"1f46e-1f3fe-200d-2642-fe0f","๐ฎ๐ฟโโ":"1f46e-1f3ff-200d-2642-fe0f","๐ฎโโ๏ธ":"1f46e-200d-2640-fe0f","๐ฎ๐ปโโ":"1f46e-1f3fb-200d-2640-fe0f","๐ฎ๐ผโโ":"1f46e-1f3fc-200d-2640-fe0f","๐ฎ๐ฝโโ":"1f46e-1f3fd-200d-2640-fe0f","๐ฎ๐พโโ":"1f46e-1f3fe-200d-2640-fe0f","๐ฎ๐ฟโโ":"1f46e-1f3ff-200d-2640-fe0f","๐ตโโ๏ธ":"1f575-fe0f-200d-2642-fe0f","๐ต๏ธโโ":"1f575-fe0f-200d-2642-fe0f","๐ต๐ปโโ":"1f575-1f3fb-200d-2642-fe0f","๐ต๐ผโโ":"1f575-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ":"1f575-1f3fd-200d-2642-fe0f","๐ต๐พโโ":"1f575-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ":"1f575-1f3ff-200d-2642-fe0f","๐ตโโ๏ธ":"1f575-fe0f-200d-2640-fe0f","๐ต๏ธโโ":"1f575-fe0f-200d-2640-fe0f","๐ต๐ปโโ":"1f575-1f3fb-200d-2640-fe0f","๐ต๐ผโโ":"1f575-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ":"1f575-1f3fd-200d-2640-fe0f","๐ต๐พโโ":"1f575-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ":"1f575-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f482-200d-2642-fe0f","๐๐ปโโ":"1f482-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f482-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f482-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f482-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f482-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f482-200d-2640-fe0f","๐๐ปโโ":"1f482-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f482-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f482-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f482-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f482-1f3ff-200d-2640-fe0f","๐ทโโ๏ธ":"1f477-200d-2642-fe0f","๐ท๐ปโโ":"1f477-1f3fb-200d-2642-fe0f","๐ท๐ผโโ":"1f477-1f3fc-200d-2642-fe0f","๐ท๐ฝโโ":"1f477-1f3fd-200d-2642-fe0f","๐ท๐พโโ":"1f477-1f3fe-200d-2642-fe0f","๐ท๐ฟโโ":"1f477-1f3ff-200d-2642-fe0f","๐ทโโ๏ธ":"1f477-200d-2640-fe0f","๐ท๐ปโโ":"1f477-1f3fb-200d-2640-fe0f","๐ท๐ผโโ":"1f477-1f3fc-200d-2640-fe0f","๐ท๐ฝโโ":"1f477-1f3fd-200d-2640-fe0f","๐ท๐พโโ":"1f477-1f3fe-200d-2640-fe0f","๐ท๐ฟโโ":"1f477-1f3ff-200d-2640-fe0f","๐ณโโ๏ธ":"1f473-200d-2642-fe0f","๐ณ๐ปโโ":"1f473-1f3fb-200d-2642-fe0f","๐ณ๐ผโโ":"1f473-1f3fc-200d-2642-fe0f","๐ณ๐ฝโโ":"1f473-1f3fd-200d-2642-fe0f","๐ณ๐พโโ":"1f473-1f3fe-200d-2642-fe0f","๐ณ๐ฟโโ":"1f473-1f3ff-200d-2642-fe0f","๐ณโโ๏ธ":"1f473-200d-2640-fe0f","๐ณ๐ปโโ":"1f473-1f3fb-200d-2640-fe0f","๐ณ๐ผโโ":"1f473-1f3fc-200d-2640-fe0f","๐ณ๐ฝโโ":"1f473-1f3fd-200d-2640-fe0f","๐ณ๐พโโ":"1f473-1f3fe-200d-2640-fe0f","๐ณ๐ฟโโ":"1f473-1f3ff-200d-2640-fe0f","๐ฑโโ๏ธ":"1f471-200d-2642-fe0f","๐ฑ๐ปโโ":"1f471-1f3fb-200d-2642-fe0f","๐ฑ๐ผโโ":"1f471-1f3fc-200d-2642-fe0f","๐ฑ๐ฝโโ":"1f471-1f3fd-200d-2642-fe0f","๐ฑ๐พโโ":"1f471-1f3fe-200d-2642-fe0f","๐ฑ๐ฟโโ":"1f471-1f3ff-200d-2642-fe0f","๐ฑโโ๏ธ":"1f471-200d-2640-fe0f","๐ฑ๐ปโโ":"1f471-1f3fb-200d-2640-fe0f","๐ฑ๐ผโโ":"1f471-1f3fc-200d-2640-fe0f","๐ฑ๐ฝโโ":"1f471-1f3fd-200d-2640-fe0f","๐ฑ๐พโโ":"1f471-1f3fe-200d-2640-fe0f","๐ฑ๐ฟโโ":"1f471-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d9-200d-2640-fe0f","๐ง๐ปโโ":"1f9d9-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d9-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d9-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d9-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d9-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d9-200d-2642-fe0f","๐ง๐ปโโ":"1f9d9-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d9-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d9-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d9-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d9-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9da-200d-2640-fe0f","๐ง๐ปโโ":"1f9da-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9da-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9da-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9da-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9da-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9da-200d-2642-fe0f","๐ง๐ปโโ":"1f9da-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9da-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9da-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9da-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9da-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9db-200d-2640-fe0f","๐ง๐ปโโ":"1f9db-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9db-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9db-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9db-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9db-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9db-200d-2642-fe0f","๐ง๐ปโโ":"1f9db-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9db-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9db-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9db-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9db-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9dc-200d-2640-fe0f","๐ง๐ปโโ":"1f9dc-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9dc-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9dc-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9dc-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9dc-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9dc-200d-2642-fe0f","๐ง๐ปโโ":"1f9dc-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9dc-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9dc-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9dc-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9dc-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9dd-200d-2640-fe0f","๐ง๐ปโโ":"1f9dd-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9dd-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9dd-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9dd-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9dd-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9dd-200d-2642-fe0f","๐ง๐ปโโ":"1f9dd-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9dd-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9dd-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9dd-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9dd-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9de-200d-2640-fe0f","๐งโโ๏ธ":"1f9de-200d-2642-fe0f","๐งโโ๏ธ":"1f9df-200d-2640-fe0f","๐งโโ๏ธ":"1f9df-200d-2642-fe0f","๐โโ๏ธ":"1f64d-200d-2642-fe0f","๐๐ปโโ":"1f64d-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f64d-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f64d-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f64d-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f64d-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f64d-200d-2640-fe0f","๐๐ปโโ":"1f64d-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f64d-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f64d-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f64d-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f64d-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f64e-200d-2642-fe0f","๐๐ปโโ":"1f64e-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f64e-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f64e-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f64e-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f64e-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f64e-200d-2640-fe0f","๐๐ปโโ":"1f64e-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f64e-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f64e-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f64e-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f64e-1f3ff-200d-2640-fe0f","๐ โโ๏ธ":"1f645-200d-2642-fe0f","๐ ๐ปโโ":"1f645-1f3fb-200d-2642-fe0f","๐ ๐ผโโ":"1f645-1f3fc-200d-2642-fe0f","๐ ๐ฝโโ":"1f645-1f3fd-200d-2642-fe0f","๐ ๐พโโ":"1f645-1f3fe-200d-2642-fe0f","๐ ๐ฟโโ":"1f645-1f3ff-200d-2642-fe0f","๐ โโ๏ธ":"1f645-200d-2640-fe0f","๐ ๐ปโโ":"1f645-1f3fb-200d-2640-fe0f","๐ ๐ผโโ":"1f645-1f3fc-200d-2640-fe0f","๐ ๐ฝโโ":"1f645-1f3fd-200d-2640-fe0f","๐ ๐พโโ":"1f645-1f3fe-200d-2640-fe0f","๐ ๐ฟโโ":"1f645-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f646-200d-2642-fe0f","๐๐ปโโ":"1f646-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f646-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f646-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f646-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f646-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f646-200d-2640-fe0f","๐๐ปโโ":"1f646-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f646-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f646-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f646-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f646-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f481-200d-2642-fe0f","๐๐ปโโ":"1f481-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f481-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f481-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f481-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f481-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f481-200d-2640-fe0f","๐๐ปโโ":"1f481-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f481-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f481-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f481-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f481-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f64b-200d-2642-fe0f","๐๐ปโโ":"1f64b-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f64b-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f64b-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f64b-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f64b-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f64b-200d-2640-fe0f","๐๐ปโโ":"1f64b-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f64b-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f64b-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f64b-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f64b-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f647-200d-2642-fe0f","๐๐ปโโ":"1f647-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f647-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f647-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f647-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f647-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f647-200d-2640-fe0f","๐๐ปโโ":"1f647-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f647-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f647-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f647-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f647-1f3ff-200d-2640-fe0f","๐คฆโโ๏ธ":"1f926-200d-2642-fe0f","๐คฆ๐ปโโ":"1f926-1f3fb-200d-2642-fe0f","๐คฆ๐ผโโ":"1f926-1f3fc-200d-2642-fe0f","๐คฆ๐ฝโโ":"1f926-1f3fd-200d-2642-fe0f","๐คฆ๐พโโ":"1f926-1f3fe-200d-2642-fe0f","๐คฆ๐ฟโโ":"1f926-1f3ff-200d-2642-fe0f","๐คฆโโ๏ธ":"1f926-200d-2640-fe0f","๐คฆ๐ปโโ":"1f926-1f3fb-200d-2640-fe0f","๐คฆ๐ผโโ":"1f926-1f3fc-200d-2640-fe0f","๐คฆ๐ฝโโ":"1f926-1f3fd-200d-2640-fe0f","๐คฆ๐พโโ":"1f926-1f3fe-200d-2640-fe0f","๐คฆ๐ฟโโ":"1f926-1f3ff-200d-2640-fe0f","๐คทโโ๏ธ":"1f937-200d-2642-fe0f","๐คท๐ปโโ":"1f937-1f3fb-200d-2642-fe0f","๐คท๐ผโโ":"1f937-1f3fc-200d-2642-fe0f","๐คท๐ฝโโ":"1f937-1f3fd-200d-2642-fe0f","๐คท๐พโโ":"1f937-1f3fe-200d-2642-fe0f","๐คท๐ฟโโ":"1f937-1f3ff-200d-2642-fe0f","๐คทโโ๏ธ":"1f937-200d-2640-fe0f","๐คท๐ปโโ":"1f937-1f3fb-200d-2640-fe0f","๐คท๐ผโโ":"1f937-1f3fc-200d-2640-fe0f","๐คท๐ฝโโ":"1f937-1f3fd-200d-2640-fe0f","๐คท๐พโโ":"1f937-1f3fe-200d-2640-fe0f","๐คท๐ฟโโ":"1f937-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f486-200d-2642-fe0f","๐๐ปโโ":"1f486-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f486-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f486-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f486-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f486-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f486-200d-2640-fe0f","๐๐ปโโ":"1f486-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f486-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f486-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f486-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f486-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f487-200d-2642-fe0f","๐๐ปโโ":"1f487-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f487-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f487-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f487-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f487-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f487-200d-2640-fe0f","๐๐ปโโ":"1f487-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f487-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f487-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f487-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f487-1f3ff-200d-2640-fe0f","๐ถโโ๏ธ":"1f6b6-200d-2642-fe0f","๐ถ๐ปโโ":"1f6b6-1f3fb-200d-2642-fe0f","๐ถ๐ผโโ":"1f6b6-1f3fc-200d-2642-fe0f","๐ถ๐ฝโโ":"1f6b6-1f3fd-200d-2642-fe0f","๐ถ๐พโโ":"1f6b6-1f3fe-200d-2642-fe0f","๐ถ๐ฟโโ":"1f6b6-1f3ff-200d-2642-fe0f","๐ถโโ๏ธ":"1f6b6-200d-2640-fe0f","๐ถ๐ปโโ":"1f6b6-1f3fb-200d-2640-fe0f","๐ถ๐ผโโ":"1f6b6-1f3fc-200d-2640-fe0f","๐ถ๐ฝโโ":"1f6b6-1f3fd-200d-2640-fe0f","๐ถ๐พโโ":"1f6b6-1f3fe-200d-2640-fe0f","๐ถ๐ฟโโ":"1f6b6-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3c3-200d-2642-fe0f","๐๐ปโโ":"1f3c3-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3c3-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3c3-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3c3-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3c3-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3c3-200d-2640-fe0f","๐๐ปโโ":"1f3c3-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3c3-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3c3-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3c3-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3c3-1f3ff-200d-2640-fe0f","๐ฏโโ๏ธ":"1f46f-200d-2642-fe0f","๐ฏโโ๏ธ":"1f46f-200d-2640-fe0f","๐งโโ๏ธ":"1f9d6-200d-2640-fe0f","๐ง๐ปโโ":"1f9d6-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d6-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d6-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d6-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d6-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d6-200d-2642-fe0f","๐ง๐ปโโ":"1f9d6-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d6-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d6-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d6-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d6-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9d7-200d-2640-fe0f","๐ง๐ปโโ":"1f9d7-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d7-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d7-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d7-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d7-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d7-200d-2642-fe0f","๐ง๐ปโโ":"1f9d7-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d7-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d7-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d7-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d7-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9d8-200d-2640-fe0f","๐ง๐ปโโ":"1f9d8-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d8-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d8-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d8-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d8-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d8-200d-2642-fe0f","๐ง๐ปโโ":"1f9d8-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d8-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d8-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d8-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d8-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3cc-fe0f-200d-2642-fe0f","๐๏ธโโ":"1f3cc-fe0f-200d-2642-fe0f","๐๐ปโโ":"1f3cc-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3cc-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3cc-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3cc-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3cc-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3cc-fe0f-200d-2640-fe0f","๐๏ธโโ":"1f3cc-fe0f-200d-2640-fe0f","๐๐ปโโ":"1f3cc-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3cc-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3cc-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3cc-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3cc-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3c4-200d-2642-fe0f","๐๐ปโโ":"1f3c4-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3c4-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3c4-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3c4-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3c4-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3c4-200d-2640-fe0f","๐๐ปโโ":"1f3c4-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3c4-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3c4-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3c4-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3c4-1f3ff-200d-2640-fe0f","๐ฃโโ๏ธ":"1f6a3-200d-2642-fe0f","๐ฃ๐ปโโ":"1f6a3-1f3fb-200d-2642-fe0f","๐ฃ๐ผโโ":"1f6a3-1f3fc-200d-2642-fe0f","๐ฃ๐ฝโโ":"1f6a3-1f3fd-200d-2642-fe0f","๐ฃ๐พโโ":"1f6a3-1f3fe-200d-2642-fe0f","๐ฃ๐ฟโโ":"1f6a3-1f3ff-200d-2642-fe0f","๐ฃโโ๏ธ":"1f6a3-200d-2640-fe0f","๐ฃ๐ปโโ":"1f6a3-1f3fb-200d-2640-fe0f","๐ฃ๐ผโโ":"1f6a3-1f3fc-200d-2640-fe0f","๐ฃ๐ฝโโ":"1f6a3-1f3fd-200d-2640-fe0f","๐ฃ๐พโโ":"1f6a3-1f3fe-200d-2640-fe0f","๐ฃ๐ฟโโ":"1f6a3-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3ca-200d-2642-fe0f","๐๐ปโโ":"1f3ca-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3ca-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3ca-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3ca-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3ca-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3ca-200d-2640-fe0f","๐๐ปโโ":"1f3ca-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3ca-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3ca-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3ca-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3ca-1f3ff-200d-2640-fe0f","โนโโ๏ธ":"26f9-fe0f-200d-2642-fe0f","โน๏ธโโ":"26f9-fe0f-200d-2642-fe0f","โน๐ปโโ":"26f9-1f3fb-200d-2642-fe0f","โน๐ผโโ":"26f9-1f3fc-200d-2642-fe0f","โน๐ฝโโ":"26f9-1f3fd-200d-2642-fe0f","โน๐พโโ":"26f9-1f3fe-200d-2642-fe0f","โน๐ฟโโ":"26f9-1f3ff-200d-2642-fe0f","โนโโ๏ธ":"26f9-fe0f-200d-2640-fe0f","โน๏ธโโ":"26f9-fe0f-200d-2640-fe0f","โน๐ปโโ":"26f9-1f3fb-200d-2640-fe0f","โน๐ผโโ":"26f9-1f3fc-200d-2640-fe0f","โน๐ฝโโ":"26f9-1f3fd-200d-2640-fe0f","โน๐พโโ":"26f9-1f3fe-200d-2640-fe0f","โน๐ฟโโ":"26f9-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3cb-fe0f-200d-2642-fe0f","๐๏ธโโ":"1f3cb-fe0f-200d-2642-fe0f","๐๐ปโโ":"1f3cb-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3cb-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3cb-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3cb-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3cb-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3cb-fe0f-200d-2640-fe0f","๐๏ธโโ":"1f3cb-fe0f-200d-2640-fe0f","๐๐ปโโ":"1f3cb-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3cb-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3cb-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3cb-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3cb-1f3ff-200d-2640-fe0f","๐ดโโ๏ธ":"1f6b4-200d-2642-fe0f","๐ด๐ปโโ":"1f6b4-1f3fb-200d-2642-fe0f","๐ด๐ผโโ":"1f6b4-1f3fc-200d-2642-fe0f","๐ด๐ฝโโ":"1f6b4-1f3fd-200d-2642-fe0f","๐ด๐พโโ":"1f6b4-1f3fe-200d-2642-fe0f","๐ด๐ฟโโ":"1f6b4-1f3ff-200d-2642-fe0f","๐ดโโ๏ธ":"1f6b4-200d-2640-fe0f","๐ด๐ปโโ":"1f6b4-1f3fb-200d-2640-fe0f","๐ด๐ผโโ":"1f6b4-1f3fc-200d-2640-fe0f","๐ด๐ฝโโ":"1f6b4-1f3fd-200d-2640-fe0f","๐ด๐พโโ":"1f6b4-1f3fe-200d-2640-fe0f","๐ด๐ฟโโ":"1f6b4-1f3ff-200d-2640-fe0f","๐ตโโ๏ธ":"1f6b5-200d-2642-fe0f","๐ต๐ปโโ":"1f6b5-1f3fb-200d-2642-fe0f","๐ต๐ผโโ":"1f6b5-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ":"1f6b5-1f3fd-200d-2642-fe0f","๐ต๐พโโ":"1f6b5-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ":"1f6b5-1f3ff-200d-2642-fe0f","๐ตโโ๏ธ":"1f6b5-200d-2640-fe0f","๐ต๐ปโโ":"1f6b5-1f3fb-200d-2640-fe0f","๐ต๐ผโโ":"1f6b5-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ":"1f6b5-1f3fd-200d-2640-fe0f","๐ต๐พโโ":"1f6b5-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ":"1f6b5-1f3ff-200d-2640-fe0f","๐คธโโ๏ธ":"1f938-200d-2642-fe0f","๐คธ๐ปโโ":"1f938-1f3fb-200d-2642-fe0f","๐คธ๐ผโโ":"1f938-1f3fc-200d-2642-fe0f","๐คธ๐ฝโโ":"1f938-1f3fd-200d-2642-fe0f","๐คธ๐พโโ":"1f938-1f3fe-200d-2642-fe0f","๐คธ๐ฟโโ":"1f938-1f3ff-200d-2642-fe0f","๐คธโโ๏ธ":"1f938-200d-2640-fe0f","๐คธ๐ปโโ":"1f938-1f3fb-200d-2640-fe0f","๐คธ๐ผโโ":"1f938-1f3fc-200d-2640-fe0f","๐คธ๐ฝโโ":"1f938-1f3fd-200d-2640-fe0f","๐คธ๐พโโ":"1f938-1f3fe-200d-2640-fe0f","๐คธ๐ฟโโ":"1f938-1f3ff-200d-2640-fe0f","๐คผโโ๏ธ":"1f93c-200d-2642-fe0f","๐คผโโ๏ธ":"1f93c-200d-2640-fe0f","๐คฝโโ๏ธ":"1f93d-200d-2642-fe0f","๐คฝ๐ปโโ":"1f93d-1f3fb-200d-2642-fe0f","๐คฝ๐ผโโ":"1f93d-1f3fc-200d-2642-fe0f","๐คฝ๐ฝโโ":"1f93d-1f3fd-200d-2642-fe0f","๐คฝ๐พโโ":"1f93d-1f3fe-200d-2642-fe0f","๐คฝ๐ฟโโ":"1f93d-1f3ff-200d-2642-fe0f","๐คฝโโ๏ธ":"1f93d-200d-2640-fe0f","๐คฝ๐ปโโ":"1f93d-1f3fb-200d-2640-fe0f","๐คฝ๐ผโโ":"1f93d-1f3fc-200d-2640-fe0f","๐คฝ๐ฝโโ":"1f93d-1f3fd-200d-2640-fe0f","๐คฝ๐พโโ":"1f93d-1f3fe-200d-2640-fe0f","๐คฝ๐ฟโโ":"1f93d-1f3ff-200d-2640-fe0f","๐คพโโ๏ธ":"1f93e-200d-2642-fe0f","๐คพ๐ปโโ":"1f93e-1f3fb-200d-2642-fe0f","๐คพ๐ผโโ":"1f93e-1f3fc-200d-2642-fe0f","๐คพ๐ฝโโ":"1f93e-1f3fd-200d-2642-fe0f","๐คพ๐พโโ":"1f93e-1f3fe-200d-2642-fe0f","๐คพ๐ฟโโ":"1f93e-1f3ff-200d-2642-fe0f","๐คพโโ๏ธ":"1f93e-200d-2640-fe0f","๐คพ๐ปโโ":"1f93e-1f3fb-200d-2640-fe0f","๐คพ๐ผโโ":"1f93e-1f3fc-200d-2640-fe0f","๐คพ๐ฝโโ":"1f93e-1f3fd-200d-2640-fe0f","๐คพ๐พโโ":"1f93e-1f3fe-200d-2640-fe0f","๐คพ๐ฟโโ":"1f93e-1f3ff-200d-2640-fe0f","๐คนโโ๏ธ":"1f939-200d-2642-fe0f","๐คน๐ปโโ":"1f939-1f3fb-200d-2642-fe0f","๐คน๐ผโโ":"1f939-1f3fc-200d-2642-fe0f","๐คน๐ฝโโ":"1f939-1f3fd-200d-2642-fe0f","๐คน๐พโโ":"1f939-1f3fe-200d-2642-fe0f","๐คน๐ฟโโ":"1f939-1f3ff-200d-2642-fe0f","๐คนโโ๏ธ":"1f939-200d-2640-fe0f","๐คน๐ปโโ":"1f939-1f3fb-200d-2640-fe0f","๐คน๐ผโโ":"1f939-1f3fc-200d-2640-fe0f","๐คน๐ฝโโ":"1f939-1f3fd-200d-2640-fe0f","๐คน๐พโโ":"1f939-1f3fe-200d-2640-fe0f","๐คน๐ฟโโ":"1f939-1f3ff-200d-2640-fe0f","๐โ๐จ๏ธ":"1f441-200d-1f5e8","๐๏ธโ๐จ":"1f441-200d-1f5e8","๐ณ๏ธโ๐":"1f3f3-fe0f-200d-1f308","๐จ๐ปโโ๏ธ":"1f468-1f3fb-200d-2695-fe0f","๐จ๐ผโโ๏ธ":"1f468-1f3fc-200d-2695-fe0f","๐จ๐ฝโโ๏ธ":"1f468-1f3fd-200d-2695-fe0f","๐จ๐พโโ๏ธ":"1f468-1f3fe-200d-2695-fe0f","๐จ๐ฟโโ๏ธ":"1f468-1f3ff-200d-2695-fe0f","๐ฉ๐ปโโ๏ธ":"1f469-1f3fb-200d-2695-fe0f","๐ฉ๐ผโโ๏ธ":"1f469-1f3fc-200d-2695-fe0f","๐ฉ๐ฝโโ๏ธ":"1f469-1f3fd-200d-2695-fe0f","๐ฉ๐พโโ๏ธ":"1f469-1f3fe-200d-2695-fe0f","๐ฉ๐ฟโโ๏ธ":"1f469-1f3ff-200d-2695-fe0f","๐จ๐ปโโ๏ธ":"1f468-1f3fb-200d-2696-fe0f","๐จ๐ผโโ๏ธ":"1f468-1f3fc-200d-2696-fe0f","๐จ๐ฝโโ๏ธ":"1f468-1f3fd-200d-2696-fe0f","๐จ๐พโโ๏ธ":"1f468-1f3fe-200d-2696-fe0f","๐จ๐ฟโโ๏ธ":"1f468-1f3ff-200d-2696-fe0f","๐ฉ๐ปโโ๏ธ":"1f469-1f3fb-200d-2696-fe0f","๐ฉ๐ผโโ๏ธ":"1f469-1f3fc-200d-2696-fe0f","๐ฉ๐ฝโโ๏ธ":"1f469-1f3fd-200d-2696-fe0f","๐ฉ๐พโโ๏ธ":"1f469-1f3fe-200d-2696-fe0f","๐ฉ๐ฟโโ๏ธ":"1f469-1f3ff-200d-2696-fe0f","๐จ๐ปโโ๏ธ":"1f468-1f3fb-200d-2708-fe0f","๐จ๐ผโโ๏ธ":"1f468-1f3fc-200d-2708-fe0f","๐จ๐ฝโโ๏ธ":"1f468-1f3fd-200d-2708-fe0f","๐จ๐พโโ๏ธ":"1f468-1f3fe-200d-2708-fe0f","๐จ๐ฟโโ๏ธ":"1f468-1f3ff-200d-2708-fe0f","๐ฉ๐ปโโ๏ธ":"1f469-1f3fb-200d-2708-fe0f","๐ฉ๐ผโโ๏ธ":"1f469-1f3fc-200d-2708-fe0f","๐ฉ๐ฝโโ๏ธ":"1f469-1f3fd-200d-2708-fe0f","๐ฉ๐พโโ๏ธ":"1f469-1f3fe-200d-2708-fe0f","๐ฉ๐ฟโโ๏ธ":"1f469-1f3ff-200d-2708-fe0f","๐ฎ๐ปโโ๏ธ":"1f46e-1f3fb-200d-2642-fe0f","๐ฎ๐ผโโ๏ธ":"1f46e-1f3fc-200d-2642-fe0f","๐ฎ๐ฝโโ๏ธ":"1f46e-1f3fd-200d-2642-fe0f","๐ฎ๐พโโ๏ธ":"1f46e-1f3fe-200d-2642-fe0f","๐ฎ๐ฟโโ๏ธ":"1f46e-1f3ff-200d-2642-fe0f","๐ฎ๐ปโโ๏ธ":"1f46e-1f3fb-200d-2640-fe0f","๐ฎ๐ผโโ๏ธ":"1f46e-1f3fc-200d-2640-fe0f","๐ฎ๐ฝโโ๏ธ":"1f46e-1f3fd-200d-2640-fe0f","๐ฎ๐พโโ๏ธ":"1f46e-1f3fe-200d-2640-fe0f","๐ฎ๐ฟโโ๏ธ":"1f46e-1f3ff-200d-2640-fe0f","๐ต๏ธโโ๏ธ":"1f575-fe0f-200d-2642-fe0f","๐ต๐ปโโ๏ธ":"1f575-1f3fb-200d-2642-fe0f","๐ต๐ผโโ๏ธ":"1f575-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ๏ธ":"1f575-1f3fd-200d-2642-fe0f","๐ต๐พโโ๏ธ":"1f575-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ๏ธ":"1f575-1f3ff-200d-2642-fe0f","๐ต๏ธโโ๏ธ":"1f575-fe0f-200d-2640-fe0f","๐ต๐ปโโ๏ธ":"1f575-1f3fb-200d-2640-fe0f","๐ต๐ผโโ๏ธ":"1f575-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ๏ธ":"1f575-1f3fd-200d-2640-fe0f","๐ต๐พโโ๏ธ":"1f575-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ๏ธ":"1f575-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f482-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f482-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f482-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f482-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f482-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f482-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f482-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f482-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f482-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f482-1f3ff-200d-2640-fe0f","๐ท๐ปโโ๏ธ":"1f477-1f3fb-200d-2642-fe0f","๐ท๐ผโโ๏ธ":"1f477-1f3fc-200d-2642-fe0f","๐ท๐ฝโโ๏ธ":"1f477-1f3fd-200d-2642-fe0f","๐ท๐พโโ๏ธ":"1f477-1f3fe-200d-2642-fe0f","๐ท๐ฟโโ๏ธ":"1f477-1f3ff-200d-2642-fe0f","๐ท๐ปโโ๏ธ":"1f477-1f3fb-200d-2640-fe0f","๐ท๐ผโโ๏ธ":"1f477-1f3fc-200d-2640-fe0f","๐ท๐ฝโโ๏ธ":"1f477-1f3fd-200d-2640-fe0f","๐ท๐พโโ๏ธ":"1f477-1f3fe-200d-2640-fe0f","๐ท๐ฟโโ๏ธ":"1f477-1f3ff-200d-2640-fe0f","๐ณ๐ปโโ๏ธ":"1f473-1f3fb-200d-2642-fe0f","๐ณ๐ผโโ๏ธ":"1f473-1f3fc-200d-2642-fe0f","๐ณ๐ฝโโ๏ธ":"1f473-1f3fd-200d-2642-fe0f","๐ณ๐พโโ๏ธ":"1f473-1f3fe-200d-2642-fe0f","๐ณ๐ฟโโ๏ธ":"1f473-1f3ff-200d-2642-fe0f","๐ณ๐ปโโ๏ธ":"1f473-1f3fb-200d-2640-fe0f","๐ณ๐ผโโ๏ธ":"1f473-1f3fc-200d-2640-fe0f","๐ณ๐ฝโโ๏ธ":"1f473-1f3fd-200d-2640-fe0f","๐ณ๐พโโ๏ธ":"1f473-1f3fe-200d-2640-fe0f","๐ณ๐ฟโโ๏ธ":"1f473-1f3ff-200d-2640-fe0f","๐ฑ๐ปโโ๏ธ":"1f471-1f3fb-200d-2642-fe0f","๐ฑ๐ผโโ๏ธ":"1f471-1f3fc-200d-2642-fe0f","๐ฑ๐ฝโโ๏ธ":"1f471-1f3fd-200d-2642-fe0f","๐ฑ๐พโโ๏ธ":"1f471-1f3fe-200d-2642-fe0f","๐ฑ๐ฟโโ๏ธ":"1f471-1f3ff-200d-2642-fe0f","๐ฑ๐ปโโ๏ธ":"1f471-1f3fb-200d-2640-fe0f","๐ฑ๐ผโโ๏ธ":"1f471-1f3fc-200d-2640-fe0f","๐ฑ๐ฝโโ๏ธ":"1f471-1f3fd-200d-2640-fe0f","๐ฑ๐พโโ๏ธ":"1f471-1f3fe-200d-2640-fe0f","๐ฑ๐ฟโโ๏ธ":"1f471-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d9-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d9-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d9-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d9-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d9-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d9-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d9-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d9-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d9-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d9-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9da-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9da-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9da-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9da-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9da-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9da-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9da-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9da-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9da-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9da-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9db-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9db-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9db-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9db-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9db-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9db-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9db-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9db-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9db-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9db-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9dc-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9dc-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9dc-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9dc-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9dc-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9dc-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9dc-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9dc-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9dc-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9dc-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9dd-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9dd-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9dd-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9dd-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9dd-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9dd-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9dd-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9dd-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9dd-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9dd-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64d-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f64d-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f64d-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f64d-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f64d-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64d-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f64d-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f64d-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f64d-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f64d-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f64e-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f64e-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f64e-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f64e-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f64e-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64e-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f64e-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f64e-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f64e-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f64e-1f3ff-200d-2640-fe0f","๐ ๐ปโโ๏ธ":"1f645-1f3fb-200d-2642-fe0f","๐ ๐ผโโ๏ธ":"1f645-1f3fc-200d-2642-fe0f","๐ ๐ฝโโ๏ธ":"1f645-1f3fd-200d-2642-fe0f","๐ ๐พโโ๏ธ":"1f645-1f3fe-200d-2642-fe0f","๐ ๐ฟโโ๏ธ":"1f645-1f3ff-200d-2642-fe0f","๐ ๐ปโโ๏ธ":"1f645-1f3fb-200d-2640-fe0f","๐ ๐ผโโ๏ธ":"1f645-1f3fc-200d-2640-fe0f","๐ ๐ฝโโ๏ธ":"1f645-1f3fd-200d-2640-fe0f","๐ ๐พโโ๏ธ":"1f645-1f3fe-200d-2640-fe0f","๐ ๐ฟโโ๏ธ":"1f645-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f646-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f646-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f646-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f646-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f646-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f646-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f646-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f646-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f646-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f646-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f481-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f481-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f481-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f481-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f481-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f481-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f481-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f481-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f481-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f481-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f64b-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f64b-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f64b-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f64b-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f64b-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64b-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f64b-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f64b-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f64b-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f64b-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f647-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f647-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f647-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f647-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f647-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f647-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f647-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f647-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f647-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f647-1f3ff-200d-2640-fe0f","๐คฆ๐ปโโ๏ธ":"1f926-1f3fb-200d-2642-fe0f","๐คฆ๐ผโโ๏ธ":"1f926-1f3fc-200d-2642-fe0f","๐คฆ๐ฝโโ๏ธ":"1f926-1f3fd-200d-2642-fe0f","๐คฆ๐พโโ๏ธ":"1f926-1f3fe-200d-2642-fe0f","๐คฆ๐ฟโโ๏ธ":"1f926-1f3ff-200d-2642-fe0f","๐คฆ๐ปโโ๏ธ":"1f926-1f3fb-200d-2640-fe0f","๐คฆ๐ผโโ๏ธ":"1f926-1f3fc-200d-2640-fe0f","๐คฆ๐ฝโโ๏ธ":"1f926-1f3fd-200d-2640-fe0f","๐คฆ๐พโโ๏ธ":"1f926-1f3fe-200d-2640-fe0f","๐คฆ๐ฟโโ๏ธ":"1f926-1f3ff-200d-2640-fe0f","๐คท๐ปโโ๏ธ":"1f937-1f3fb-200d-2642-fe0f","๐คท๐ผโโ๏ธ":"1f937-1f3fc-200d-2642-fe0f","๐คท๐ฝโโ๏ธ":"1f937-1f3fd-200d-2642-fe0f","๐คท๐พโโ๏ธ":"1f937-1f3fe-200d-2642-fe0f","๐คท๐ฟโโ๏ธ":"1f937-1f3ff-200d-2642-fe0f","๐คท๐ปโโ๏ธ":"1f937-1f3fb-200d-2640-fe0f","๐คท๐ผโโ๏ธ":"1f937-1f3fc-200d-2640-fe0f","๐คท๐ฝโโ๏ธ":"1f937-1f3fd-200d-2640-fe0f","๐คท๐พโโ๏ธ":"1f937-1f3fe-200d-2640-fe0f","๐คท๐ฟโโ๏ธ":"1f937-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f486-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f486-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f486-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f486-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f486-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f486-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f486-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f486-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f486-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f486-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f487-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f487-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f487-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f487-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f487-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f487-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f487-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f487-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f487-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f487-1f3ff-200d-2640-fe0f","๐ถ๐ปโโ๏ธ":"1f6b6-1f3fb-200d-2642-fe0f","๐ถ๐ผโโ๏ธ":"1f6b6-1f3fc-200d-2642-fe0f","๐ถ๐ฝโโ๏ธ":"1f6b6-1f3fd-200d-2642-fe0f","๐ถ๐พโโ๏ธ":"1f6b6-1f3fe-200d-2642-fe0f","๐ถ๐ฟโโ๏ธ":"1f6b6-1f3ff-200d-2642-fe0f","๐ถ๐ปโโ๏ธ":"1f6b6-1f3fb-200d-2640-fe0f","๐ถ๐ผโโ๏ธ":"1f6b6-1f3fc-200d-2640-fe0f","๐ถ๐ฝโโ๏ธ":"1f6b6-1f3fd-200d-2640-fe0f","๐ถ๐พโโ๏ธ":"1f6b6-1f3fe-200d-2640-fe0f","๐ถ๐ฟโโ๏ธ":"1f6b6-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3c3-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3c3-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3c3-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3c3-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3c3-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3c3-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3c3-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3c3-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3c3-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3c3-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d6-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d6-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d6-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d6-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d6-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d6-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d6-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d6-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d6-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d6-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9d7-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d7-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d7-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d7-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d7-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d7-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d7-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d7-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d7-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d7-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9d8-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d8-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d8-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d8-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d8-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d8-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d8-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d8-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d8-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d8-1f3ff-200d-2642-fe0f","๐๏ธโโ๏ธ":"1f3cc-fe0f-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3cc-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3cc-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3cc-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3cc-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3cc-1f3ff-200d-2642-fe0f","๐๏ธโโ๏ธ":"1f3cc-fe0f-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3cc-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3cc-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3cc-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3cc-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3cc-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3c4-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3c4-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3c4-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3c4-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3c4-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3c4-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3c4-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3c4-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3c4-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3c4-1f3ff-200d-2640-fe0f","๐ฃ๐ปโโ๏ธ":"1f6a3-1f3fb-200d-2642-fe0f","๐ฃ๐ผโโ๏ธ":"1f6a3-1f3fc-200d-2642-fe0f","๐ฃ๐ฝโโ๏ธ":"1f6a3-1f3fd-200d-2642-fe0f","๐ฃ๐พโโ๏ธ":"1f6a3-1f3fe-200d-2642-fe0f","๐ฃ๐ฟโโ๏ธ":"1f6a3-1f3ff-200d-2642-fe0f","๐ฃ๐ปโโ๏ธ":"1f6a3-1f3fb-200d-2640-fe0f","๐ฃ๐ผโโ๏ธ":"1f6a3-1f3fc-200d-2640-fe0f","๐ฃ๐ฝโโ๏ธ":"1f6a3-1f3fd-200d-2640-fe0f","๐ฃ๐พโโ๏ธ":"1f6a3-1f3fe-200d-2640-fe0f","๐ฃ๐ฟโโ๏ธ":"1f6a3-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3ca-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3ca-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3ca-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3ca-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3ca-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3ca-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3ca-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3ca-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3ca-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3ca-1f3ff-200d-2640-fe0f","โน๏ธโโ๏ธ":"26f9-fe0f-200d-2642-fe0f","โน๐ปโโ๏ธ":"26f9-1f3fb-200d-2642-fe0f","โน๐ผโโ๏ธ":"26f9-1f3fc-200d-2642-fe0f","โน๐ฝโโ๏ธ":"26f9-1f3fd-200d-2642-fe0f","โน๐พโโ๏ธ":"26f9-1f3fe-200d-2642-fe0f","โน๐ฟโโ๏ธ":"26f9-1f3ff-200d-2642-fe0f","โน๏ธโโ๏ธ":"26f9-fe0f-200d-2640-fe0f","โน๐ปโโ๏ธ":"26f9-1f3fb-200d-2640-fe0f","โน๐ผโโ๏ธ":"26f9-1f3fc-200d-2640-fe0f","โน๐ฝโโ๏ธ":"26f9-1f3fd-200d-2640-fe0f","โน๐พโโ๏ธ":"26f9-1f3fe-200d-2640-fe0f","โน๐ฟโโ๏ธ":"26f9-1f3ff-200d-2640-fe0f","๐๏ธโโ๏ธ":"1f3cb-fe0f-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3cb-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3cb-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3cb-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3cb-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3cb-1f3ff-200d-2642-fe0f","๐๏ธโโ๏ธ":"1f3cb-fe0f-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3cb-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3cb-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3cb-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3cb-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3cb-1f3ff-200d-2640-fe0f","๐ด๐ปโโ๏ธ":"1f6b4-1f3fb-200d-2642-fe0f","๐ด๐ผโโ๏ธ":"1f6b4-1f3fc-200d-2642-fe0f","๐ด๐ฝโโ๏ธ":"1f6b4-1f3fd-200d-2642-fe0f","๐ด๐พโโ๏ธ":"1f6b4-1f3fe-200d-2642-fe0f","๐ด๐ฟโโ๏ธ":"1f6b4-1f3ff-200d-2642-fe0f","๐ด๐ปโโ๏ธ":"1f6b4-1f3fb-200d-2640-fe0f","๐ด๐ผโโ๏ธ":"1f6b4-1f3fc-200d-2640-fe0f","๐ด๐ฝโโ๏ธ":"1f6b4-1f3fd-200d-2640-fe0f","๐ด๐พโโ๏ธ":"1f6b4-1f3fe-200d-2640-fe0f","๐ด๐ฟโโ๏ธ":"1f6b4-1f3ff-200d-2640-fe0f","๐ต๐ปโโ๏ธ":"1f6b5-1f3fb-200d-2642-fe0f","๐ต๐ผโโ๏ธ":"1f6b5-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ๏ธ":"1f6b5-1f3fd-200d-2642-fe0f","๐ต๐พโโ๏ธ":"1f6b5-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ๏ธ":"1f6b5-1f3ff-200d-2642-fe0f","๐ต๐ปโโ๏ธ":"1f6b5-1f3fb-200d-2640-fe0f","๐ต๐ผโโ๏ธ":"1f6b5-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ๏ธ":"1f6b5-1f3fd-200d-2640-fe0f","๐ต๐พโโ๏ธ":"1f6b5-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ๏ธ":"1f6b5-1f3ff-200d-2640-fe0f","๐คธ๐ปโโ๏ธ":"1f938-1f3fb-200d-2642-fe0f","๐คธ๐ผโโ๏ธ":"1f938-1f3fc-200d-2642-fe0f","๐คธ๐ฝโโ๏ธ":"1f938-1f3fd-200d-2642-fe0f","๐คธ๐พโโ๏ธ":"1f938-1f3fe-200d-2642-fe0f","๐คธ๐ฟโโ๏ธ":"1f938-1f3ff-200d-2642-fe0f","๐คธ๐ปโโ๏ธ":"1f938-1f3fb-200d-2640-fe0f","๐คธ๐ผโโ๏ธ":"1f938-1f3fc-200d-2640-fe0f","๐คธ๐ฝโโ๏ธ":"1f938-1f3fd-200d-2640-fe0f","๐คธ๐พโโ๏ธ":"1f938-1f3fe-200d-2640-fe0f","๐คธ๐ฟโโ๏ธ":"1f938-1f3ff-200d-2640-fe0f","๐คฝ๐ปโโ๏ธ":"1f93d-1f3fb-200d-2642-fe0f","๐คฝ๐ผโโ๏ธ":"1f93d-1f3fc-200d-2642-fe0f","๐คฝ๐ฝโโ๏ธ":"1f93d-1f3fd-200d-2642-fe0f","๐คฝ๐พโโ๏ธ":"1f93d-1f3fe-200d-2642-fe0f","๐คฝ๐ฟโโ๏ธ":"1f93d-1f3ff-200d-2642-fe0f","๐คฝ๐ปโโ๏ธ":"1f93d-1f3fb-200d-2640-fe0f","๐คฝ๐ผโโ๏ธ":"1f93d-1f3fc-200d-2640-fe0f","๐คฝ๐ฝโโ๏ธ":"1f93d-1f3fd-200d-2640-fe0f","๐คฝ๐พโโ๏ธ":"1f93d-1f3fe-200d-2640-fe0f","๐คฝ๐ฟโโ๏ธ":"1f93d-1f3ff-200d-2640-fe0f","๐คพ๐ปโโ๏ธ":"1f93e-1f3fb-200d-2642-fe0f","๐คพ๐ผโโ๏ธ":"1f93e-1f3fc-200d-2642-fe0f","๐คพ๐ฝโโ๏ธ":"1f93e-1f3fd-200d-2642-fe0f","๐คพ๐พโโ๏ธ":"1f93e-1f3fe-200d-2642-fe0f","๐คพ๐ฟโโ๏ธ":"1f93e-1f3ff-200d-2642-fe0f","๐คพ๐ปโโ๏ธ":"1f93e-1f3fb-200d-2640-fe0f","๐คพ๐ผโโ๏ธ":"1f93e-1f3fc-200d-2640-fe0f","๐คพ๐ฝโโ๏ธ":"1f93e-1f3fd-200d-2640-fe0f","๐คพ๐พโโ๏ธ":"1f93e-1f3fe-200d-2640-fe0f","๐คพ๐ฟโโ๏ธ":"1f93e-1f3ff-200d-2640-fe0f","๐คน๐ปโโ๏ธ":"1f939-1f3fb-200d-2642-fe0f","๐คน๐ผโโ๏ธ":"1f939-1f3fc-200d-2642-fe0f","๐คน๐ฝโโ๏ธ":"1f939-1f3fd-200d-2642-fe0f","๐คน๐พโโ๏ธ":"1f939-1f3fe-200d-2642-fe0f","๐คน๐ฟโโ๏ธ":"1f939-1f3ff-200d-2642-fe0f","๐คน๐ปโโ๏ธ":"1f939-1f3fb-200d-2640-fe0f","๐คน๐ผโโ๏ธ":"1f939-1f3fc-200d-2640-fe0f","๐คน๐ฝโโ๏ธ":"1f939-1f3fd-200d-2640-fe0f","๐คน๐พโโ๏ธ":"1f939-1f3fe-200d-2640-fe0f","๐คน๐ฟโโ๏ธ":"1f939-1f3ff-200d-2640-fe0f","๐ฉโโคโ๐จ":"1f469-200d-2764-fe0f-200d-1f468","๐จโโคโ๐จ":"1f468-200d-2764-fe0f-200d-1f468","๐ฉโโคโ๐ฉ":"1f469-200d-2764-fe0f-200d-1f469","๐จโ๐ฉโ๐ฆ":"1f468-200d-1f469-200d-1f466","๐จโ๐ฉโ๐ง":"1f468-200d-1f469-200d-1f467","๐จโ๐จโ๐ฆ":"1f468-200d-1f468-200d-1f466","๐จโ๐จโ๐ง":"1f468-200d-1f468-200d-1f467","๐ฉโ๐ฉโ๐ฆ":"1f469-200d-1f469-200d-1f466","๐ฉโ๐ฉโ๐ง":"1f469-200d-1f469-200d-1f467","๐จโ๐ฆโ๐ฆ":"1f468-200d-1f466-200d-1f466","๐จโ๐งโ๐ฆ":"1f468-200d-1f467-200d-1f466","๐จโ๐งโ๐ง":"1f468-200d-1f467-200d-1f467","๐ฉโ๐ฆโ๐ฆ":"1f469-200d-1f466-200d-1f466","๐ฉโ๐งโ๐ฆ":"1f469-200d-1f467-200d-1f466","๐ฉโ๐งโ๐ง":"1f469-200d-1f467-200d-1f467","๐๏ธโ๐จ๏ธ":"1f441-200d-1f5e8","๐ฉโโค๏ธโ๐จ":"1f469-200d-2764-fe0f-200d-1f468","๐จโโค๏ธโ๐จ":"1f468-200d-2764-fe0f-200d-1f468","๐ฉโโค๏ธโ๐ฉ":"1f469-200d-2764-fe0f-200d-1f469","๐ฉโโคโ๐โ๐จ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","๐จโโคโ๐โ๐จ":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","๐ฉโโคโ๐โ๐ฉ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","๐จโ๐ฉโ๐งโ๐ฆ":"1f468-200d-1f469-200d-1f467-200d-1f466","๐จโ๐ฉโ๐ฆโ๐ฆ":"1f468-200d-1f469-200d-1f466-200d-1f466","๐จโ๐ฉโ๐งโ๐ง":"1f468-200d-1f469-200d-1f467-200d-1f467","๐จโ๐จโ๐งโ๐ฆ":"1f468-200d-1f468-200d-1f467-200d-1f466","๐จโ๐จโ๐ฆโ๐ฆ":"1f468-200d-1f468-200d-1f466-200d-1f466","๐จโ๐จโ๐งโ๐ง":"1f468-200d-1f468-200d-1f467-200d-1f467","๐ฉโ๐ฉโ๐งโ๐ฆ":"1f469-200d-1f469-200d-1f467-200d-1f466","๐ฉโ๐ฉโ๐ฆโ๐ฆ":"1f469-200d-1f469-200d-1f466-200d-1f466","๐ฉโ๐ฉโ๐งโ๐ง":"1f469-200d-1f469-200d-1f467-200d-1f467","๐ด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","๐ด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","๐ฉโโค๏ธโ๐โ๐จ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","๐จโโค๏ธโ๐โ๐จ":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","๐ฉโโค๏ธโ๐โ๐ฉ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469"} \ No newline at end of file diff --git a/app/javascript/mastodon/emoji_utils.js b/app/javascript/mastodon/emoji_utils.js deleted file mode 100644 index 6475df571..000000000 --- a/app/javascript/mastodon/emoji_utils.js +++ /dev/null @@ -1,137 +0,0 @@ -// This code is largely borrowed from: -// https://github.com/missive/emoji-mart/blob/bbd4fbe/src/utils/index.js - -import data from './emoji_data_light'; - -const COLONS_REGEX = /^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/; - -function buildSearch(thisData) { - const search = []; - - let addToSearch = (strings, split) => { - if (!strings) { - return; - } - - (Array.isArray(strings) ? strings : [strings]).forEach((string) => { - (split ? string.split(/[-|_|\s]+/) : [string]).forEach((s) => { - s = s.toLowerCase(); - - if (search.indexOf(s) === -1) { - search.push(s); - } - }); - }); - }; - - addToSearch(thisData.short_names, true); - addToSearch(thisData.name, true); - addToSearch(thisData.keywords, false); - addToSearch(thisData.emoticons, false); - - return search; -} - -function unifiedToNative(unified) { - let unicodes = unified.split('-'), - codePoints = unicodes.map((u) => `0x${u}`); - - return String.fromCodePoint(...codePoints); -} - -function sanitize(emoji) { - let { name, short_names, skin_tone, skin_variations, emoticons, unified, custom, imageUrl } = emoji, - id = emoji.id || short_names[0], - colons = `:${id}:`; - - if (custom) { - return { - id, - name, - colons, - emoticons, - custom, - imageUrl, - }; - } - - if (skin_tone) { - colons += `:skin-tone-${skin_tone}:`; - } - - return { - id, - name, - colons, - emoticons, - unified: unified.toLowerCase(), - skin: skin_tone || (skin_variations ? 1 : null), - native: unifiedToNative(unified), - }; -} - -function getSanitizedData(emoji) { - return sanitize(getData(emoji)); -} - -function getData(emoji) { - let emojiData = {}; - - if (typeof emoji === 'string') { - let matches = emoji.match(COLONS_REGEX); - - if (matches) { - emoji = matches[1]; - - } - - if (data.short_names.hasOwnProperty(emoji)) { - emoji = data.short_names[emoji]; - } - - if (data.emojis.hasOwnProperty(emoji)) { - emojiData = data.emojis[emoji]; - } - } else if (emoji.custom) { - emojiData = emoji; - - emojiData.search = buildSearch({ - short_names: emoji.short_names, - name: emoji.name, - keywords: emoji.keywords, - emoticons: emoji.emoticons, - }); - - emojiData.search = emojiData.search.join(','); - } else if (emoji.id) { - if (data.short_names.hasOwnProperty(emoji.id)) { - emoji.id = data.short_names[emoji.id]; - } - - if (data.emojis.hasOwnProperty(emoji.id)) { - emojiData = data.emojis[emoji.id]; - } - } - - emojiData.emoticons = emojiData.emoticons || []; - emojiData.variations = emojiData.variations || []; - - if (emojiData.variations && emojiData.variations.length) { - emojiData = JSON.parse(JSON.stringify(emojiData)); - emojiData.unified = emojiData.variations.shift(); - } - - return emojiData; -} - -function intersect(a, b) { - let aSet = new Set(a); - let bSet = new Set(b); - let intersection = new Set( - [...aSet].filter(x => bSet.has(x)) - ); - - return Array.from(intersection); -} - -export { getData, getSanitizedData, intersect }; diff --git a/app/javascript/mastodon/emojione_light.js b/app/javascript/mastodon/emojione_light.js deleted file mode 100644 index 2296497b0..000000000 --- a/app/javascript/mastodon/emojione_light.js +++ /dev/null @@ -1,38 +0,0 @@ -// @preval -// http://www.unicode.org/Public/emoji/5.0/emoji-test.txt - -const emojis = require('./emoji_map.json'); -const { emojiIndex } = require('emoji-mart'); -const excluded = ['ยฎ', 'ยฉ', 'โข']; -const skins = ['๐ป', '๐ผ', '๐ฝ', '๐พ', '๐ฟ']; -const shortcodeMap = {}; - -Object.keys(emojiIndex.emojis).forEach(key => { - shortcodeMap[emojiIndex.emojis[key].native] = emojiIndex.emojis[key].id; -}); - -const stripModifiers = unicode => { - skins.forEach(tone => { - unicode = unicode.replace(tone, ''); - }); - - return unicode; -}; - -Object.keys(emojis).forEach(key => { - if (excluded.includes(key)) { - delete emojis[key]; - return; - } - - const normalizedKey = stripModifiers(key); - let shortcode = shortcodeMap[normalizedKey]; - - if (!shortcode) { - shortcode = shortcodeMap[normalizedKey + '\uFE0F']; - } - - emojis[key] = [emojis[key], shortcode]; -}); - -module.exports.unicodeMapping = emojis; diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js index bbc6b7a16..2bea5e2b1 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js @@ -6,7 +6,7 @@ import Overlay from 'react-overlays/lib/Overlay'; import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import detectPassiveEvents from 'detect-passive-events'; -import { buildCustomEmojis } from '../../../emoji'; +import { buildCustomEmojis } from '../../emoji/emoji'; const messages = defineMessages({ emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' }, diff --git a/app/javascript/mastodon/features/emoji/emoji.js b/app/javascript/mastodon/features/emoji/emoji.js new file mode 100644 index 000000000..998cb0a06 --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji.js @@ -0,0 +1,72 @@ +import unicodeMapping from './emoji_unicode_mapping_light'; +import Trie from 'substring-trie'; + +const trie = new Trie(Object.keys(unicodeMapping)); + +const assetHost = process.env.CDN_HOST || ''; + +const emojify = (str, customEmojis = {}) => { + let rtn = ''; + for (;;) { + let match, i = 0, tag; + while (i < str.length && (tag = '<&:'.indexOf(str[i])) === -1 && !(match = trie.search(str.slice(i)))) { + i += str.codePointAt(i) < 65536 ? 1 : 2; + } + let rend, replacement = ''; + if (i === str.length) { + break; + } else if (str[i] === ':') { + if (!(() => { + rend = str.indexOf(':', i + 1) + 1; + if (!rend) return false; // no pair of ':' + const lt = str.indexOf('<', i + 1); + if (!(lt === -1 || lt >= rend)) return false; // tag appeared before closing ':' + const shortname = str.slice(i, rend); + // now got a replacee as ':shortname:' + // if you want additional emoji handler, add statements below which set replacement and return true. + if (shortname in customEmojis) { + replacement = `<img draggable="false" class="emojione" alt="${shortname}" title="${shortname}" src="${customEmojis[shortname]}" />`; + return true; + } + return false; + })()) rend = ++i; + } else if (tag >= 0) { // <, & + rend = str.indexOf('>;'[tag], i + 1) + 1; + if (!rend) break; + i = rend; + } else { // matched to unicode emoji + const { filename, shortCode } = unicodeMapping[match]; + const title = shortCode ? `:${shortCode}:` : ''; + replacement = `<img draggable="false" class="emojione" alt="${match}" title="${title}" src="${assetHost}/emoji/${filename}.svg" />`; + rend = i + match.length; + } + rtn += str.slice(0, i) + replacement; + str = str.slice(rend); + } + return rtn + str; +}; + +export default emojify; + +export const buildCustomEmojis = customEmojis => { + const emojis = []; + + customEmojis.forEach(emoji => { + const shortcode = emoji.get('shortcode'); + const url = emoji.get('static_url'); + const name = shortcode.replace(':', ''); + + emojis.push({ + id: name, + name, + short_names: [name], + text: '', + emoticons: [], + keywords: [name], + imageUrl: url, + custom: true, + }); + }); + + return emojis; +}; diff --git a/app/javascript/mastodon/features/emoji/emoji_compressed.js b/app/javascript/mastodon/features/emoji/emoji_compressed.js new file mode 100644 index 000000000..3ed4dc82b --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_compressed.js @@ -0,0 +1,90 @@ +// @preval +// http://www.unicode.org/Public/emoji/5.0/emoji-test.txt +// This file contains the compressed version of the emoji data from +// both emoji_map.json and from emoji-mart's emojiIndex and data objects. +// It's designed to be emitted in an array format to take up less space +// over the wire. + +const { unicodeToFilename } = require('./unicode_to_filename'); +const { unicodeToUnifiedName } = require('./unicode_to_unified_name'); +const emojiMap = require('./emoji_map.json'); +const { emojiIndex } = require('emoji-mart'); +const emojiMartData = require('emoji-mart/dist/data').default; +const excluded = ['ยฎ', 'ยฉ', 'โข']; +const skins = ['๐ป', '๐ผ', '๐ฝ', '๐พ', '๐ฟ']; +const shortcodeMap = {}; + +const shortCodesToEmojiData = {}; +const emojisWithoutShortCodes = []; + +Object.keys(emojiIndex.emojis).forEach(key => { + shortcodeMap[emojiIndex.emojis[key].native] = emojiIndex.emojis[key].id; +}); + +const stripModifiers = unicode => { + skins.forEach(tone => { + unicode = unicode.replace(tone, ''); + }); + + return unicode; +}; + +Object.keys(emojiMap).forEach(key => { + if (excluded.includes(key)) { + delete emojiMap[key]; + return; + } + + const normalizedKey = stripModifiers(key); + let shortcode = shortcodeMap[normalizedKey]; + + if (!shortcode) { + shortcode = shortcodeMap[normalizedKey + '\uFE0F']; + } + + const filename = emojiMap[key]; + + const filenameData = [key]; + + if (unicodeToFilename(key) !== filename) { + // filename can't be derived using unicodeToFilename + filenameData.push(filename); + } + + if (typeof shortcode === 'undefined') { + emojisWithoutShortCodes.push(filenameData); + } else { + shortCodesToEmojiData[shortcode] = shortCodesToEmojiData[shortcode] || [[]]; + shortCodesToEmojiData[shortcode][0].push(filenameData); + } +}); + +Object.keys(emojiIndex.emojis).forEach(key => { + const { native } = emojiIndex.emojis[key]; + const { short_names, search, unified } = emojiMartData.emojis[key]; + if (short_names[0] !== key) { + throw new Error('The compresser expects the first short_code to be the ' + + 'key. It may need to be rewritten if the emoji change such that this ' + + 'is no longer the case.'); + } + + short_names.splice(0, 1); // first short name can be inferred from the key + + const searchData = [native, short_names, search]; + if (unicodeToUnifiedName(native) !== unified) { + // unified name can't be derived from unicodeToUnifiedName + searchData.push(unified); + } + + shortCodesToEmojiData[key].push(searchData); +}); + +// JSON.parse/stringify is to emulate what @preval is doing and avoid any +// inconsistent behavior in dev mode +module.exports = JSON.parse(JSON.stringify([ + shortCodesToEmojiData, + emojiMartData.skins, + emojiMartData.categories, + emojiMartData.short_names, + emojisWithoutShortCodes, +])); diff --git a/app/javascript/mastodon/features/emoji/emoji_map.json b/app/javascript/mastodon/features/emoji/emoji_map.json new file mode 100644 index 000000000..13753ba84 --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_map.json @@ -0,0 +1 @@ +{"๐":"1f600","๐":"1f601","๐":"1f602","๐คฃ":"1f923","๐":"1f603","๐":"1f604","๐ ":"1f605","๐":"1f606","๐":"1f609","๐":"1f60a","๐":"1f60b","๐":"1f60e","๐":"1f60d","๐":"1f618","๐":"1f617","๐":"1f619","๐":"1f61a","โบ":"263a","๐":"1f642","๐ค":"1f917","๐คฉ":"1f929","๐ค":"1f914","๐คจ":"1f928","๐":"1f610","๐":"1f611","๐ถ":"1f636","๐":"1f644","๐":"1f60f","๐ฃ":"1f623","๐ฅ":"1f625","๐ฎ":"1f62e","๐ค":"1f910","๐ฏ":"1f62f","๐ช":"1f62a","๐ซ":"1f62b","๐ด":"1f634","๐":"1f60c","๐":"1f61b","๐":"1f61c","๐":"1f61d","๐คค":"1f924","๐":"1f612","๐":"1f613","๐":"1f614","๐":"1f615","๐":"1f643","๐ค":"1f911","๐ฒ":"1f632","โน":"2639","๐":"1f641","๐":"1f616","๐":"1f61e","๐":"1f61f","๐ค":"1f624","๐ข":"1f622","๐ญ":"1f62d","๐ฆ":"1f626","๐ง":"1f627","๐จ":"1f628","๐ฉ":"1f629","๐คฏ":"1f92f","๐ฌ":"1f62c","๐ฐ":"1f630","๐ฑ":"1f631","๐ณ":"1f633","๐คช":"1f92a","๐ต":"1f635","๐ก":"1f621","๐ ":"1f620","๐คฌ":"1f92c","๐ท":"1f637","๐ค":"1f912","๐ค":"1f915","๐คข":"1f922","๐คฎ":"1f92e","๐คง":"1f927","๐":"1f607","๐ค ":"1f920","๐คก":"1f921","๐คฅ":"1f925","๐คซ":"1f92b","๐คญ":"1f92d","๐ง":"1f9d0","๐ค":"1f913","๐":"1f608","๐ฟ":"1f47f","๐น":"1f479","๐บ":"1f47a","๐":"1f480","โ ":"2620","๐ป":"1f47b","๐ฝ":"1f47d","๐พ":"1f47e","๐ค":"1f916","๐ฉ":"1f4a9","๐บ":"1f63a","๐ธ":"1f638","๐น":"1f639","๐ป":"1f63b","๐ผ":"1f63c","๐ฝ":"1f63d","๐":"1f640","๐ฟ":"1f63f","๐พ":"1f63e","๐":"1f648","๐":"1f649","๐":"1f64a","๐ถ":"1f476","๐ง":"1f9d2","๐ฆ":"1f466","๐ง":"1f467","๐ง":"1f9d1","๐จ":"1f468","๐ฉ":"1f469","๐ง":"1f9d3","๐ด":"1f474","๐ต":"1f475","๐ฎ":"1f46e","๐ต":"1f575","๐":"1f482","๐ท":"1f477","๐คด":"1f934","๐ธ":"1f478","๐ณ":"1f473","๐ฒ":"1f472","๐ง":"1f9d5","๐ง":"1f9d4","๐ฑ":"1f471","๐คต":"1f935","๐ฐ":"1f470","๐คฐ":"1f930","๐คฑ":"1f931","๐ผ":"1f47c","๐ ":"1f385","๐คถ":"1f936","๐ง":"1f9d9","๐ง":"1f9da","๐ง":"1f9db","๐ง":"1f9dc","๐ง":"1f9dd","๐ง":"1f9de","๐ง":"1f9df","๐":"1f64d","๐":"1f64e","๐ ":"1f645","๐":"1f646","๐":"1f481","๐":"1f64b","๐":"1f647","๐คฆ":"1f926","๐คท":"1f937","๐":"1f486","๐":"1f487","๐ถ":"1f6b6","๐":"1f3c3","๐":"1f483","๐บ":"1f57a","๐ฏ":"1f46f","๐ง":"1f9d6","๐ง":"1f9d7","๐ง":"1f9d8","๐":"1f6c0","๐":"1f6cc","๐ด":"1f574","๐ฃ":"1f5e3","๐ค":"1f464","๐ฅ":"1f465","๐คบ":"1f93a","๐":"1f3c7","โท":"26f7","๐":"1f3c2","๐":"1f3cc","๐":"1f3c4","๐ฃ":"1f6a3","๐":"1f3ca","โน":"26f9","๐":"1f3cb","๐ด":"1f6b4","๐ต":"1f6b5","๐":"1f3ce","๐":"1f3cd","๐คธ":"1f938","๐คผ":"1f93c","๐คฝ":"1f93d","๐คพ":"1f93e","๐คน":"1f939","๐ซ":"1f46b","๐ฌ":"1f46c","๐ญ":"1f46d","๐":"1f48f","๐":"1f491","๐ช":"1f46a","๐คณ":"1f933","๐ช":"1f4aa","๐":"1f448","๐":"1f449","โ":"261d","๐":"1f446","๐":"1f595","๐":"1f447","โ":"270c","๐ค":"1f91e","๐":"1f596","๐ค":"1f918","๐ค":"1f919","๐":"1f590","โ":"270b","๐":"1f44c","๐":"1f44d","๐":"1f44e","โ":"270a","๐":"1f44a","๐ค":"1f91b","๐ค":"1f91c","๐ค":"1f91a","๐":"1f44b","๐ค":"1f91f","โ":"270d","๐":"1f44f","๐":"1f450","๐":"1f64c","๐คฒ":"1f932","๐":"1f64f","๐ค":"1f91d","๐ ":"1f485","๐":"1f442","๐":"1f443","๐ฃ":"1f463","๐":"1f440","๐":"1f441","๐ง ":"1f9e0","๐ ":"1f445","๐":"1f444","๐":"1f48b","๐":"1f498","โค":"2764","๐":"1f493","๐":"1f494","๐":"1f495","๐":"1f496","๐":"1f497","๐":"1f499","๐":"1f49a","๐":"1f49b","๐งก":"1f9e1","๐":"1f49c","๐ค":"1f5a4","๐":"1f49d","๐":"1f49e","๐":"1f49f","โฃ":"2763","๐":"1f48c","๐ค":"1f4a4","๐ข":"1f4a2","๐ฃ":"1f4a3","๐ฅ":"1f4a5","๐ฆ":"1f4a6","๐จ":"1f4a8","๐ซ":"1f4ab","๐ฌ":"1f4ac","๐จ":"1f5e8","๐ฏ":"1f5ef","๐ญ":"1f4ad","๐ณ":"1f573","๐":"1f453","๐ถ":"1f576","๐":"1f454","๐":"1f455","๐":"1f456","๐งฃ":"1f9e3","๐งค":"1f9e4","๐งฅ":"1f9e5","๐งฆ":"1f9e6","๐":"1f457","๐":"1f458","๐":"1f459","๐":"1f45a","๐":"1f45b","๐":"1f45c","๐":"1f45d","๐":"1f6cd","๐":"1f392","๐":"1f45e","๐":"1f45f","๐ ":"1f460","๐ก":"1f461","๐ข":"1f462","๐":"1f451","๐":"1f452","๐ฉ":"1f3a9","๐":"1f393","๐งข":"1f9e2","โ":"26d1","๐ฟ":"1f4ff","๐":"1f484","๐":"1f48d","๐":"1f48e","๐ต":"1f435","๐":"1f412","๐ฆ":"1f98d","๐ถ":"1f436","๐":"1f415","๐ฉ":"1f429","๐บ":"1f43a","๐ฆ":"1f98a","๐ฑ":"1f431","๐":"1f408","๐ฆ":"1f981","๐ฏ":"1f42f","๐ ":"1f405","๐":"1f406","๐ด":"1f434","๐":"1f40e","๐ฆ":"1f984","๐ฆ":"1f993","๐ฆ":"1f98c","๐ฎ":"1f42e","๐":"1f402","๐":"1f403","๐":"1f404","๐ท":"1f437","๐":"1f416","๐":"1f417","๐ฝ":"1f43d","๐":"1f40f","๐":"1f411","๐":"1f410","๐ช":"1f42a","๐ซ":"1f42b","๐ฆ":"1f992","๐":"1f418","๐ฆ":"1f98f","๐ญ":"1f42d","๐":"1f401","๐":"1f400","๐น":"1f439","๐ฐ":"1f430","๐":"1f407","๐ฟ":"1f43f","๐ฆ":"1f994","๐ฆ":"1f987","๐ป":"1f43b","๐จ":"1f428","๐ผ":"1f43c","๐พ":"1f43e","๐ฆ":"1f983","๐":"1f414","๐":"1f413","๐ฃ":"1f423","๐ค":"1f424","๐ฅ":"1f425","๐ฆ":"1f426","๐ง":"1f427","๐":"1f54a","๐ฆ ":"1f985","๐ฆ":"1f986","๐ฆ":"1f989","๐ธ":"1f438","๐":"1f40a","๐ข":"1f422","๐ฆ":"1f98e","๐":"1f40d","๐ฒ":"1f432","๐":"1f409","๐ฆ":"1f995","๐ฆ":"1f996","๐ณ":"1f433","๐":"1f40b","๐ฌ":"1f42c","๐":"1f41f","๐ ":"1f420","๐ก":"1f421","๐ฆ":"1f988","๐":"1f419","๐":"1f41a","๐ฆ":"1f980","๐ฆ":"1f990","๐ฆ":"1f991","๐":"1f40c","๐ฆ":"1f98b","๐":"1f41b","๐":"1f41c","๐":"1f41d","๐":"1f41e","๐ฆ":"1f997","๐ท":"1f577","๐ธ":"1f578","๐ฆ":"1f982","๐":"1f490","๐ธ":"1f338","๐ฎ":"1f4ae","๐ต":"1f3f5","๐น":"1f339","๐ฅ":"1f940","๐บ":"1f33a","๐ป":"1f33b","๐ผ":"1f33c","๐ท":"1f337","๐ฑ":"1f331","๐ฒ":"1f332","๐ณ":"1f333","๐ด":"1f334","๐ต":"1f335","๐พ":"1f33e","๐ฟ":"1f33f","โ":"2618","๐":"1f340","๐":"1f341","๐":"1f342","๐":"1f343","๐":"1f347","๐":"1f348","๐":"1f349","๐":"1f34a","๐":"1f34b","๐":"1f34c","๐":"1f34d","๐":"1f34e","๐":"1f34f","๐":"1f350","๐":"1f351","๐":"1f352","๐":"1f353","๐ฅ":"1f95d","๐ ":"1f345","๐ฅฅ":"1f965","๐ฅ":"1f951","๐":"1f346","๐ฅ":"1f954","๐ฅ":"1f955","๐ฝ":"1f33d","๐ถ":"1f336","๐ฅ":"1f952","๐ฅฆ":"1f966","๐":"1f344","๐ฅ":"1f95c","๐ฐ":"1f330","๐":"1f35e","๐ฅ":"1f950","๐ฅ":"1f956","๐ฅจ":"1f968","๐ฅ":"1f95e","๐ง":"1f9c0","๐":"1f356","๐":"1f357","๐ฅฉ":"1f969","๐ฅ":"1f953","๐":"1f354","๐":"1f35f","๐":"1f355","๐ญ":"1f32d","๐ฅช":"1f96a","๐ฎ":"1f32e","๐ฏ":"1f32f","๐ฅ":"1f959","๐ฅ":"1f95a","๐ณ":"1f373","๐ฅ":"1f958","๐ฒ":"1f372","๐ฅฃ":"1f963","๐ฅ":"1f957","๐ฟ":"1f37f","๐ฅซ":"1f96b","๐ฑ":"1f371","๐":"1f358","๐":"1f359","๐":"1f35a","๐":"1f35b","๐":"1f35c","๐":"1f35d","๐ ":"1f360","๐ข":"1f362","๐ฃ":"1f363","๐ค":"1f364","๐ฅ":"1f365","๐ก":"1f361","๐ฅ":"1f95f","๐ฅ ":"1f960","๐ฅก":"1f961","๐ฆ":"1f366","๐ง":"1f367","๐จ":"1f368","๐ฉ":"1f369","๐ช":"1f36a","๐":"1f382","๐ฐ":"1f370","๐ฅง":"1f967","๐ซ":"1f36b","๐ฌ":"1f36c","๐ญ":"1f36d","๐ฎ":"1f36e","๐ฏ":"1f36f","๐ผ":"1f37c","๐ฅ":"1f95b","โ":"2615","๐ต":"1f375","๐ถ":"1f376","๐พ":"1f37e","๐ท":"1f377","๐ธ":"1f378","๐น":"1f379","๐บ":"1f37a","๐ป":"1f37b","๐ฅ":"1f942","๐ฅ":"1f943","๐ฅค":"1f964","๐ฅข":"1f962","๐ฝ":"1f37d","๐ด":"1f374","๐ฅ":"1f944","๐ช":"1f52a","๐บ":"1f3fa","๐":"1f30d","๐":"1f30e","๐":"1f30f","๐":"1f310","๐บ":"1f5fa","๐พ":"1f5fe","๐":"1f3d4","โฐ":"26f0","๐":"1f30b","๐ป":"1f5fb","๐":"1f3d5","๐":"1f3d6","๐":"1f3dc","๐":"1f3dd","๐":"1f3de","๐":"1f3df","๐":"1f3db","๐":"1f3d7","๐":"1f3d8","๐":"1f3d9","๐":"1f3da","๐ ":"1f3e0","๐ก":"1f3e1","๐ข":"1f3e2","๐ฃ":"1f3e3","๐ค":"1f3e4","๐ฅ":"1f3e5","๐ฆ":"1f3e6","๐จ":"1f3e8","๐ฉ":"1f3e9","๐ช":"1f3ea","๐ซ":"1f3eb","๐ฌ":"1f3ec","๐ญ":"1f3ed","๐ฏ":"1f3ef","๐ฐ":"1f3f0","๐":"1f492","๐ผ":"1f5fc","๐ฝ":"1f5fd","โช":"26ea","๐":"1f54c","๐":"1f54d","โฉ":"26e9","๐":"1f54b","โฒ":"26f2","โบ":"26fa","๐":"1f301","๐":"1f303","๐":"1f304","๐ ":"1f305","๐":"1f306","๐":"1f307","๐":"1f309","โจ":"2668","๐":"1f30c","๐ ":"1f3a0","๐ก":"1f3a1","๐ข":"1f3a2","๐":"1f488","๐ช":"1f3aa","๐ญ":"1f3ad","๐ผ":"1f5bc","๐จ":"1f3a8","๐ฐ":"1f3b0","๐":"1f682","๐":"1f683","๐":"1f684","๐ ":"1f685","๐":"1f686","๐":"1f687","๐":"1f688","๐":"1f689","๐":"1f68a","๐":"1f69d","๐":"1f69e","๐":"1f68b","๐":"1f68c","๐":"1f68d","๐":"1f68e","๐":"1f690","๐":"1f691","๐":"1f692","๐":"1f693","๐":"1f694","๐":"1f695","๐":"1f696","๐":"1f697","๐":"1f698","๐":"1f699","๐":"1f69a","๐":"1f69b","๐":"1f69c","๐ฒ":"1f6b2","๐ด":"1f6f4","๐ต":"1f6f5","๐":"1f68f","๐ฃ":"1f6e3","๐ค":"1f6e4","โฝ":"26fd","๐จ":"1f6a8","๐ฅ":"1f6a5","๐ฆ":"1f6a6","๐ง":"1f6a7","๐":"1f6d1","โ":"2693","โต":"26f5","๐ถ":"1f6f6","๐ค":"1f6a4","๐ณ":"1f6f3","โด":"26f4","๐ฅ":"1f6e5","๐ข":"1f6a2","โ":"2708","๐ฉ":"1f6e9","๐ซ":"1f6eb","๐ฌ":"1f6ec","๐บ":"1f4ba","๐":"1f681","๐":"1f69f","๐ ":"1f6a0","๐ก":"1f6a1","๐ฐ":"1f6f0","๐":"1f680","๐ธ":"1f6f8","๐":"1f6ce","๐ช":"1f6aa","๐":"1f6cf","๐":"1f6cb","๐ฝ":"1f6bd","๐ฟ":"1f6bf","๐":"1f6c1","โ":"231b","โณ":"23f3","โ":"231a","โฐ":"23f0","โฑ":"23f1","โฒ":"23f2","๐ฐ":"1f570","๐":"1f55b","๐ง":"1f567","๐":"1f550","๐":"1f55c","๐":"1f551","๐":"1f55d","๐":"1f552","๐":"1f55e","๐":"1f553","๐":"1f55f","๐":"1f554","๐ ":"1f560","๐":"1f555","๐ก":"1f561","๐":"1f556","๐ข":"1f562","๐":"1f557","๐ฃ":"1f563","๐":"1f558","๐ค":"1f564","๐":"1f559","๐ฅ":"1f565","๐":"1f55a","๐ฆ":"1f566","๐":"1f311","๐":"1f312","๐":"1f313","๐":"1f314","๐":"1f315","๐":"1f316","๐":"1f317","๐":"1f318","๐":"1f319","๐":"1f31a","๐":"1f31b","๐":"1f31c","๐ก":"1f321","โ":"2600","๐":"1f31d","๐":"1f31e","โญ":"2b50","๐":"1f31f","๐ ":"1f320","โ":"2601","โ ":"26c5","โ":"26c8","๐ค":"1f324","๐ฅ":"1f325","๐ฆ":"1f326","๐ง":"1f327","๐จ":"1f328","๐ฉ":"1f329","๐ช":"1f32a","๐ซ":"1f32b","๐ฌ":"1f32c","๐":"1f300","๐":"1f308","๐":"1f302","โ":"2602","โ":"2614","โฑ":"26f1","โก":"26a1","โ":"2744","โ":"2603","โ":"26c4","โ":"2604","๐ฅ":"1f525","๐ง":"1f4a7","๐":"1f30a","๐":"1f383","๐":"1f384","๐":"1f386","๐":"1f387","โจ":"2728","๐":"1f388","๐":"1f389","๐":"1f38a","๐":"1f38b","๐":"1f38d","๐":"1f38e","๐":"1f38f","๐":"1f390","๐":"1f391","๐":"1f380","๐":"1f381","๐":"1f397","๐":"1f39f","๐ซ":"1f3ab","๐":"1f396","๐":"1f3c6","๐ ":"1f3c5","๐ฅ":"1f947","๐ฅ":"1f948","๐ฅ":"1f949","โฝ":"26bd","โพ":"26be","๐":"1f3c0","๐":"1f3d0","๐":"1f3c8","๐":"1f3c9","๐พ":"1f3be","๐ฑ":"1f3b1","๐ณ":"1f3b3","๐":"1f3cf","๐":"1f3d1","๐":"1f3d2","๐":"1f3d3","๐ธ":"1f3f8","๐ฅ":"1f94a","๐ฅ":"1f94b","๐ฅ ":"1f945","๐ฏ":"1f3af","โณ":"26f3","โธ":"26f8","๐ฃ":"1f3a3","๐ฝ":"1f3bd","๐ฟ":"1f3bf","๐ท":"1f6f7","๐ฅ":"1f94c","๐ฎ":"1f3ae","๐น":"1f579","๐ฒ":"1f3b2","โ ":"2660","โฅ":"2665","โฆ":"2666","โฃ":"2663","๐":"1f0cf","๐":"1f004","๐ด":"1f3b4","๐":"1f507","๐":"1f508","๐":"1f509","๐":"1f50a","๐ข":"1f4e2","๐ฃ":"1f4e3","๐ฏ":"1f4ef","๐":"1f514","๐":"1f515","๐ผ":"1f3bc","๐ต":"1f3b5","๐ถ":"1f3b6","๐":"1f399","๐":"1f39a","๐":"1f39b","๐ค":"1f3a4","๐ง":"1f3a7","๐ป":"1f4fb","๐ท":"1f3b7","๐ธ":"1f3b8","๐น":"1f3b9","๐บ":"1f3ba","๐ป":"1f3bb","๐ฅ":"1f941","๐ฑ":"1f4f1","๐ฒ":"1f4f2","โ":"260e","๐":"1f4de","๐":"1f4df","๐ ":"1f4e0","๐":"1f50b","๐":"1f50c","๐ป":"1f4bb","๐ฅ":"1f5a5","๐จ":"1f5a8","โจ":"2328","๐ฑ":"1f5b1","๐ฒ":"1f5b2","๐ฝ":"1f4bd","๐พ":"1f4be","๐ฟ":"1f4bf","๐":"1f4c0","๐ฅ":"1f3a5","๐":"1f39e","๐ฝ":"1f4fd","๐ฌ":"1f3ac","๐บ":"1f4fa","๐ท":"1f4f7","๐ธ":"1f4f8","๐น":"1f4f9","๐ผ":"1f4fc","๐":"1f50d","๐":"1f50e","๐ฌ":"1f52c","๐ญ":"1f52d","๐ก":"1f4e1","๐ฏ":"1f56f","๐ก":"1f4a1","๐ฆ":"1f526","๐ฎ":"1f3ee","๐":"1f4d4","๐":"1f4d5","๐":"1f4d6","๐":"1f4d7","๐":"1f4d8","๐":"1f4d9","๐":"1f4da","๐":"1f4d3","๐":"1f4d2","๐":"1f4c3","๐":"1f4dc","๐":"1f4c4","๐ฐ":"1f4f0","๐":"1f5de","๐":"1f4d1","๐":"1f516","๐ท":"1f3f7","๐ฐ":"1f4b0","๐ด":"1f4b4","๐ต":"1f4b5","๐ถ":"1f4b6","๐ท":"1f4b7","๐ธ":"1f4b8","๐ณ":"1f4b3","๐น":"1f4b9","๐ฑ":"1f4b1","๐ฒ":"1f4b2","โ":"2709","๐ง":"1f4e7","๐จ":"1f4e8","๐ฉ":"1f4e9","๐ค":"1f4e4","๐ฅ":"1f4e5","๐ฆ":"1f4e6","๐ซ":"1f4eb","๐ช":"1f4ea","๐ฌ":"1f4ec","๐ญ":"1f4ed","๐ฎ":"1f4ee","๐ณ":"1f5f3","โ":"270f","โ":"2712","๐":"1f58b","๐":"1f58a","๐":"1f58c","๐":"1f58d","๐":"1f4dd","๐ผ":"1f4bc","๐":"1f4c1","๐":"1f4c2","๐":"1f5c2","๐ ":"1f4c5","๐":"1f4c6","๐":"1f5d2","๐":"1f5d3","๐":"1f4c7","๐":"1f4c8","๐":"1f4c9","๐":"1f4ca","๐":"1f4cb","๐":"1f4cc","๐":"1f4cd","๐":"1f4ce","๐":"1f587","๐":"1f4cf","๐":"1f4d0","โ":"2702","๐":"1f5c3","๐":"1f5c4","๐":"1f5d1","๐":"1f512","๐":"1f513","๐":"1f50f","๐":"1f510","๐":"1f511","๐":"1f5dd","๐จ":"1f528","โ":"26cf","โ":"2692","๐ ":"1f6e0","๐ก":"1f5e1","โ":"2694","๐ซ":"1f52b","๐น":"1f3f9","๐ก":"1f6e1","๐ง":"1f527","๐ฉ":"1f529","โ":"2699","๐":"1f5dc","โ":"2697","โ":"2696","๐":"1f517","โ":"26d3","๐":"1f489","๐":"1f48a","๐ฌ":"1f6ac","โฐ":"26b0","โฑ":"26b1","๐ฟ":"1f5ff","๐ข":"1f6e2","๐ฎ":"1f52e","๐":"1f6d2","๐ง":"1f3e7","๐ฎ":"1f6ae","๐ฐ":"1f6b0","โฟ":"267f","๐น":"1f6b9","๐บ":"1f6ba","๐ป":"1f6bb","๐ผ":"1f6bc","๐พ":"1f6be","๐":"1f6c2","๐":"1f6c3","๐":"1f6c4","๐ ":"1f6c5","โ ":"26a0","๐ธ":"1f6b8","โ":"26d4","๐ซ":"1f6ab","๐ณ":"1f6b3","๐ญ":"1f6ad","๐ฏ":"1f6af","๐ฑ":"1f6b1","๐ท":"1f6b7","๐ต":"1f4f5","๐":"1f51e","โข":"2622","โฃ":"2623","โฌ":"2b06","โ":"2197","โก":"27a1","โ":"2198","โฌ":"2b07","โ":"2199","โฌ ":"2b05","โ":"2196","โ":"2195","โ":"2194","โฉ":"21a9","โช":"21aa","โคด":"2934","โคต":"2935","๐":"1f503","๐":"1f504","๐":"1f519","๐":"1f51a","๐":"1f51b","๐":"1f51c","๐":"1f51d","๐":"1f6d0","โ":"269b","๐":"1f549","โก":"2721","โธ":"2638","โฏ":"262f","โ":"271d","โฆ":"2626","โช":"262a","โฎ":"262e","๐":"1f54e","๐ฏ":"1f52f","โ":"2648","โ":"2649","โ":"264a","โ":"264b","โ":"264c","โ":"264d","โ":"264e","โ":"264f","โ":"2650","โ":"2651","โ":"2652","โ":"2653","โ":"26ce","๐":"1f500","๐":"1f501","๐":"1f502","โถ":"25b6","โฉ":"23e9","โญ":"23ed","โฏ":"23ef","โ":"25c0","โช":"23ea","โฎ":"23ee","๐ผ":"1f53c","โซ":"23eb","๐ฝ":"1f53d","โฌ":"23ec","โธ":"23f8","โน":"23f9","โบ":"23fa","โ":"23cf","๐ฆ":"1f3a6","๐ ":"1f505","๐":"1f506","๐ถ":"1f4f6","๐ณ":"1f4f3","๐ด":"1f4f4","โ":"2640","โ":"2642","โ":"2695","โป":"267b","โ":"269c","๐ฑ":"1f531","๐":"1f4db","๐ฐ":"1f530","โญ":"2b55","โ ":"2705","โ":"2611","โ":"2714","โ":"2716","โ":"274c","โ":"274e","โ":"2795","โ":"2796","โ":"2797","โฐ":"27b0","โฟ":"27bf","ใฝ":"303d","โณ":"2733","โด":"2734","โ":"2747","โผ":"203c","โ":"2049","โ":"2753","โ":"2754","โ":"2755","โ":"2757","ใฐ":"3030","ยฉ":"a9","ยฎ":"ae","โข":"2122","๐":"1f51f","๐ฏ":"1f4af","๐ ":"1f520","๐ก":"1f521","๐ข":"1f522","๐ฃ":"1f523","๐ค":"1f524","๐ ฐ":"1f170","๐":"1f18e","๐ ฑ":"1f171","๐":"1f191","๐":"1f192","๐":"1f193","โน":"2139","๐":"1f194","โ":"24c2","๐":"1f195","๐":"1f196","๐ พ":"1f17e","๐":"1f197","๐ ฟ":"1f17f","๐":"1f198","๐":"1f199","๐":"1f19a","๐":"1f201","๐":"1f202","๐ท":"1f237","๐ถ":"1f236","๐ฏ":"1f22f","๐":"1f250","๐น":"1f239","๐":"1f21a","๐ฒ":"1f232","๐":"1f251","๐ธ":"1f238","๐ด":"1f234","๐ณ":"1f233","ใ":"3297","ใ":"3299","๐บ":"1f23a","๐ต":"1f235","โช":"25aa","โซ":"25ab","โป":"25fb","โผ":"25fc","โฝ":"25fd","โพ":"25fe","โฌ":"2b1b","โฌ":"2b1c","๐ถ":"1f536","๐ท":"1f537","๐ธ":"1f538","๐น":"1f539","๐บ":"1f53a","๐ป":"1f53b","๐ ":"1f4a0","๐":"1f518","๐ฒ":"1f532","๐ณ":"1f533","โช":"26aa","โซ":"26ab","๐ด":"1f534","๐ต":"1f535","๐":"1f3c1","๐ฉ":"1f6a9","๐":"1f38c","๐ด":"1f3f4","๐ณ":"1f3f3","โบ๏ธ":"263a","โน๏ธ":"2639","โ ๏ธ":"2620","๐ถ๐ป":"1f476-1f3fb","๐ถ๐ผ":"1f476-1f3fc","๐ถ๐ฝ":"1f476-1f3fd","๐ถ๐พ":"1f476-1f3fe","๐ถ๐ฟ":"1f476-1f3ff","๐ง๐ป":"1f9d2-1f3fb","๐ง๐ผ":"1f9d2-1f3fc","๐ง๐ฝ":"1f9d2-1f3fd","๐ง๐พ":"1f9d2-1f3fe","๐ง๐ฟ":"1f9d2-1f3ff","๐ฆ๐ป":"1f466-1f3fb","๐ฆ๐ผ":"1f466-1f3fc","๐ฆ๐ฝ":"1f466-1f3fd","๐ฆ๐พ":"1f466-1f3fe","๐ฆ๐ฟ":"1f466-1f3ff","๐ง๐ป":"1f467-1f3fb","๐ง๐ผ":"1f467-1f3fc","๐ง๐ฝ":"1f467-1f3fd","๐ง๐พ":"1f467-1f3fe","๐ง๐ฟ":"1f467-1f3ff","๐ง๐ป":"1f9d1-1f3fb","๐ง๐ผ":"1f9d1-1f3fc","๐ง๐ฝ":"1f9d1-1f3fd","๐ง๐พ":"1f9d1-1f3fe","๐ง๐ฟ":"1f9d1-1f3ff","๐จ๐ป":"1f468-1f3fb","๐จ๐ผ":"1f468-1f3fc","๐จ๐ฝ":"1f468-1f3fd","๐จ๐พ":"1f468-1f3fe","๐จ๐ฟ":"1f468-1f3ff","๐ฉ๐ป":"1f469-1f3fb","๐ฉ๐ผ":"1f469-1f3fc","๐ฉ๐ฝ":"1f469-1f3fd","๐ฉ๐พ":"1f469-1f3fe","๐ฉ๐ฟ":"1f469-1f3ff","๐ง๐ป":"1f9d3-1f3fb","๐ง๐ผ":"1f9d3-1f3fc","๐ง๐ฝ":"1f9d3-1f3fd","๐ง๐พ":"1f9d3-1f3fe","๐ง๐ฟ":"1f9d3-1f3ff","๐ด๐ป":"1f474-1f3fb","๐ด๐ผ":"1f474-1f3fc","๐ด๐ฝ":"1f474-1f3fd","๐ด๐พ":"1f474-1f3fe","๐ด๐ฟ":"1f474-1f3ff","๐ต๐ป":"1f475-1f3fb","๐ต๐ผ":"1f475-1f3fc","๐ต๐ฝ":"1f475-1f3fd","๐ต๐พ":"1f475-1f3fe","๐ต๐ฟ":"1f475-1f3ff","๐ฎ๐ป":"1f46e-1f3fb","๐ฎ๐ผ":"1f46e-1f3fc","๐ฎ๐ฝ":"1f46e-1f3fd","๐ฎ๐พ":"1f46e-1f3fe","๐ฎ๐ฟ":"1f46e-1f3ff","๐ต๏ธ":"1f575","๐ต๐ป":"1f575-1f3fb","๐ต๐ผ":"1f575-1f3fc","๐ต๐ฝ":"1f575-1f3fd","๐ต๐พ":"1f575-1f3fe","๐ต๐ฟ":"1f575-1f3ff","๐๐ป":"1f482-1f3fb","๐๐ผ":"1f482-1f3fc","๐๐ฝ":"1f482-1f3fd","๐๐พ":"1f482-1f3fe","๐๐ฟ":"1f482-1f3ff","๐ท๐ป":"1f477-1f3fb","๐ท๐ผ":"1f477-1f3fc","๐ท๐ฝ":"1f477-1f3fd","๐ท๐พ":"1f477-1f3fe","๐ท๐ฟ":"1f477-1f3ff","๐คด๐ป":"1f934-1f3fb","๐คด๐ผ":"1f934-1f3fc","๐คด๐ฝ":"1f934-1f3fd","๐คด๐พ":"1f934-1f3fe","๐คด๐ฟ":"1f934-1f3ff","๐ธ๐ป":"1f478-1f3fb","๐ธ๐ผ":"1f478-1f3fc","๐ธ๐ฝ":"1f478-1f3fd","๐ธ๐พ":"1f478-1f3fe","๐ธ๐ฟ":"1f478-1f3ff","๐ณ๐ป":"1f473-1f3fb","๐ณ๐ผ":"1f473-1f3fc","๐ณ๐ฝ":"1f473-1f3fd","๐ณ๐พ":"1f473-1f3fe","๐ณ๐ฟ":"1f473-1f3ff","๐ฒ๐ป":"1f472-1f3fb","๐ฒ๐ผ":"1f472-1f3fc","๐ฒ๐ฝ":"1f472-1f3fd","๐ฒ๐พ":"1f472-1f3fe","๐ฒ๐ฟ":"1f472-1f3ff","๐ง๐ป":"1f9d5-1f3fb","๐ง๐ผ":"1f9d5-1f3fc","๐ง๐ฝ":"1f9d5-1f3fd","๐ง๐พ":"1f9d5-1f3fe","๐ง๐ฟ":"1f9d5-1f3ff","๐ง๐ป":"1f9d4-1f3fb","๐ง๐ผ":"1f9d4-1f3fc","๐ง๐ฝ":"1f9d4-1f3fd","๐ง๐พ":"1f9d4-1f3fe","๐ง๐ฟ":"1f9d4-1f3ff","๐ฑ๐ป":"1f471-1f3fb","๐ฑ๐ผ":"1f471-1f3fc","๐ฑ๐ฝ":"1f471-1f3fd","๐ฑ๐พ":"1f471-1f3fe","๐ฑ๐ฟ":"1f471-1f3ff","๐คต๐ป":"1f935-1f3fb","๐คต๐ผ":"1f935-1f3fc","๐คต๐ฝ":"1f935-1f3fd","๐คต๐พ":"1f935-1f3fe","๐คต๐ฟ":"1f935-1f3ff","๐ฐ๐ป":"1f470-1f3fb","๐ฐ๐ผ":"1f470-1f3fc","๐ฐ๐ฝ":"1f470-1f3fd","๐ฐ๐พ":"1f470-1f3fe","๐ฐ๐ฟ":"1f470-1f3ff","๐คฐ๐ป":"1f930-1f3fb","๐คฐ๐ผ":"1f930-1f3fc","๐คฐ๐ฝ":"1f930-1f3fd","๐คฐ๐พ":"1f930-1f3fe","๐คฐ๐ฟ":"1f930-1f3ff","๐คฑ๐ป":"1f931-1f3fb","๐คฑ๐ผ":"1f931-1f3fc","๐คฑ๐ฝ":"1f931-1f3fd","๐คฑ๐พ":"1f931-1f3fe","๐คฑ๐ฟ":"1f931-1f3ff","๐ผ๐ป":"1f47c-1f3fb","๐ผ๐ผ":"1f47c-1f3fc","๐ผ๐ฝ":"1f47c-1f3fd","๐ผ๐พ":"1f47c-1f3fe","๐ผ๐ฟ":"1f47c-1f3ff","๐ ๐ป":"1f385-1f3fb","๐ ๐ผ":"1f385-1f3fc","๐ ๐ฝ":"1f385-1f3fd","๐ ๐พ":"1f385-1f3fe","๐ ๐ฟ":"1f385-1f3ff","๐คถ๐ป":"1f936-1f3fb","๐คถ๐ผ":"1f936-1f3fc","๐คถ๐ฝ":"1f936-1f3fd","๐คถ๐พ":"1f936-1f3fe","๐คถ๐ฟ":"1f936-1f3ff","๐ง๐ป":"1f9d9-1f3fb","๐ง๐ผ":"1f9d9-1f3fc","๐ง๐ฝ":"1f9d9-1f3fd","๐ง๐พ":"1f9d9-1f3fe","๐ง๐ฟ":"1f9d9-1f3ff","๐ง๐ป":"1f9da-1f3fb","๐ง๐ผ":"1f9da-1f3fc","๐ง๐ฝ":"1f9da-1f3fd","๐ง๐พ":"1f9da-1f3fe","๐ง๐ฟ":"1f9da-1f3ff","๐ง๐ป":"1f9db-1f3fb","๐ง๐ผ":"1f9db-1f3fc","๐ง๐ฝ":"1f9db-1f3fd","๐ง๐พ":"1f9db-1f3fe","๐ง๐ฟ":"1f9db-1f3ff","๐ง๐ป":"1f9dc-1f3fb","๐ง๐ผ":"1f9dc-1f3fc","๐ง๐ฝ":"1f9dc-1f3fd","๐ง๐พ":"1f9dc-1f3fe","๐ง๐ฟ":"1f9dc-1f3ff","๐ง๐ป":"1f9dd-1f3fb","๐ง๐ผ":"1f9dd-1f3fc","๐ง๐ฝ":"1f9dd-1f3fd","๐ง๐พ":"1f9dd-1f3fe","๐ง๐ฟ":"1f9dd-1f3ff","๐๐ป":"1f64d-1f3fb","๐๐ผ":"1f64d-1f3fc","๐๐ฝ":"1f64d-1f3fd","๐๐พ":"1f64d-1f3fe","๐๐ฟ":"1f64d-1f3ff","๐๐ป":"1f64e-1f3fb","๐๐ผ":"1f64e-1f3fc","๐๐ฝ":"1f64e-1f3fd","๐๐พ":"1f64e-1f3fe","๐๐ฟ":"1f64e-1f3ff","๐ ๐ป":"1f645-1f3fb","๐ ๐ผ":"1f645-1f3fc","๐ ๐ฝ":"1f645-1f3fd","๐ ๐พ":"1f645-1f3fe","๐ ๐ฟ":"1f645-1f3ff","๐๐ป":"1f646-1f3fb","๐๐ผ":"1f646-1f3fc","๐๐ฝ":"1f646-1f3fd","๐๐พ":"1f646-1f3fe","๐๐ฟ":"1f646-1f3ff","๐๐ป":"1f481-1f3fb","๐๐ผ":"1f481-1f3fc","๐๐ฝ":"1f481-1f3fd","๐๐พ":"1f481-1f3fe","๐๐ฟ":"1f481-1f3ff","๐๐ป":"1f64b-1f3fb","๐๐ผ":"1f64b-1f3fc","๐๐ฝ":"1f64b-1f3fd","๐๐พ":"1f64b-1f3fe","๐๐ฟ":"1f64b-1f3ff","๐๐ป":"1f647-1f3fb","๐๐ผ":"1f647-1f3fc","๐๐ฝ":"1f647-1f3fd","๐๐พ":"1f647-1f3fe","๐๐ฟ":"1f647-1f3ff","๐คฆ๐ป":"1f926-1f3fb","๐คฆ๐ผ":"1f926-1f3fc","๐คฆ๐ฝ":"1f926-1f3fd","๐คฆ๐พ":"1f926-1f3fe","๐คฆ๐ฟ":"1f926-1f3ff","๐คท๐ป":"1f937-1f3fb","๐คท๐ผ":"1f937-1f3fc","๐คท๐ฝ":"1f937-1f3fd","๐คท๐พ":"1f937-1f3fe","๐คท๐ฟ":"1f937-1f3ff","๐๐ป":"1f486-1f3fb","๐๐ผ":"1f486-1f3fc","๐๐ฝ":"1f486-1f3fd","๐๐พ":"1f486-1f3fe","๐๐ฟ":"1f486-1f3ff","๐๐ป":"1f487-1f3fb","๐๐ผ":"1f487-1f3fc","๐๐ฝ":"1f487-1f3fd","๐๐พ":"1f487-1f3fe","๐๐ฟ":"1f487-1f3ff","๐ถ๐ป":"1f6b6-1f3fb","๐ถ๐ผ":"1f6b6-1f3fc","๐ถ๐ฝ":"1f6b6-1f3fd","๐ถ๐พ":"1f6b6-1f3fe","๐ถ๐ฟ":"1f6b6-1f3ff","๐๐ป":"1f3c3-1f3fb","๐๐ผ":"1f3c3-1f3fc","๐๐ฝ":"1f3c3-1f3fd","๐๐พ":"1f3c3-1f3fe","๐๐ฟ":"1f3c3-1f3ff","๐๐ป":"1f483-1f3fb","๐๐ผ":"1f483-1f3fc","๐๐ฝ":"1f483-1f3fd","๐๐พ":"1f483-1f3fe","๐๐ฟ":"1f483-1f3ff","๐บ๐ป":"1f57a-1f3fb","๐บ๐ผ":"1f57a-1f3fc","๐บ๐ฝ":"1f57a-1f3fd","๐บ๐พ":"1f57a-1f3fe","๐บ๐ฟ":"1f57a-1f3ff","๐ง๐ป":"1f9d6-1f3fb","๐ง๐ผ":"1f9d6-1f3fc","๐ง๐ฝ":"1f9d6-1f3fd","๐ง๐พ":"1f9d6-1f3fe","๐ง๐ฟ":"1f9d6-1f3ff","๐ง๐ป":"1f9d7-1f3fb","๐ง๐ผ":"1f9d7-1f3fc","๐ง๐ฝ":"1f9d7-1f3fd","๐ง๐พ":"1f9d7-1f3fe","๐ง๐ฟ":"1f9d7-1f3ff","๐ง๐ป":"1f9d8-1f3fb","๐ง๐ผ":"1f9d8-1f3fc","๐ง๐ฝ":"1f9d8-1f3fd","๐ง๐พ":"1f9d8-1f3fe","๐ง๐ฟ":"1f9d8-1f3ff","๐๐ป":"1f6c0-1f3fb","๐๐ผ":"1f6c0-1f3fc","๐๐ฝ":"1f6c0-1f3fd","๐๐พ":"1f6c0-1f3fe","๐๐ฟ":"1f6c0-1f3ff","๐๐ป":"1f6cc-1f3fb","๐๐ผ":"1f6cc-1f3fc","๐๐ฝ":"1f6cc-1f3fd","๐๐พ":"1f6cc-1f3fe","๐๐ฟ":"1f6cc-1f3ff","๐ด๏ธ":"1f574","๐ด๐ป":"1f574-1f3fb","๐ด๐ผ":"1f574-1f3fc","๐ด๐ฝ":"1f574-1f3fd","๐ด๐พ":"1f574-1f3fe","๐ด๐ฟ":"1f574-1f3ff","๐ฃ๏ธ":"1f5e3","๐๐ป":"1f3c7-1f3fb","๐๐ผ":"1f3c7-1f3fc","๐๐ฝ":"1f3c7-1f3fd","๐๐พ":"1f3c7-1f3fe","๐๐ฟ":"1f3c7-1f3ff","โท๏ธ":"26f7","๐๐ป":"1f3c2-1f3fb","๐๐ผ":"1f3c2-1f3fc","๐๐ฝ":"1f3c2-1f3fd","๐๐พ":"1f3c2-1f3fe","๐๐ฟ":"1f3c2-1f3ff","๐๏ธ":"1f3cc","๐๐ป":"1f3cc-1f3fb","๐๐ผ":"1f3cc-1f3fc","๐๐ฝ":"1f3cc-1f3fd","๐๐พ":"1f3cc-1f3fe","๐๐ฟ":"1f3cc-1f3ff","๐๐ป":"1f3c4-1f3fb","๐๐ผ":"1f3c4-1f3fc","๐๐ฝ":"1f3c4-1f3fd","๐๐พ":"1f3c4-1f3fe","๐๐ฟ":"1f3c4-1f3ff","๐ฃ๐ป":"1f6a3-1f3fb","๐ฃ๐ผ":"1f6a3-1f3fc","๐ฃ๐ฝ":"1f6a3-1f3fd","๐ฃ๐พ":"1f6a3-1f3fe","๐ฃ๐ฟ":"1f6a3-1f3ff","๐๐ป":"1f3ca-1f3fb","๐๐ผ":"1f3ca-1f3fc","๐๐ฝ":"1f3ca-1f3fd","๐๐พ":"1f3ca-1f3fe","๐๐ฟ":"1f3ca-1f3ff","โน๏ธ":"26f9","โน๐ป":"26f9-1f3fb","โน๐ผ":"26f9-1f3fc","โน๐ฝ":"26f9-1f3fd","โน๐พ":"26f9-1f3fe","โน๐ฟ":"26f9-1f3ff","๐๏ธ":"1f3cb","๐๐ป":"1f3cb-1f3fb","๐๐ผ":"1f3cb-1f3fc","๐๐ฝ":"1f3cb-1f3fd","๐๐พ":"1f3cb-1f3fe","๐๐ฟ":"1f3cb-1f3ff","๐ด๐ป":"1f6b4-1f3fb","๐ด๐ผ":"1f6b4-1f3fc","๐ด๐ฝ":"1f6b4-1f3fd","๐ด๐พ":"1f6b4-1f3fe","๐ด๐ฟ":"1f6b4-1f3ff","๐ต๐ป":"1f6b5-1f3fb","๐ต๐ผ":"1f6b5-1f3fc","๐ต๐ฝ":"1f6b5-1f3fd","๐ต๐พ":"1f6b5-1f3fe","๐ต๐ฟ":"1f6b5-1f3ff","๐๏ธ":"1f3ce","๐๏ธ":"1f3cd","๐คธ๐ป":"1f938-1f3fb","๐คธ๐ผ":"1f938-1f3fc","๐คธ๐ฝ":"1f938-1f3fd","๐คธ๐พ":"1f938-1f3fe","๐คธ๐ฟ":"1f938-1f3ff","๐คฝ๐ป":"1f93d-1f3fb","๐คฝ๐ผ":"1f93d-1f3fc","๐คฝ๐ฝ":"1f93d-1f3fd","๐คฝ๐พ":"1f93d-1f3fe","๐คฝ๐ฟ":"1f93d-1f3ff","๐คพ๐ป":"1f93e-1f3fb","๐คพ๐ผ":"1f93e-1f3fc","๐คพ๐ฝ":"1f93e-1f3fd","๐คพ๐พ":"1f93e-1f3fe","๐คพ๐ฟ":"1f93e-1f3ff","๐คน๐ป":"1f939-1f3fb","๐คน๐ผ":"1f939-1f3fc","๐คน๐ฝ":"1f939-1f3fd","๐คน๐พ":"1f939-1f3fe","๐คน๐ฟ":"1f939-1f3ff","๐คณ๐ป":"1f933-1f3fb","๐คณ๐ผ":"1f933-1f3fc","๐คณ๐ฝ":"1f933-1f3fd","๐คณ๐พ":"1f933-1f3fe","๐คณ๐ฟ":"1f933-1f3ff","๐ช๐ป":"1f4aa-1f3fb","๐ช๐ผ":"1f4aa-1f3fc","๐ช๐ฝ":"1f4aa-1f3fd","๐ช๐พ":"1f4aa-1f3fe","๐ช๐ฟ":"1f4aa-1f3ff","๐๐ป":"1f448-1f3fb","๐๐ผ":"1f448-1f3fc","๐๐ฝ":"1f448-1f3fd","๐๐พ":"1f448-1f3fe","๐๐ฟ":"1f448-1f3ff","๐๐ป":"1f449-1f3fb","๐๐ผ":"1f449-1f3fc","๐๐ฝ":"1f449-1f3fd","๐๐พ":"1f449-1f3fe","๐๐ฟ":"1f449-1f3ff","โ๏ธ":"261d","โ๐ป":"261d-1f3fb","โ๐ผ":"261d-1f3fc","โ๐ฝ":"261d-1f3fd","โ๐พ":"261d-1f3fe","โ๐ฟ":"261d-1f3ff","๐๐ป":"1f446-1f3fb","๐๐ผ":"1f446-1f3fc","๐๐ฝ":"1f446-1f3fd","๐๐พ":"1f446-1f3fe","๐๐ฟ":"1f446-1f3ff","๐๐ป":"1f595-1f3fb","๐๐ผ":"1f595-1f3fc","๐๐ฝ":"1f595-1f3fd","๐๐พ":"1f595-1f3fe","๐๐ฟ":"1f595-1f3ff","๐๐ป":"1f447-1f3fb","๐๐ผ":"1f447-1f3fc","๐๐ฝ":"1f447-1f3fd","๐๐พ":"1f447-1f3fe","๐๐ฟ":"1f447-1f3ff","โ๏ธ":"270c","โ๐ป":"270c-1f3fb","โ๐ผ":"270c-1f3fc","โ๐ฝ":"270c-1f3fd","โ๐พ":"270c-1f3fe","โ๐ฟ":"270c-1f3ff","๐ค๐ป":"1f91e-1f3fb","๐ค๐ผ":"1f91e-1f3fc","๐ค๐ฝ":"1f91e-1f3fd","๐ค๐พ":"1f91e-1f3fe","๐ค๐ฟ":"1f91e-1f3ff","๐๐ป":"1f596-1f3fb","๐๐ผ":"1f596-1f3fc","๐๐ฝ":"1f596-1f3fd","๐๐พ":"1f596-1f3fe","๐๐ฟ":"1f596-1f3ff","๐ค๐ป":"1f918-1f3fb","๐ค๐ผ":"1f918-1f3fc","๐ค๐ฝ":"1f918-1f3fd","๐ค๐พ":"1f918-1f3fe","๐ค๐ฟ":"1f918-1f3ff","๐ค๐ป":"1f919-1f3fb","๐ค๐ผ":"1f919-1f3fc","๐ค๐ฝ":"1f919-1f3fd","๐ค๐พ":"1f919-1f3fe","๐ค๐ฟ":"1f919-1f3ff","๐๏ธ":"1f590","๐๐ป":"1f590-1f3fb","๐๐ผ":"1f590-1f3fc","๐๐ฝ":"1f590-1f3fd","๐๐พ":"1f590-1f3fe","๐๐ฟ":"1f590-1f3ff","โ๐ป":"270b-1f3fb","โ๐ผ":"270b-1f3fc","โ๐ฝ":"270b-1f3fd","โ๐พ":"270b-1f3fe","โ๐ฟ":"270b-1f3ff","๐๐ป":"1f44c-1f3fb","๐๐ผ":"1f44c-1f3fc","๐๐ฝ":"1f44c-1f3fd","๐๐พ":"1f44c-1f3fe","๐๐ฟ":"1f44c-1f3ff","๐๐ป":"1f44d-1f3fb","๐๐ผ":"1f44d-1f3fc","๐๐ฝ":"1f44d-1f3fd","๐๐พ":"1f44d-1f3fe","๐๐ฟ":"1f44d-1f3ff","๐๐ป":"1f44e-1f3fb","๐๐ผ":"1f44e-1f3fc","๐๐ฝ":"1f44e-1f3fd","๐๐พ":"1f44e-1f3fe","๐๐ฟ":"1f44e-1f3ff","โ๐ป":"270a-1f3fb","โ๐ผ":"270a-1f3fc","โ๐ฝ":"270a-1f3fd","โ๐พ":"270a-1f3fe","โ๐ฟ":"270a-1f3ff","๐๐ป":"1f44a-1f3fb","๐๐ผ":"1f44a-1f3fc","๐๐ฝ":"1f44a-1f3fd","๐๐พ":"1f44a-1f3fe","๐๐ฟ":"1f44a-1f3ff","๐ค๐ป":"1f91b-1f3fb","๐ค๐ผ":"1f91b-1f3fc","๐ค๐ฝ":"1f91b-1f3fd","๐ค๐พ":"1f91b-1f3fe","๐ค๐ฟ":"1f91b-1f3ff","๐ค๐ป":"1f91c-1f3fb","๐ค๐ผ":"1f91c-1f3fc","๐ค๐ฝ":"1f91c-1f3fd","๐ค๐พ":"1f91c-1f3fe","๐ค๐ฟ":"1f91c-1f3ff","๐ค๐ป":"1f91a-1f3fb","๐ค๐ผ":"1f91a-1f3fc","๐ค๐ฝ":"1f91a-1f3fd","๐ค๐พ":"1f91a-1f3fe","๐ค๐ฟ":"1f91a-1f3ff","๐๐ป":"1f44b-1f3fb","๐๐ผ":"1f44b-1f3fc","๐๐ฝ":"1f44b-1f3fd","๐๐พ":"1f44b-1f3fe","๐๐ฟ":"1f44b-1f3ff","๐ค๐ป":"1f91f-1f3fb","๐ค๐ผ":"1f91f-1f3fc","๐ค๐ฝ":"1f91f-1f3fd","๐ค๐พ":"1f91f-1f3fe","๐ค๐ฟ":"1f91f-1f3ff","โ๏ธ":"270d","โ๐ป":"270d-1f3fb","โ๐ผ":"270d-1f3fc","โ๐ฝ":"270d-1f3fd","โ๐พ":"270d-1f3fe","โ๐ฟ":"270d-1f3ff","๐๐ป":"1f44f-1f3fb","๐๐ผ":"1f44f-1f3fc","๐๐ฝ":"1f44f-1f3fd","๐๐พ":"1f44f-1f3fe","๐๐ฟ":"1f44f-1f3ff","๐๐ป":"1f450-1f3fb","๐๐ผ":"1f450-1f3fc","๐๐ฝ":"1f450-1f3fd","๐๐พ":"1f450-1f3fe","๐๐ฟ":"1f450-1f3ff","๐๐ป":"1f64c-1f3fb","๐๐ผ":"1f64c-1f3fc","๐๐ฝ":"1f64c-1f3fd","๐๐พ":"1f64c-1f3fe","๐๐ฟ":"1f64c-1f3ff","๐คฒ๐ป":"1f932-1f3fb","๐คฒ๐ผ":"1f932-1f3fc","๐คฒ๐ฝ":"1f932-1f3fd","๐คฒ๐พ":"1f932-1f3fe","๐คฒ๐ฟ":"1f932-1f3ff","๐๐ป":"1f64f-1f3fb","๐๐ผ":"1f64f-1f3fc","๐๐ฝ":"1f64f-1f3fd","๐๐พ":"1f64f-1f3fe","๐๐ฟ":"1f64f-1f3ff","๐ ๐ป":"1f485-1f3fb","๐ ๐ผ":"1f485-1f3fc","๐ ๐ฝ":"1f485-1f3fd","๐ ๐พ":"1f485-1f3fe","๐ ๐ฟ":"1f485-1f3ff","๐๐ป":"1f442-1f3fb","๐๐ผ":"1f442-1f3fc","๐๐ฝ":"1f442-1f3fd","๐๐พ":"1f442-1f3fe","๐๐ฟ":"1f442-1f3ff","๐๐ป":"1f443-1f3fb","๐๐ผ":"1f443-1f3fc","๐๐ฝ":"1f443-1f3fd","๐๐พ":"1f443-1f3fe","๐๐ฟ":"1f443-1f3ff","๐๏ธ":"1f441","โค๏ธ":"2764","โฃ๏ธ":"2763","๐จ๏ธ":"1f5e8","๐ฏ๏ธ":"1f5ef","๐ณ๏ธ":"1f573","๐ถ๏ธ":"1f576","๐๏ธ":"1f6cd","โ๏ธ":"26d1","๐ฟ๏ธ":"1f43f","๐๏ธ":"1f54a","๐ท๏ธ":"1f577","๐ธ๏ธ":"1f578","๐ต๏ธ":"1f3f5","โ๏ธ":"2618","๐ถ๏ธ":"1f336","๐ฝ๏ธ":"1f37d","๐บ๏ธ":"1f5fa","๐๏ธ":"1f3d4","โฐ๏ธ":"26f0","๐๏ธ":"1f3d5","๐๏ธ":"1f3d6","๐๏ธ":"1f3dc","๐๏ธ":"1f3dd","๐๏ธ":"1f3de","๐๏ธ":"1f3df","๐๏ธ":"1f3db","๐๏ธ":"1f3d7","๐๏ธ":"1f3d8","๐๏ธ":"1f3d9","๐๏ธ":"1f3da","โฉ๏ธ":"26e9","โจ๏ธ":"2668","๐ผ๏ธ":"1f5bc","๐ฃ๏ธ":"1f6e3","๐ค๏ธ":"1f6e4","๐ณ๏ธ":"1f6f3","โด๏ธ":"26f4","๐ฅ๏ธ":"1f6e5","โ๏ธ":"2708","๐ฉ๏ธ":"1f6e9","๐ฐ๏ธ":"1f6f0","๐๏ธ":"1f6ce","๐๏ธ":"1f6cf","๐๏ธ":"1f6cb","โฑ๏ธ":"23f1","โฒ๏ธ":"23f2","๐ฐ๏ธ":"1f570","๐ก๏ธ":"1f321","โ๏ธ":"2600","โ๏ธ":"2601","โ๏ธ":"26c8","๐ค๏ธ":"1f324","๐ฅ๏ธ":"1f325","๐ฆ๏ธ":"1f326","๐ง๏ธ":"1f327","๐จ๏ธ":"1f328","๐ฉ๏ธ":"1f329","๐ช๏ธ":"1f32a","๐ซ๏ธ":"1f32b","๐ฌ๏ธ":"1f32c","โ๏ธ":"2602","โฑ๏ธ":"26f1","โ๏ธ":"2744","โ๏ธ":"2603","โ๏ธ":"2604","๐๏ธ":"1f397","๐๏ธ":"1f39f","๐๏ธ":"1f396","โธ๏ธ":"26f8","๐น๏ธ":"1f579","โ ๏ธ":"2660","โฅ๏ธ":"2665","โฆ๏ธ":"2666","โฃ๏ธ":"2663","๐๏ธ":"1f399","๐๏ธ":"1f39a","๐๏ธ":"1f39b","โ๏ธ":"260e","๐ฅ๏ธ":"1f5a5","๐จ๏ธ":"1f5a8","โจ๏ธ":"2328","๐ฑ๏ธ":"1f5b1","๐ฒ๏ธ":"1f5b2","๐๏ธ":"1f39e","๐ฝ๏ธ":"1f4fd","๐ฏ๏ธ":"1f56f","๐๏ธ":"1f5de","๐ท๏ธ":"1f3f7","โ๏ธ":"2709","๐ณ๏ธ":"1f5f3","โ๏ธ":"270f","โ๏ธ":"2712","๐๏ธ":"1f58b","๐๏ธ":"1f58a","๐๏ธ":"1f58c","๐๏ธ":"1f58d","๐๏ธ":"1f5c2","๐๏ธ":"1f5d2","๐๏ธ":"1f5d3","๐๏ธ":"1f587","โ๏ธ":"2702","๐๏ธ":"1f5c3","๐๏ธ":"1f5c4","๐๏ธ":"1f5d1","๐๏ธ":"1f5dd","โ๏ธ":"26cf","โ๏ธ":"2692","๐ ๏ธ":"1f6e0","๐ก๏ธ":"1f5e1","โ๏ธ":"2694","๐ก๏ธ":"1f6e1","โ๏ธ":"2699","๐๏ธ":"1f5dc","โ๏ธ":"2697","โ๏ธ":"2696","โ๏ธ":"26d3","โฐ๏ธ":"26b0","โฑ๏ธ":"26b1","๐ข๏ธ":"1f6e2","โ ๏ธ":"26a0","โข๏ธ":"2622","โฃ๏ธ":"2623","โฌ๏ธ":"2b06","โ๏ธ":"2197","โก๏ธ":"27a1","โ๏ธ":"2198","โฌ๏ธ":"2b07","โ๏ธ":"2199","โฌ ๏ธ":"2b05","โ๏ธ":"2196","โ๏ธ":"2195","โ๏ธ":"2194","โฉ๏ธ":"21a9","โช๏ธ":"21aa","โคด๏ธ":"2934","โคต๏ธ":"2935","โ๏ธ":"269b","๐๏ธ":"1f549","โก๏ธ":"2721","โธ๏ธ":"2638","โฏ๏ธ":"262f","โ๏ธ":"271d","โฆ๏ธ":"2626","โช๏ธ":"262a","โฎ๏ธ":"262e","โถ๏ธ":"25b6","โญ๏ธ":"23ed","โฏ๏ธ":"23ef","โ๏ธ":"25c0","โฎ๏ธ":"23ee","โธ๏ธ":"23f8","โน๏ธ":"23f9","โบ๏ธ":"23fa","โ๏ธ":"23cf","โ๏ธ":"2640","โ๏ธ":"2642","โ๏ธ":"2695","โป๏ธ":"267b","โ๏ธ":"269c","โ๏ธ":"2611","โ๏ธ":"2714","โ๏ธ":"2716","ใฝ๏ธ":"303d","โณ๏ธ":"2733","โด๏ธ":"2734","โ๏ธ":"2747","โผ๏ธ":"203c","โ๏ธ":"2049","ใฐ๏ธ":"3030","ยฉ๏ธ":"a9","ยฎ๏ธ":"ae","โข๏ธ":"2122","#โฃ":"23-20e3","*โฃ":"2a-20e3","0โฃ":"30-20e3","1โฃ":"31-20e3","2โฃ":"32-20e3","3โฃ":"33-20e3","4โฃ":"34-20e3","5โฃ":"35-20e3","6โฃ":"36-20e3","7โฃ":"37-20e3","8โฃ":"38-20e3","9โฃ":"39-20e3","๐ ฐ๏ธ":"1f170","๐ ฑ๏ธ":"1f171","โน๏ธ":"2139","โ๏ธ":"24c2","๐ พ๏ธ":"1f17e","๐ ฟ๏ธ":"1f17f","๐๏ธ":"1f202","๐ท๏ธ":"1f237","ใ๏ธ":"3297","ใ๏ธ":"3299","โช๏ธ":"25aa","โซ๏ธ":"25ab","โป๏ธ":"25fb","โผ๏ธ":"25fc","๐ณ๏ธ":"1f3f3","๐ฆ๐จ":"1f1e6-1f1e8","๐ฆ๐ฉ":"1f1e6-1f1e9","๐ฆ๐ช":"1f1e6-1f1ea","๐ฆ๐ซ":"1f1e6-1f1eb","๐ฆ๐ฌ":"1f1e6-1f1ec","๐ฆ๐ฎ":"1f1e6-1f1ee","๐ฆ๐ฑ":"1f1e6-1f1f1","๐ฆ๐ฒ":"1f1e6-1f1f2","๐ฆ๐ด":"1f1e6-1f1f4","๐ฆ๐ถ":"1f1e6-1f1f6","๐ฆ๐ท":"1f1e6-1f1f7","๐ฆ๐ธ":"1f1e6-1f1f8","๐ฆ๐น":"1f1e6-1f1f9","๐ฆ๐บ":"1f1e6-1f1fa","๐ฆ๐ผ":"1f1e6-1f1fc","๐ฆ๐ฝ":"1f1e6-1f1fd","๐ฆ๐ฟ":"1f1e6-1f1ff","๐ง๐ฆ":"1f1e7-1f1e6","๐ง๐ง":"1f1e7-1f1e7","๐ง๐ฉ":"1f1e7-1f1e9","๐ง๐ช":"1f1e7-1f1ea","๐ง๐ซ":"1f1e7-1f1eb","๐ง๐ฌ":"1f1e7-1f1ec","๐ง๐ญ":"1f1e7-1f1ed","๐ง๐ฎ":"1f1e7-1f1ee","๐ง๐ฏ":"1f1e7-1f1ef","๐ง๐ฑ":"1f1e7-1f1f1","๐ง๐ฒ":"1f1e7-1f1f2","๐ง๐ณ":"1f1e7-1f1f3","๐ง๐ด":"1f1e7-1f1f4","๐ง๐ถ":"1f1e7-1f1f6","๐ง๐ท":"1f1e7-1f1f7","๐ง๐ธ":"1f1e7-1f1f8","๐ง๐น":"1f1e7-1f1f9","๐ง๐ป":"1f1e7-1f1fb","๐ง๐ผ":"1f1e7-1f1fc","๐ง๐พ":"1f1e7-1f1fe","๐ง๐ฟ":"1f1e7-1f1ff","๐จ๐ฆ":"1f1e8-1f1e6","๐จ๐จ":"1f1e8-1f1e8","๐จ๐ฉ":"1f1e8-1f1e9","๐จ๐ซ":"1f1e8-1f1eb","๐จ๐ฌ":"1f1e8-1f1ec","๐จ๐ญ":"1f1e8-1f1ed","๐จ๐ฎ":"1f1e8-1f1ee","๐จ๐ฐ":"1f1e8-1f1f0","๐จ๐ฑ":"1f1e8-1f1f1","๐จ๐ฒ":"1f1e8-1f1f2","๐จ๐ณ":"1f1e8-1f1f3","๐จ๐ด":"1f1e8-1f1f4","๐จ๐ต":"1f1e8-1f1f5","๐จ๐ท":"1f1e8-1f1f7","๐จ๐บ":"1f1e8-1f1fa","๐จ๐ป":"1f1e8-1f1fb","๐จ๐ผ":"1f1e8-1f1fc","๐จ๐ฝ":"1f1e8-1f1fd","๐จ๐พ":"1f1e8-1f1fe","๐จ๐ฟ":"1f1e8-1f1ff","๐ฉ๐ช":"1f1e9-1f1ea","๐ฉ๐ฌ":"1f1e9-1f1ec","๐ฉ๐ฏ":"1f1e9-1f1ef","๐ฉ๐ฐ":"1f1e9-1f1f0","๐ฉ๐ฒ":"1f1e9-1f1f2","๐ฉ๐ด":"1f1e9-1f1f4","๐ฉ๐ฟ":"1f1e9-1f1ff","๐ช๐ฆ":"1f1ea-1f1e6","๐ช๐จ":"1f1ea-1f1e8","๐ช๐ช":"1f1ea-1f1ea","๐ช๐ฌ":"1f1ea-1f1ec","๐ช๐ญ":"1f1ea-1f1ed","๐ช๐ท":"1f1ea-1f1f7","๐ช๐ธ":"1f1ea-1f1f8","๐ช๐น":"1f1ea-1f1f9","๐ช๐บ":"1f1ea-1f1fa","๐ซ๐ฎ":"1f1eb-1f1ee","๐ซ๐ฏ":"1f1eb-1f1ef","๐ซ๐ฐ":"1f1eb-1f1f0","๐ซ๐ฒ":"1f1eb-1f1f2","๐ซ๐ด":"1f1eb-1f1f4","๐ซ๐ท":"1f1eb-1f1f7","๐ฌ๐ฆ":"1f1ec-1f1e6","๐ฌ๐ง":"1f1ec-1f1e7","๐ฌ๐ฉ":"1f1ec-1f1e9","๐ฌ๐ช":"1f1ec-1f1ea","๐ฌ๐ซ":"1f1ec-1f1eb","๐ฌ๐ฌ":"1f1ec-1f1ec","๐ฌ๐ญ":"1f1ec-1f1ed","๐ฌ๐ฎ":"1f1ec-1f1ee","๐ฌ๐ฑ":"1f1ec-1f1f1","๐ฌ๐ฒ":"1f1ec-1f1f2","๐ฌ๐ณ":"1f1ec-1f1f3","๐ฌ๐ต":"1f1ec-1f1f5","๐ฌ๐ถ":"1f1ec-1f1f6","๐ฌ๐ท":"1f1ec-1f1f7","๐ฌ๐ธ":"1f1ec-1f1f8","๐ฌ๐น":"1f1ec-1f1f9","๐ฌ๐บ":"1f1ec-1f1fa","๐ฌ๐ผ":"1f1ec-1f1fc","๐ฌ๐พ":"1f1ec-1f1fe","๐ญ๐ฐ":"1f1ed-1f1f0","๐ญ๐ฒ":"1f1ed-1f1f2","๐ญ๐ณ":"1f1ed-1f1f3","๐ญ๐ท":"1f1ed-1f1f7","๐ญ๐น":"1f1ed-1f1f9","๐ญ๐บ":"1f1ed-1f1fa","๐ฎ๐จ":"1f1ee-1f1e8","๐ฎ๐ฉ":"1f1ee-1f1e9","๐ฎ๐ช":"1f1ee-1f1ea","๐ฎ๐ฑ":"1f1ee-1f1f1","๐ฎ๐ฒ":"1f1ee-1f1f2","๐ฎ๐ณ":"1f1ee-1f1f3","๐ฎ๐ด":"1f1ee-1f1f4","๐ฎ๐ถ":"1f1ee-1f1f6","๐ฎ๐ท":"1f1ee-1f1f7","๐ฎ๐ธ":"1f1ee-1f1f8","๐ฎ๐น":"1f1ee-1f1f9","๐ฏ๐ช":"1f1ef-1f1ea","๐ฏ๐ฒ":"1f1ef-1f1f2","๐ฏ๐ด":"1f1ef-1f1f4","๐ฏ๐ต":"1f1ef-1f1f5","๐ฐ๐ช":"1f1f0-1f1ea","๐ฐ๐ฌ":"1f1f0-1f1ec","๐ฐ๐ญ":"1f1f0-1f1ed","๐ฐ๐ฎ":"1f1f0-1f1ee","๐ฐ๐ฒ":"1f1f0-1f1f2","๐ฐ๐ณ":"1f1f0-1f1f3","๐ฐ๐ต":"1f1f0-1f1f5","๐ฐ๐ท":"1f1f0-1f1f7","๐ฐ๐ผ":"1f1f0-1f1fc","๐ฐ๐พ":"1f1f0-1f1fe","๐ฐ๐ฟ":"1f1f0-1f1ff","๐ฑ๐ฆ":"1f1f1-1f1e6","๐ฑ๐ง":"1f1f1-1f1e7","๐ฑ๐จ":"1f1f1-1f1e8","๐ฑ๐ฎ":"1f1f1-1f1ee","๐ฑ๐ฐ":"1f1f1-1f1f0","๐ฑ๐ท":"1f1f1-1f1f7","๐ฑ๐ธ":"1f1f1-1f1f8","๐ฑ๐น":"1f1f1-1f1f9","๐ฑ๐บ":"1f1f1-1f1fa","๐ฑ๐ป":"1f1f1-1f1fb","๐ฑ๐พ":"1f1f1-1f1fe","๐ฒ๐ฆ":"1f1f2-1f1e6","๐ฒ๐จ":"1f1f2-1f1e8","๐ฒ๐ฉ":"1f1f2-1f1e9","๐ฒ๐ช":"1f1f2-1f1ea","๐ฒ๐ซ":"1f1f2-1f1eb","๐ฒ๐ฌ":"1f1f2-1f1ec","๐ฒ๐ญ":"1f1f2-1f1ed","๐ฒ๐ฐ":"1f1f2-1f1f0","๐ฒ๐ฑ":"1f1f2-1f1f1","๐ฒ๐ฒ":"1f1f2-1f1f2","๐ฒ๐ณ":"1f1f2-1f1f3","๐ฒ๐ด":"1f1f2-1f1f4","๐ฒ๐ต":"1f1f2-1f1f5","๐ฒ๐ถ":"1f1f2-1f1f6","๐ฒ๐ท":"1f1f2-1f1f7","๐ฒ๐ธ":"1f1f2-1f1f8","๐ฒ๐น":"1f1f2-1f1f9","๐ฒ๐บ":"1f1f2-1f1fa","๐ฒ๐ป":"1f1f2-1f1fb","๐ฒ๐ผ":"1f1f2-1f1fc","๐ฒ๐ฝ":"1f1f2-1f1fd","๐ฒ๐พ":"1f1f2-1f1fe","๐ฒ๐ฟ":"1f1f2-1f1ff","๐ณ๐ฆ":"1f1f3-1f1e6","๐ณ๐จ":"1f1f3-1f1e8","๐ณ๐ช":"1f1f3-1f1ea","๐ณ๐ซ":"1f1f3-1f1eb","๐ณ๐ฌ":"1f1f3-1f1ec","๐ณ๐ฎ":"1f1f3-1f1ee","๐ณ๐ฑ":"1f1f3-1f1f1","๐ณ๐ด":"1f1f3-1f1f4","๐ณ๐ต":"1f1f3-1f1f5","๐ณ๐ท":"1f1f3-1f1f7","๐ณ๐บ":"1f1f3-1f1fa","๐ณ๐ฟ":"1f1f3-1f1ff","๐ด๐ฒ":"1f1f4-1f1f2","๐ต๐ฆ":"1f1f5-1f1e6","๐ต๐ช":"1f1f5-1f1ea","๐ต๐ซ":"1f1f5-1f1eb","๐ต๐ฌ":"1f1f5-1f1ec","๐ต๐ญ":"1f1f5-1f1ed","๐ต๐ฐ":"1f1f5-1f1f0","๐ต๐ฑ":"1f1f5-1f1f1","๐ต๐ฒ":"1f1f5-1f1f2","๐ต๐ณ":"1f1f5-1f1f3","๐ต๐ท":"1f1f5-1f1f7","๐ต๐ธ":"1f1f5-1f1f8","๐ต๐น":"1f1f5-1f1f9","๐ต๐ผ":"1f1f5-1f1fc","๐ต๐พ":"1f1f5-1f1fe","๐ถ๐ฆ":"1f1f6-1f1e6","๐ท๐ช":"1f1f7-1f1ea","๐ท๐ด":"1f1f7-1f1f4","๐ท๐ธ":"1f1f7-1f1f8","๐ท๐บ":"1f1f7-1f1fa","๐ท๐ผ":"1f1f7-1f1fc","๐ธ๐ฆ":"1f1f8-1f1e6","๐ธ๐ง":"1f1f8-1f1e7","๐ธ๐จ":"1f1f8-1f1e8","๐ธ๐ฉ":"1f1f8-1f1e9","๐ธ๐ช":"1f1f8-1f1ea","๐ธ๐ฌ":"1f1f8-1f1ec","๐ธ๐ญ":"1f1f8-1f1ed","๐ธ๐ฎ":"1f1f8-1f1ee","๐ธ๐ฏ":"1f1f8-1f1ef","๐ธ๐ฐ":"1f1f8-1f1f0","๐ธ๐ฑ":"1f1f8-1f1f1","๐ธ๐ฒ":"1f1f8-1f1f2","๐ธ๐ณ":"1f1f8-1f1f3","๐ธ๐ด":"1f1f8-1f1f4","๐ธ๐ท":"1f1f8-1f1f7","๐ธ๐ธ":"1f1f8-1f1f8","๐ธ๐น":"1f1f8-1f1f9","๐ธ๐ป":"1f1f8-1f1fb","๐ธ๐ฝ":"1f1f8-1f1fd","๐ธ๐พ":"1f1f8-1f1fe","๐ธ๐ฟ":"1f1f8-1f1ff","๐น๐ฆ":"1f1f9-1f1e6","๐น๐จ":"1f1f9-1f1e8","๐น๐ฉ":"1f1f9-1f1e9","๐น๐ซ":"1f1f9-1f1eb","๐น๐ฌ":"1f1f9-1f1ec","๐น๐ญ":"1f1f9-1f1ed","๐น๐ฏ":"1f1f9-1f1ef","๐น๐ฐ":"1f1f9-1f1f0","๐น๐ฑ":"1f1f9-1f1f1","๐น๐ฒ":"1f1f9-1f1f2","๐น๐ณ":"1f1f9-1f1f3","๐น๐ด":"1f1f9-1f1f4","๐น๐ท":"1f1f9-1f1f7","๐น๐น":"1f1f9-1f1f9","๐น๐ป":"1f1f9-1f1fb","๐น๐ผ":"1f1f9-1f1fc","๐น๐ฟ":"1f1f9-1f1ff","๐บ๐ฆ":"1f1fa-1f1e6","๐บ๐ฌ":"1f1fa-1f1ec","๐บ๐ฒ":"1f1fa-1f1f2","๐บ๐ณ":"1f1fa-1f1f3","๐บ๐ธ":"1f1fa-1f1f8","๐บ๐พ":"1f1fa-1f1fe","๐บ๐ฟ":"1f1fa-1f1ff","๐ป๐ฆ":"1f1fb-1f1e6","๐ป๐จ":"1f1fb-1f1e8","๐ป๐ช":"1f1fb-1f1ea","๐ป๐ฌ":"1f1fb-1f1ec","๐ป๐ฎ":"1f1fb-1f1ee","๐ป๐ณ":"1f1fb-1f1f3","๐ป๐บ":"1f1fb-1f1fa","๐ผ๐ซ":"1f1fc-1f1eb","๐ผ๐ธ":"1f1fc-1f1f8","๐ฝ๐ฐ":"1f1fd-1f1f0","๐พ๐ช":"1f1fe-1f1ea","๐พ๐น":"1f1fe-1f1f9","๐ฟ๐ฆ":"1f1ff-1f1e6","๐ฟ๐ฒ":"1f1ff-1f1f2","๐ฟ๐ผ":"1f1ff-1f1fc","๐จโโ":"1f468-200d-2695-fe0f","๐ฉโโ":"1f469-200d-2695-fe0f","๐จโ๐":"1f468-200d-1f393","๐ฉโ๐":"1f469-200d-1f393","๐จโ๐ซ":"1f468-200d-1f3eb","๐ฉโ๐ซ":"1f469-200d-1f3eb","๐จโโ":"1f468-200d-2696-fe0f","๐ฉโโ":"1f469-200d-2696-fe0f","๐จโ๐พ":"1f468-200d-1f33e","๐ฉโ๐พ":"1f469-200d-1f33e","๐จโ๐ณ":"1f468-200d-1f373","๐ฉโ๐ณ":"1f469-200d-1f373","๐จโ๐ง":"1f468-200d-1f527","๐ฉโ๐ง":"1f469-200d-1f527","๐จโ๐ญ":"1f468-200d-1f3ed","๐ฉโ๐ญ":"1f469-200d-1f3ed","๐จโ๐ผ":"1f468-200d-1f4bc","๐ฉโ๐ผ":"1f469-200d-1f4bc","๐จโ๐ฌ":"1f468-200d-1f52c","๐ฉโ๐ฌ":"1f469-200d-1f52c","๐จโ๐ป":"1f468-200d-1f4bb","๐ฉโ๐ป":"1f469-200d-1f4bb","๐จโ๐ค":"1f468-200d-1f3a4","๐ฉโ๐ค":"1f469-200d-1f3a4","๐จโ๐จ":"1f468-200d-1f3a8","๐ฉโ๐จ":"1f469-200d-1f3a8","๐จโโ":"1f468-200d-2708-fe0f","๐ฉโโ":"1f469-200d-2708-fe0f","๐จโ๐":"1f468-200d-1f680","๐ฉโ๐":"1f469-200d-1f680","๐จโ๐":"1f468-200d-1f692","๐ฉโ๐":"1f469-200d-1f692","๐ฎโโ":"1f46e-200d-2642-fe0f","๐ฎโโ":"1f46e-200d-2640-fe0f","๐ตโโ":"1f575-fe0f-200d-2642-fe0f","๐ตโโ":"1f575-fe0f-200d-2640-fe0f","๐โโ":"1f482-200d-2642-fe0f","๐โโ":"1f482-200d-2640-fe0f","๐ทโโ":"1f477-200d-2642-fe0f","๐ทโโ":"1f477-200d-2640-fe0f","๐ณโโ":"1f473-200d-2642-fe0f","๐ณโโ":"1f473-200d-2640-fe0f","๐ฑโโ":"1f471-200d-2642-fe0f","๐ฑโโ":"1f471-200d-2640-fe0f","๐งโโ":"1f9d9-200d-2640-fe0f","๐งโโ":"1f9d9-200d-2642-fe0f","๐งโโ":"1f9da-200d-2640-fe0f","๐งโโ":"1f9da-200d-2642-fe0f","๐งโโ":"1f9db-200d-2640-fe0f","๐งโโ":"1f9db-200d-2642-fe0f","๐งโโ":"1f9dc-200d-2640-fe0f","๐งโโ":"1f9dc-200d-2642-fe0f","๐งโโ":"1f9dd-200d-2640-fe0f","๐งโโ":"1f9dd-200d-2642-fe0f","๐งโโ":"1f9de-200d-2640-fe0f","๐งโโ":"1f9de-200d-2642-fe0f","๐งโโ":"1f9df-200d-2640-fe0f","๐งโโ":"1f9df-200d-2642-fe0f","๐โโ":"1f64d-200d-2642-fe0f","๐โโ":"1f64d-200d-2640-fe0f","๐โโ":"1f64e-200d-2642-fe0f","๐โโ":"1f64e-200d-2640-fe0f","๐ โโ":"1f645-200d-2642-fe0f","๐ โโ":"1f645-200d-2640-fe0f","๐โโ":"1f646-200d-2642-fe0f","๐โโ":"1f646-200d-2640-fe0f","๐โโ":"1f481-200d-2642-fe0f","๐โโ":"1f481-200d-2640-fe0f","๐โโ":"1f64b-200d-2642-fe0f","๐โโ":"1f64b-200d-2640-fe0f","๐โโ":"1f647-200d-2642-fe0f","๐โโ":"1f647-200d-2640-fe0f","๐คฆโโ":"1f926-200d-2642-fe0f","๐คฆโโ":"1f926-200d-2640-fe0f","๐คทโโ":"1f937-200d-2642-fe0f","๐คทโโ":"1f937-200d-2640-fe0f","๐โโ":"1f486-200d-2642-fe0f","๐โโ":"1f486-200d-2640-fe0f","๐โโ":"1f487-200d-2642-fe0f","๐โโ":"1f487-200d-2640-fe0f","๐ถโโ":"1f6b6-200d-2642-fe0f","๐ถโโ":"1f6b6-200d-2640-fe0f","๐โโ":"1f3c3-200d-2642-fe0f","๐โโ":"1f3c3-200d-2640-fe0f","๐ฏโโ":"1f46f-200d-2642-fe0f","๐ฏโโ":"1f46f-200d-2640-fe0f","๐งโโ":"1f9d6-200d-2640-fe0f","๐งโโ":"1f9d6-200d-2642-fe0f","๐งโโ":"1f9d7-200d-2640-fe0f","๐งโโ":"1f9d7-200d-2642-fe0f","๐งโโ":"1f9d8-200d-2640-fe0f","๐งโโ":"1f9d8-200d-2642-fe0f","๐โโ":"1f3cc-fe0f-200d-2642-fe0f","๐โโ":"1f3cc-fe0f-200d-2640-fe0f","๐โโ":"1f3c4-200d-2642-fe0f","๐โโ":"1f3c4-200d-2640-fe0f","๐ฃโโ":"1f6a3-200d-2642-fe0f","๐ฃโโ":"1f6a3-200d-2640-fe0f","๐โโ":"1f3ca-200d-2642-fe0f","๐โโ":"1f3ca-200d-2640-fe0f","โนโโ":"26f9-fe0f-200d-2642-fe0f","โนโโ":"26f9-fe0f-200d-2640-fe0f","๐โโ":"1f3cb-fe0f-200d-2642-fe0f","๐โโ":"1f3cb-fe0f-200d-2640-fe0f","๐ดโโ":"1f6b4-200d-2642-fe0f","๐ดโโ":"1f6b4-200d-2640-fe0f","๐ตโโ":"1f6b5-200d-2642-fe0f","๐ตโโ":"1f6b5-200d-2640-fe0f","๐คธโโ":"1f938-200d-2642-fe0f","๐คธโโ":"1f938-200d-2640-fe0f","๐คผโโ":"1f93c-200d-2642-fe0f","๐คผโโ":"1f93c-200d-2640-fe0f","๐คฝโโ":"1f93d-200d-2642-fe0f","๐คฝโโ":"1f93d-200d-2640-fe0f","๐คพโโ":"1f93e-200d-2642-fe0f","๐คพโโ":"1f93e-200d-2640-fe0f","๐คนโโ":"1f939-200d-2642-fe0f","๐คนโโ":"1f939-200d-2640-fe0f","๐จโ๐ฆ":"1f468-200d-1f466","๐จโ๐ง":"1f468-200d-1f467","๐ฉโ๐ฆ":"1f469-200d-1f466","๐ฉโ๐ง":"1f469-200d-1f467","๐โ๐จ":"1f441-200d-1f5e8","#๏ธโฃ":"23-20e3","*๏ธโฃ":"2a-20e3","0๏ธโฃ":"30-20e3","1๏ธโฃ":"31-20e3","2๏ธโฃ":"32-20e3","3๏ธโฃ":"33-20e3","4๏ธโฃ":"34-20e3","5๏ธโฃ":"35-20e3","6๏ธโฃ":"36-20e3","7๏ธโฃ":"37-20e3","8๏ธโฃ":"38-20e3","9๏ธโฃ":"39-20e3","๐ณโ๐":"1f3f3-fe0f-200d-1f308","๐จโโ๏ธ":"1f468-200d-2695-fe0f","๐จ๐ปโโ":"1f468-1f3fb-200d-2695-fe0f","๐จ๐ผโโ":"1f468-1f3fc-200d-2695-fe0f","๐จ๐ฝโโ":"1f468-1f3fd-200d-2695-fe0f","๐จ๐พโโ":"1f468-1f3fe-200d-2695-fe0f","๐จ๐ฟโโ":"1f468-1f3ff-200d-2695-fe0f","๐ฉโโ๏ธ":"1f469-200d-2695-fe0f","๐ฉ๐ปโโ":"1f469-1f3fb-200d-2695-fe0f","๐ฉ๐ผโโ":"1f469-1f3fc-200d-2695-fe0f","๐ฉ๐ฝโโ":"1f469-1f3fd-200d-2695-fe0f","๐ฉ๐พโโ":"1f469-1f3fe-200d-2695-fe0f","๐ฉ๐ฟโโ":"1f469-1f3ff-200d-2695-fe0f","๐จ๐ปโ๐":"1f468-1f3fb-200d-1f393","๐จ๐ผโ๐":"1f468-1f3fc-200d-1f393","๐จ๐ฝโ๐":"1f468-1f3fd-200d-1f393","๐จ๐พโ๐":"1f468-1f3fe-200d-1f393","๐จ๐ฟโ๐":"1f468-1f3ff-200d-1f393","๐ฉ๐ปโ๐":"1f469-1f3fb-200d-1f393","๐ฉ๐ผโ๐":"1f469-1f3fc-200d-1f393","๐ฉ๐ฝโ๐":"1f469-1f3fd-200d-1f393","๐ฉ๐พโ๐":"1f469-1f3fe-200d-1f393","๐ฉ๐ฟโ๐":"1f469-1f3ff-200d-1f393","๐จ๐ปโ๐ซ":"1f468-1f3fb-200d-1f3eb","๐จ๐ผโ๐ซ":"1f468-1f3fc-200d-1f3eb","๐จ๐ฝโ๐ซ":"1f468-1f3fd-200d-1f3eb","๐จ๐พโ๐ซ":"1f468-1f3fe-200d-1f3eb","๐จ๐ฟโ๐ซ":"1f468-1f3ff-200d-1f3eb","๐ฉ๐ปโ๐ซ":"1f469-1f3fb-200d-1f3eb","๐ฉ๐ผโ๐ซ":"1f469-1f3fc-200d-1f3eb","๐ฉ๐ฝโ๐ซ":"1f469-1f3fd-200d-1f3eb","๐ฉ๐พโ๐ซ":"1f469-1f3fe-200d-1f3eb","๐ฉ๐ฟโ๐ซ":"1f469-1f3ff-200d-1f3eb","๐จโโ๏ธ":"1f468-200d-2696-fe0f","๐จ๐ปโโ":"1f468-1f3fb-200d-2696-fe0f","๐จ๐ผโโ":"1f468-1f3fc-200d-2696-fe0f","๐จ๐ฝโโ":"1f468-1f3fd-200d-2696-fe0f","๐จ๐พโโ":"1f468-1f3fe-200d-2696-fe0f","๐จ๐ฟโโ":"1f468-1f3ff-200d-2696-fe0f","๐ฉโโ๏ธ":"1f469-200d-2696-fe0f","๐ฉ๐ปโโ":"1f469-1f3fb-200d-2696-fe0f","๐ฉ๐ผโโ":"1f469-1f3fc-200d-2696-fe0f","๐ฉ๐ฝโโ":"1f469-1f3fd-200d-2696-fe0f","๐ฉ๐พโโ":"1f469-1f3fe-200d-2696-fe0f","๐ฉ๐ฟโโ":"1f469-1f3ff-200d-2696-fe0f","๐จ๐ปโ๐พ":"1f468-1f3fb-200d-1f33e","๐จ๐ผโ๐พ":"1f468-1f3fc-200d-1f33e","๐จ๐ฝโ๐พ":"1f468-1f3fd-200d-1f33e","๐จ๐พโ๐พ":"1f468-1f3fe-200d-1f33e","๐จ๐ฟโ๐พ":"1f468-1f3ff-200d-1f33e","๐ฉ๐ปโ๐พ":"1f469-1f3fb-200d-1f33e","๐ฉ๐ผโ๐พ":"1f469-1f3fc-200d-1f33e","๐ฉ๐ฝโ๐พ":"1f469-1f3fd-200d-1f33e","๐ฉ๐พโ๐พ":"1f469-1f3fe-200d-1f33e","๐ฉ๐ฟโ๐พ":"1f469-1f3ff-200d-1f33e","๐จ๐ปโ๐ณ":"1f468-1f3fb-200d-1f373","๐จ๐ผโ๐ณ":"1f468-1f3fc-200d-1f373","๐จ๐ฝโ๐ณ":"1f468-1f3fd-200d-1f373","๐จ๐พโ๐ณ":"1f468-1f3fe-200d-1f373","๐จ๐ฟโ๐ณ":"1f468-1f3ff-200d-1f373","๐ฉ๐ปโ๐ณ":"1f469-1f3fb-200d-1f373","๐ฉ๐ผโ๐ณ":"1f469-1f3fc-200d-1f373","๐ฉ๐ฝโ๐ณ":"1f469-1f3fd-200d-1f373","๐ฉ๐พโ๐ณ":"1f469-1f3fe-200d-1f373","๐ฉ๐ฟโ๐ณ":"1f469-1f3ff-200d-1f373","๐จ๐ปโ๐ง":"1f468-1f3fb-200d-1f527","๐จ๐ผโ๐ง":"1f468-1f3fc-200d-1f527","๐จ๐ฝโ๐ง":"1f468-1f3fd-200d-1f527","๐จ๐พโ๐ง":"1f468-1f3fe-200d-1f527","๐จ๐ฟโ๐ง":"1f468-1f3ff-200d-1f527","๐ฉ๐ปโ๐ง":"1f469-1f3fb-200d-1f527","๐ฉ๐ผโ๐ง":"1f469-1f3fc-200d-1f527","๐ฉ๐ฝโ๐ง":"1f469-1f3fd-200d-1f527","๐ฉ๐พโ๐ง":"1f469-1f3fe-200d-1f527","๐ฉ๐ฟโ๐ง":"1f469-1f3ff-200d-1f527","๐จ๐ปโ๐ญ":"1f468-1f3fb-200d-1f3ed","๐จ๐ผโ๐ญ":"1f468-1f3fc-200d-1f3ed","๐จ๐ฝโ๐ญ":"1f468-1f3fd-200d-1f3ed","๐จ๐พโ๐ญ":"1f468-1f3fe-200d-1f3ed","๐จ๐ฟโ๐ญ":"1f468-1f3ff-200d-1f3ed","๐ฉ๐ปโ๐ญ":"1f469-1f3fb-200d-1f3ed","๐ฉ๐ผโ๐ญ":"1f469-1f3fc-200d-1f3ed","๐ฉ๐ฝโ๐ญ":"1f469-1f3fd-200d-1f3ed","๐ฉ๐พโ๐ญ":"1f469-1f3fe-200d-1f3ed","๐ฉ๐ฟโ๐ญ":"1f469-1f3ff-200d-1f3ed","๐จ๐ปโ๐ผ":"1f468-1f3fb-200d-1f4bc","๐จ๐ผโ๐ผ":"1f468-1f3fc-200d-1f4bc","๐จ๐ฝโ๐ผ":"1f468-1f3fd-200d-1f4bc","๐จ๐พโ๐ผ":"1f468-1f3fe-200d-1f4bc","๐จ๐ฟโ๐ผ":"1f468-1f3ff-200d-1f4bc","๐ฉ๐ปโ๐ผ":"1f469-1f3fb-200d-1f4bc","๐ฉ๐ผโ๐ผ":"1f469-1f3fc-200d-1f4bc","๐ฉ๐ฝโ๐ผ":"1f469-1f3fd-200d-1f4bc","๐ฉ๐พโ๐ผ":"1f469-1f3fe-200d-1f4bc","๐ฉ๐ฟโ๐ผ":"1f469-1f3ff-200d-1f4bc","๐จ๐ปโ๐ฌ":"1f468-1f3fb-200d-1f52c","๐จ๐ผโ๐ฌ":"1f468-1f3fc-200d-1f52c","๐จ๐ฝโ๐ฌ":"1f468-1f3fd-200d-1f52c","๐จ๐พโ๐ฌ":"1f468-1f3fe-200d-1f52c","๐จ๐ฟโ๐ฌ":"1f468-1f3ff-200d-1f52c","๐ฉ๐ปโ๐ฌ":"1f469-1f3fb-200d-1f52c","๐ฉ๐ผโ๐ฌ":"1f469-1f3fc-200d-1f52c","๐ฉ๐ฝโ๐ฌ":"1f469-1f3fd-200d-1f52c","๐ฉ๐พโ๐ฌ":"1f469-1f3fe-200d-1f52c","๐ฉ๐ฟโ๐ฌ":"1f469-1f3ff-200d-1f52c","๐จ๐ปโ๐ป":"1f468-1f3fb-200d-1f4bb","๐จ๐ผโ๐ป":"1f468-1f3fc-200d-1f4bb","๐จ๐ฝโ๐ป":"1f468-1f3fd-200d-1f4bb","๐จ๐พโ๐ป":"1f468-1f3fe-200d-1f4bb","๐จ๐ฟโ๐ป":"1f468-1f3ff-200d-1f4bb","๐ฉ๐ปโ๐ป":"1f469-1f3fb-200d-1f4bb","๐ฉ๐ผโ๐ป":"1f469-1f3fc-200d-1f4bb","๐ฉ๐ฝโ๐ป":"1f469-1f3fd-200d-1f4bb","๐ฉ๐พโ๐ป":"1f469-1f3fe-200d-1f4bb","๐ฉ๐ฟโ๐ป":"1f469-1f3ff-200d-1f4bb","๐จ๐ปโ๐ค":"1f468-1f3fb-200d-1f3a4","๐จ๐ผโ๐ค":"1f468-1f3fc-200d-1f3a4","๐จ๐ฝโ๐ค":"1f468-1f3fd-200d-1f3a4","๐จ๐พโ๐ค":"1f468-1f3fe-200d-1f3a4","๐จ๐ฟโ๐ค":"1f468-1f3ff-200d-1f3a4","๐ฉ๐ปโ๐ค":"1f469-1f3fb-200d-1f3a4","๐ฉ๐ผโ๐ค":"1f469-1f3fc-200d-1f3a4","๐ฉ๐ฝโ๐ค":"1f469-1f3fd-200d-1f3a4","๐ฉ๐พโ๐ค":"1f469-1f3fe-200d-1f3a4","๐ฉ๐ฟโ๐ค":"1f469-1f3ff-200d-1f3a4","๐จ๐ปโ๐จ":"1f468-1f3fb-200d-1f3a8","๐จ๐ผโ๐จ":"1f468-1f3fc-200d-1f3a8","๐จ๐ฝโ๐จ":"1f468-1f3fd-200d-1f3a8","๐จ๐พโ๐จ":"1f468-1f3fe-200d-1f3a8","๐จ๐ฟโ๐จ":"1f468-1f3ff-200d-1f3a8","๐ฉ๐ปโ๐จ":"1f469-1f3fb-200d-1f3a8","๐ฉ๐ผโ๐จ":"1f469-1f3fc-200d-1f3a8","๐ฉ๐ฝโ๐จ":"1f469-1f3fd-200d-1f3a8","๐ฉ๐พโ๐จ":"1f469-1f3fe-200d-1f3a8","๐ฉ๐ฟโ๐จ":"1f469-1f3ff-200d-1f3a8","๐จโโ๏ธ":"1f468-200d-2708-fe0f","๐จ๐ปโโ":"1f468-1f3fb-200d-2708-fe0f","๐จ๐ผโโ":"1f468-1f3fc-200d-2708-fe0f","๐จ๐ฝโโ":"1f468-1f3fd-200d-2708-fe0f","๐จ๐พโโ":"1f468-1f3fe-200d-2708-fe0f","๐จ๐ฟโโ":"1f468-1f3ff-200d-2708-fe0f","๐ฉโโ๏ธ":"1f469-200d-2708-fe0f","๐ฉ๐ปโโ":"1f469-1f3fb-200d-2708-fe0f","๐ฉ๐ผโโ":"1f469-1f3fc-200d-2708-fe0f","๐ฉ๐ฝโโ":"1f469-1f3fd-200d-2708-fe0f","๐ฉ๐พโโ":"1f469-1f3fe-200d-2708-fe0f","๐ฉ๐ฟโโ":"1f469-1f3ff-200d-2708-fe0f","๐จ๐ปโ๐":"1f468-1f3fb-200d-1f680","๐จ๐ผโ๐":"1f468-1f3fc-200d-1f680","๐จ๐ฝโ๐":"1f468-1f3fd-200d-1f680","๐จ๐พโ๐":"1f468-1f3fe-200d-1f680","๐จ๐ฟโ๐":"1f468-1f3ff-200d-1f680","๐ฉ๐ปโ๐":"1f469-1f3fb-200d-1f680","๐ฉ๐ผโ๐":"1f469-1f3fc-200d-1f680","๐ฉ๐ฝโ๐":"1f469-1f3fd-200d-1f680","๐ฉ๐พโ๐":"1f469-1f3fe-200d-1f680","๐ฉ๐ฟโ๐":"1f469-1f3ff-200d-1f680","๐จ๐ปโ๐":"1f468-1f3fb-200d-1f692","๐จ๐ผโ๐":"1f468-1f3fc-200d-1f692","๐จ๐ฝโ๐":"1f468-1f3fd-200d-1f692","๐จ๐พโ๐":"1f468-1f3fe-200d-1f692","๐จ๐ฟโ๐":"1f468-1f3ff-200d-1f692","๐ฉ๐ปโ๐":"1f469-1f3fb-200d-1f692","๐ฉ๐ผโ๐":"1f469-1f3fc-200d-1f692","๐ฉ๐ฝโ๐":"1f469-1f3fd-200d-1f692","๐ฉ๐พโ๐":"1f469-1f3fe-200d-1f692","๐ฉ๐ฟโ๐":"1f469-1f3ff-200d-1f692","๐ฎโโ๏ธ":"1f46e-200d-2642-fe0f","๐ฎ๐ปโโ":"1f46e-1f3fb-200d-2642-fe0f","๐ฎ๐ผโโ":"1f46e-1f3fc-200d-2642-fe0f","๐ฎ๐ฝโโ":"1f46e-1f3fd-200d-2642-fe0f","๐ฎ๐พโโ":"1f46e-1f3fe-200d-2642-fe0f","๐ฎ๐ฟโโ":"1f46e-1f3ff-200d-2642-fe0f","๐ฎโโ๏ธ":"1f46e-200d-2640-fe0f","๐ฎ๐ปโโ":"1f46e-1f3fb-200d-2640-fe0f","๐ฎ๐ผโโ":"1f46e-1f3fc-200d-2640-fe0f","๐ฎ๐ฝโโ":"1f46e-1f3fd-200d-2640-fe0f","๐ฎ๐พโโ":"1f46e-1f3fe-200d-2640-fe0f","๐ฎ๐ฟโโ":"1f46e-1f3ff-200d-2640-fe0f","๐ตโโ๏ธ":"1f575-fe0f-200d-2642-fe0f","๐ต๏ธโโ":"1f575-fe0f-200d-2642-fe0f","๐ต๐ปโโ":"1f575-1f3fb-200d-2642-fe0f","๐ต๐ผโโ":"1f575-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ":"1f575-1f3fd-200d-2642-fe0f","๐ต๐พโโ":"1f575-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ":"1f575-1f3ff-200d-2642-fe0f","๐ตโโ๏ธ":"1f575-fe0f-200d-2640-fe0f","๐ต๏ธโโ":"1f575-fe0f-200d-2640-fe0f","๐ต๐ปโโ":"1f575-1f3fb-200d-2640-fe0f","๐ต๐ผโโ":"1f575-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ":"1f575-1f3fd-200d-2640-fe0f","๐ต๐พโโ":"1f575-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ":"1f575-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f482-200d-2642-fe0f","๐๐ปโโ":"1f482-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f482-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f482-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f482-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f482-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f482-200d-2640-fe0f","๐๐ปโโ":"1f482-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f482-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f482-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f482-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f482-1f3ff-200d-2640-fe0f","๐ทโโ๏ธ":"1f477-200d-2642-fe0f","๐ท๐ปโโ":"1f477-1f3fb-200d-2642-fe0f","๐ท๐ผโโ":"1f477-1f3fc-200d-2642-fe0f","๐ท๐ฝโโ":"1f477-1f3fd-200d-2642-fe0f","๐ท๐พโโ":"1f477-1f3fe-200d-2642-fe0f","๐ท๐ฟโโ":"1f477-1f3ff-200d-2642-fe0f","๐ทโโ๏ธ":"1f477-200d-2640-fe0f","๐ท๐ปโโ":"1f477-1f3fb-200d-2640-fe0f","๐ท๐ผโโ":"1f477-1f3fc-200d-2640-fe0f","๐ท๐ฝโโ":"1f477-1f3fd-200d-2640-fe0f","๐ท๐พโโ":"1f477-1f3fe-200d-2640-fe0f","๐ท๐ฟโโ":"1f477-1f3ff-200d-2640-fe0f","๐ณโโ๏ธ":"1f473-200d-2642-fe0f","๐ณ๐ปโโ":"1f473-1f3fb-200d-2642-fe0f","๐ณ๐ผโโ":"1f473-1f3fc-200d-2642-fe0f","๐ณ๐ฝโโ":"1f473-1f3fd-200d-2642-fe0f","๐ณ๐พโโ":"1f473-1f3fe-200d-2642-fe0f","๐ณ๐ฟโโ":"1f473-1f3ff-200d-2642-fe0f","๐ณโโ๏ธ":"1f473-200d-2640-fe0f","๐ณ๐ปโโ":"1f473-1f3fb-200d-2640-fe0f","๐ณ๐ผโโ":"1f473-1f3fc-200d-2640-fe0f","๐ณ๐ฝโโ":"1f473-1f3fd-200d-2640-fe0f","๐ณ๐พโโ":"1f473-1f3fe-200d-2640-fe0f","๐ณ๐ฟโโ":"1f473-1f3ff-200d-2640-fe0f","๐ฑโโ๏ธ":"1f471-200d-2642-fe0f","๐ฑ๐ปโโ":"1f471-1f3fb-200d-2642-fe0f","๐ฑ๐ผโโ":"1f471-1f3fc-200d-2642-fe0f","๐ฑ๐ฝโโ":"1f471-1f3fd-200d-2642-fe0f","๐ฑ๐พโโ":"1f471-1f3fe-200d-2642-fe0f","๐ฑ๐ฟโโ":"1f471-1f3ff-200d-2642-fe0f","๐ฑโโ๏ธ":"1f471-200d-2640-fe0f","๐ฑ๐ปโโ":"1f471-1f3fb-200d-2640-fe0f","๐ฑ๐ผโโ":"1f471-1f3fc-200d-2640-fe0f","๐ฑ๐ฝโโ":"1f471-1f3fd-200d-2640-fe0f","๐ฑ๐พโโ":"1f471-1f3fe-200d-2640-fe0f","๐ฑ๐ฟโโ":"1f471-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d9-200d-2640-fe0f","๐ง๐ปโโ":"1f9d9-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d9-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d9-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d9-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d9-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d9-200d-2642-fe0f","๐ง๐ปโโ":"1f9d9-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d9-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d9-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d9-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d9-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9da-200d-2640-fe0f","๐ง๐ปโโ":"1f9da-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9da-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9da-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9da-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9da-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9da-200d-2642-fe0f","๐ง๐ปโโ":"1f9da-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9da-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9da-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9da-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9da-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9db-200d-2640-fe0f","๐ง๐ปโโ":"1f9db-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9db-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9db-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9db-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9db-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9db-200d-2642-fe0f","๐ง๐ปโโ":"1f9db-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9db-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9db-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9db-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9db-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9dc-200d-2640-fe0f","๐ง๐ปโโ":"1f9dc-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9dc-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9dc-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9dc-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9dc-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9dc-200d-2642-fe0f","๐ง๐ปโโ":"1f9dc-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9dc-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9dc-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9dc-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9dc-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9dd-200d-2640-fe0f","๐ง๐ปโโ":"1f9dd-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9dd-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9dd-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9dd-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9dd-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9dd-200d-2642-fe0f","๐ง๐ปโโ":"1f9dd-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9dd-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9dd-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9dd-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9dd-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9de-200d-2640-fe0f","๐งโโ๏ธ":"1f9de-200d-2642-fe0f","๐งโโ๏ธ":"1f9df-200d-2640-fe0f","๐งโโ๏ธ":"1f9df-200d-2642-fe0f","๐โโ๏ธ":"1f64d-200d-2642-fe0f","๐๐ปโโ":"1f64d-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f64d-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f64d-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f64d-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f64d-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f64d-200d-2640-fe0f","๐๐ปโโ":"1f64d-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f64d-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f64d-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f64d-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f64d-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f64e-200d-2642-fe0f","๐๐ปโโ":"1f64e-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f64e-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f64e-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f64e-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f64e-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f64e-200d-2640-fe0f","๐๐ปโโ":"1f64e-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f64e-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f64e-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f64e-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f64e-1f3ff-200d-2640-fe0f","๐ โโ๏ธ":"1f645-200d-2642-fe0f","๐ ๐ปโโ":"1f645-1f3fb-200d-2642-fe0f","๐ ๐ผโโ":"1f645-1f3fc-200d-2642-fe0f","๐ ๐ฝโโ":"1f645-1f3fd-200d-2642-fe0f","๐ ๐พโโ":"1f645-1f3fe-200d-2642-fe0f","๐ ๐ฟโโ":"1f645-1f3ff-200d-2642-fe0f","๐ โโ๏ธ":"1f645-200d-2640-fe0f","๐ ๐ปโโ":"1f645-1f3fb-200d-2640-fe0f","๐ ๐ผโโ":"1f645-1f3fc-200d-2640-fe0f","๐ ๐ฝโโ":"1f645-1f3fd-200d-2640-fe0f","๐ ๐พโโ":"1f645-1f3fe-200d-2640-fe0f","๐ ๐ฟโโ":"1f645-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f646-200d-2642-fe0f","๐๐ปโโ":"1f646-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f646-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f646-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f646-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f646-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f646-200d-2640-fe0f","๐๐ปโโ":"1f646-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f646-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f646-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f646-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f646-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f481-200d-2642-fe0f","๐๐ปโโ":"1f481-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f481-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f481-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f481-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f481-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f481-200d-2640-fe0f","๐๐ปโโ":"1f481-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f481-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f481-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f481-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f481-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f64b-200d-2642-fe0f","๐๐ปโโ":"1f64b-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f64b-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f64b-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f64b-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f64b-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f64b-200d-2640-fe0f","๐๐ปโโ":"1f64b-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f64b-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f64b-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f64b-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f64b-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f647-200d-2642-fe0f","๐๐ปโโ":"1f647-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f647-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f647-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f647-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f647-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f647-200d-2640-fe0f","๐๐ปโโ":"1f647-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f647-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f647-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f647-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f647-1f3ff-200d-2640-fe0f","๐คฆโโ๏ธ":"1f926-200d-2642-fe0f","๐คฆ๐ปโโ":"1f926-1f3fb-200d-2642-fe0f","๐คฆ๐ผโโ":"1f926-1f3fc-200d-2642-fe0f","๐คฆ๐ฝโโ":"1f926-1f3fd-200d-2642-fe0f","๐คฆ๐พโโ":"1f926-1f3fe-200d-2642-fe0f","๐คฆ๐ฟโโ":"1f926-1f3ff-200d-2642-fe0f","๐คฆโโ๏ธ":"1f926-200d-2640-fe0f","๐คฆ๐ปโโ":"1f926-1f3fb-200d-2640-fe0f","๐คฆ๐ผโโ":"1f926-1f3fc-200d-2640-fe0f","๐คฆ๐ฝโโ":"1f926-1f3fd-200d-2640-fe0f","๐คฆ๐พโโ":"1f926-1f3fe-200d-2640-fe0f","๐คฆ๐ฟโโ":"1f926-1f3ff-200d-2640-fe0f","๐คทโโ๏ธ":"1f937-200d-2642-fe0f","๐คท๐ปโโ":"1f937-1f3fb-200d-2642-fe0f","๐คท๐ผโโ":"1f937-1f3fc-200d-2642-fe0f","๐คท๐ฝโโ":"1f937-1f3fd-200d-2642-fe0f","๐คท๐พโโ":"1f937-1f3fe-200d-2642-fe0f","๐คท๐ฟโโ":"1f937-1f3ff-200d-2642-fe0f","๐คทโโ๏ธ":"1f937-200d-2640-fe0f","๐คท๐ปโโ":"1f937-1f3fb-200d-2640-fe0f","๐คท๐ผโโ":"1f937-1f3fc-200d-2640-fe0f","๐คท๐ฝโโ":"1f937-1f3fd-200d-2640-fe0f","๐คท๐พโโ":"1f937-1f3fe-200d-2640-fe0f","๐คท๐ฟโโ":"1f937-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f486-200d-2642-fe0f","๐๐ปโโ":"1f486-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f486-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f486-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f486-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f486-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f486-200d-2640-fe0f","๐๐ปโโ":"1f486-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f486-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f486-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f486-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f486-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f487-200d-2642-fe0f","๐๐ปโโ":"1f487-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f487-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f487-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f487-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f487-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f487-200d-2640-fe0f","๐๐ปโโ":"1f487-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f487-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f487-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f487-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f487-1f3ff-200d-2640-fe0f","๐ถโโ๏ธ":"1f6b6-200d-2642-fe0f","๐ถ๐ปโโ":"1f6b6-1f3fb-200d-2642-fe0f","๐ถ๐ผโโ":"1f6b6-1f3fc-200d-2642-fe0f","๐ถ๐ฝโโ":"1f6b6-1f3fd-200d-2642-fe0f","๐ถ๐พโโ":"1f6b6-1f3fe-200d-2642-fe0f","๐ถ๐ฟโโ":"1f6b6-1f3ff-200d-2642-fe0f","๐ถโโ๏ธ":"1f6b6-200d-2640-fe0f","๐ถ๐ปโโ":"1f6b6-1f3fb-200d-2640-fe0f","๐ถ๐ผโโ":"1f6b6-1f3fc-200d-2640-fe0f","๐ถ๐ฝโโ":"1f6b6-1f3fd-200d-2640-fe0f","๐ถ๐พโโ":"1f6b6-1f3fe-200d-2640-fe0f","๐ถ๐ฟโโ":"1f6b6-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3c3-200d-2642-fe0f","๐๐ปโโ":"1f3c3-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3c3-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3c3-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3c3-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3c3-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3c3-200d-2640-fe0f","๐๐ปโโ":"1f3c3-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3c3-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3c3-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3c3-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3c3-1f3ff-200d-2640-fe0f","๐ฏโโ๏ธ":"1f46f-200d-2642-fe0f","๐ฏโโ๏ธ":"1f46f-200d-2640-fe0f","๐งโโ๏ธ":"1f9d6-200d-2640-fe0f","๐ง๐ปโโ":"1f9d6-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d6-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d6-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d6-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d6-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d6-200d-2642-fe0f","๐ง๐ปโโ":"1f9d6-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d6-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d6-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d6-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d6-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9d7-200d-2640-fe0f","๐ง๐ปโโ":"1f9d7-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d7-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d7-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d7-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d7-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d7-200d-2642-fe0f","๐ง๐ปโโ":"1f9d7-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d7-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d7-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d7-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d7-1f3ff-200d-2642-fe0f","๐งโโ๏ธ":"1f9d8-200d-2640-fe0f","๐ง๐ปโโ":"1f9d8-1f3fb-200d-2640-fe0f","๐ง๐ผโโ":"1f9d8-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ":"1f9d8-1f3fd-200d-2640-fe0f","๐ง๐พโโ":"1f9d8-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ":"1f9d8-1f3ff-200d-2640-fe0f","๐งโโ๏ธ":"1f9d8-200d-2642-fe0f","๐ง๐ปโโ":"1f9d8-1f3fb-200d-2642-fe0f","๐ง๐ผโโ":"1f9d8-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ":"1f9d8-1f3fd-200d-2642-fe0f","๐ง๐พโโ":"1f9d8-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ":"1f9d8-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3cc-fe0f-200d-2642-fe0f","๐๏ธโโ":"1f3cc-fe0f-200d-2642-fe0f","๐๐ปโโ":"1f3cc-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3cc-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3cc-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3cc-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3cc-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3cc-fe0f-200d-2640-fe0f","๐๏ธโโ":"1f3cc-fe0f-200d-2640-fe0f","๐๐ปโโ":"1f3cc-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3cc-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3cc-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3cc-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3cc-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3c4-200d-2642-fe0f","๐๐ปโโ":"1f3c4-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3c4-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3c4-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3c4-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3c4-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3c4-200d-2640-fe0f","๐๐ปโโ":"1f3c4-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3c4-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3c4-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3c4-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3c4-1f3ff-200d-2640-fe0f","๐ฃโโ๏ธ":"1f6a3-200d-2642-fe0f","๐ฃ๐ปโโ":"1f6a3-1f3fb-200d-2642-fe0f","๐ฃ๐ผโโ":"1f6a3-1f3fc-200d-2642-fe0f","๐ฃ๐ฝโโ":"1f6a3-1f3fd-200d-2642-fe0f","๐ฃ๐พโโ":"1f6a3-1f3fe-200d-2642-fe0f","๐ฃ๐ฟโโ":"1f6a3-1f3ff-200d-2642-fe0f","๐ฃโโ๏ธ":"1f6a3-200d-2640-fe0f","๐ฃ๐ปโโ":"1f6a3-1f3fb-200d-2640-fe0f","๐ฃ๐ผโโ":"1f6a3-1f3fc-200d-2640-fe0f","๐ฃ๐ฝโโ":"1f6a3-1f3fd-200d-2640-fe0f","๐ฃ๐พโโ":"1f6a3-1f3fe-200d-2640-fe0f","๐ฃ๐ฟโโ":"1f6a3-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3ca-200d-2642-fe0f","๐๐ปโโ":"1f3ca-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3ca-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3ca-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3ca-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3ca-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3ca-200d-2640-fe0f","๐๐ปโโ":"1f3ca-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3ca-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3ca-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3ca-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3ca-1f3ff-200d-2640-fe0f","โนโโ๏ธ":"26f9-fe0f-200d-2642-fe0f","โน๏ธโโ":"26f9-fe0f-200d-2642-fe0f","โน๐ปโโ":"26f9-1f3fb-200d-2642-fe0f","โน๐ผโโ":"26f9-1f3fc-200d-2642-fe0f","โน๐ฝโโ":"26f9-1f3fd-200d-2642-fe0f","โน๐พโโ":"26f9-1f3fe-200d-2642-fe0f","โน๐ฟโโ":"26f9-1f3ff-200d-2642-fe0f","โนโโ๏ธ":"26f9-fe0f-200d-2640-fe0f","โน๏ธโโ":"26f9-fe0f-200d-2640-fe0f","โน๐ปโโ":"26f9-1f3fb-200d-2640-fe0f","โน๐ผโโ":"26f9-1f3fc-200d-2640-fe0f","โน๐ฝโโ":"26f9-1f3fd-200d-2640-fe0f","โน๐พโโ":"26f9-1f3fe-200d-2640-fe0f","โน๐ฟโโ":"26f9-1f3ff-200d-2640-fe0f","๐โโ๏ธ":"1f3cb-fe0f-200d-2642-fe0f","๐๏ธโโ":"1f3cb-fe0f-200d-2642-fe0f","๐๐ปโโ":"1f3cb-1f3fb-200d-2642-fe0f","๐๐ผโโ":"1f3cb-1f3fc-200d-2642-fe0f","๐๐ฝโโ":"1f3cb-1f3fd-200d-2642-fe0f","๐๐พโโ":"1f3cb-1f3fe-200d-2642-fe0f","๐๐ฟโโ":"1f3cb-1f3ff-200d-2642-fe0f","๐โโ๏ธ":"1f3cb-fe0f-200d-2640-fe0f","๐๏ธโโ":"1f3cb-fe0f-200d-2640-fe0f","๐๐ปโโ":"1f3cb-1f3fb-200d-2640-fe0f","๐๐ผโโ":"1f3cb-1f3fc-200d-2640-fe0f","๐๐ฝโโ":"1f3cb-1f3fd-200d-2640-fe0f","๐๐พโโ":"1f3cb-1f3fe-200d-2640-fe0f","๐๐ฟโโ":"1f3cb-1f3ff-200d-2640-fe0f","๐ดโโ๏ธ":"1f6b4-200d-2642-fe0f","๐ด๐ปโโ":"1f6b4-1f3fb-200d-2642-fe0f","๐ด๐ผโโ":"1f6b4-1f3fc-200d-2642-fe0f","๐ด๐ฝโโ":"1f6b4-1f3fd-200d-2642-fe0f","๐ด๐พโโ":"1f6b4-1f3fe-200d-2642-fe0f","๐ด๐ฟโโ":"1f6b4-1f3ff-200d-2642-fe0f","๐ดโโ๏ธ":"1f6b4-200d-2640-fe0f","๐ด๐ปโโ":"1f6b4-1f3fb-200d-2640-fe0f","๐ด๐ผโโ":"1f6b4-1f3fc-200d-2640-fe0f","๐ด๐ฝโโ":"1f6b4-1f3fd-200d-2640-fe0f","๐ด๐พโโ":"1f6b4-1f3fe-200d-2640-fe0f","๐ด๐ฟโโ":"1f6b4-1f3ff-200d-2640-fe0f","๐ตโโ๏ธ":"1f6b5-200d-2642-fe0f","๐ต๐ปโโ":"1f6b5-1f3fb-200d-2642-fe0f","๐ต๐ผโโ":"1f6b5-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ":"1f6b5-1f3fd-200d-2642-fe0f","๐ต๐พโโ":"1f6b5-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ":"1f6b5-1f3ff-200d-2642-fe0f","๐ตโโ๏ธ":"1f6b5-200d-2640-fe0f","๐ต๐ปโโ":"1f6b5-1f3fb-200d-2640-fe0f","๐ต๐ผโโ":"1f6b5-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ":"1f6b5-1f3fd-200d-2640-fe0f","๐ต๐พโโ":"1f6b5-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ":"1f6b5-1f3ff-200d-2640-fe0f","๐คธโโ๏ธ":"1f938-200d-2642-fe0f","๐คธ๐ปโโ":"1f938-1f3fb-200d-2642-fe0f","๐คธ๐ผโโ":"1f938-1f3fc-200d-2642-fe0f","๐คธ๐ฝโโ":"1f938-1f3fd-200d-2642-fe0f","๐คธ๐พโโ":"1f938-1f3fe-200d-2642-fe0f","๐คธ๐ฟโโ":"1f938-1f3ff-200d-2642-fe0f","๐คธโโ๏ธ":"1f938-200d-2640-fe0f","๐คธ๐ปโโ":"1f938-1f3fb-200d-2640-fe0f","๐คธ๐ผโโ":"1f938-1f3fc-200d-2640-fe0f","๐คธ๐ฝโโ":"1f938-1f3fd-200d-2640-fe0f","๐คธ๐พโโ":"1f938-1f3fe-200d-2640-fe0f","๐คธ๐ฟโโ":"1f938-1f3ff-200d-2640-fe0f","๐คผโโ๏ธ":"1f93c-200d-2642-fe0f","๐คผโโ๏ธ":"1f93c-200d-2640-fe0f","๐คฝโโ๏ธ":"1f93d-200d-2642-fe0f","๐คฝ๐ปโโ":"1f93d-1f3fb-200d-2642-fe0f","๐คฝ๐ผโโ":"1f93d-1f3fc-200d-2642-fe0f","๐คฝ๐ฝโโ":"1f93d-1f3fd-200d-2642-fe0f","๐คฝ๐พโโ":"1f93d-1f3fe-200d-2642-fe0f","๐คฝ๐ฟโโ":"1f93d-1f3ff-200d-2642-fe0f","๐คฝโโ๏ธ":"1f93d-200d-2640-fe0f","๐คฝ๐ปโโ":"1f93d-1f3fb-200d-2640-fe0f","๐คฝ๐ผโโ":"1f93d-1f3fc-200d-2640-fe0f","๐คฝ๐ฝโโ":"1f93d-1f3fd-200d-2640-fe0f","๐คฝ๐พโโ":"1f93d-1f3fe-200d-2640-fe0f","๐คฝ๐ฟโโ":"1f93d-1f3ff-200d-2640-fe0f","๐คพโโ๏ธ":"1f93e-200d-2642-fe0f","๐คพ๐ปโโ":"1f93e-1f3fb-200d-2642-fe0f","๐คพ๐ผโโ":"1f93e-1f3fc-200d-2642-fe0f","๐คพ๐ฝโโ":"1f93e-1f3fd-200d-2642-fe0f","๐คพ๐พโโ":"1f93e-1f3fe-200d-2642-fe0f","๐คพ๐ฟโโ":"1f93e-1f3ff-200d-2642-fe0f","๐คพโโ๏ธ":"1f93e-200d-2640-fe0f","๐คพ๐ปโโ":"1f93e-1f3fb-200d-2640-fe0f","๐คพ๐ผโโ":"1f93e-1f3fc-200d-2640-fe0f","๐คพ๐ฝโโ":"1f93e-1f3fd-200d-2640-fe0f","๐คพ๐พโโ":"1f93e-1f3fe-200d-2640-fe0f","๐คพ๐ฟโโ":"1f93e-1f3ff-200d-2640-fe0f","๐คนโโ๏ธ":"1f939-200d-2642-fe0f","๐คน๐ปโโ":"1f939-1f3fb-200d-2642-fe0f","๐คน๐ผโโ":"1f939-1f3fc-200d-2642-fe0f","๐คน๐ฝโโ":"1f939-1f3fd-200d-2642-fe0f","๐คน๐พโโ":"1f939-1f3fe-200d-2642-fe0f","๐คน๐ฟโโ":"1f939-1f3ff-200d-2642-fe0f","๐คนโโ๏ธ":"1f939-200d-2640-fe0f","๐คน๐ปโโ":"1f939-1f3fb-200d-2640-fe0f","๐คน๐ผโโ":"1f939-1f3fc-200d-2640-fe0f","๐คน๐ฝโโ":"1f939-1f3fd-200d-2640-fe0f","๐คน๐พโโ":"1f939-1f3fe-200d-2640-fe0f","๐คน๐ฟโโ":"1f939-1f3ff-200d-2640-fe0f","๐โ๐จ๏ธ":"1f441-200d-1f5e8","๐๏ธโ๐จ":"1f441-200d-1f5e8","๐ณ๏ธโ๐":"1f3f3-fe0f-200d-1f308","๐จ๐ปโโ๏ธ":"1f468-1f3fb-200d-2695-fe0f","๐จ๐ผโโ๏ธ":"1f468-1f3fc-200d-2695-fe0f","๐จ๐ฝโโ๏ธ":"1f468-1f3fd-200d-2695-fe0f","๐จ๐พโโ๏ธ":"1f468-1f3fe-200d-2695-fe0f","๐จ๐ฟโโ๏ธ":"1f468-1f3ff-200d-2695-fe0f","๐ฉ๐ปโโ๏ธ":"1f469-1f3fb-200d-2695-fe0f","๐ฉ๐ผโโ๏ธ":"1f469-1f3fc-200d-2695-fe0f","๐ฉ๐ฝโโ๏ธ":"1f469-1f3fd-200d-2695-fe0f","๐ฉ๐พโโ๏ธ":"1f469-1f3fe-200d-2695-fe0f","๐ฉ๐ฟโโ๏ธ":"1f469-1f3ff-200d-2695-fe0f","๐จ๐ปโโ๏ธ":"1f468-1f3fb-200d-2696-fe0f","๐จ๐ผโโ๏ธ":"1f468-1f3fc-200d-2696-fe0f","๐จ๐ฝโโ๏ธ":"1f468-1f3fd-200d-2696-fe0f","๐จ๐พโโ๏ธ":"1f468-1f3fe-200d-2696-fe0f","๐จ๐ฟโโ๏ธ":"1f468-1f3ff-200d-2696-fe0f","๐ฉ๐ปโโ๏ธ":"1f469-1f3fb-200d-2696-fe0f","๐ฉ๐ผโโ๏ธ":"1f469-1f3fc-200d-2696-fe0f","๐ฉ๐ฝโโ๏ธ":"1f469-1f3fd-200d-2696-fe0f","๐ฉ๐พโโ๏ธ":"1f469-1f3fe-200d-2696-fe0f","๐ฉ๐ฟโโ๏ธ":"1f469-1f3ff-200d-2696-fe0f","๐จ๐ปโโ๏ธ":"1f468-1f3fb-200d-2708-fe0f","๐จ๐ผโโ๏ธ":"1f468-1f3fc-200d-2708-fe0f","๐จ๐ฝโโ๏ธ":"1f468-1f3fd-200d-2708-fe0f","๐จ๐พโโ๏ธ":"1f468-1f3fe-200d-2708-fe0f","๐จ๐ฟโโ๏ธ":"1f468-1f3ff-200d-2708-fe0f","๐ฉ๐ปโโ๏ธ":"1f469-1f3fb-200d-2708-fe0f","๐ฉ๐ผโโ๏ธ":"1f469-1f3fc-200d-2708-fe0f","๐ฉ๐ฝโโ๏ธ":"1f469-1f3fd-200d-2708-fe0f","๐ฉ๐พโโ๏ธ":"1f469-1f3fe-200d-2708-fe0f","๐ฉ๐ฟโโ๏ธ":"1f469-1f3ff-200d-2708-fe0f","๐ฎ๐ปโโ๏ธ":"1f46e-1f3fb-200d-2642-fe0f","๐ฎ๐ผโโ๏ธ":"1f46e-1f3fc-200d-2642-fe0f","๐ฎ๐ฝโโ๏ธ":"1f46e-1f3fd-200d-2642-fe0f","๐ฎ๐พโโ๏ธ":"1f46e-1f3fe-200d-2642-fe0f","๐ฎ๐ฟโโ๏ธ":"1f46e-1f3ff-200d-2642-fe0f","๐ฎ๐ปโโ๏ธ":"1f46e-1f3fb-200d-2640-fe0f","๐ฎ๐ผโโ๏ธ":"1f46e-1f3fc-200d-2640-fe0f","๐ฎ๐ฝโโ๏ธ":"1f46e-1f3fd-200d-2640-fe0f","๐ฎ๐พโโ๏ธ":"1f46e-1f3fe-200d-2640-fe0f","๐ฎ๐ฟโโ๏ธ":"1f46e-1f3ff-200d-2640-fe0f","๐ต๏ธโโ๏ธ":"1f575-fe0f-200d-2642-fe0f","๐ต๐ปโโ๏ธ":"1f575-1f3fb-200d-2642-fe0f","๐ต๐ผโโ๏ธ":"1f575-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ๏ธ":"1f575-1f3fd-200d-2642-fe0f","๐ต๐พโโ๏ธ":"1f575-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ๏ธ":"1f575-1f3ff-200d-2642-fe0f","๐ต๏ธโโ๏ธ":"1f575-fe0f-200d-2640-fe0f","๐ต๐ปโโ๏ธ":"1f575-1f3fb-200d-2640-fe0f","๐ต๐ผโโ๏ธ":"1f575-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ๏ธ":"1f575-1f3fd-200d-2640-fe0f","๐ต๐พโโ๏ธ":"1f575-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ๏ธ":"1f575-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f482-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f482-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f482-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f482-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f482-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f482-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f482-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f482-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f482-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f482-1f3ff-200d-2640-fe0f","๐ท๐ปโโ๏ธ":"1f477-1f3fb-200d-2642-fe0f","๐ท๐ผโโ๏ธ":"1f477-1f3fc-200d-2642-fe0f","๐ท๐ฝโโ๏ธ":"1f477-1f3fd-200d-2642-fe0f","๐ท๐พโโ๏ธ":"1f477-1f3fe-200d-2642-fe0f","๐ท๐ฟโโ๏ธ":"1f477-1f3ff-200d-2642-fe0f","๐ท๐ปโโ๏ธ":"1f477-1f3fb-200d-2640-fe0f","๐ท๐ผโโ๏ธ":"1f477-1f3fc-200d-2640-fe0f","๐ท๐ฝโโ๏ธ":"1f477-1f3fd-200d-2640-fe0f","๐ท๐พโโ๏ธ":"1f477-1f3fe-200d-2640-fe0f","๐ท๐ฟโโ๏ธ":"1f477-1f3ff-200d-2640-fe0f","๐ณ๐ปโโ๏ธ":"1f473-1f3fb-200d-2642-fe0f","๐ณ๐ผโโ๏ธ":"1f473-1f3fc-200d-2642-fe0f","๐ณ๐ฝโโ๏ธ":"1f473-1f3fd-200d-2642-fe0f","๐ณ๐พโโ๏ธ":"1f473-1f3fe-200d-2642-fe0f","๐ณ๐ฟโโ๏ธ":"1f473-1f3ff-200d-2642-fe0f","๐ณ๐ปโโ๏ธ":"1f473-1f3fb-200d-2640-fe0f","๐ณ๐ผโโ๏ธ":"1f473-1f3fc-200d-2640-fe0f","๐ณ๐ฝโโ๏ธ":"1f473-1f3fd-200d-2640-fe0f","๐ณ๐พโโ๏ธ":"1f473-1f3fe-200d-2640-fe0f","๐ณ๐ฟโโ๏ธ":"1f473-1f3ff-200d-2640-fe0f","๐ฑ๐ปโโ๏ธ":"1f471-1f3fb-200d-2642-fe0f","๐ฑ๐ผโโ๏ธ":"1f471-1f3fc-200d-2642-fe0f","๐ฑ๐ฝโโ๏ธ":"1f471-1f3fd-200d-2642-fe0f","๐ฑ๐พโโ๏ธ":"1f471-1f3fe-200d-2642-fe0f","๐ฑ๐ฟโโ๏ธ":"1f471-1f3ff-200d-2642-fe0f","๐ฑ๐ปโโ๏ธ":"1f471-1f3fb-200d-2640-fe0f","๐ฑ๐ผโโ๏ธ":"1f471-1f3fc-200d-2640-fe0f","๐ฑ๐ฝโโ๏ธ":"1f471-1f3fd-200d-2640-fe0f","๐ฑ๐พโโ๏ธ":"1f471-1f3fe-200d-2640-fe0f","๐ฑ๐ฟโโ๏ธ":"1f471-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d9-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d9-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d9-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d9-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d9-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d9-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d9-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d9-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d9-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d9-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9da-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9da-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9da-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9da-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9da-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9da-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9da-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9da-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9da-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9da-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9db-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9db-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9db-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9db-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9db-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9db-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9db-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9db-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9db-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9db-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9dc-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9dc-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9dc-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9dc-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9dc-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9dc-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9dc-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9dc-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9dc-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9dc-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9dd-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9dd-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9dd-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9dd-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9dd-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9dd-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9dd-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9dd-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9dd-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9dd-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64d-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f64d-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f64d-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f64d-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f64d-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64d-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f64d-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f64d-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f64d-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f64d-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f64e-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f64e-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f64e-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f64e-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f64e-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64e-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f64e-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f64e-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f64e-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f64e-1f3ff-200d-2640-fe0f","๐ ๐ปโโ๏ธ":"1f645-1f3fb-200d-2642-fe0f","๐ ๐ผโโ๏ธ":"1f645-1f3fc-200d-2642-fe0f","๐ ๐ฝโโ๏ธ":"1f645-1f3fd-200d-2642-fe0f","๐ ๐พโโ๏ธ":"1f645-1f3fe-200d-2642-fe0f","๐ ๐ฟโโ๏ธ":"1f645-1f3ff-200d-2642-fe0f","๐ ๐ปโโ๏ธ":"1f645-1f3fb-200d-2640-fe0f","๐ ๐ผโโ๏ธ":"1f645-1f3fc-200d-2640-fe0f","๐ ๐ฝโโ๏ธ":"1f645-1f3fd-200d-2640-fe0f","๐ ๐พโโ๏ธ":"1f645-1f3fe-200d-2640-fe0f","๐ ๐ฟโโ๏ธ":"1f645-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f646-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f646-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f646-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f646-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f646-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f646-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f646-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f646-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f646-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f646-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f481-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f481-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f481-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f481-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f481-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f481-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f481-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f481-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f481-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f481-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f64b-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f64b-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f64b-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f64b-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f64b-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f64b-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f64b-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f64b-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f64b-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f64b-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f647-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f647-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f647-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f647-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f647-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f647-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f647-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f647-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f647-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f647-1f3ff-200d-2640-fe0f","๐คฆ๐ปโโ๏ธ":"1f926-1f3fb-200d-2642-fe0f","๐คฆ๐ผโโ๏ธ":"1f926-1f3fc-200d-2642-fe0f","๐คฆ๐ฝโโ๏ธ":"1f926-1f3fd-200d-2642-fe0f","๐คฆ๐พโโ๏ธ":"1f926-1f3fe-200d-2642-fe0f","๐คฆ๐ฟโโ๏ธ":"1f926-1f3ff-200d-2642-fe0f","๐คฆ๐ปโโ๏ธ":"1f926-1f3fb-200d-2640-fe0f","๐คฆ๐ผโโ๏ธ":"1f926-1f3fc-200d-2640-fe0f","๐คฆ๐ฝโโ๏ธ":"1f926-1f3fd-200d-2640-fe0f","๐คฆ๐พโโ๏ธ":"1f926-1f3fe-200d-2640-fe0f","๐คฆ๐ฟโโ๏ธ":"1f926-1f3ff-200d-2640-fe0f","๐คท๐ปโโ๏ธ":"1f937-1f3fb-200d-2642-fe0f","๐คท๐ผโโ๏ธ":"1f937-1f3fc-200d-2642-fe0f","๐คท๐ฝโโ๏ธ":"1f937-1f3fd-200d-2642-fe0f","๐คท๐พโโ๏ธ":"1f937-1f3fe-200d-2642-fe0f","๐คท๐ฟโโ๏ธ":"1f937-1f3ff-200d-2642-fe0f","๐คท๐ปโโ๏ธ":"1f937-1f3fb-200d-2640-fe0f","๐คท๐ผโโ๏ธ":"1f937-1f3fc-200d-2640-fe0f","๐คท๐ฝโโ๏ธ":"1f937-1f3fd-200d-2640-fe0f","๐คท๐พโโ๏ธ":"1f937-1f3fe-200d-2640-fe0f","๐คท๐ฟโโ๏ธ":"1f937-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f486-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f486-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f486-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f486-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f486-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f486-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f486-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f486-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f486-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f486-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f487-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f487-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f487-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f487-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f487-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f487-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f487-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f487-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f487-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f487-1f3ff-200d-2640-fe0f","๐ถ๐ปโโ๏ธ":"1f6b6-1f3fb-200d-2642-fe0f","๐ถ๐ผโโ๏ธ":"1f6b6-1f3fc-200d-2642-fe0f","๐ถ๐ฝโโ๏ธ":"1f6b6-1f3fd-200d-2642-fe0f","๐ถ๐พโโ๏ธ":"1f6b6-1f3fe-200d-2642-fe0f","๐ถ๐ฟโโ๏ธ":"1f6b6-1f3ff-200d-2642-fe0f","๐ถ๐ปโโ๏ธ":"1f6b6-1f3fb-200d-2640-fe0f","๐ถ๐ผโโ๏ธ":"1f6b6-1f3fc-200d-2640-fe0f","๐ถ๐ฝโโ๏ธ":"1f6b6-1f3fd-200d-2640-fe0f","๐ถ๐พโโ๏ธ":"1f6b6-1f3fe-200d-2640-fe0f","๐ถ๐ฟโโ๏ธ":"1f6b6-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3c3-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3c3-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3c3-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3c3-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3c3-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3c3-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3c3-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3c3-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3c3-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3c3-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d6-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d6-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d6-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d6-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d6-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d6-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d6-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d6-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d6-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d6-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9d7-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d7-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d7-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d7-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d7-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d7-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d7-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d7-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d7-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d7-1f3ff-200d-2642-fe0f","๐ง๐ปโโ๏ธ":"1f9d8-1f3fb-200d-2640-fe0f","๐ง๐ผโโ๏ธ":"1f9d8-1f3fc-200d-2640-fe0f","๐ง๐ฝโโ๏ธ":"1f9d8-1f3fd-200d-2640-fe0f","๐ง๐พโโ๏ธ":"1f9d8-1f3fe-200d-2640-fe0f","๐ง๐ฟโโ๏ธ":"1f9d8-1f3ff-200d-2640-fe0f","๐ง๐ปโโ๏ธ":"1f9d8-1f3fb-200d-2642-fe0f","๐ง๐ผโโ๏ธ":"1f9d8-1f3fc-200d-2642-fe0f","๐ง๐ฝโโ๏ธ":"1f9d8-1f3fd-200d-2642-fe0f","๐ง๐พโโ๏ธ":"1f9d8-1f3fe-200d-2642-fe0f","๐ง๐ฟโโ๏ธ":"1f9d8-1f3ff-200d-2642-fe0f","๐๏ธโโ๏ธ":"1f3cc-fe0f-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3cc-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3cc-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3cc-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3cc-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3cc-1f3ff-200d-2642-fe0f","๐๏ธโโ๏ธ":"1f3cc-fe0f-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3cc-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3cc-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3cc-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3cc-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3cc-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3c4-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3c4-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3c4-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3c4-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3c4-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3c4-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3c4-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3c4-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3c4-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3c4-1f3ff-200d-2640-fe0f","๐ฃ๐ปโโ๏ธ":"1f6a3-1f3fb-200d-2642-fe0f","๐ฃ๐ผโโ๏ธ":"1f6a3-1f3fc-200d-2642-fe0f","๐ฃ๐ฝโโ๏ธ":"1f6a3-1f3fd-200d-2642-fe0f","๐ฃ๐พโโ๏ธ":"1f6a3-1f3fe-200d-2642-fe0f","๐ฃ๐ฟโโ๏ธ":"1f6a3-1f3ff-200d-2642-fe0f","๐ฃ๐ปโโ๏ธ":"1f6a3-1f3fb-200d-2640-fe0f","๐ฃ๐ผโโ๏ธ":"1f6a3-1f3fc-200d-2640-fe0f","๐ฃ๐ฝโโ๏ธ":"1f6a3-1f3fd-200d-2640-fe0f","๐ฃ๐พโโ๏ธ":"1f6a3-1f3fe-200d-2640-fe0f","๐ฃ๐ฟโโ๏ธ":"1f6a3-1f3ff-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3ca-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3ca-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3ca-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3ca-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3ca-1f3ff-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3ca-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3ca-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3ca-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3ca-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3ca-1f3ff-200d-2640-fe0f","โน๏ธโโ๏ธ":"26f9-fe0f-200d-2642-fe0f","โน๐ปโโ๏ธ":"26f9-1f3fb-200d-2642-fe0f","โน๐ผโโ๏ธ":"26f9-1f3fc-200d-2642-fe0f","โน๐ฝโโ๏ธ":"26f9-1f3fd-200d-2642-fe0f","โน๐พโโ๏ธ":"26f9-1f3fe-200d-2642-fe0f","โน๐ฟโโ๏ธ":"26f9-1f3ff-200d-2642-fe0f","โน๏ธโโ๏ธ":"26f9-fe0f-200d-2640-fe0f","โน๐ปโโ๏ธ":"26f9-1f3fb-200d-2640-fe0f","โน๐ผโโ๏ธ":"26f9-1f3fc-200d-2640-fe0f","โน๐ฝโโ๏ธ":"26f9-1f3fd-200d-2640-fe0f","โน๐พโโ๏ธ":"26f9-1f3fe-200d-2640-fe0f","โน๐ฟโโ๏ธ":"26f9-1f3ff-200d-2640-fe0f","๐๏ธโโ๏ธ":"1f3cb-fe0f-200d-2642-fe0f","๐๐ปโโ๏ธ":"1f3cb-1f3fb-200d-2642-fe0f","๐๐ผโโ๏ธ":"1f3cb-1f3fc-200d-2642-fe0f","๐๐ฝโโ๏ธ":"1f3cb-1f3fd-200d-2642-fe0f","๐๐พโโ๏ธ":"1f3cb-1f3fe-200d-2642-fe0f","๐๐ฟโโ๏ธ":"1f3cb-1f3ff-200d-2642-fe0f","๐๏ธโโ๏ธ":"1f3cb-fe0f-200d-2640-fe0f","๐๐ปโโ๏ธ":"1f3cb-1f3fb-200d-2640-fe0f","๐๐ผโโ๏ธ":"1f3cb-1f3fc-200d-2640-fe0f","๐๐ฝโโ๏ธ":"1f3cb-1f3fd-200d-2640-fe0f","๐๐พโโ๏ธ":"1f3cb-1f3fe-200d-2640-fe0f","๐๐ฟโโ๏ธ":"1f3cb-1f3ff-200d-2640-fe0f","๐ด๐ปโโ๏ธ":"1f6b4-1f3fb-200d-2642-fe0f","๐ด๐ผโโ๏ธ":"1f6b4-1f3fc-200d-2642-fe0f","๐ด๐ฝโโ๏ธ":"1f6b4-1f3fd-200d-2642-fe0f","๐ด๐พโโ๏ธ":"1f6b4-1f3fe-200d-2642-fe0f","๐ด๐ฟโโ๏ธ":"1f6b4-1f3ff-200d-2642-fe0f","๐ด๐ปโโ๏ธ":"1f6b4-1f3fb-200d-2640-fe0f","๐ด๐ผโโ๏ธ":"1f6b4-1f3fc-200d-2640-fe0f","๐ด๐ฝโโ๏ธ":"1f6b4-1f3fd-200d-2640-fe0f","๐ด๐พโโ๏ธ":"1f6b4-1f3fe-200d-2640-fe0f","๐ด๐ฟโโ๏ธ":"1f6b4-1f3ff-200d-2640-fe0f","๐ต๐ปโโ๏ธ":"1f6b5-1f3fb-200d-2642-fe0f","๐ต๐ผโโ๏ธ":"1f6b5-1f3fc-200d-2642-fe0f","๐ต๐ฝโโ๏ธ":"1f6b5-1f3fd-200d-2642-fe0f","๐ต๐พโโ๏ธ":"1f6b5-1f3fe-200d-2642-fe0f","๐ต๐ฟโโ๏ธ":"1f6b5-1f3ff-200d-2642-fe0f","๐ต๐ปโโ๏ธ":"1f6b5-1f3fb-200d-2640-fe0f","๐ต๐ผโโ๏ธ":"1f6b5-1f3fc-200d-2640-fe0f","๐ต๐ฝโโ๏ธ":"1f6b5-1f3fd-200d-2640-fe0f","๐ต๐พโโ๏ธ":"1f6b5-1f3fe-200d-2640-fe0f","๐ต๐ฟโโ๏ธ":"1f6b5-1f3ff-200d-2640-fe0f","๐คธ๐ปโโ๏ธ":"1f938-1f3fb-200d-2642-fe0f","๐คธ๐ผโโ๏ธ":"1f938-1f3fc-200d-2642-fe0f","๐คธ๐ฝโโ๏ธ":"1f938-1f3fd-200d-2642-fe0f","๐คธ๐พโโ๏ธ":"1f938-1f3fe-200d-2642-fe0f","๐คธ๐ฟโโ๏ธ":"1f938-1f3ff-200d-2642-fe0f","๐คธ๐ปโโ๏ธ":"1f938-1f3fb-200d-2640-fe0f","๐คธ๐ผโโ๏ธ":"1f938-1f3fc-200d-2640-fe0f","๐คธ๐ฝโโ๏ธ":"1f938-1f3fd-200d-2640-fe0f","๐คธ๐พโโ๏ธ":"1f938-1f3fe-200d-2640-fe0f","๐คธ๐ฟโโ๏ธ":"1f938-1f3ff-200d-2640-fe0f","๐คฝ๐ปโโ๏ธ":"1f93d-1f3fb-200d-2642-fe0f","๐คฝ๐ผโโ๏ธ":"1f93d-1f3fc-200d-2642-fe0f","๐คฝ๐ฝโโ๏ธ":"1f93d-1f3fd-200d-2642-fe0f","๐คฝ๐พโโ๏ธ":"1f93d-1f3fe-200d-2642-fe0f","๐คฝ๐ฟโโ๏ธ":"1f93d-1f3ff-200d-2642-fe0f","๐คฝ๐ปโโ๏ธ":"1f93d-1f3fb-200d-2640-fe0f","๐คฝ๐ผโโ๏ธ":"1f93d-1f3fc-200d-2640-fe0f","๐คฝ๐ฝโโ๏ธ":"1f93d-1f3fd-200d-2640-fe0f","๐คฝ๐พโโ๏ธ":"1f93d-1f3fe-200d-2640-fe0f","๐คฝ๐ฟโโ๏ธ":"1f93d-1f3ff-200d-2640-fe0f","๐คพ๐ปโโ๏ธ":"1f93e-1f3fb-200d-2642-fe0f","๐คพ๐ผโโ๏ธ":"1f93e-1f3fc-200d-2642-fe0f","๐คพ๐ฝโโ๏ธ":"1f93e-1f3fd-200d-2642-fe0f","๐คพ๐พโโ๏ธ":"1f93e-1f3fe-200d-2642-fe0f","๐คพ๐ฟโโ๏ธ":"1f93e-1f3ff-200d-2642-fe0f","๐คพ๐ปโโ๏ธ":"1f93e-1f3fb-200d-2640-fe0f","๐คพ๐ผโโ๏ธ":"1f93e-1f3fc-200d-2640-fe0f","๐คพ๐ฝโโ๏ธ":"1f93e-1f3fd-200d-2640-fe0f","๐คพ๐พโโ๏ธ":"1f93e-1f3fe-200d-2640-fe0f","๐คพ๐ฟโโ๏ธ":"1f93e-1f3ff-200d-2640-fe0f","๐คน๐ปโโ๏ธ":"1f939-1f3fb-200d-2642-fe0f","๐คน๐ผโโ๏ธ":"1f939-1f3fc-200d-2642-fe0f","๐คน๐ฝโโ๏ธ":"1f939-1f3fd-200d-2642-fe0f","๐คน๐พโโ๏ธ":"1f939-1f3fe-200d-2642-fe0f","๐คน๐ฟโโ๏ธ":"1f939-1f3ff-200d-2642-fe0f","๐คน๐ปโโ๏ธ":"1f939-1f3fb-200d-2640-fe0f","๐คน๐ผโโ๏ธ":"1f939-1f3fc-200d-2640-fe0f","๐คน๐ฝโโ๏ธ":"1f939-1f3fd-200d-2640-fe0f","๐คน๐พโโ๏ธ":"1f939-1f3fe-200d-2640-fe0f","๐คน๐ฟโโ๏ธ":"1f939-1f3ff-200d-2640-fe0f","๐ฉโโคโ๐จ":"1f469-200d-2764-fe0f-200d-1f468","๐จโโคโ๐จ":"1f468-200d-2764-fe0f-200d-1f468","๐ฉโโคโ๐ฉ":"1f469-200d-2764-fe0f-200d-1f469","๐จโ๐ฉโ๐ฆ":"1f468-200d-1f469-200d-1f466","๐จโ๐ฉโ๐ง":"1f468-200d-1f469-200d-1f467","๐จโ๐จโ๐ฆ":"1f468-200d-1f468-200d-1f466","๐จโ๐จโ๐ง":"1f468-200d-1f468-200d-1f467","๐ฉโ๐ฉโ๐ฆ":"1f469-200d-1f469-200d-1f466","๐ฉโ๐ฉโ๐ง":"1f469-200d-1f469-200d-1f467","๐จโ๐ฆโ๐ฆ":"1f468-200d-1f466-200d-1f466","๐จโ๐งโ๐ฆ":"1f468-200d-1f467-200d-1f466","๐จโ๐งโ๐ง":"1f468-200d-1f467-200d-1f467","๐ฉโ๐ฆโ๐ฆ":"1f469-200d-1f466-200d-1f466","๐ฉโ๐งโ๐ฆ":"1f469-200d-1f467-200d-1f466","๐ฉโ๐งโ๐ง":"1f469-200d-1f467-200d-1f467","๐๏ธโ๐จ๏ธ":"1f441-200d-1f5e8","๐ฉโโค๏ธโ๐จ":"1f469-200d-2764-fe0f-200d-1f468","๐จโโค๏ธโ๐จ":"1f468-200d-2764-fe0f-200d-1f468","๐ฉโโค๏ธโ๐ฉ":"1f469-200d-2764-fe0f-200d-1f469","๐ฉโโคโ๐โ๐จ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","๐จโโคโ๐โ๐จ":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","๐ฉโโคโ๐โ๐ฉ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","๐จโ๐ฉโ๐งโ๐ฆ":"1f468-200d-1f469-200d-1f467-200d-1f466","๐จโ๐ฉโ๐ฆโ๐ฆ":"1f468-200d-1f469-200d-1f466-200d-1f466","๐จโ๐ฉโ๐งโ๐ง":"1f468-200d-1f469-200d-1f467-200d-1f467","๐จโ๐จโ๐งโ๐ฆ":"1f468-200d-1f468-200d-1f467-200d-1f466","๐จโ๐จโ๐ฆโ๐ฆ":"1f468-200d-1f468-200d-1f466-200d-1f466","๐จโ๐จโ๐งโ๐ง":"1f468-200d-1f468-200d-1f467-200d-1f467","๐ฉโ๐ฉโ๐งโ๐ฆ":"1f469-200d-1f469-200d-1f467-200d-1f466","๐ฉโ๐ฉโ๐ฆโ๐ฆ":"1f469-200d-1f469-200d-1f466-200d-1f466","๐ฉโ๐ฉโ๐งโ๐ง":"1f469-200d-1f469-200d-1f467-200d-1f467","๐ด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","๐ด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","๐ฉโโค๏ธโ๐โ๐จ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","๐จโโค๏ธโ๐โ๐จ":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","๐ฉโโค๏ธโ๐โ๐ฉ":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469"} \ No newline at end of file diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js new file mode 100644 index 000000000..45086fc4c --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_mart_data_light.js @@ -0,0 +1,41 @@ +// The output of this module is designed to mimic emoji-mart's +// "data" object, such that we can use it for a light version of emoji-mart's +// emojiIndex.search functionality. +const { unicodeToUnifiedName } = require('./unicode_to_unified_name'); +const [ shortCodesToEmojiData, skins, categories, short_names ] = require('./emoji_compressed'); + +const emojis = {}; + +// decompress +Object.keys(shortCodesToEmojiData).forEach((shortCode) => { + let [ + filenameData, // eslint-disable-line no-unused-vars + searchData, + ] = shortCodesToEmojiData[shortCode]; + let [ + native, + short_names, + search, + unified, + ] = searchData; + + if (!unified) { + // unified name can be derived from unicodeToUnifiedName + unified = unicodeToUnifiedName(native); + } + + short_names = [shortCode].concat(short_names); + emojis[shortCode] = { + native, + search, + short_names, + unified, + }; +}); + +module.exports = { + emojis, + skins, + categories, + short_names, +}; diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js new file mode 100644 index 000000000..5da8de1cf --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js @@ -0,0 +1,154 @@ +// This code is largely borrowed from: +// https://github.com/missive/emoji-mart/blob/bbd4fbe/src/utils/emoji-index.js + +import data from './emoji_mart_data_light'; +import { getData, getSanitizedData, intersect } from './emoji_utils'; + +let index = {}; +let emojisList = {}; +let emoticonsList = {}; +let previousInclude = []; +let previousExclude = []; + +for (let emoji in data.emojis) { + let emojiData = data.emojis[emoji], + { short_names, emoticons } = emojiData, + id = short_names[0]; + + for (let emoticon of (emoticons || [])) { + if (!emoticonsList[emoticon]) { + emoticonsList[emoticon] = id; + } + } + + emojisList[id] = getSanitizedData(id); +} + +function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) { + maxResults = maxResults || 75; + include = include || []; + exclude = exclude || []; + + if (custom.length) { + for (const emoji of custom) { + data.emojis[emoji.id] = getData(emoji); + emojisList[emoji.id] = getSanitizedData(emoji); + } + + data.categories.push({ + name: 'Custom', + emojis: custom.map(emoji => emoji.id), + }); + } + + let results = null; + let pool = data.emojis; + + if (value.length) { + if (value === '-' || value === '-1') { + return [emojisList['-1']]; + } + + let values = value.toLowerCase().split(/[\s|,|\-|_]+/); + + if (values.length > 2) { + values = [values[0], values[1]]; + } + + if (include.length || exclude.length) { + pool = {}; + + if (previousInclude !== include.sort().join(',') || previousExclude !== exclude.sort().join(',')) { + previousInclude = include.sort().join(','); + previousExclude = exclude.sort().join(','); + index = {}; + } + + for (let category of data.categories) { + let isIncluded = include && include.length ? include.indexOf(category.name.toLowerCase()) > -1 : true; + let isExcluded = exclude && exclude.length ? exclude.indexOf(category.name.toLowerCase()) > -1 : false; + if (!isIncluded || isExcluded) { + continue; + } + + for (let emojiId of category.emojis) { + pool[emojiId] = data.emojis[emojiId]; + } + } + } else if (previousInclude.length || previousExclude.length) { + index = {}; + } + + let allResults = values.map((value) => { + let aPool = pool; + let aIndex = index; + let length = 0; + + for (let char of value.split('')) { + length++; + + aIndex[char] = aIndex[char] || {}; + aIndex = aIndex[char]; + + if (!aIndex.results) { + let scores = {}; + + aIndex.results = []; + aIndex.pool = {}; + + for (let id in aPool) { + let emoji = aPool[id], + { search } = emoji, + sub = value.substr(0, length), + subIndex = search.indexOf(sub); + + if (subIndex !== -1) { + let score = subIndex + 1; + if (sub === id) { + score = 0; + } + + aIndex.results.push(emojisList[id]); + aIndex.pool[id] = emoji; + + scores[id] = score; + } + } + + aIndex.results.sort((a, b) => { + let aScore = scores[a.id], + bScore = scores[b.id]; + + return aScore - bScore; + }); + } + + aPool = aIndex.pool; + } + + return aIndex.results; + }).filter(a => a); + + if (allResults.length > 1) { + results = intersect(...allResults); + } else if (allResults.length) { + results = allResults[0]; + } else { + results = []; + } + } + + if (results) { + if (emojisToShowFilter) { + results = results.filter((result) => emojisToShowFilter(data.emojis[result.id].unified)); + } + + if (results && results.length > maxResults) { + results = results.slice(0, maxResults); + } + } + + return results; +} + +export { search }; diff --git a/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js b/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js new file mode 100644 index 000000000..918684c31 --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js @@ -0,0 +1,35 @@ +// A mapping of unicode strings to an object containing the filename +// (i.e. the svg filename) and a shortCode intended to be shown +// as a "title" attribute in an HTML element (aka tooltip). + +const [ + shortCodesToEmojiData, + skins, // eslint-disable-line no-unused-vars + categories, // eslint-disable-line no-unused-vars + short_names, // eslint-disable-line no-unused-vars + emojisWithoutShortCodes, +] = require('./emoji_compressed'); +const { unicodeToFilename } = require('./unicode_to_filename'); + +// decompress +const unicodeMapping = {}; + +function processEmojiMapData(emojiMapData, shortCode) { + let [ native, filename ] = emojiMapData; + if (!filename) { + // filename name can be derived from unicodeToFilename + filename = unicodeToFilename(native); + } + unicodeMapping[native] = { + shortCode: shortCode, + filename: filename, + }; +} + +Object.keys(shortCodesToEmojiData).forEach((shortCode) => { + let [ filenameData ] = shortCodesToEmojiData[shortCode]; + filenameData.forEach(emojiMapData => processEmojiMapData(emojiMapData, shortCode)); +}); +emojisWithoutShortCodes.forEach(emojiMapData => processEmojiMapData(emojiMapData)); + +module.exports = unicodeMapping; diff --git a/app/javascript/mastodon/features/emoji/emoji_utils.js b/app/javascript/mastodon/features/emoji/emoji_utils.js new file mode 100644 index 000000000..6ef2785d9 --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_utils.js @@ -0,0 +1,137 @@ +// This code is largely borrowed from: +// https://github.com/missive/emoji-mart/blob/bbd4fbe/src/utils/index.js + +import data from './emoji_mart_data_light'; + +const COLONS_REGEX = /^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/; + +function buildSearch(thisData) { + const search = []; + + let addToSearch = (strings, split) => { + if (!strings) { + return; + } + + (Array.isArray(strings) ? strings : [strings]).forEach((string) => { + (split ? string.split(/[-|_|\s]+/) : [string]).forEach((s) => { + s = s.toLowerCase(); + + if (search.indexOf(s) === -1) { + search.push(s); + } + }); + }); + }; + + addToSearch(thisData.short_names, true); + addToSearch(thisData.name, true); + addToSearch(thisData.keywords, false); + addToSearch(thisData.emoticons, false); + + return search; +} + +function unifiedToNative(unified) { + let unicodes = unified.split('-'), + codePoints = unicodes.map((u) => `0x${u}`); + + return String.fromCodePoint(...codePoints); +} + +function sanitize(emoji) { + let { name, short_names, skin_tone, skin_variations, emoticons, unified, custom, imageUrl } = emoji, + id = emoji.id || short_names[0], + colons = `:${id}:`; + + if (custom) { + return { + id, + name, + colons, + emoticons, + custom, + imageUrl, + }; + } + + if (skin_tone) { + colons += `:skin-tone-${skin_tone}:`; + } + + return { + id, + name, + colons, + emoticons, + unified: unified.toLowerCase(), + skin: skin_tone || (skin_variations ? 1 : null), + native: unifiedToNative(unified), + }; +} + +function getSanitizedData(emoji) { + return sanitize(getData(emoji)); +} + +function getData(emoji) { + let emojiData = {}; + + if (typeof emoji === 'string') { + let matches = emoji.match(COLONS_REGEX); + + if (matches) { + emoji = matches[1]; + + } + + if (data.short_names.hasOwnProperty(emoji)) { + emoji = data.short_names[emoji]; + } + + if (data.emojis.hasOwnProperty(emoji)) { + emojiData = data.emojis[emoji]; + } + } else if (emoji.custom) { + emojiData = emoji; + + emojiData.search = buildSearch({ + short_names: emoji.short_names, + name: emoji.name, + keywords: emoji.keywords, + emoticons: emoji.emoticons, + }); + + emojiData.search = emojiData.search.join(','); + } else if (emoji.id) { + if (data.short_names.hasOwnProperty(emoji.id)) { + emoji.id = data.short_names[emoji.id]; + } + + if (data.emojis.hasOwnProperty(emoji.id)) { + emojiData = data.emojis[emoji.id]; + } + } + + emojiData.emoticons = emojiData.emoticons || []; + emojiData.variations = emojiData.variations || []; + + if (emojiData.variations && emojiData.variations.length) { + emojiData = JSON.parse(JSON.stringify(emojiData)); + emojiData.unified = emojiData.variations.shift(); + } + + return emojiData; +} + +function intersect(a, b) { + let aSet = new Set(a); + let bSet = new Set(b); + let intersection = new Set( + [...aSet].filter(x => bSet.has(x)) + ); + + return Array.from(intersection); +} + +export { getData, getSanitizedData, intersect }; diff --git a/app/javascript/mastodon/features/emoji/unicode_to_filename.js b/app/javascript/mastodon/features/emoji/unicode_to_filename.js new file mode 100644 index 000000000..c75c4cd7d --- /dev/null +++ b/app/javascript/mastodon/features/emoji/unicode_to_filename.js @@ -0,0 +1,26 @@ +// taken from: +// https://github.com/twitter/twemoji/blob/47732c7/twemoji-generator.js#L848-L866 +exports.unicodeToFilename = (str) => { + let result = ''; + let charCode = 0; + let p = 0; + let i = 0; + while (i < str.length) { + charCode = str.charCodeAt(i++); + if (p) { + if (result.length > 0) { + result += '-'; + } + result += (0x10000 + ((p - 0xD800) << 10) + (charCode - 0xDC00)).toString(16); + p = 0; + } else if (0xD800 <= charCode && charCode <= 0xDBFF) { + p = charCode; + } else { + if (result.length > 0) { + result += '-'; + } + result += charCode.toString(16); + } + } + return result; +}; diff --git a/app/javascript/mastodon/features/emoji/unicode_to_unified_name.js b/app/javascript/mastodon/features/emoji/unicode_to_unified_name.js new file mode 100644 index 000000000..808ac197e --- /dev/null +++ b/app/javascript/mastodon/features/emoji/unicode_to_unified_name.js @@ -0,0 +1,17 @@ +function padLeft(str, num) { + while (str.length < num) { + str = '0' + str; + } + return str; +} + +exports.unicodeToUnifiedName = (str) => { + let output = ''; + for (let i = 0; i < str.length; i += 2) { + if (i > 0) { + output += '-'; + } + output += padLeft(str.codePointAt(i).toString(16).toUpperCase(), 4); + } + return output; +}; diff --git a/app/javascript/mastodon/reducers/accounts.js b/app/javascript/mastodon/reducers/accounts.js index 5391a93ae..8a4d69f26 100644 --- a/app/javascript/mastodon/reducers/accounts.js +++ b/app/javascript/mastodon/reducers/accounts.js @@ -44,7 +44,7 @@ import { FAVOURITED_STATUSES_EXPAND_SUCCESS, } from '../actions/favourites'; import { STORE_HYDRATE } from '../actions/store'; -import emojify from '../emoji'; +import emojify from '../features/emoji/emoji'; import { Map as ImmutableMap, fromJS } from 'immutable'; import escapeTextContentForBrowser from 'escape-html'; diff --git a/app/javascript/mastodon/reducers/custom_emojis.js b/app/javascript/mastodon/reducers/custom_emojis.js index b7c9b1d7c..307bcc7dc 100644 --- a/app/javascript/mastodon/reducers/custom_emojis.js +++ b/app/javascript/mastodon/reducers/custom_emojis.js @@ -1,7 +1,7 @@ import { List as ImmutableList } from 'immutable'; import { STORE_HYDRATE } from '../actions/store'; -import { search as emojiSearch } from '../emoji_index_light'; -import { buildCustomEmojis } from '../emoji'; +import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; +import { buildCustomEmojis } from '../features/emoji/emoji'; const initialState = ImmutableList(); diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index ed16e016f..32772fff7 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -39,7 +39,7 @@ import { PINNED_STATUSES_FETCH_SUCCESS, } from '../actions/pin_statuses'; import { SEARCH_FETCH_SUCCESS } from '../actions/search'; -import emojify from '../emoji'; +import emojify from '../features/emoji/emoji'; import { Map as ImmutableMap, fromJS } from 'immutable'; import escapeTextContentForBrowser from 'escape-html'; diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 6f72a8050..a47fc2830 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -21,7 +21,7 @@ function main() { const { length } = require('stringz'); const IntlRelativeFormat = require('intl-relativeformat').default; const { delegate } = require('rails-ujs'); - const emojify = require('../mastodon/emoji').default; + const emojify = require('../mastodon/features/emoji/emoji').default; const { getLocale } = require('../mastodon/locales'); const { localeData } = getLocale(); const VideoContainer = require('../mastodon/containers/video_container').default; diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index cd5e30e96..625a6e55d 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -17,7 +17,7 @@ namespace :emojis do task :generate do source = 'http://www.unicode.org/Public/emoji/5.0/emoji-test.txt' codes = [] - dest = Rails.root.join('app', 'javascript', 'mastodon', 'emoji_map.json') + dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') puts "Downloading emojos from source... (#{source})" diff --git a/spec/javascript/components/emoji_index.test.js b/spec/javascript/components/emoji_index.test.js index 8c6d2cedb..4bff79265 100644 --- a/spec/javascript/components/emoji_index.test.js +++ b/spec/javascript/components/emoji_index.test.js @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { search } from '../../../app/javascript/mastodon/emoji_index_light'; +import { search } from '../../../app/javascript/mastodon/features/emoji/emoji_mart_search_light'; import { emojiIndex } from 'emoji-mart'; import { pick } from 'lodash'; @@ -78,4 +78,22 @@ describe('emoji_index', () => { expect(emojiIndex.search('flag', { include: ['people'] })) .to.deep.equal([]); }); + + it('does an emoji whose unified name is irregular', () => { + let expected = [{ + 'id': 'water_polo', + 'unified': '1f93d', + 'native': '๐คฝ', + }, { + 'id': 'man-playing-water-polo', + 'unified': '1f93d-200d-2642-fe0f', + 'native': '๐คฝโโ๏ธ', + }, { + 'id': 'woman-playing-water-polo', + 'unified': '1f93d-200d-2640-fe0f', + 'native': '๐คฝโโ๏ธ', + }]; + expect(search('polo').map(trimEmojis)).to.deep.equal(expected); + expect(emojiIndex.search('polo').map(trimEmojis)).to.deep.equal(expected); + }); }); diff --git a/spec/javascript/components/emojify.test.js b/spec/javascript/components/emojify.test.js index 4202e52e1..3105c8e3f 100644 --- a/spec/javascript/components/emojify.test.js +++ b/spec/javascript/components/emojify.test.js @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import emojify from '../../../app/javascript/mastodon/emoji'; +import emojify from '../../../app/javascript/mastodon/features/emoji/emoji'; describe('emojify', () => { it('ignores unknown shortcodes', () => { @@ -49,4 +49,13 @@ describe('emojify', () => { expect(emojify('๐๐๐')).to.equal('<img draggable="false" class="emojione" alt="๐" title=":ok_hand:" src="/emoji/1f44c.svg" /><img draggable="false" class="emojione" alt="๐" title=":rainbow:" src="/emoji/1f308.svg" /><img draggable="false" class="emojione" alt="๐" title=":two_hearts:" src="/emoji/1f495.svg" />'); expect(emojify('๐ ๐ ๐')).to.equal('<img draggable="false" class="emojione" alt="๐" title=":ok_hand:" src="/emoji/1f44c.svg" /> <img draggable="false" class="emojione" alt="๐" title=":rainbow:" src="/emoji/1f308.svg" /> <img draggable="false" class="emojione" alt="๐" title=":two_hearts:" src="/emoji/1f495.svg" />'); }); + + it('does an emoji that has no shortcode', () => { + expect(emojify('๐๏ธ')).to.equal('<img draggable="false" class="emojione" alt="๐๏ธ" title="" src="/emoji/1f549.svg" />'); + }); + + it('does an emoji whose filename is irregular', () => { + expect(emojify('โ๏ธ')).to.equal('<img draggable="false" class="emojione" alt="โ๏ธ" title=":arrow_lower_left:" src="/emoji/2199.svg" />'); + }); + }); -- cgit From 0717d9b3e6904a4dcd5d2dc9e680cc5b21c50e51 Mon Sep 17 00:00:00 2001 From: Eugen Rochko <eugen@zeonfederated.com> Date: Sun, 8 Oct 2017 17:34:34 +0200 Subject: Set snowflake IDs for backdated statuses (#5260) - Rename Mastodon::TimestampIds into Mastodon::Snowflake for clarity - Skip for statuses coming from inbox, aka delivered in real-time - Skip for statuses that claim to be from the future --- app/lib/activitypub/activity.rb | 7 +- app/lib/activitypub/activity/announce.rb | 3 +- app/lib/activitypub/activity/create.rb | 2 +- app/lib/ostatus/activity/base.rb | 5 +- app/lib/ostatus/activity/creation.rb | 2 +- app/lib/ostatus/activity/general.rb | 2 +- app/models/status.rb | 2 + .../activitypub/process_collection_service.rb | 5 +- app/services/process_feed_service.rb | 6 +- app/workers/activitypub/processing_worker.rb | 2 +- app/workers/processing_worker.rb | 2 +- config/application.rb | 1 + config/brakeman.ignore | 44 +++--- lib/mastodon/snowflake.rb | 162 +++++++++++++++++++++ lib/mastodon/timestamp_ids.rb | 131 ----------------- lib/tasks/db.rake | 6 +- .../activitypub/process_collection_service_spec.rb | 4 +- 17 files changed, 213 insertions(+), 173 deletions(-) create mode 100644 lib/mastodon/snowflake.rb delete mode 100644 lib/mastodon/timestamp_ids.rb (limited to 'lib/tasks') diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index b06dd6194..9688f57a6 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -3,10 +3,11 @@ class ActivityPub::Activity include JsonLdHelper - def initialize(json, account) + def initialize(json, account, options = {}) @json = json @account = account @object = @json['object'] + @options = options end def perform @@ -14,9 +15,9 @@ class ActivityPub::Activity end class << self - def factory(json, account) + def factory(json, account, options = {}) @json = json - klass&.new(json, account) + klass&.new(json, account, options) end private diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb index 1cf844281..b84098933 100644 --- a/app/lib/activitypub/activity/announce.rb +++ b/app/lib/activitypub/activity/announce.rb @@ -15,8 +15,9 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity account: @account, reblog: original_status, uri: @json['id'], - created_at: @json['published'] || Time.now.utc + created_at: @options[:override_timestamps] ? nil : @json['published'] ) + distribute(status) status end diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 9421a0aa7..d6e9bc1de 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -43,7 +43,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity text: text_from_content || '', language: language_from_content, spoiler_text: @object['summary'] || '', - created_at: @object['published'] || Time.now.utc, + created_at: @options[:override_timestamps] ? nil : @object['published'], reply: @object['inReplyTo'].present?, sensitive: @object['sensitive'] || false, visibility: visibility_from_audience, diff --git a/app/lib/ostatus/activity/base.rb b/app/lib/ostatus/activity/base.rb index 039381397..8b27b124f 100644 --- a/app/lib/ostatus/activity/base.rb +++ b/app/lib/ostatus/activity/base.rb @@ -1,9 +1,10 @@ # frozen_string_literal: true class OStatus::Activity::Base - def initialize(xml, account = nil) - @xml = xml + def initialize(xml, account = nil, options = {}) + @xml = xml @account = account + @options = options end def status? diff --git a/app/lib/ostatus/activity/creation.rb b/app/lib/ostatus/activity/creation.rb index 511c462d4..a1ab522e2 100644 --- a/app/lib/ostatus/activity/creation.rb +++ b/app/lib/ostatus/activity/creation.rb @@ -34,7 +34,7 @@ class OStatus::Activity::Creation < OStatus::Activity::Base reblog: cached_reblog, text: content, spoiler_text: content_warning, - created_at: published, + created_at: @options[:override_timestamps] ? nil : published, reply: thread?, language: content_language, visibility: visibility_scope, diff --git a/app/lib/ostatus/activity/general.rb b/app/lib/ostatus/activity/general.rb index b3bef9861..8a6aabc33 100644 --- a/app/lib/ostatus/activity/general.rb +++ b/app/lib/ostatus/activity/general.rb @@ -2,7 +2,7 @@ class OStatus::Activity::General < OStatus::Activity::Base def specialize - special_class&.new(@xml, @account) + special_class&.new(@xml, @account, @options) end private diff --git a/app/models/status.rb b/app/models/status.rb index ea4c097bf..0d249244f 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -136,6 +136,8 @@ class Status < ApplicationRecord after_create :store_uri, if: :local? + around_create Mastodon::Snowflake::Callbacks + before_validation :prepare_contents, if: :local? before_validation :set_reblog before_validation :set_visibility diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb index 59cb65c65..db4d1b4bc 100644 --- a/app/services/activitypub/process_collection_service.rb +++ b/app/services/activitypub/process_collection_service.rb @@ -3,9 +3,10 @@ class ActivityPub::ProcessCollectionService < BaseService include JsonLdHelper - def call(body, account) + def call(body, account, options = {}) @account = account @json = Oj.load(body, mode: :strict) + @options = options return unless supported_context? return if different_actor? && verify_account!.nil? @@ -38,7 +39,7 @@ class ActivityPub::ProcessCollectionService < BaseService end def process_item(item) - activity = ActivityPub::Activity.factory(item, @account) + activity = ActivityPub::Activity.factory(item, @account, @options) activity&.perform end diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index 2a5f1e2bc..60eff135e 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class ProcessFeedService < BaseService - def call(body, account) + def call(body, account, options = {}) + @options = options + xml = Nokogiri::XML(body) xml.encoding = 'utf-8' @@ -20,7 +22,7 @@ class ProcessFeedService < BaseService end def process_entry(xml, account) - activity = OStatus::Activity::General.new(xml, account) + activity = OStatus::Activity::General.new(xml, account, @options) activity.specialize&.perform if activity.status? rescue ActiveRecord::RecordInvalid => e Rails.logger.debug "Nothing was saved for #{activity.id} because: #{e}" diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb index bb9adf64b..0e2e0eddd 100644 --- a/app/workers/activitypub/processing_worker.rb +++ b/app/workers/activitypub/processing_worker.rb @@ -6,6 +6,6 @@ class ActivityPub::ProcessingWorker sidekiq_options backtrace: true def perform(account_id, body) - ActivityPub::ProcessCollectionService.new.call(body, Account.find(account_id)) + ActivityPub::ProcessCollectionService.new.call(body, Account.find(account_id), override_timestamps: true) end end diff --git a/app/workers/processing_worker.rb b/app/workers/processing_worker.rb index 5df404bcc..978c3aba2 100644 --- a/app/workers/processing_worker.rb +++ b/app/workers/processing_worker.rb @@ -6,6 +6,6 @@ class ProcessingWorker sidekiq_options backtrace: true def perform(account_id, body) - ProcessFeedService.new.call(body, Account.find(account_id)) + ProcessFeedService.new.call(body, Account.find(account_id), override_timestamps: true) end end diff --git a/config/application.rb b/config/application.rb index b6ce74147..4860a08a1 100644 --- a/config/application.rb +++ b/config/application.rb @@ -9,6 +9,7 @@ Bundler.require(*Rails.groups) require_relative '../app/lib/exceptions' require_relative '../lib/paperclip/gif_transcoder' require_relative '../lib/paperclip/video_transcoder' +require_relative '../lib/mastodon/snowflake' require_relative '../lib/mastodon/version' Dotenv::Railtie.load diff --git a/config/brakeman.ignore b/config/brakeman.ignore index 2a1bc1997..f198eebac 100644 --- a/config/brakeman.ignore +++ b/config/brakeman.ignore @@ -57,26 +57,6 @@ "confidence": "Weak", "note": "" }, - { - "warning_type": "SQL Injection", - "warning_code": 0, - "fingerprint": "34efc76883080f8b1110a30c34ec4f903946ee56651aae46c62477f45d4fc412", - "check_name": "SQL", - "message": "Possible SQL injection", - "file": "lib/mastodon/timestamp_ids.rb", - "line": 63, - "link": "http://brakemanscanner.org/docs/warning_types/sql_injection/", - "code": "connection.execute(\" CREATE OR REPLACE FUNCTION timestamp_id(table_name text)\\n RETURNS bigint AS\\n $$\\n DECLARE\\n time_part bigint;\\n sequence_base bigint;\\n tail bigint;\\n BEGIN\\n time_part := (\\n -- Get the time in milliseconds\\n ((date_part('epoch', now()) * 1000))::bigint\\n -- And shift it over two bytes\\n << 16);\\n\\n sequence_base := (\\n 'x' ||\\n -- Take the first two bytes (four hex characters)\\n substr(\\n -- Of the MD5 hash of the data we documented\\n md5(table_name ||\\n '#{SecureRandom.hex(16)}' ||\\n time_part::text\\n ),\\n 1, 4\\n )\\n -- And turn it into a bigint\\n )::bit(16)::bigint;\\n\\n -- Finally, add our sequence number to our base, and chop\\n -- it to the last two bytes\\n tail := (\\n (sequence_base + nextval(table_name || '_id_seq'))\\n & 65535);\\n\\n -- Return the time part and the sequence part. OR appears\\n -- faster here than addition, but they're equivalent:\\n -- time_part has no trailing two bytes, and tail is only\\n -- the last two bytes.\\n RETURN time_part | tail;\\n END\\n $$ LANGUAGE plpgsql VOLATILE;\\n\")", - "render_path": null, - "location": { - "type": "method", - "class": "Mastodon::TimestampIds", - "method": "define_timestamp_id" - }, - "user_input": "SecureRandom.hex(16)", - "confidence": "Medium", - "note": "" - }, { "warning_type": "Dynamic Render Path", "warning_code": 15, @@ -106,7 +86,7 @@ "line": 3, "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/", "code": "render(action => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :centered => true })", - "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":35,"file":"app/controllers/statuses_controller.rb"}], + "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":41,"file":"app/controllers/statuses_controller.rb"}], "location": { "type": "template", "template": "stream_entries/embed" @@ -153,6 +133,26 @@ "confidence": "Weak", "note": "" }, + { + "warning_type": "SQL Injection", + "warning_code": 0, + "fingerprint": "9ccb9ba6a6947400e187d515e0bf719d22993d37cfc123c824d7fafa6caa9ac3", + "check_name": "SQL", + "message": "Possible SQL injection", + "file": "lib/mastodon/snowflake.rb", + "line": 86, + "link": "http://brakemanscanner.org/docs/warning_types/sql_injection/", + "code": "connection.execute(\" CREATE OR REPLACE FUNCTION timestamp_id(table_name text)\\n RETURNS bigint AS\\n $$\\n DECLARE\\n time_part bigint;\\n sequence_base bigint;\\n tail bigint;\\n BEGIN\\n time_part := (\\n -- Get the time in milliseconds\\n ((date_part('epoch', now()) * 1000))::bigint\\n -- And shift it over two bytes\\n << 16);\\n\\n sequence_base := (\\n 'x' ||\\n -- Take the first two bytes (four hex characters)\\n substr(\\n -- Of the MD5 hash of the data we documented\\n md5(table_name ||\\n '#{SecureRandom.hex(16)}' ||\\n time_part::text\\n ),\\n 1, 4\\n )\\n -- And turn it into a bigint\\n )::bit(16)::bigint;\\n\\n -- Finally, add our sequence number to our base, and chop\\n -- it to the last two bytes\\n tail := (\\n (sequence_base + nextval(table_name || '_id_seq'))\\n & 65535);\\n\\n -- Return the time part and the sequence part. OR appears\\n -- faster here than addition, but they're equivalent:\\n -- time_part has no trailing two bytes, and tail is only\\n -- the last two bytes.\\n RETURN time_part | tail;\\n END\\n $$ LANGUAGE plpgsql VOLATILE;\\n\")", + "render_path": null, + "location": { + "type": "method", + "class": "Mastodon::Snowflake", + "method": "define_timestamp_id" + }, + "user_input": "SecureRandom.hex(16)", + "confidence": "Medium", + "note": "" + }, { "warning_type": "Dynamic Render Path", "warning_code": 15, @@ -269,6 +269,6 @@ "note": "" } ], - "updated": "2017-10-06 03:27:46 +0200", + "updated": "2017-10-07 19:24:02 +0200", "brakeman_version": "4.0.1" } diff --git a/lib/mastodon/snowflake.rb b/lib/mastodon/snowflake.rb new file mode 100644 index 000000000..219e323d4 --- /dev/null +++ b/lib/mastodon/snowflake.rb @@ -0,0 +1,162 @@ +# frozen_string_literal: true + +module Mastodon::Snowflake + DEFAULT_REGEX = /timestamp_id\('(?<seq_prefix>\w+)'/ + + class Callbacks + def self.around_create(record) + now = Time.now.utc + + if record.created_at.nil? || record.created_at >= now || record.created_at == record.updated_at + yield + else + record.id = Mastodon::Snowflake.id_at(record.created_at) + tries = 0 + + begin + yield + rescue ActiveRecord::RecordNotUnique + raise if tries > 100 + + tries += 1 + record.id += rand(100) + + retry + end + end + end + end + + class << self + # Our ID will be composed of the following: + # 6 bytes (48 bits) of millisecond-level timestamp + # 2 bytes (16 bits) of sequence data + # + # The 'sequence data' is intended to be unique within a + # given millisecond, yet obscure the 'serial number' of + # this row. + # + # To do this, we hash the following data: + # * Table name (if provided, skipped if not) + # * Secret salt (should not be guessable) + # * Timestamp (again, millisecond-level granularity) + # + # We then take the first two bytes of that value, and add + # the lowest two bytes of the table ID sequence number + # (`table_name`_id_seq). This means that even if we insert + # two rows at the same millisecond, they will have + # distinct 'sequence data' portions. + # + # If this happens, and an attacker can see both such IDs, + # they can determine which of the two entries was inserted + # first, but not the total number of entries in the table + # (even mod 2**16). + # + # The table name is included in the hash to ensure that + # different tables derive separate sequence bases so rows + # inserted in the same millisecond in different tables do + # not reveal the table ID sequence number for one another. + # + # The secret salt is included in the hash to ensure that + # external users cannot derive the sequence base given the + # timestamp and table name, which would allow them to + # compute the table ID sequence number. + def define_timestamp_id + return if already_defined? + + connection.execute(<<~SQL) + CREATE OR REPLACE FUNCTION timestamp_id(table_name text) + RETURNS bigint AS + $$ + DECLARE + time_part bigint; + sequence_base bigint; + tail bigint; + BEGIN + time_part := ( + -- Get the time in milliseconds + ((date_part('epoch', now()) * 1000))::bigint + -- And shift it over two bytes + << 16); + + sequence_base := ( + 'x' || + -- Take the first two bytes (four hex characters) + substr( + -- Of the MD5 hash of the data we documented + md5(table_name || + '#{SecureRandom.hex(16)}' || + time_part::text + ), + 1, 4 + ) + -- And turn it into a bigint + )::bit(16)::bigint; + + -- Finally, add our sequence number to our base, and chop + -- it to the last two bytes + tail := ( + (sequence_base + nextval(table_name || '_id_seq')) + & 65535); + + -- Return the time part and the sequence part. OR appears + -- faster here than addition, but they're equivalent: + -- time_part has no trailing two bytes, and tail is only + -- the last two bytes. + RETURN time_part | tail; + END + $$ LANGUAGE plpgsql VOLATILE; + SQL + end + + def ensure_id_sequences_exist + # Find tables using timestamp IDs. + connection.tables.each do |table| + # We're only concerned with "id" columns. + next unless (id_col = connection.columns(table).find { |col| col.name == 'id' }) + + # And only those that are using timestamp_id. + next unless (data = DEFAULT_REGEX.match(id_col.default_function)) + + seq_name = data[:seq_prefix] + '_id_seq' + + # If we were on Postgres 9.5+, we could do CREATE SEQUENCE IF + # NOT EXISTS, but we can't depend on that. Instead, catch the + # possible exception and ignore it. + # Note that seq_name isn't a column name, but it's a + # relation, like a column, and follows the same quoting rules + # in Postgres. + connection.execute(<<~SQL) + DO $$ + BEGIN + CREATE SEQUENCE #{connection.quote_column_name(seq_name)}; + EXCEPTION WHEN duplicate_table THEN + -- Do nothing, we have the sequence already. + END + $$ LANGUAGE plpgsql; + SQL + end + end + + def id_at(timestamp) + id = timestamp.to_i * 1000 + rand(1000) + id = id << 16 + id += rand(2**16) + id + end + + private + + def already_defined? + connection.execute(<<~SQL).values.first.first + SELECT EXISTS( + SELECT * FROM pg_proc WHERE proname = 'timestamp_id' + ); + SQL + end + + def connection + ActiveRecord::Base.connection + end + end +end diff --git a/lib/mastodon/timestamp_ids.rb b/lib/mastodon/timestamp_ids.rb deleted file mode 100644 index 3b048a50c..000000000 --- a/lib/mastodon/timestamp_ids.rb +++ /dev/null @@ -1,131 +0,0 @@ -# frozen_string_literal: true - -module Mastodon::TimestampIds - DEFAULT_REGEX = /timestamp_id\('(?<seq_prefix>\w+)'/ - - class << self - # Our ID will be composed of the following: - # 6 bytes (48 bits) of millisecond-level timestamp - # 2 bytes (16 bits) of sequence data - # - # The 'sequence data' is intended to be unique within a - # given millisecond, yet obscure the 'serial number' of - # this row. - # - # To do this, we hash the following data: - # * Table name (if provided, skipped if not) - # * Secret salt (should not be guessable) - # * Timestamp (again, millisecond-level granularity) - # - # We then take the first two bytes of that value, and add - # the lowest two bytes of the table ID sequence number - # (`table_name`_id_seq). This means that even if we insert - # two rows at the same millisecond, they will have - # distinct 'sequence data' portions. - # - # If this happens, and an attacker can see both such IDs, - # they can determine which of the two entries was inserted - # first, but not the total number of entries in the table - # (even mod 2**16). - # - # The table name is included in the hash to ensure that - # different tables derive separate sequence bases so rows - # inserted in the same millisecond in different tables do - # not reveal the table ID sequence number for one another. - # - # The secret salt is included in the hash to ensure that - # external users cannot derive the sequence base given the - # timestamp and table name, which would allow them to - # compute the table ID sequence number. - def define_timestamp_id - return if already_defined? - - connection.execute(<<~SQL) - CREATE OR REPLACE FUNCTION timestamp_id(table_name text) - RETURNS bigint AS - $$ - DECLARE - time_part bigint; - sequence_base bigint; - tail bigint; - BEGIN - time_part := ( - -- Get the time in milliseconds - ((date_part('epoch', now()) * 1000))::bigint - -- And shift it over two bytes - << 16); - - sequence_base := ( - 'x' || - -- Take the first two bytes (four hex characters) - substr( - -- Of the MD5 hash of the data we documented - md5(table_name || - '#{SecureRandom.hex(16)}' || - time_part::text - ), - 1, 4 - ) - -- And turn it into a bigint - )::bit(16)::bigint; - - -- Finally, add our sequence number to our base, and chop - -- it to the last two bytes - tail := ( - (sequence_base + nextval(table_name || '_id_seq')) - & 65535); - - -- Return the time part and the sequence part. OR appears - -- faster here than addition, but they're equivalent: - -- time_part has no trailing two bytes, and tail is only - -- the last two bytes. - RETURN time_part | tail; - END - $$ LANGUAGE plpgsql VOLATILE; - SQL - end - - def ensure_id_sequences_exist - # Find tables using timestamp IDs. - connection.tables.each do |table| - # We're only concerned with "id" columns. - next unless (id_col = connection.columns(table).find { |col| col.name == 'id' }) - - # And only those that are using timestamp_id. - next unless (data = DEFAULT_REGEX.match(id_col.default_function)) - - seq_name = data[:seq_prefix] + '_id_seq' - - # If we were on Postgres 9.5+, we could do CREATE SEQUENCE IF - # NOT EXISTS, but we can't depend on that. Instead, catch the - # possible exception and ignore it. - # Note that seq_name isn't a column name, but it's a - # relation, like a column, and follows the same quoting rules - # in Postgres. - connection.execute(<<~SQL) - DO $$ - BEGIN - CREATE SEQUENCE #{connection.quote_column_name(seq_name)}; - EXCEPTION WHEN duplicate_table THEN - -- Do nothing, we have the sequence already. - END - $$ LANGUAGE plpgsql; - SQL - end - end - - private - - def already_defined? - connection.execute(<<~SQL).values.first.first - SELECT EXISTS( - SELECT * FROM pg_proc WHERE proname = 'timestamp_id' - ); - SQL - end - - def connection - ActiveRecord::Base.connection - end - end -end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 6af6bb6fb..32039c31d 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -1,6 +1,6 @@ # frozen_string_literal: true -require Rails.root.join('lib', 'mastodon', 'timestamp_ids') +require_relative '../mastodon/snowflake' def each_schema_load_environment # If we're in development, also run this for the test environment. @@ -63,13 +63,13 @@ namespace :db do task :define_timestamp_id do each_schema_load_environment do - Mastodon::TimestampIds.define_timestamp_id + Mastodon::Snowflake.define_timestamp_id end end task :ensure_id_sequences_exist do each_schema_load_environment do - Mastodon::TimestampIds.ensure_id_sequences_exist + Mastodon::Snowflake.ensure_id_sequences_exist end end end diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb index c1cc22523..3cea970cf 100644 --- a/spec/services/activitypub/process_collection_service_spec.rb +++ b/spec/services/activitypub/process_collection_service_spec.rb @@ -28,7 +28,7 @@ RSpec.describe ActivityPub::ProcessCollectionService do it 'processes payload with sender if no signature exists' do expect_any_instance_of(ActivityPub::LinkedDataSignature).not_to receive(:verify_account!) - expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), forwarder) + expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), forwarder, instance_of(Hash)) subject.call(json, forwarder) end @@ -37,7 +37,7 @@ RSpec.describe ActivityPub::ProcessCollectionService do payload['signature'] = {'type' => 'RsaSignature2017'} expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(actor) - expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), actor) + expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), actor, instance_of(Hash)) subject.call(json, forwarder) end -- cgit From 92e7815d1dce96ac5e01b10bcfa110aa96487c35 Mon Sep 17 00:00:00 2001 From: Eugen Rochko <eugen@zeonfederated.com> Date: Mon, 9 Oct 2017 20:51:24 +0200 Subject: Fix #5274 - Create symlink from public/500.html to public/assets/500.html (#5288) --- .gitignore | 1 - lib/tasks/assets.rake | 2 +- public/500.html | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) create mode 120000 public/500.html (limited to 'lib/tasks') diff --git a/.gitignore b/.gitignore index 2f5f1e71a..38ebc934f 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ public/system public/assets public/packs public/packs-test -public/500.html .env .env.production node_modules/ diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 44896afc7..f60c1b9f2 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -10,7 +10,7 @@ end namespace :assets do desc 'Generate static pages' task :generate_static_pages do - render_static_page 'errors/500', layout: 'error', dest: Rails.root.join('public', '500.html') + render_static_page 'errors/500', layout: 'error', dest: Rails.root.join('public', 'assets', '500.html') end end diff --git a/public/500.html b/public/500.html new file mode 120000 index 000000000..45a907808 --- /dev/null +++ b/public/500.html @@ -0,0 +1 @@ +assets/500.html \ No newline at end of file -- cgit