From 065009a57a544d2b7d48bc6334fcd520fb7c5afa Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 13 Nov 2020 09:07:08 +0300 Subject: remove PurgeExpiredActivity from Oban db config --- ...purge_expired_activity_worker_from_oban_config.exs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs diff --git a/priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs b/priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs new file mode 100644 index 000000000..fe31f4442 --- /dev/null +++ b/priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RemovePurgeExpiredActivityWorkerFromObanConfig do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), + crontab when is_list(crontab) <- config.value[:crontab], + index when is_integer(index) <- + Enum.find_index(crontab, fn {_, worker} -> + worker == Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker + end) do + updated_value = Keyword.put(config.value, :crontab, List.delete_at(crontab, index)) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + end +end -- cgit v1.2.3 From aa848cbd75361503d7aa4a18f0f5b7c518f6631a Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 14 Nov 2020 22:27:13 +0100 Subject: pleroma.instance: Fix Exiftool module name --- CHANGELOG.md | 3 +++ lib/mix/tasks/pleroma/instance.ex | 2 +- test/mix/tasks/pleroma/instance_test.exs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 051050a94..4bf0ba964 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,9 @@ switched to a new configuration mechanism, however it was not officially removed 3. Restart Pleroma +### Fixes +- Config generation: rename `Pleroma.Upload.Filter.ExifTool` to `Pleroma.Upload.Filter.Exiftool` + ## [2.1.2] - 2020-09-17 ### Security diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index fc21ae062..ac8688424 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -284,7 +284,7 @@ defp write_robots_txt(static_dir, indexable, template_dir) do defp upload_filters(filters) when is_map(filters) do enabled_filters = if filters.strip do - [Pleroma.Upload.Filter.ExifTool] + [Pleroma.Upload.Filter.Exiftool] else [] end diff --git a/test/mix/tasks/pleroma/instance_test.exs b/test/mix/tasks/pleroma/instance_test.exs index 8a02710ee..6580fc932 100644 --- a/test/mix/tasks/pleroma/instance_test.exs +++ b/test/mix/tasks/pleroma/instance_test.exs @@ -88,7 +88,7 @@ test "running gen" do assert generated_config =~ "password: \"dbpass\"" assert generated_config =~ "configurable_from_database: true" assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]" - assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]" + assert generated_config =~ "filters: [Pleroma.Upload.Filter.Exiftool]" assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql() assert File.exists?(Path.expand("./test/instance/static/robots.txt")) end -- cgit v1.2.3 From 012108a29940b9f34e950a36fe510e7d0642e5a5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 16 Nov 2020 19:51:44 +0000 Subject: Fix S3 uploads with Elixir 1.11 --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index f91f57644..fe9fc753b 100644 --- a/mix.exs +++ b/mix.exs @@ -143,7 +143,7 @@ defp deps do github: "ninenines/gun", ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", override: true}, {:jason, "~> 1.2"}, {:mogrify, "~> 0.7.4"}, - {:ex_aws, "~> 2.1"}, + {:ex_aws, "~> 2.1.6"}, {:ex_aws_s3, "~> 2.0"}, {:sweet_xml, "~> 0.6.6"}, {:earmark, "1.4.3"}, diff --git a/mix.lock b/mix.lock index 07238f550..3927e948e 100644 --- a/mix.lock +++ b/mix.lock @@ -37,7 +37,7 @@ "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, - "ex_aws": {:hex, :ex_aws, "2.1.3", "26b6f036f0127548706aade4a509978fc7c26bd5334b004fba9bfe2687a525df", [:mix], [{:configparser_ex, "~> 4.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:jsx, "~> 2.8", [hex: :jsx, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "0bdbe2aed9f326922fc5a6a80417e32f0c895f4b3b2b0b9676ebf23dd16c5da4"}, + "ex_aws": {:hex, :ex_aws, "2.1.6", "41ab8b4caa48035c96d07faa035d2d9de6df480e7e084c054e662ac888dcd4d4", [:mix], [{:configparser_ex, "~> 4.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:jsx, "~> 2.8", [hex: :jsx, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "a541bd042c1ee26412bb1e749ddf2a1c327e4fb7e382b1cd227e1b00eed3d469"}, "ex_aws_s3": {:hex, :ex_aws_s3, "2.0.2", "c0258bbdfea55de4f98f0b2f0ca61fe402cc696f573815134beb1866e778f47b", [:mix], [{:ex_aws, "~> 2.0", [hex: :ex_aws, repo: "hexpm", optional: false]}, {:sweet_xml, ">= 0.0.0", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "0569f5b211b1a3b12b705fe2a9d0e237eb1360b9d76298028df2346cad13097a"}, "ex_const": {:hex, :ex_const, "0.2.4", "d06e540c9d834865b012a17407761455efa71d0ce91e5831e86881b9c9d82448", [:mix], [], "hexpm", "96fd346610cc992b8f896ed26a98be82ac4efb065a0578f334a32d60a3ba9767"}, "ex_doc": {:hex, :ex_doc, "0.22.2", "03a2a58bdd2ba0d83d004507c4ee113b9c521956938298eba16e55cc4aba4a6c", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "cf60e1b3e2efe317095b6bb79651f83a2c1b3edcb4d319c421d7fcda8b3aff26"}, -- cgit v1.2.3 From 93852f1b42a187c86e4b1388a179699b8499ffea Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 16 Nov 2020 19:54:02 +0000 Subject: Document S3 and Elixir 1.11 compat fix --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bf0ba964..ee6c5184f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ switched to a new configuration mechanism, however it was not officially removed ### Fixes - Config generation: rename `Pleroma.Upload.Filter.ExifTool` to `Pleroma.Upload.Filter.Exiftool` +- S3 Uploads with Elixir 1.11 ## [2.1.2] - 2020-09-17 -- cgit v1.2.3 From a21aeeee12d7f3a7fd0ad4102661e8ee9eff19ab Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 17 Nov 2020 15:15:53 +0000 Subject: Need to start web_resp cache or mix task fails --- lib/mix/pleroma.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex index 49ba2aae4..3de11efce 100644 --- a/lib/mix/pleroma.ex +++ b/lib/mix/pleroma.ex @@ -14,7 +14,7 @@ defmodule Mix.Pleroma do :swoosh, :timex ] - @cachex_children ["object", "user", "scrubber"] + @cachex_children ["object", "user", "scrubber", "web_resp"] @doc "Common functions to be reused in mix tasks" def start_pleroma do Pleroma.Config.Holder.save_default() -- cgit v1.2.3 From 42a386eb9f3655b695de8d07e4d03e790655ccb0 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 17 Nov 2020 15:28:46 +0000 Subject: Document fixing the pleroma.user delete_activities mix task --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee6c5184f..21239237a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.2.1] - 2020-12-22 + +### Fixed + +- Config generation: rename `Pleroma.Upload.Filter.ExifTool` to `Pleroma.Upload.Filter.Exiftool`. +- S3 Uploads with Elixir 1.11. +- Mix task pleroma.user delete_activities for source installations. + ## [2.2.0] - 2020-11-12 ### Security -- cgit v1.2.3 From 3388bf9c9b4d200e7fca6c8bcc5edd79bfa3b73d Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 19 Nov 2020 13:20:58 +0100 Subject: Activity search: Fix order of results Greatly speeds up the search for RUM. --- lib/pleroma/activity/search.ex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/activity/search.ex b/lib/pleroma/activity/search.ex index ceb365bb3..95ac90acb 100644 --- a/lib/pleroma/activity/search.ex +++ b/lib/pleroma/activity/search.ex @@ -27,7 +27,10 @@ def search(user, search_query, options \\ []) do |> maybe_restrict_local(user) |> maybe_restrict_author(author) |> maybe_restrict_blocked(user) - |> Pagination.fetch_paginated(%{"offset" => offset, "limit" => limit}, :offset) + |> Pagination.fetch_paginated( + %{"offset" => offset, "limit" => limit, "skip_order" => true}, + :offset + ) |> maybe_fetch(user, search_query) end -- cgit v1.2.3 From 29c3c35ba1affa7e2b9b92e5798368724cc3b0f0 Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 19 Nov 2020 16:29:31 +0100 Subject: Search: Only skip ordering the rum index. --- lib/pleroma/activity/search.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/activity/search.ex b/lib/pleroma/activity/search.ex index 95ac90acb..382c81118 100644 --- a/lib/pleroma/activity/search.ex +++ b/lib/pleroma/activity/search.ex @@ -28,7 +28,7 @@ def search(user, search_query, options \\ []) do |> maybe_restrict_author(author) |> maybe_restrict_blocked(user) |> Pagination.fetch_paginated( - %{"offset" => offset, "limit" => limit, "skip_order" => true}, + %{"offset" => offset, "limit" => limit, "skip_order" => index_type == :rum}, :offset ) |> maybe_fetch(user, search_query) -- cgit v1.2.3 From 66c75b01929f5a4c5b02a6690f98ee363cfa77d6 Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Dec 2020 21:05:12 +0100 Subject: Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21239237a..afb6cac08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Config generation: rename `Pleroma.Upload.Filter.ExifTool` to `Pleroma.Upload.Filter.Exiftool`. - S3 Uploads with Elixir 1.11. - Mix task pleroma.user delete_activities for source installations. +- Search: RUM index search speed has been fixed. ## [2.2.0] - 2020-11-12 -- cgit v1.2.3 From c10783087f9ed18ccd2cb42070c13c918ee12652 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Sat, 12 Dec 2020 13:01:30 -0600 Subject: Switch to a fork of Hackney 1.15.2 for now so we can have our URL normalization bugfix --- mix.exs | 5 ++++- mix.lock | 16 ++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/mix.exs b/mix.exs index fe9fc753b..d9c262b7c 100644 --- a/mix.exs +++ b/mix.exs @@ -208,7 +208,10 @@ defp deps do {:mock, "~> 0.3.5", only: :test}, # temporary downgrade for excoveralls, hackney until hackney max_connections bug will be fixed {:excoveralls, "0.12.3", only: :test}, - {:hackney, "1.15.2", override: true}, + {:hackney, + git: "https://git.pleroma.social/pleroma/elixir-libraries/hackney.git", + ref: "7d7119f0651515d6d7669c78393fd90950a3ec6e", + override: true}, {:mox, "~> 0.5", only: :test}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 3927e948e..d406ac337 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"}, "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "e0f16822d578866e186a0974d65ad58cddc1e2ab", [ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"]}, "castore": {:hex, :castore, "0.1.7", "1ca19eee705cde48c9e809e37fdd0730510752cc397745e550f6065a56a701e9", [:mix], [], "hexpm", "a2ae2c13d40e9c308387f1aceb14786dca019ebc2a11484fb2a9f797ea0aa0d8"}, - "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, + "certifi": {:git, "https://github.com/certifi/erlang-certifi", "e08b12e8993502240c25b78563993776f87ecd2a", [tag: "2.5.1"]}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "d81be41024569330f296fc472e24198d7499ba78", [ref: "d81be41024569330f296fc472e24198d7499ba78"]}, @@ -53,12 +53,12 @@ "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "gettext": {:hex, :gettext, "0.18.0", "406d6b9e0e3278162c2ae1de0a60270452c553536772167e2d701f028116f870", [:mix], [], "hexpm", "c3f850be6367ebe1a08616c2158affe4a23231c70391050bf359d5f92f66a571"}, "gun": {:git, "https://github.com/ninenines/gun.git", "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", [ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327"]}, - "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, + "hackney": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/hackney.git", "7d7119f0651515d6d7669c78393fd90950a3ec6e", [ref: "7d7119f0651515d6d7669c78393fd90950a3ec6e"]}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.3.0", "f005ad692b717691203f940c686208aa3d8ffd9dd4bb3699240096a51fa9564e", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, - "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, + "idna": {:git, "https://github.com/benoitc/erlang-idna", "6cff72747821110169ecfac871b0c69e5064afff", [tag: "6.0.0"]}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"}, "joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"}, @@ -70,9 +70,9 @@ "makeup": {:hex, :makeup, "1.0.3", "e339e2f766d12e7260e6672dd4047405963c5ec99661abdc432e6ec67d29ef95", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "2e9b4996d11832947731f7608fed7ad2f9443011b3b479ae288011265cdd3dad"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.1", "4f0e96847c63c17841d42c08107405a005a2680eb9c7ccadfd757bd31dabccfb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f2438b1a80eaec9ede832b5c41cd4f373b38fd7aa33e3b22d9db79e640cbde11"}, "meck": {:hex, :meck, "0.8.13", "ffedb39f99b0b99703b8601c6f17c7f76313ee12de6b646e671e3188401f7866", [:rebar3], [], "hexpm", "d34f013c156db51ad57cc556891b9720e6a1c1df5fe2e15af999c84d6cebeb1a"}, - "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, + "metrics": {:git, "https://github.com/benoitc/erlang-metrics", "c6eb4dcf29f9e907539915e2ab996f40c2ec7e8e", [tag: "1.0.1"]}, "mime": {:hex, :mime, "1.4.0", "5066f14944b470286146047d2f73518cf5cca82f8e4815cf35d196b58cf07c47", [:mix], [], "hexpm", "75fa42c4228ea9a23f70f123c74ba7cece6a03b1fd474fe13f6a7a85c6ea4ff6"}, - "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, + "mimerl": {:git, "https://github.com/benoitc/mimerl", "5a1b22a8fada5b3b40438da00a6923cb87a42bbc", [tag: "1.2.0"]}, "mochiweb": {:hex, :mochiweb, "2.18.0", "eb55f1db3e6e960fac4e6db4e2db9ec3602cc9f30b86cd1481d56545c3145d2e", [:rebar3], [], "hexpm"}, "mock": {:hex, :mock, "0.3.5", "feb81f52b8dcf0a0d65001d2fec459f6b6a8c22562d94a965862f6cc066b5431", [:mix], [{:meck, "~> 0.8.13", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "6fae404799408300f863550392635d8f7e3da6b71abdd5c393faf41b131c8728"}, "mogrify": {:hex, :mogrify, "0.7.4", "9b2496dde44b1ce12676f85d7dc531900939e6367bc537c7243a1b089435b32d", [:mix], [], "hexpm", "50d79e337fba6bc95bfbef918058c90f50b17eed9537771e61d4619488f099c3"}, @@ -84,7 +84,7 @@ "oban": {:hex, :oban, "2.1.0", "034144686f7e76a102b5d67731f098d98a9e4a52b07c25ad580a01f83a7f1cf5", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c6f067fa3b308ed9e0e6beb2b34277c9c4e48bf95338edabd8f4a757a26e04c2"}, "open_api_spex": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", "f296ac0924ba3cf79c7a588c4c252889df4c2edd", [ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"]}, "p1_utils": {:hex, :p1_utils, "1.0.18", "3fe224de5b2e190d730a3c5da9d6e8540c96484cf4b4692921d1e28f0c32b01c", [:rebar3], [], "hexpm", "1fc8773a71a15553b179c986b22fbeead19b28fe486c332d4929700ffeb71f88"}, - "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, + "parse_trans": {:git, "https://github.com/uwiger/parse_trans.git", "76abb347c3c1d00fb0ccf9e4b43e22b3d2288484", [tag: "3.3.0"]}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "1.2.1", "9cbe354b58121075bd20eb83076900a3832324b7dd171a6895fab57b6bb2752c", [:mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}], "hexpm", "d3b40a4a4630f0b442f19eca891fcfeeee4c40871936fed2f68e1c4faa30481f"}, "phoenix": {:hex, :phoenix, "1.5.6", "8298cdb4e0f943242ba8410780a6a69cbbe972fef199b341a36898dd751bdd66", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0dc4d39af1306b6aa5122729b0a95ca779e42c708c6fe7abbb3d336d5379e956"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.2.1", "13f124cf0a3ce0f1948cf24654c7b9f2347169ff75c1123f44674afee6af3b03", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "478a1bae899cac0a6e02be1deec7e2944b7754c04e7d4107fc5a517f877743c0"}, @@ -110,7 +110,7 @@ "recon": {:hex, :recon, "2.5.1", "430ffa60685ac1efdfb1fe4c97b8767c92d0d92e6e7c3e8621559ba77598678a", [:mix, :rebar3], [], "hexpm", "5721c6b6d50122d8f68cccac712caa1231f97894bab779eff5ff0f886cb44648"}, "remote_ip": {:git, "https://git.pleroma.social/pleroma/remote_ip.git", "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8", [ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"]}, "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, + "ssl_verify_fun": {:git, "https://github.com/deadtrickster/ssl_verify_fun.erl", "c5718226b0b9f3d1a38ef6ca3c3b4c75f53dda92", [tag: "1.1.4"]}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm", "2e1ec458f892ffa81f9f8386e3f35a1af6db7a7a37748a64478f13163a1f3573"}, "swoosh": {:hex, :swoosh, "1.0.6", "6765e334c67dacabe721f0d701c7e5a6f06e4595c90df6f91e73ebd54d555833", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "7c50ef78e4acfd1cbd4907dc1fa87b5540675a6be9dc979d04890f49d7ec1830"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, @@ -120,7 +120,7 @@ "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.4", "a3baa4709ea8dba552dca165af6ae97c624a2d6ac14bd265165eaa8e8af94af6", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "b02637db3df1fd66dd2d3c4f194a81633d0e4b44308d36c1b2fdfd1e4e6f169b"}, "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, + "unicode_util_compat": {:git, "https://github.com/benoitc/unicode_util_compat.git", "38d7bc105f51159e8ea3279c40121db9db1e652f", [tag: "0.3.1"]}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, -- cgit v1.2.3 From a32e13e6c48493eae1d28200c49bfe113cc15758 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 2 Dec 2020 12:18:43 +0100 Subject: User: Don't allow local users in remote changesets --- lib/pleroma/user.ex | 13 +++++++++++++ test/pleroma/user_test.exs | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index b56a5dfe2..f6ab4f666 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -461,7 +461,20 @@ def remote_user_changeset(struct \\ %User{local: false}, params) do |> validate_format(:nickname, @email_regex) |> validate_length(:bio, max: bio_limit) |> validate_length(:name, max: name_limit) + |> validate_inclusion(:local, [true]) |> validate_fields(true) + |> validate_non_local() + end + + defp validate_non_local(cng) do + local? = get_field(cng, :local) + + if local? do + cng + |> add_error(:local, "User is local, can't update with this changeset.") + else + cng + end end def update_changeset(struct, params \\ %{}) do diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index d8ac652af..52dcea0b3 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -877,6 +877,13 @@ test "it has required fields" do refute cs.valid? end) end + + test "it is invalid given a local user" do + user = insert(:user) + cs = User.remote_user_changeset(user, %{name: "tom from myspace"}) + + refute cs.valid? + end end describe "followers and friends" do -- cgit v1.2.3 From 41d6225e2ed4781ca4b6977cee64e84b6b172643 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 2 Dec 2020 13:39:29 +0100 Subject: User: Remove left-over (wrong) fix. --- lib/pleroma/user.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f6ab4f666..0545b7445 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -461,7 +461,6 @@ def remote_user_changeset(struct \\ %User{local: false}, params) do |> validate_format(:nickname, @email_regex) |> validate_length(:bio, max: bio_limit) |> validate_length(:name, max: name_limit) - |> validate_inclusion(:local, [true]) |> validate_fields(true) |> validate_non_local() end -- cgit v1.2.3 From c26583c99e7d30167f1e976bb5b247ef4b648be4 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 2 Dec 2020 14:48:11 +0100 Subject: SideEffects: fix test --- test/pleroma/web/activity_pub/side_effects_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pleroma/web/activity_pub/side_effects_test.exs b/test/pleroma/web/activity_pub/side_effects_test.exs index 9efbaad04..297fc0b84 100644 --- a/test/pleroma/web/activity_pub/side_effects_test.exs +++ b/test/pleroma/web/activity_pub/side_effects_test.exs @@ -108,7 +108,7 @@ test "it blocks but does not unfollow if the relevant setting is set", %{ describe "update users" do setup do - user = insert(:user) + user = insert(:user, local: false) {:ok, update_data, []} = Builder.update(user, %{"id" => user.ap_id, "name" => "new name!"}) {:ok, update, _meta} = ActivityPub.persist(update_data, local: true) -- cgit v1.2.3 From 897b62091bd9f5ee9a98a49defd2b6591fb53fc7 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 24 Nov 2020 18:44:48 +0300 Subject: fix for elixir 1.11 load runtime configs in releases with config provider --- config/releases.exs | 31 ---------------- lib/pleroma/config/holder.ex | 19 ++++++---- lib/pleroma/config/release_runtime_provider.ex | 50 ++++++++++++++++++++++++++ mix.exs | 3 +- 4 files changed, 65 insertions(+), 38 deletions(-) delete mode 100644 config/releases.exs create mode 100644 lib/pleroma/config/release_runtime_provider.ex diff --git a/config/releases.exs b/config/releases.exs deleted file mode 100644 index 19636765f..000000000 --- a/config/releases.exs +++ /dev/null @@ -1,31 +0,0 @@ -import Config - -config :pleroma, :instance, static_dir: "/var/lib/pleroma/static" -config :pleroma, Pleroma.Uploaders.Local, uploads: "/var/lib/pleroma/uploads" -config :pleroma, :modules, runtime_dir: "/var/lib/pleroma/modules" - -config_path = System.get_env("PLEROMA_CONFIG_PATH") || "/etc/pleroma/config.exs" - -config :pleroma, release: true, config_path: config_path - -if File.exists?(config_path) do - import_config config_path -else - warning = [ - IO.ANSI.red(), - IO.ANSI.bright(), - "!!! #{config_path} not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file", - IO.ANSI.reset() - ] - - IO.puts(warning) -end - -exported_config = - config_path - |> Path.dirname() - |> Path.join("prod.exported_from_db.secret.exs") - -if File.exists?(exported_config) do - import_config exported_config -end diff --git a/lib/pleroma/config/holder.ex b/lib/pleroma/config/holder.ex index f037d5d48..a99fc0471 100644 --- a/lib/pleroma/config/holder.ex +++ b/lib/pleroma/config/holder.ex @@ -9,12 +9,7 @@ defmodule Pleroma.Config.Holder do def save_default do default_config = if System.get_env("RELEASE_NAME") do - release_config = - [:code.root_dir(), "releases", System.get_env("RELEASE_VSN"), "releases.exs"] - |> Path.join() - |> Pleroma.Config.Loader.read() - - Pleroma.Config.Loader.merge(@config, release_config) + Pleroma.Config.Loader.merge(@config, release_defaults()) else @config end @@ -32,4 +27,16 @@ def default_config(group), do: Keyword.get(get_default(), group) def default_config(group, key), do: get_in(get_default(), [group, key]) defp get_default, do: Pleroma.Config.get(:default_config) + + @spec release_defaults() :: keyword() + def release_defaults do + [ + pleroma: [ + {:instance, [static_dir: "/var/lib/pleroma/static"]}, + {Pleroma.Uploaders.Local, [uploads: "/var/lib/pleroma/uploads"]}, + {:modules, [runtime_dir: "/var/lib/pleroma/modules"]}, + {:release, true} + ] + ] + end end diff --git a/lib/pleroma/config/release_runtime_provider.ex b/lib/pleroma/config/release_runtime_provider.ex new file mode 100644 index 000000000..8227195dc --- /dev/null +++ b/lib/pleroma/config/release_runtime_provider.ex @@ -0,0 +1,50 @@ +defmodule Pleroma.Config.ReleaseRuntimeProvider do + @moduledoc """ + Imports `runtime.exs` and `{env}.exported_from_db.secret.exs` for elixir releases. + """ + @behaviour Config.Provider + + @impl true + def init(opts), do: opts + + @impl true + def load(config, _opts) do + with_defaults = Config.Reader.merge(config, Pleroma.Config.Holder.release_defaults()) + + config_path = System.get_env("PLEROMA_CONFIG_PATH") || "/etc/pleroma/config.exs" + + with_runtime_config = + if File.exists?(config_path) do + runtime_config = Config.Reader.read!(config_path) + + with_defaults + |> Config.Reader.merge(pleroma: [config_path: config_path]) + |> Config.Reader.merge(runtime_config) + else + warning = [ + IO.ANSI.red(), + IO.ANSI.bright(), + "!!! #{config_path} not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file", + IO.ANSI.reset() + ] + + IO.puts(warning) + with_defaults + end + + exported_config_path = + config_path + |> Path.dirname() + |> Path.join("prod.exported_from_db.secret.exs") + + with_exported = + if File.exists?(exported_config_path) do + exported_config = Config.Reader.read!(with_runtime_config) + Config.Reader.merge(with_runtime_config, exported_config) + else + with_runtime_config + end + + with_exported + end +end diff --git a/mix.exs b/mix.exs index d9c262b7c..3a1fd0b18 100644 --- a/mix.exs +++ b/mix.exs @@ -37,7 +37,8 @@ def project do pleroma: [ include_executables_for: [:unix], applications: [ex_syslogger: :load, syslog: :load, eldap: :transient], - steps: [:assemble, &put_otp_version/1, ©_files/1, ©_nginx_config/1] + steps: [:assemble, &put_otp_version/1, ©_files/1, ©_nginx_config/1], + config_providers: [{Pleroma.Config.ReleaseRuntimeProvider, nil}] ] ] ] -- cgit v1.2.3 From 5cfa32cb50f211d5bffdaa21a0cc705a0bf640ce Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 19 Nov 2020 18:08:22 +0300 Subject: [#2301] Quick fix: users with is_discoverable == false (default!) are included in search results. --- lib/pleroma/user/search.ex | 8 +++++--- test/pleroma/user_search_test.exs | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index 35a828008..b54111090 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -85,7 +85,7 @@ defp search_query(query_string, for_user, following, top_user_ids) do |> base_query(following) |> filter_blocked_user(for_user) |> filter_invisible_users() - |> filter_discoverable_users() + |> filter_non_discoverable_users() |> filter_internal_users() |> filter_blocked_domains(for_user) |> fts_search(query_string) @@ -163,8 +163,10 @@ defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) end - defp filter_discoverable_users(query) do - from(q in query, where: q.discoverable == true) + defp filter_non_discoverable_users(query) do + # Note: commented out โ€” can't do it with users being non-discoverable by default + # from(q in query, where: q.is_discoverable == true) + query end defp filter_internal_users(query) do diff --git a/test/pleroma/user_search_test.exs b/test/pleroma/user_search_test.exs index c4b805005..42f3f78a8 100644 --- a/test/pleroma/user_search_test.exs +++ b/test/pleroma/user_search_test.exs @@ -65,12 +65,13 @@ test "excludes invisible users from results" do assert found_user.id == user.id end - test "excludes users when discoverable is false" do + test "does NOT exclude non-discoverable users from results (as long as it's the default)" do + # NOTE: as long as users are non-discoverable by default, we can't filter out most users: #2301 insert(:user, %{nickname: "john 3000", discoverable: false}) insert(:user, %{nickname: "john 3001"}) users = User.search("john") - assert Enum.count(users) == 1 + assert Enum.count(users) == 2 end test "excludes service actors from results" do -- cgit v1.2.3 From 0f527c9e024bdd56b435de6f5c49605207043765 Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Dec 2020 21:22:48 +0100 Subject: Mix: Update linkify to 0.4.1 --- CHANGELOG.md | 2 ++ mix.exs | 2 +- mix.lock | 2 +- test/pleroma/formatter_test.exs | 6 ++---- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index afb6cac08..fcc27ce28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - S3 Uploads with Elixir 1.11. - Mix task pleroma.user delete_activities for source installations. - Search: RUM index search speed has been fixed. +- Rich Media Previews sometimes showed the wrong preview due to a bug following redirects. +- Fixes for the autolinker. ## [2.2.0] - 2020-11-12 diff --git a/mix.exs b/mix.exs index 3a1fd0b18..93f4766d7 100644 --- a/mix.exs +++ b/mix.exs @@ -161,7 +161,7 @@ defp deps do {:floki, "~> 0.27"}, {:timex, "~> 3.6"}, {:ueberauth, "~> 0.4"}, - {:linkify, "~> 0.2.0"}, + {:linkify, "~> 0.4.1"}, {:http_signatures, "~> 0.1.0"}, {:telemetry, "~> 0.3"}, {:poolboy, "~> 1.5"}, diff --git a/mix.lock b/mix.lock index d406ac337..dd8bc5d82 100644 --- a/mix.lock +++ b/mix.lock @@ -65,7 +65,7 @@ "jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, "libring": {:hex, :libring, "1.4.0", "41246ba2f3fbc76b3971f6bce83119dfec1eee17e977a48d8a9cfaaf58c2a8d6", [:mix], [], "hexpm"}, - "linkify": {:hex, :linkify, "0.2.0", "2518bbbea21d2caa9d372424e1ad845b640c6630e2d016f1bd1f518f9ebcca28", [:mix], [], "hexpm", "b8ca8a68b79e30b7938d6c996085f3db14939f29538a59ca5101988bb7f917f6"}, + "linkify": {:hex, :linkify, "0.4.1", "f881eb3429ae88010cf736e6fb3eed406c187bcdd544902ec937496636b7c7b3", [:mix], [], "hexpm", "ce98693f54ae9ace59f2f7a8aed3de2ef311381a8ce7794804bd75484c371dda"}, "majic": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/majic", "4c692e544b28d1f5e543fb8a44be090f8cd96f80", [branch: "develop"]}, "makeup": {:hex, :makeup, "1.0.3", "e339e2f766d12e7260e6672dd4047405963c5ec99661abdc432e6ec67d29ef95", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "2e9b4996d11832947731f7608fed7ad2f9443011b3b479ae288011265cdd3dad"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.1", "4f0e96847c63c17841d42c08107405a005a2680eb9c7ccadfd757bd31dabccfb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f2438b1a80eaec9ede832b5c41cd4f373b38fd7aa33e3b22d9db79e640cbde11"}, diff --git a/test/pleroma/formatter_test.exs b/test/pleroma/formatter_test.exs index f066bd50a..5781a3f01 100644 --- a/test/pleroma/formatter_test.exs +++ b/test/pleroma/formatter_test.exs @@ -241,16 +241,14 @@ test "it can parse mentions and return the relevant users" do "@@gsimg According to @archaeme, that is @daggsy. Also hello @archaeme@archae.me and @o and @@@jimm" o = insert(:user, %{nickname: "o"}) - jimm = insert(:user, %{nickname: "jimm"}) - gsimg = insert(:user, %{nickname: "gsimg"}) + _jimm = insert(:user, %{nickname: "jimm"}) + _gsimg = insert(:user, %{nickname: "gsimg"}) archaeme = insert(:user, %{nickname: "archaeme"}) archaeme_remote = insert(:user, %{nickname: "archaeme@archae.me"}) expected_mentions = [ {"@archaeme", archaeme}, {"@archaeme@archae.me", archaeme_remote}, - {"@gsimg", gsimg}, - {"@jimm", jimm}, {"@o", o} ] -- cgit v1.2.3 From d788b41c2e348b968ae72be2a347f186cdc2b70c Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Dec 2020 21:32:11 +0100 Subject: Report fixes. --- CHANGELOG.md | 8 ++ lib/pleroma/activity.ex | 11 ++ lib/pleroma/emails/admin_email.ex | 3 + lib/pleroma/web/activity_pub/activity_pub.ex | 35 ++++-- lib/pleroma/web/activity_pub/utils.ex | 44 ++++--- test/pleroma/activity_test.exs | 16 +++ .../activity_pub/activity_pub_controller_test.exs | 136 +++++++++++++++++++++ .../pleroma/web/activity_pub/activity_pub_test.exs | 25 ++++ test/support/factory.ex | 32 +++-- 9 files changed, 271 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcc27ce28..5f6d96c0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Search: RUM index search speed has been fixed. - Rich Media Previews sometimes showed the wrong preview due to a bug following redirects. - Fixes for the autolinker. +- Forwarded reports duplication from Pleroma instances. + +
+ API +- Statuses were not displayed for Mastodon forwarded reports. + +
+ ## [2.2.0] - 2020-11-12 diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 17af04257..1dc777e3b 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -343,4 +343,15 @@ def pinned_by_actor?(%Activity{} = activity) do actor = user_actor(activity) activity.id in actor.pinned_activities end + + @spec get_by_object_ap_id_with_object(String.t()) :: t() | nil + def get_by_object_ap_id_with_object(ap_id) when is_binary(ap_id) do + ap_id + |> Queries.by_object_id() + |> with_preloaded_object() + |> first() + |> Repo.one() + end + + def get_by_object_ap_id_with_object(_), do: nil end diff --git a/lib/pleroma/emails/admin_email.ex b/lib/pleroma/emails/admin_email.ex index 8979db2f8..423c294cb 100644 --- a/lib/pleroma/emails/admin_email.ex +++ b/lib/pleroma/emails/admin_email.ex @@ -52,6 +52,9 @@ def report(to, reporter, account, statuses, comment) do status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, id) "
  • #{status_url}
  • " + %{"id" => id} when is_binary(id) -> + "
  • #{id}
  • " + id when is_binary(id) -> "
  • #{id}
  • " end) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 3543f7f73..99c729473 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -332,15 +332,21 @@ defp do_unfollow(follower, followed, activity_id, local) do end @spec flag(map()) :: {:ok, Activity.t()} | {:error, any()} - def flag( - %{ - actor: actor, - context: _context, - account: account, - statuses: statuses, - content: content - } = params - ) do + def flag(params) do + with {:ok, result} <- Repo.transaction(fn -> do_flag(params) end) do + result + end + end + + defp do_flag( + %{ + actor: actor, + context: _context, + account: account, + statuses: statuses, + content: content + } = params + ) do # only accept false as false value local = !(params[:local] == false) forward = !(params[:forward] == false) @@ -358,7 +364,8 @@ def flag( {:ok, activity} <- insert(flag_data, local), {:ok, stripped_activity} <- strip_report_status_data(activity), _ <- notify_and_stream(activity), - :ok <- maybe_federate(stripped_activity) do + :ok <- + maybe_federate(stripped_activity) do User.all_superusers() |> Enum.filter(fn user -> not is_nil(user.email) end) |> Enum.each(fn superuser -> @@ -368,6 +375,8 @@ def flag( end) {:ok, activity} + else + {:error, error} -> Repo.rollback(error) end end @@ -791,10 +800,10 @@ defp restrict_replies(query, %{ where: fragment( """ - ?->>'type' != 'Create' -- This isn't a Create + ?->>'type' != 'Create' -- This isn't a Create OR ?->>'inReplyTo' is null -- this isn't a reply - OR ? && array_remove(?, ?) -- The recipient is us or one of our friends, - -- unless they are the author (because authors + OR ? && array_remove(?, ?) -- The recipient is us or one of our friends, + -- unless they are the author (because authors -- are also part of the recipients). This leads -- to a bug that self-replies by friends won't -- show up. diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 713b0ca1f..d580c02a9 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -701,14 +701,30 @@ def make_flag_data(%{actor: actor, context: context, content: content} = params, def make_flag_data(_, _), do: %{} - defp build_flag_object(%{account: account, statuses: statuses} = _) do - [account.ap_id] ++ build_flag_object(%{statuses: statuses}) + defp build_flag_object(%{account: account, statuses: statuses}) do + [account.ap_id | build_flag_object(%{statuses: statuses})] end defp build_flag_object(%{statuses: statuses}) do Enum.map(statuses || [], &build_flag_object/1) end + defp build_flag_object(%Activity{data: %{"id" => id}, object: %{data: data}}) do + activity_actor = User.get_by_ap_id(data["actor"]) + + %{ + "type" => "Note", + "id" => id, + "content" => data["content"], + "published" => data["published"], + "actor" => + AccountView.render( + "show.json", + %{user: activity_actor, skip_visibility_check: true} + ) + } + end + defp build_flag_object(act) when is_map(act) or is_binary(act) do id = case act do @@ -719,22 +735,14 @@ defp build_flag_object(act) when is_map(act) or is_binary(act) do case Activity.get_by_ap_id_with_object(id) do %Activity{} = activity -> - activity_actor = User.get_by_ap_id(activity.object.data["actor"]) - - %{ - "type" => "Note", - "id" => activity.data["id"], - "content" => activity.object.data["content"], - "published" => activity.object.data["published"], - "actor" => - AccountView.render( - "show.json", - %{user: activity_actor, skip_visibility_check: true} - ) - } - - _ -> - %{"id" => id, "deleted" => true} + build_flag_object(activity) + + nil -> + if activity = Activity.get_by_object_ap_id_with_object(id) do + build_flag_object(activity) + else + %{"id" => id, "deleted" => true} + end end end diff --git a/test/pleroma/activity_test.exs b/test/pleroma/activity_test.exs index ee6a99cc3..3e9fe209e 100644 --- a/test/pleroma/activity_test.exs +++ b/test/pleroma/activity_test.exs @@ -231,4 +231,20 @@ test "all_by_actor_and_id/2" do assert [%Activity{id: ^id1}, %Activity{id: ^id2}] = activities end + + test "get_by_object_ap_id_with_object/1" do + user = insert(:user) + another = insert(:user) + + {:ok, %{id: id, object: %{data: %{"id" => obj_id}}}} = + Pleroma.Web.CommonAPI.post(user, %{status: "cofe"}) + + Pleroma.Web.CommonAPI.favorite(another, id) + + assert obj_id + |> Pleroma.Activity.Queries.by_object_id() + |> Repo.aggregate(:count, :id) == 2 + + assert %{id: ^id} = Activity.get_by_object_ap_id_with_object(obj_id) + end end diff --git a/test/pleroma/web/activity_pub/activity_pub_controller_test.exs b/test/pleroma/web/activity_pub/activity_pub_controller_test.exs index b696a24f4..fb5911825 100644 --- a/test/pleroma/web/activity_pub/activity_pub_controller_test.exs +++ b/test/pleroma/web/activity_pub/activity_pub_controller_test.exs @@ -766,6 +766,142 @@ test "it requires authentication", %{conn: conn} do assert json_response(ret_conn, 200) end + + @tag capture_log: true + test "forwarded report", %{conn: conn} do + admin = insert(:user, is_admin: true) + actor = insert(:user, local: false) + remote_domain = URI.parse(actor.ap_id).host + reported_user = insert(:user) + + note = insert(:note_activity, user: reported_user) + + data = %{ + "@context" => [ + "https://www.w3.org/ns/activitystreams", + "https://#{remote_domain}/schemas/litepub-0.1.jsonld", + %{ + "@language" => "und" + } + ], + "actor" => actor.ap_id, + "cc" => [ + reported_user.ap_id + ], + "content" => "test", + "context" => "context", + "id" => "http://#{remote_domain}/activities/02be56cf-35e3-46b4-b2c6-47ae08dfee9e", + "nickname" => reported_user.nickname, + "object" => [ + reported_user.ap_id, + %{ + "actor" => %{ + "actor_type" => "Person", + "approval_pending" => false, + "avatar" => "", + "confirmation_pending" => false, + "deactivated" => false, + "display_name" => "test user", + "id" => reported_user.id, + "local" => false, + "nickname" => reported_user.nickname, + "registration_reason" => nil, + "roles" => %{ + "admin" => false, + "moderator" => false + }, + "tags" => [], + "url" => reported_user.ap_id + }, + "content" => "", + "id" => note.data["id"], + "published" => note.data["published"], + "type" => "Note" + } + ], + "published" => note.data["published"], + "state" => "open", + "to" => [], + "type" => "Flag" + } + + conn + |> assign(:valid_signature, true) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{reported_user.nickname}/inbox", data) + |> json_response(200) + + ObanHelpers.perform(all_enqueued(worker: ReceiverWorker)) + + assert Pleroma.Repo.aggregate(Activity, :count, :id) == 2 + + ObanHelpers.perform_all() + + Swoosh.TestAssertions.assert_email_sent( + to: {admin.name, admin.email}, + html_body: ~r/Reported Account:/i + ) + end + + @tag capture_log: true + test "forwarded report from mastodon", %{conn: conn} do + admin = insert(:user, is_admin: true) + actor = insert(:user, local: false) + remote_domain = URI.parse(actor.ap_id).host + remote_actor = "https://#{remote_domain}/actor" + [reported_user, another] = insert_list(2, :user) + + note = insert(:note_activity, user: reported_user) + + Pleroma.Web.CommonAPI.favorite(another, note.id) + + mock_json_body = + "test/fixtures/mastodon/application_actor.json" + |> File.read!() + |> String.replace("{{DOMAIN}}", remote_domain) + + Tesla.Mock.mock(fn %{url: ^remote_actor} -> + %Tesla.Env{ + status: 200, + body: mock_json_body, + headers: [{"content-type", "application/activity+json"}] + } + end) + + data = %{ + "@context" => "https://www.w3.org/ns/activitystreams", + "actor" => remote_actor, + "content" => "test report", + "id" => "https://#{remote_domain}/e3b12fd1-948c-446e-b93b-a5e67edbe1d8", + "nickname" => reported_user.nickname, + "object" => [ + reported_user.ap_id, + note.data["object"] + ], + "type" => "Flag" + } + + conn + |> assign(:valid_signature, true) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{reported_user.nickname}/inbox", data) + |> json_response(200) + + ObanHelpers.perform(all_enqueued(worker: ReceiverWorker)) + + flag_activity = "Flag" |> Pleroma.Activity.Queries.by_type() |> Pleroma.Repo.one() + reported_user_ap_id = reported_user.ap_id + + [^reported_user_ap_id, flag_data] = flag_activity.data["object"] + + Enum.each(~w(actor content id published type), &Map.has_key?(flag_data, &1)) + ObanHelpers.perform_all() + + Swoosh.TestAssertions.assert_email_sent( + to: {admin.name, admin.email}, + html_body: ~r/#{note.data["object"]}/i + ) + end end describe "GET /users/:nickname/outbox" do diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs index c6ca37847..ef93b7859 100644 --- a/test/pleroma/web/activity_pub/activity_pub_test.exs +++ b/test/pleroma/web/activity_pub/activity_pub_test.exs @@ -1282,6 +1282,31 @@ test "it can create a Flag activity", assert_called(Utils.maybe_federate(%{activity | data: new_data})) end + + test_with_mock "reverts on error", + %{ + reporter: reporter, + context: context, + target_account: target_account, + reported_activity: reported_activity, + content: content + }, + Utils, + [:passthrough], + maybe_federate: fn _ -> {:error, :reverted} end do + assert {:error, :reverted} = + ActivityPub.flag(%{ + actor: reporter, + context: context, + account: target_account, + statuses: [reported_activity], + content: content + }) + + assert Repo.aggregate(Activity, :count, :id) == 1 + assert Repo.aggregate(Object, :count, :id) == 2 + assert Repo.aggregate(Notification, :count, :id) == 0 + end end test "fetch_activities/2 returns activities addressed to a list " do diff --git a/test/support/factory.ex b/test/support/factory.ex index fb82be0c4..581c4a2d8 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -24,7 +24,7 @@ def conversation_factory do } end - def user_factory do + def user_factory(attrs \\ %{}) do user = %User{ name: sequence(:name, &"Test ใƒ†ใ‚นใƒˆ User #{&1}"), email: sequence(:email, &"user#{&1}@example.com"), @@ -39,13 +39,29 @@ def user_factory do ap_enabled: true } - %{ - user - | ap_id: User.ap_id(user), - follower_address: User.ap_followers(user), - following_address: User.ap_following(user), - raw_bio: user.bio - } + urls = + if attrs[:local] == false do + base_domain = Enum.random(["domain1.com", "domain2.com", "domain3.com"]) + + ap_id = "https://#{base_domain}/users/#{user.nickname}" + + %{ + ap_id: ap_id, + follower_address: ap_id <> "/followers", + following_address: ap_id <> "/following" + } + else + %{ + ap_id: User.ap_id(user), + follower_address: User.ap_followers(user), + following_address: User.ap_following(user) + } + end + + user + |> Map.put(:raw_bio, user.bio) + |> Map.merge(urls) + |> merge_attributes(attrs) end def user_relationship_factory(attrs \\ %{}) do -- cgit v1.2.3 From a8ca282b4a4bb205e9f7dac37fd60493c2e60a81 Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Dec 2020 21:54:31 +0100 Subject: Update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f6d96c0a..7441d6ee9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [2.2.1] - 2020-12-22 +### Changed +- Updated Pleroma FE + ### Fixed - Config generation: rename `Pleroma.Upload.Filter.ExifTool` to `Pleroma.Upload.Filter.Exiftool`. -- cgit v1.2.3 From b988e9cc8bdb23f239e2e7b4b16ca2fdf5c61cf3 Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Dec 2020 21:59:37 +0100 Subject: Mix: Update version. --- CHANGELOG.md | 1 - mix.exs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7441d6ee9..6438c9957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
    API - Statuses were not displayed for Mastodon forwarded reports. -
    diff --git a/mix.exs b/mix.exs index 93f4766d7..77168c91c 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do def project do [ app: :pleroma, - version: version("2.2.0"), + version: version("2.2.1"), elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), -- cgit v1.2.3 From d4e6ca88a6fe3a5d750f6faacaacf132755fd86a Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Dec 2020 09:35:19 +0100 Subject: Update frontend --- priv/static/index.html | 2 +- priv/static/static/emoji.json | 2398 ++++++++++++-------- priv/static/static/js/10.0044e0a91e709d07cc7f.js | Bin 0 -> 31343 bytes .../static/js/10.0044e0a91e709d07cc7f.js.map | Bin 0 -> 113 bytes priv/static/static/js/10.46f441b948010eda4403.js | Bin 31095 -> 0 bytes .../static/js/10.46f441b948010eda4403.js.map | Bin 113 -> 0 bytes priv/static/static/js/16.49ae236fe0fc6a010e66.js | Bin 0 -> 15802 bytes .../static/js/16.49ae236fe0fc6a010e66.js.map | Bin 0 -> 113 bytes priv/static/static/js/16.5e3f20da470591d0cabf.js | Bin 15700 -> 0 bytes .../static/js/16.5e3f20da470591d0cabf.js.map | Bin 113 -> 0 bytes priv/static/static/js/18.9a5b877f94b2b53065e1.js | Bin 28773 -> 0 bytes .../static/js/18.9a5b877f94b2b53065e1.js.map | Bin 113 -> 0 bytes priv/static/static/js/18.cf36e1127e02cd2a36a4.js | Bin 0 -> 28883 bytes .../static/js/18.cf36e1127e02cd2a36a4.js.map | Bin 0 -> 113 bytes priv/static/static/js/2.422e6c756ac673a6fd44.js | Bin 181862 -> 0 bytes .../static/static/js/2.422e6c756ac673a6fd44.js.map | Bin 472558 -> 0 bytes priv/static/static/js/2.9b94fcdec8b4c4dde80f.js | Bin 0 -> 181933 bytes .../static/static/js/2.9b94fcdec8b4c4dde80f.js.map | Bin 0 -> 472001 bytes priv/static/static/js/28.e575fccfc5c48ba080e1.js | Bin 0 -> 34288 bytes .../static/js/28.e575fccfc5c48ba080e1.js.map | Bin 0 -> 113 bytes priv/static/static/js/28.f1353aa382a104262d1a.js | Bin 25311 -> 0 bytes .../static/js/28.f1353aa382a104262d1a.js.map | Bin 113 -> 0 bytes priv/static/static/js/3.a0df8a5bcd120d1f8581.js | Bin 78760 -> 0 bytes .../static/static/js/3.a0df8a5bcd120d1f8581.js.map | Bin 332972 -> 0 bytes priv/static/static/js/3.c16fafd37452b101b5bc.js | Bin 0 -> 78760 bytes .../static/static/js/3.c16fafd37452b101b5bc.js.map | Bin 0 -> 332972 bytes priv/static/static/js/30.64736585965c63c2b5d4.js | Bin 26563 -> 0 bytes .../static/js/30.64736585965c63c2b5d4.js.map | Bin 113 -> 0 bytes priv/static/static/js/30.b461727270655cb0f752.js | Bin 0 -> 41993 bytes .../static/js/30.b461727270655cb0f752.js.map | Bin 0 -> 113 bytes priv/static/static/js/31.554145c52128030ca625.js | Bin 0 -> 26596 bytes .../static/js/31.554145c52128030ca625.js.map | Bin 0 -> 113 bytes priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js | Bin 2177 -> 0 bytes .../static/static/js/4.4cde7fdd1fe6bf2a9499.js.map | Bin 7940 -> 0 bytes priv/static/static/js/4.e8cf78e629b76635765f.js | Bin 0 -> 2177 bytes .../static/static/js/4.e8cf78e629b76635765f.js.map | Bin 0 -> 7940 bytes priv/static/static/js/9.3a29094f1886648a0af3.js | Bin 28533 -> 0 bytes .../static/static/js/9.3a29094f1886648a0af3.js.map | Bin 112 -> 0 bytes priv/static/static/js/9.fce4dde4ce07554d517f.js | Bin 0 -> 28527 bytes .../static/static/js/9.fce4dde4ce07554d517f.js.map | Bin 0 -> 112 bytes priv/static/static/js/app.45547c05212c403dd77c.js | Bin 597299 -> 0 bytes .../static/js/app.45547c05212c403dd77c.js.map | Bin 1546929 -> 0 bytes priv/static/static/js/app.c4f570328dc17a633803.js | Bin 0 -> 604391 bytes .../static/js/app.c4f570328dc17a633803.js.map | Bin 0 -> 1557144 bytes .../static/js/vendors~app.4103f03e428eb765f04d.js | Bin 0 -> 372447 bytes .../js/vendors~app.4103f03e428eb765f04d.js.map | Bin 0 -> 2260522 bytes .../static/js/vendors~app.952124344a84613dbac0.js | Bin 372654 -> 0 bytes .../js/vendors~app.952124344a84613dbac0.js.map | Bin 2260530 -> 0 bytes priv/static/static/themes/redmond-xx-se.json | 1 + priv/static/static/themes/redmond-xx.json | 1 + priv/static/static/themes/redmond-xxi.json | 1 + priv/static/sw-pleroma.js | Bin 181634 -> 182005 bytes priv/static/sw-pleroma.js.map | Bin 696420 -> 696556 bytes 53 files changed, 1434 insertions(+), 969 deletions(-) create mode 100644 priv/static/static/js/10.0044e0a91e709d07cc7f.js create mode 100644 priv/static/static/js/10.0044e0a91e709d07cc7f.js.map delete mode 100644 priv/static/static/js/10.46f441b948010eda4403.js delete mode 100644 priv/static/static/js/10.46f441b948010eda4403.js.map create mode 100644 priv/static/static/js/16.49ae236fe0fc6a010e66.js create mode 100644 priv/static/static/js/16.49ae236fe0fc6a010e66.js.map delete mode 100644 priv/static/static/js/16.5e3f20da470591d0cabf.js delete mode 100644 priv/static/static/js/16.5e3f20da470591d0cabf.js.map delete mode 100644 priv/static/static/js/18.9a5b877f94b2b53065e1.js delete mode 100644 priv/static/static/js/18.9a5b877f94b2b53065e1.js.map create mode 100644 priv/static/static/js/18.cf36e1127e02cd2a36a4.js create mode 100644 priv/static/static/js/18.cf36e1127e02cd2a36a4.js.map delete mode 100644 priv/static/static/js/2.422e6c756ac673a6fd44.js delete mode 100644 priv/static/static/js/2.422e6c756ac673a6fd44.js.map create mode 100644 priv/static/static/js/2.9b94fcdec8b4c4dde80f.js create mode 100644 priv/static/static/js/2.9b94fcdec8b4c4dde80f.js.map create mode 100644 priv/static/static/js/28.e575fccfc5c48ba080e1.js create mode 100644 priv/static/static/js/28.e575fccfc5c48ba080e1.js.map delete mode 100644 priv/static/static/js/28.f1353aa382a104262d1a.js delete mode 100644 priv/static/static/js/28.f1353aa382a104262d1a.js.map delete mode 100644 priv/static/static/js/3.a0df8a5bcd120d1f8581.js delete mode 100644 priv/static/static/js/3.a0df8a5bcd120d1f8581.js.map create mode 100644 priv/static/static/js/3.c16fafd37452b101b5bc.js create mode 100644 priv/static/static/js/3.c16fafd37452b101b5bc.js.map delete mode 100644 priv/static/static/js/30.64736585965c63c2b5d4.js delete mode 100644 priv/static/static/js/30.64736585965c63c2b5d4.js.map create mode 100644 priv/static/static/js/30.b461727270655cb0f752.js create mode 100644 priv/static/static/js/30.b461727270655cb0f752.js.map create mode 100644 priv/static/static/js/31.554145c52128030ca625.js create mode 100644 priv/static/static/js/31.554145c52128030ca625.js.map delete mode 100644 priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js delete mode 100644 priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js.map create mode 100644 priv/static/static/js/4.e8cf78e629b76635765f.js create mode 100644 priv/static/static/js/4.e8cf78e629b76635765f.js.map delete mode 100644 priv/static/static/js/9.3a29094f1886648a0af3.js delete mode 100644 priv/static/static/js/9.3a29094f1886648a0af3.js.map create mode 100644 priv/static/static/js/9.fce4dde4ce07554d517f.js create mode 100644 priv/static/static/js/9.fce4dde4ce07554d517f.js.map delete mode 100644 priv/static/static/js/app.45547c05212c403dd77c.js delete mode 100644 priv/static/static/js/app.45547c05212c403dd77c.js.map create mode 100644 priv/static/static/js/app.c4f570328dc17a633803.js create mode 100644 priv/static/static/js/app.c4f570328dc17a633803.js.map create mode 100644 priv/static/static/js/vendors~app.4103f03e428eb765f04d.js create mode 100644 priv/static/static/js/vendors~app.4103f03e428eb765f04d.js.map delete mode 100644 priv/static/static/js/vendors~app.952124344a84613dbac0.js delete mode 100644 priv/static/static/js/vendors~app.952124344a84613dbac0.js.map diff --git a/priv/static/index.html b/priv/static/index.html index 9b774959a..a1d3e00d2 100644 --- a/priv/static/index.html +++ b/priv/static/index.html @@ -1 +1 @@ -Pleroma
    \ No newline at end of file +
    \ No newline at end of file diff --git a/priv/static/static/emoji.json b/priv/static/static/emoji.json index ae93d17e1..12b91b3f6 100644 --- a/priv/static/static/emoji.json +++ b/priv/static/static/emoji.json @@ -1,969 +1,1431 @@ { - "womans_clothes": "\ud83d\udc5a", - "cookie": "\ud83c\udf6a", - "woman_with_headscarf": "\ud83e\uddd5", - "no_smoking": "\ud83d\udead", - "e-mail": "\ud83d\udce7", - "regional_indicator_d": "\ud83c\udde9", - "oncoming_bus": "\ud83d\ude8d", - "knife": "\ud83d\udd2a", - "person_getting_haircut": "\ud83d\udc87", - "grimacing": "\ud83d\ude2c", - "ophiuchus": "\u26ce", - "regional_indicator_q": "\ud83c\uddf6", - "thinking": "\ud83e\udd14", - "signal_strength": "\ud83d\udcf6", - "cactus": "\ud83c\udf35", - "bullettrain_front": "\ud83d\ude85", - "floppy_disk": "\ud83d\udcbe", - "doughnut": "\ud83c\udf69", - "tv": "\ud83d\udcfa", - "1234": "\ud83d\udd22", - "anguished": "\ud83d\ude27", - "clock1030": "\ud83d\udd65", - "u7533": "\ud83c\ude38", - "speak_no_evil": "\ud83d\ude4a", - "chart_with_upwards_trend": "\ud83d\udcc8", - "trophy": "\ud83c\udfc6", - "musical_score": "\ud83c\udfbc", - "chestnut": "\ud83c\udf30", - "clock1130": "\ud83d\udd66", - "abcd": "\ud83d\udd21", - "syringe": "\ud83d\udc89", - "shrimp": "\ud83e\udd90", - "pisces": "\u2653", - "left_facing_fist": "\ud83e\udd1b", - "bar_chart": "\ud83d\udcca", - "eagle": "\ud83e\udd85", - "woman": "\ud83d\udc69", - "keycap_ten": "\ud83d\udd1f", - "yellow_heart": "\ud83d\udc9b", - "croissant": "\ud83e\udd50", - "mosque": "\ud83d\udd4c", - "rice_ball": "\ud83c\udf59", - "volcano": "\ud83c\udf0b", - "baggage_claim": "\ud83d\udec4", - "family": "\ud83d\udc6a", - "beetle": "\ud83d\udc1e", - "older_adult": "\ud83e\uddd3", - "clock830": "\ud83d\udd63", - "bacon": "\ud83e\udd53", - "sound": "\ud83d\udd09", - "no_bicycles": "\ud83d\udeb3", - "rewind": "\u23ea", - "adult": "\ud83e\uddd1", - "scream_cat": "\ud83d\ude40", - "person_playing_water_polo": "\ud83e\udd3d", - "blue_car": "\ud83d\ude99", - "smiley": "\ud83d\ude03", - "kaaba": "\ud83d\udd4b", - "twisted_rightwards_arrows": "\ud83d\udd00", - "last_quarter_moon": "\ud83c\udf17", - "first_place": "\ud83e\udd47", - "joy_cat": "\ud83d\ude39", - "sleeping": "\ud83d\ude34", - "basketball": "\ud83c\udfc0", - "pray": "\ud83d\ude4f", - "trumpet": "\ud83c\udfba", - "purple_heart": "\ud83d\udc9c", - "broken_heart": "\ud83d\udc94", - "astonished": "\ud83d\ude32", - "soccer": "\u26bd", - "princess": "\ud83d\udc78", - "ant": "\ud83d\udc1c", - "pig": "\ud83d\udc37", - "vhs": "\ud83d\udcfc", - "scream": "\ud83d\ude31", - "mouse": "\ud83d\udc2d", - "field_hockey": "\ud83c\udfd1", - "ab": "\ud83c\udd8e", - "tokyo_tower": "\ud83d\uddfc", - "girl": "\ud83d\udc67", - "u55b6": "\ud83c\ude3a", - "guard": "\ud83d\udc82", - "regional_indicator_s": "\ud83c\uddf8", - "tulip": "\ud83c\udf37", - "capital_abcd": "\ud83d\udd20", - "beginner": "\ud83d\udd30", - "couplekiss": "\ud83d\udc8f", - "u5408": "\ud83c\ude34", - "black_medium_small_square": "\u25fe", - "paperclip": "\ud83d\udcce", - "hedgehog": "\ud83e\udd94", - "musical_note": "\ud83c\udfb5", - "pill": "\ud83d\udc8a", - "blue_heart": "\ud83d\udc99", - "mens": "\ud83d\udeb9", - "third_place": "\ud83e\udd49", - "stew": "\ud83c\udf72", - "prince": "\ud83e\udd34", - "mortar_board": "\ud83c\udf93", - "clock6": "\ud83d\udd55", - "beer": "\ud83c\udf7a", - "person_tipping_hand": "\ud83d\udc81", - "triangular_ruler": "\ud83d\udcd0", - "regional_indicator_y": "\ud83c\uddfe", - "person_facepalming": "\ud83e\udd26", - "steam_locomotive": "\ud83d\ude82", - "fire_engine": "\ud83d\ude92", - "horse": "\ud83d\udc34", - "ribbon": "\ud83c\udf80", - "white_large_square": "\u2b1c", - "smirk": "\ud83d\ude0f", - "genie": "\ud83e\uddde", - "tangerine": "\ud83c\udf4a", - "cl": "\ud83c\udd91", - "japanese_goblin": "\ud83d\udc7a", - "regional_indicator_u": "\ud83c\uddfa", - "ring": "\ud83d\udc8d", - "roller_coaster": "\ud83c\udfa2", - "100": "\ud83d\udcaf", - "clock12": "\ud83d\udd5b", - "two_hearts": "\ud83d\udc95", - "anger": "\ud83d\udca2", - "black_circle": "\u26ab", - "revolving_hearts": "\ud83d\udc9e", - "space_invader": "\ud83d\udc7e", - "bell": "\ud83d\udd14", - "point_up_2": "\ud83d\udc46", - "person_mountain_biking": "\ud83d\udeb5", - "flags": "\ud83c\udf8f", - "pushpin": "\ud83d\udccc", - "large_blue_diamond": "\ud83d\udd37", - "fairy": "\ud83e\uddda", - "european_post_office": "\ud83c\udfe4", - "statue_of_liberty": "\ud83d\uddfd", - "man": "\ud83d\udc68", - "microphone": "\ud83c\udfa4", - "inbox_tray": "\ud83d\udce5", - "bath": "\ud83d\udec0", - "person_gesturing_ok": "\ud83d\ude46", - "clap": "\ud83d\udc4f", - "confused": "\ud83d\ude15", - "fortune_cookie": "\ud83e\udd60", - "kissing_closed_eyes": "\ud83d\ude1a", - "kissing_heart": "\ud83d\ude18", - "tropical_fish": "\ud83d\udc20", - "taco": "\ud83c\udf2e", - "kimono": "\ud83d\udc58", - "u7a7a": "\ud83c\ude33", - "rat": "\ud83d\udc00", - "taurus": "\u2649", - "shopping_cart": "\ud83d\uded2", - "womans_hat": "\ud83d\udc52", - "blossom": "\ud83c\udf3c", - "moyai": "\ud83d\uddff", - "clock130": "\ud83d\udd5c", - "telescope": "\ud83d\udd2d", - "running_shirt_with_sash": "\ud83c\udfbd", - "person_running": "\ud83c\udfc3", - "dizzy": "\ud83d\udcab", - "crescent_moon": "\ud83c\udf19", - "boom": "\ud83d\udca5", - "restroom": "\ud83d\udebb", - "fist": "\u270a", - "white_flower": "\ud83d\udcae", - "clown": "\ud83e\udd21", - "neutral_face": "\ud83d\ude10", - "id": "\ud83c\udd94", - "carrot": "\ud83e\udd55", - "rice_scene": "\ud83c\udf91", - "foggy": "\ud83c\udf01", - "turtle": "\ud83d\udc22", - "mailbox_with_mail": "\ud83d\udcec", - "baseball": "\u26be", - "grin": "\ud83d\ude01", - "bathtub": "\ud83d\udec1", - "feet": "\ud83d\udc3e", - "small_red_triangle": "\ud83d\udd3a", - "camel": "\ud83d\udc2b", - "aquarius": "\u2652", - "face_with_symbols_over_mouth": "\ud83e\udd2c", - "handbag": "\ud83d\udc5c", - "date": "\ud83d\udcc5", - "nail_care": "\ud83d\udc85", - "satellite": "\ud83d\udce1", - "candy": "\ud83c\udf6c", - "white_medium_small_square": "\u25fd", - "clock930": "\ud83d\udd64", - "fearful": "\ud83d\ude28", - "fork_and_knife": "\ud83c\udf74", - "person_wearing_turban": "\ud83d\udc73", - "confounded": "\ud83d\ude16", - "helicopter": "\ud83d\ude81", - "arrow_double_down": "\u23ec", - "convenience_store": "\ud83c\udfea", - "ghost": "\ud83d\udc7b", - "bus": "\ud83d\ude8c", - "waning_gibbous_moon": "\ud83c\udf16", - "bank": "\ud83c\udfe6", - "department_store": "\ud83c\udfec", - "hockey": "\ud83c\udfd2", - "fingers_crossed": "\ud83e\udd1e", - "blond_haired_person": "\ud83d\udc71", - "mag": "\ud83d\udd0d", - "cut_of_meat": "\ud83e\udd69", - "wink": "\ud83d\ude09", - "railway_car": "\ud83d\ude83", - "face_vomiting": "\ud83e\udd2e", - "star_struck": "\ud83e\udd29", - "first_quarter_moon_with_face": "\ud83c\udf1b", - "octagonal_sign": "\ud83d\uded1", - "hospital": "\ud83c\udfe5", - "monkey": "\ud83d\udc12", - "curly_loop": "\u27b0", - "avocado": "\ud83e\udd51", - "earth_americas": "\ud83c\udf0e", - "flashlight": "\ud83d\udd26", - "8ball": "\ud83c\udfb1", - "clock630": "\ud83d\udd61", - "boar": "\ud83d\udc17", - "birthday": "\ud83c\udf82", - "crocodile": "\ud83d\udc0a", - "confetti_ball": "\ud83c\udf8a", - "door": "\ud83d\udeaa", - "school_satchel": "\ud83c\udf92", - "peanuts": "\ud83e\udd5c", - "regional_indicator_m": "\ud83c\uddf2", - "bust_in_silhouette": "\ud83d\udc64", - "sweat_drops": "\ud83d\udca6", - "tongue": "\ud83d\udc45", - "mag_right": "\ud83d\udd0e", - "t_rex": "\ud83e\udd96", - "post_office": "\ud83c\udfe3", - "shell": "\ud83d\udc1a", - "disappointed_relieved": "\ud83d\ude25", - "card_index": "\ud83d\udcc7", - "oncoming_automobile": "\ud83d\ude98", - "passport_control": "\ud83d\udec2", - "cherry_blossom": "\ud83c\udf38", - "shallow_pan_of_food": "\ud83e\udd58", - "heart": "\u2764\ufe0f", - "heartbeat": "\ud83d\udc93", - "crazy_face": "\ud83e\udd2a", - "grapes": "\ud83c\udf47", - "symbols": "\ud83d\udd23", - "gift": "\ud83c\udf81", - "scorpion": "\ud83e\udd82", - "wedding": "\ud83d\udc92", - "last_quarter_moon_with_face": "\ud83c\udf1c", - "love_letter": "\ud83d\udc8c", - "postal_horn": "\ud83d\udcef", - "stuffed_flatbread": "\ud83e\udd59", - "heavy_dollar_sign": "\ud83d\udcb2", - "love_hotel": "\ud83c\udfe9", - "yen": "\ud83d\udcb4", - "person_in_steamy_room": "\ud83e\uddd6", - "palm_tree": "\ud83c\udf34", - "name_badge": "\ud83d\udcdb", - "clock430": "\ud83d\udd5f", - "bike": "\ud83d\udeb2", - "snail": "\ud83d\udc0c", - "bowling": "\ud83c\udfb3", - "umbrella": "\u2614", - "sleeping_accommodation": "\ud83d\udecc", - "fireworks": "\ud83c\udf86", - "closed_book": "\ud83d\udcd5", - "city_sunset": "\ud83c\udf07", - "persevere": "\ud83d\ude23", - "bento": "\ud83c\udf71", - "nut_and_bolt": "\ud83d\udd29", - "page_facing_up": "\ud83d\udcc4", - "snowman": "\u26c4", - "two_women_holding_hands": "\ud83d\udc6d", - "regional_indicator_o": "\ud83c\uddf4", - "calling": "\ud83d\udcf2", - "person_shrugging": "\ud83e\udd37", - "sneezing_face": "\ud83e\udd27", - "arrows_clockwise": "\ud83d\udd03", - "no_pedestrians": "\ud83d\udeb7", - "potato": "\ud83e\udd54", - "cheese": "\ud83e\uddc0", - "full_moon": "\ud83c\udf15", - "mount_fuji": "\ud83d\uddfb", - "sob": "\ud83d\ude2d", - "construction": "\ud83d\udea7", - "head_bandage": "\ud83e\udd15", - "sailboat": "\u26f5", - "slight_frown": "\ud83d\ude41", - "ping_pong": "\ud83c\udfd3", - "hatched_chick": "\ud83d\udc25", - "sun_with_face": "\ud83c\udf1e", - "seedling": "\ud83c\udf31", - "repeat_one": "\ud83d\udd02", - "muscle": "\ud83d\udcaa", - "bridge_at_night": "\ud83c\udf09", - "raised_hands": "\ud83d\ude4c", - "house": "\ud83c\udfe0", - "nerd": "\ud83e\udd13", - "penguin": "\ud83d\udc27", - "peach": "\ud83c\udf51", - "dumpling": "\ud83e\udd5f", - "watch": "\u231a", - "womens": "\ud83d\udeba", - "round_pushpin": "\ud83d\udccd", - "alarm_clock": "\u23f0", - "relieved": "\ud83d\ude0c", - "sagittarius": "\u2650", - "busstop": "\ud83d\ude8f", - "regional_indicator_a": "\ud83c\udde6", - "sandal": "\ud83d\udc61", - "whale2": "\ud83d\udc0b", - "book": "\ud83d\udcd6", - "sweat": "\ud83d\ude13", - "movie_camera": "\ud83c\udfa5", - "clock230": "\ud83d\udd5d", - "tiger": "\ud83d\udc2f", - "tractor": "\ud83d\ude9c", - "smile": "\ud83d\ude04", - "vertical_traffic_light": "\ud83d\udea6", - "exploding_head": "\ud83e\udd2f", - "raised_hand": "\u270b", - "smoking": "\ud83d\udeac", - "page_with_curl": "\ud83d\udcc3", - "exclamation": "\u2757", - "fish": "\ud83d\udc1f", - "mans_shoe": "\ud83d\udc5e", - "sos": "\ud83c\udd98", - "unlock": "\ud83d\udd13", - "dolls": "\ud83c\udf8e", - "ear_of_rice": "\ud83c\udf3e", - "cat2": "\ud83d\udc08", - "u7121": "\ud83c\ude1a", - "repeat": "\ud83d\udd01", - "cool": "\ud83c\udd92", - "minibus": "\ud83d\ude90", - "aerial_tramway": "\ud83d\udea1", - "key": "\ud83d\udd11", - "child": "\ud83e\uddd2", - "camera": "\ud83d\udcf7", - "sunflower": "\ud83c\udf3b", - "white_check_mark": "\u2705", - "white_square_button": "\ud83d\udd33", - "banana": "\ud83c\udf4c", - "milky_way": "\ud83c\udf0c", - "person_gesturing_no": "\ud83d\ude45", - "sushi": "\ud83c\udf63", - "heart_eyes_cat": "\ud83d\ude3b", - "guitar": "\ud83c\udfb8", - "pie": "\ud83e\udd67", - "calendar": "\ud83d\udcc6", - "bear": "\ud83d\udc3b", - "person_in_lotus_position": "\ud83e\uddd8", - "clock10": "\ud83d\udd59", - "top": "\ud83d\udd1d", - "fuelpump": "\u26fd", - "rainbow": "\ud83c\udf08", - "snowboarder": "\ud83c\udfc2", - "drum": "\ud83e\udd41", - "leaves": "\ud83c\udf43", - "first_quarter_moon": "\ud83c\udf13", - "spoon": "\ud83e\udd44", - "pouting_cat": "\ud83d\ude3e", - "shaved_ice": "\ud83c\udf67", - "unamused": "\ud83d\ude12", - "train2": "\ud83d\ude86", - "clock1230": "\ud83d\udd67", - "regional_indicator_r": "\ud83c\uddf7", - "fast_forward": "\u23e9", - "accept": "\ud83c\ude51", - "hammer": "\ud83d\udd28", - "panda_face": "\ud83d\udc3c", - "briefcase": "\ud83d\udcbc", - "package": "\ud83d\udce6", - "flag_black": "\ud83c\udff4", - "smiling_imp": "\ud83d\ude08", - "sunrise_over_mountains": "\ud83c\udf04", - "airplane_departure": "\ud83d\udeeb", - "tiger2": "\ud83d\udc05", - "non-potable_water": "\ud83d\udeb1", - "bird": "\ud83d\udc26", - "barber": "\ud83d\udc88", - "cry": "\ud83d\ude22", - "billed_cap": "\ud83e\udde2", - "pouch": "\ud83d\udc5d", - "link": "\ud83d\udd17", - "zebra": "\ud83e\udd93", - "kiss": "\ud83d\udc8b", - "scorpius": "\u264f", - "prayer_beads": "\ud83d\udcff", - "high_brightness": "\ud83d\udd06", - "kissing_smiling_eyes": "\ud83d\ude19", - "rhino": "\ud83e\udd8f", - "left_luggage": "\ud83d\udec5", - "o": "\u2b55", - "crying_cat_face": "\ud83d\ude3f", - "clock8": "\ud83d\udd57", - "dress": "\ud83d\udc57", - "clock7": "\ud83d\udd56", - "bowl_with_spoon": "\ud83e\udd63", - "rolling_eyes": "\ud83d\ude44", - "fax": "\ud83d\udce0", - "worried": "\ud83d\ude1f", - "grey_question": "\u2754", - "saxophone": "\ud83c\udfb7", - "burrito": "\ud83c\udf2f", - "salad": "\ud83e\udd57", - "regional_indicator_z": "\ud83c\uddff", - "bikini": "\ud83d\udc59", - "milk": "\ud83e\udd5b", - "stars": "\ud83c\udf20", - "lips": "\ud83d\udc44", - "cd": "\ud83d\udcbf", - "weary": "\ud83d\ude29", - "face_with_raised_eyebrow": "\ud83e\udd28", - "lizard": "\ud83e\udd8e", - "tone1": "\ud83c\udffb", - "bullettrain_side": "\ud83d\ude84", - "nose": "\ud83d\udc43", - "innocent": "\ud83d\ude07", - "wilted_rose": "\ud83e\udd40", - "mahjong": "\ud83c\udc04", - "factory": "\ud83c\udfed", - "people_wrestling": "\ud83e\udd3c", - "mailbox": "\ud83d\udceb", - "rage": "\ud83d\ude21", - "wheelchair": "\u267f", - "x": "\u274c", - "flower_playing_cards": "\ud83c\udfb4", - "nauseated_face": "\ud83e\udd22", - "underage": "\ud83d\udd1e", - "ideograph_advantage": "\ud83c\ude50", - "high_heel": "\ud83d\udc60", - "dizzy_face": "\ud83d\ude35", - "stuck_out_tongue": "\ud83d\ude1b", - "mailbox_with_no_mail": "\ud83d\udced", - "orange_heart": "\ud83e\udde1", - "raised_back_of_hand": "\ud83e\udd1a", - "footprints": "\ud83d\udc63", - "notebook_with_decorative_cover": "\ud83d\udcd4", - "mask": "\ud83d\ude37", - "sunglasses": "\ud83d\ude0e", - "pancakes": "\ud83e\udd5e", - "regional_indicator_f": "\ud83c\uddeb", - "dog": "\ud83d\udc36", - "pig2": "\ud83d\udc16", - "ng": "\ud83c\udd96", - "unicorn": "\ud83e\udd84", - "triumph": "\ud83d\ude24", - "eggplant": "\ud83c\udf46", - "egg": "\ud83e\udd5a", - "office": "\ud83c\udfe2", - "goat": "\ud83d\udc10", - "handshake": "\ud83e\udd1d", - "star": "\u2b50", - "rugby_football": "\ud83c\udfc9", - "call_me": "\ud83e\udd19", - "rice_cracker": "\ud83c\udf58", - "droplet": "\ud83d\udca7", - "badminton": "\ud83c\udff8", - "waxing_crescent_moon": "\ud83c\udf12", - "ocean": "\ud83c\udf0a", - "slot_machine": "\ud83c\udfb0", - "wine_glass": "\ud83c\udf77", - "elephant": "\ud83d\udc18", - "blowfish": "\ud83d\udc21", - "ledger": "\ud83d\udcd2", - "money_mouth": "\ud83e\udd11", - "heart_decoration": "\ud83d\udc9f", - "arrow_down_small": "\ud83d\udd3d", - "station": "\ud83d\ude89", - "man_with_chinese_cap": "\ud83d\udc72", - "vampire": "\ud83e\udddb", - "pencil": "\ud83d\udcdd", - "cyclone": "\ud83c\udf00", - "mushroom": "\ud83c\udf44", - "sandwich": "\ud83e\udd6a", - "champagne": "\ud83c\udf7e", - "expressionless": "\ud83d\ude11", - "cold_sweat": "\ud83d\ude30", - "maple_leaf": "\ud83c\udf41", - "dromedary_camel": "\ud83d\udc2a", - "vs": "\ud83c\udd9a", - "person_fencing": "\ud83e\udd3a", - "straight_ruler": "\ud83d\udccf", - "baby_bottle": "\ud83c\udf7c", - "currency_exchange": "\ud83d\udcb1", - "regional_indicator_h": "\ud83c\udded", - "stuck_out_tongue_closed_eyes": "\ud83d\ude1d", - "closed_lock_with_key": "\ud83d\udd10", - "eyes": "\ud83d\udc40", - "water_buffalo": "\ud83d\udc03", - "lock_with_ink_pen": "\ud83d\udd0f", - "heavy_plus_sign": "\u2795", - "bookmark": "\ud83d\udd16", - "soon": "\ud83d\udd1c", - "orange_book": "\ud83d\udcd9", - "pineapple": "\ud83c\udf4d", - "clock9": "\ud83d\udd58", - "small_blue_diamond": "\ud83d\udd39", - "black_large_square": "\u2b1b", - "person_surfing": "\ud83c\udfc4", - "leo": "\u264c", - "merperson": "\ud83e\udddc", - "canoe": "\ud83d\udef6", - "rooster": "\ud83d\udc13", - "hear_no_evil": "\ud83d\ude49", - "corn": "\ud83c\udf3d", - "takeout_box": "\ud83e\udd61", - "oncoming_taxi": "\ud83d\ude96", - "taxi": "\ud83d\ude95", - "chart": "\ud83d\udcb9", - "goal": "\ud83e\udd45", - "melon": "\ud83c\udf48", - "notes": "\ud83c\udfb6", - "sparkler": "\ud83c\udf87", - "dolphin": "\ud83d\udc2c", - "speedboat": "\ud83d\udea4", - "cancer": "\u264b", - "sled": "\ud83d\udef7", - "tanabata_tree": "\ud83c\udf8b", - "train": "\ud83d\ude8b", - "christmas_tree": "\ud83c\udf84", - "two_men_holding_hands": "\ud83d\udc6c", - "back": "\ud83d\udd19", - "balloon": "\ud83c\udf88", - "checkered_flag": "\ud83c\udfc1", - "loop": "\u27bf", - "wc": "\ud83d\udebe", - "jeans": "\ud83d\udc56", - "green_apple": "\ud83c\udf4f", - "crown": "\ud83d\udc51", - "cowboy": "\ud83e\udd20", - "postbox": "\ud83d\udcee", - "volleyball": "\ud83c\udfd0", - "upside_down": "\ud83d\ude43", - "cricket": "\ud83e\udd97", - "custard": "\ud83c\udf6e", - "rose": "\ud83c\udf39", - "eyeglasses": "\ud83d\udc53", - "oncoming_police_car": "\ud83d\ude94", - "atm": "\ud83c\udfe7", - "flying_saucer": "\ud83d\udef8", - "alien": "\ud83d\udc7d", - "hamster": "\ud83d\udc39", - "trident": "\ud83d\udd31", - "disappointed": "\ud83d\ude1e", - "cow": "\ud83d\udc2e", - "police_officer": "\ud83d\udc6e", - "popcorn": "\ud83c\udf7f", - "baby_chick": "\ud83d\udc24", - "video_camera": "\ud83d\udcf9", - "zzz": "\ud83d\udca4", - "person_climbing": "\ud83e\uddd7", - "star2": "\ud83c\udf1f", - "ok": "\ud83c\udd97", - "capricorn": "\u2651", - "chicken": "\ud83d\udc14", - "arrow_double_up": "\u23eb", - "zombie": "\ud83e\udddf", - "closed_umbrella": "\ud83c\udf02", - "person_walking": "\ud83d\udeb6", - "lemon": "\ud83c\udf4b", - "heartpulse": "\ud83d\udc97", - "regional_indicator_i": "\ud83c\uddee", - "sauropod": "\ud83e\udd95", - "u7981": "\ud83c\ude32", - "regional_indicator_w": "\ud83c\uddfc", - "evergreen_tree": "\ud83c\udf32", - "mobile_phone_off": "\ud83d\udcf4", - "koko": "\ud83c\ude01", - "poop": "\ud83d\udca9", - "cup_with_straw": "\ud83e\udd64", - "leopard": "\ud83d\udc06", - "radio_button": "\ud83d\udd18", - "mega": "\ud83d\udce3", - "metal": "\ud83e\udd18", - "shushing_face": "\ud83e\udd2b", - "stuck_out_tongue_winking_eye": "\ud83d\ude1c", - "octopus": "\ud83d\udc19", - "boxing_glove": "\ud83e\udd4a", - "person_juggling": "\ud83e\udd39", - "money_with_wings": "\ud83d\udcb8", - "dollar": "\ud83d\udcb5", - "bride_with_veil": "\ud83d\udc70", - "second_place": "\ud83e\udd48", - "spaghetti": "\ud83c\udf5d", - "waning_crescent_moon": "\ud83c\udf18", - "football": "\ud83c\udfc8", - "white_circle": "\u26aa", - "full_moon_with_face": "\ud83c\udf1d", - "selfie": "\ud83e\udd33", - "tone3": "\ud83c\udffd", - "rabbit": "\ud83d\udc30", - "computer": "\ud83d\udcbb", - "clock11": "\ud83d\udd5a", - "heavy_minus_sign": "\u2796", - "synagogue": "\ud83d\udd4d", - "hourglass": "\u231b", - "gem": "\ud83d\udc8e", - "person_doing_cartwheel": "\ud83e\udd38", - "new_moon_with_face": "\ud83c\udf1a", - "sunrise": "\ud83c\udf05", - "regional_indicator_x": "\ud83c\uddfd", - "open_file_folder": "\ud83d\udcc2", - "gift_heart": "\ud83d\udc9d", - "tada": "\ud83c\udf89", - "green_heart": "\ud83d\udc9a", - "battery": "\ud83d\udd0b", - "regional_indicator_t": "\ud83c\uddf9", - "wrench": "\ud83d\udd27", - "aries": "\u2648", - "man_in_tuxedo": "\ud83e\udd35", - "regional_indicator_e": "\ud83c\uddea", - "regional_indicator_l": "\ud83c\uddf1", - "cake": "\ud83c\udf70", - "clapper": "\ud83c\udfac", - "japanese_castle": "\ud83c\udfef", - "crystal_ball": "\ud83d\udd2e", - "golf": "\u26f3", - "no_mobile_phones": "\ud83d\udcf5", - "person_biking": "\ud83d\udeb4", - "icecream": "\ud83c\udf66", - "mage": "\ud83e\uddd9", - "bookmark_tabs": "\ud83d\udcd1", - "tone4": "\ud83c\udffe", - "mountain_cableway": "\ud83d\udea0", - "person_playing_handball": "\ud83e\udd3e", - "bulb": "\ud83d\udca1", - "clock330": "\ud83d\udd5e", - "metro": "\ud83d\ude87", - "wave": "\ud83d\udc4b", - "whale": "\ud83d\udc33", - "strawberry": "\ud83c\udf53", - "hatching_chick": "\ud83d\udc23", - "trolleybus": "\ud83d\ude8e", - "lollipop": "\ud83c\udf6d", - "clipboard": "\ud83d\udccb", - "point_right": "\ud83d\udc49", - "u6307": "\ud83c\ude2f", - "santa": "\ud83c\udf85", - "hibiscus": "\ud83c\udf3a", - "green_book": "\ud83d\udcd7", - "skull": "\ud83d\udc80", - "tumbler_glass": "\ud83e\udd43", - "clock2": "\ud83d\udd51", - "open_mouth": "\ud83d\ude2e", - "bouquet": "\ud83d\udc90", - "champagne_glass": "\ud83e\udd42", - "poodle": "\ud83d\udc29", - "hushed": "\ud83d\ude2f", - "earth_asia": "\ud83c\udf0f", - "face_with_monocle": "\ud83e\uddd0", - "libra": "\u264e", - "clock5": "\ud83d\udd54", - "ambulance": "\ud83d\ude91", - "u5272": "\ud83c\ude39", - "lipstick": "\ud83d\udc84", - "apple": "\ud83c\udf4e", - "headphones": "\ud83c\udfa7", - "turkey": "\ud83e\udd83", - "pretzel": "\ud83e\udd68", - "bug": "\ud83d\udc1b", - "school": "\ud83c\udfeb", - "speaker": "\ud83d\udd08", - "boot": "\ud83d\udc62", - "cat": "\ud83d\udc31", - "dancer": "\ud83d\udc83", - "no_entry": "\u26d4", - "kissing_cat": "\ud83d\ude3d", - "art": "\ud83c\udfa8", - "coat": "\ud83e\udde5", - "credit_card": "\ud83d\udcb3", - "customs": "\ud83d\udec3", - "broccoli": "\ud83e\udd66", - "point_left": "\ud83d\udc48", - "canned_food": "\ud83e\udd6b", - "sheep": "\ud83d\udc11", - "person_bowing": "\ud83d\ude47", - "scroll": "\ud83d\udcdc", - "martial_arts_uniform": "\ud83e\udd4b", - "amphora": "\ud83c\udffa", - "thought_balloon": "\ud83d\udcad", - "no_bell": "\ud83d\udd15", - "musical_keyboard": "\ud83c\udfb9", - "people_with_bunny_ears_partying": "\ud83d\udc6f", - "european_castle": "\ud83c\udff0", - "punch": "\ud83d\udc4a", - "camera_with_flash": "\ud83d\udcf8", - "regional_indicator_p": "\ud83c\uddf5", - "red_car": "\ud83d\ude97", - "regional_indicator_j": "\ud83c\uddef", - "owl": "\ud83e\udd89", - "chart_with_downwards_trend": "\ud83d\udcc9", - "older_woman": "\ud83d\udc75", - "gemini": "\u264a", - "incoming_envelope": "\ud83d\udce8", - "waxing_gibbous_moon": "\ud83c\udf14", - "toilet": "\ud83d\udebd", - "dragon_face": "\ud83d\udc32", - "koala": "\ud83d\udc28", - "tone5": "\ud83c\udfff", - "kiwi": "\ud83e\udd5d", - "dash": "\ud83d\udca8", - "imp": "\ud83d\udc7f", - "tent": "\u26fa", - "regional_indicator_b": "\ud83c\udde7", - "monorail": "\ud83d\ude9d", - "ox": "\ud83d\udc02", - "giraffe": "\ud83e\udd92", - "new": "\ud83c\udd95", - "person_raising_hand": "\ud83d\ude4b", - "japan": "\ud83d\uddfe", - "rice": "\ud83c\udf5a", - "ticket": "\ud83c\udfab", - "rotating_light": "\ud83d\udea8", - "loudspeaker": "\ud83d\udce2", - "person_getting_massage": "\ud83d\udc86", - "loud_sound": "\ud83d\udd0a", - "hugging": "\ud83e\udd17", - "herb": "\ud83c\udf3f", - "baby": "\ud83d\udc76", - "angel": "\ud83d\udc7c", - "athletic_shoe": "\ud83d\udc5f", - "euro": "\ud83d\udcb6", - "ram": "\ud83d\udc0f", - "large_orange_diamond": "\ud83d\udd36", - "red_circle": "\ud83d\udd34", - "ferris_wheel": "\ud83c\udfa1", - "drooling_face": "\ud83e\udd24", - "microscope": "\ud83d\udd2c", - "middle_finger": "\ud83d\udd95", - "pager": "\ud83d\udcdf", - "pensive": "\ud83d\ude14", - "potable_water": "\ud83d\udeb0", - "abc": "\ud83d\udd24", - "four_leaf_clover": "\ud83c\udf40", - "vulcan": "\ud83d\udd96", - "french_bread": "\ud83e\udd56", - "motor_scooter": "\ud83d\udef5", - "moneybag": "\ud83d\udcb0", - "sparkles": "\u2728", - "gloves": "\ud83e\udde4", - "envelope_with_arrow": "\ud83d\udce9", - "thumbsdown": "\ud83d\udc4e", - "regional_indicator_g": "\ud83c\uddec", - "video_game": "\ud83c\udfae", - "on": "\ud83d\udd1b", - "open_hands": "\ud83d\udc50", - "monkey_face": "\ud83d\udc35", - "mountain_railway": "\ud83d\ude9e", - "bee": "\ud83d\udc1d", - "scooter": "\ud83d\udef4", - "fishing_pole_and_fish": "\ud83c\udfa3", - "smiley_cat": "\ud83d\ude3a", - "heart_eyes": "\ud83d\ude0d", - "horse_racing": "\ud83c\udfc7", - "ear": "\ud83d\udc42", - "blue_circle": "\ud83d\udd35", - "crossed_flags": "\ud83c\udf8c", - "black_joker": "\ud83c\udccf", - "six_pointed_star": "\ud83d\udd2f", - "fountain": "\u26f2", - "free": "\ud83c\udd93", - "tennis": "\ud83c\udfbe", - "yum": "\ud83d\ude0b", - "fried_shrimp": "\ud83c\udf64", - "dragon": "\ud83d\udc09", - "purse": "\ud83d\udc5b", - "clock1": "\ud83d\udd50", - "airplane_arriving": "\ud83d\udeec", - "cucumber": "\ud83e\udd52", - "man_dancing": "\ud83d\udd7a", - "clock730": "\ud83d\udd62", - "deer": "\ud83e\udd8c", - "meat_on_bone": "\ud83c\udf56", - "bomb": "\ud83d\udca3", - "night_with_stars": "\ud83c\udf03", - "snake": "\ud83d\udc0d", - "ramen": "\ud83c\udf5c", - "end": "\ud83d\udd1a", - "do_not_litter": "\ud83d\udeaf", - "joy": "\ud83d\ude02", - "light_rail": "\ud83d\ude88", - "game_die": "\ud83c\udfb2", - "violin": "\ud83c\udfbb", - "tone2": "\ud83c\udffc", - "tropical_drink": "\ud83c\udf79", - "love_you_gesture": "\ud83e\udd1f", - "cherries": "\ud83c\udf52", - "traffic_light": "\ud83d\udea5", - "iphone": "\ud83d\udcf1", - "socks": "\ud83e\udde6", - "wind_chime": "\ud83c\udf90", - "no_entry_sign": "\ud83d\udeab", - "elf": "\ud83e\udddd", - "squid": "\ud83e\udd91", - "person_pouting": "\ud83d\ude4e", - "smile_cat": "\ud83d\ude38", - "beers": "\ud83c\udf7b", - "minidisc": "\ud83d\udcbd", - "clock4": "\ud83d\udd53", - "ice_cream": "\ud83c\udf68", - "cocktail": "\ud83c\udf78", - "clock3": "\ud83d\udd52", - "frowning": "\ud83d\ude26", - "hamburger": "\ud83c\udf54", - "brain": "\ud83e\udde0", - "heavy_division_sign": "\u2797", - "tophat": "\ud83c\udfa9", - "no_mouth": "\ud83d\ude36", - "ski": "\ud83c\udfbf", - "right_facing_fist": "\ud83e\udd1c", - "mailbox_closed": "\ud83d\udcea", - "chocolate_bar": "\ud83c\udf6b", - "rabbit2": "\ud83d\udc07", - "honey_pot": "\ud83c\udf6f", - "izakaya_lantern": "\ud83c\udfee", - "articulated_lorry": "\ud83d\ude9b", - "face_with_hand_over_mouth": "\ud83e\udd2d", - "japanese_ogre": "\ud83d\udc79", - "zap": "\u26a1", - "rocket": "\ud83d\ude80", - "pizza": "\ud83c\udf55", - "pound": "\ud83d\udcb7", - "person_swimming": "\ud83c\udfca", - "anchor": "\u2693", - "coconut": "\ud83e\udd65", - "sparkling_heart": "\ud83d\udc96", - "older_man": "\ud83d\udc74", - "mouse2": "\ud83d\udc01", - "angry": "\ud83d\ude20", - "up": "\ud83c\udd99", - "gorilla": "\ud83e\udd8d", - "children_crossing": "\ud83d\udeb8", - "smirk_cat": "\ud83d\ude3c", - "pregnant_woman": "\ud83e\udd30", - "electric_plug": "\ud83d\udd0c", - "dog2": "\ud83d\udc15", - "question": "\u2753", - "carousel_horse": "\ud83c\udfa0", - "church": "\u26ea", - "outbox_tray": "\ud83d\udce4", - "cinema": "\ud83c\udfa6", - "flushed": "\ud83d\ude33", - "blush": "\ud83d\ude0a", - "medal": "\ud83c\udfc5", - "coffee": "\u2615", - "gun": "\ud83d\udd2b", - "city_dusk": "\ud83c\udf06", - "watermelon": "\ud83c\udf49", - "cricket_game": "\ud83c\udfcf", - "shower": "\ud83d\udebf", - "mute": "\ud83d\udd07", - "breast_feeding": "\ud83e\udd31", - "sweat_smile": "\ud83d\ude05", - "construction_worker": "\ud83d\udc77", - "cow2": "\ud83d\udc04", - "arrows_counterclockwise": "\ud83d\udd04", - "u6e80": "\ud83c\ude35", - "grinning": "\ud83d\ude00", - "globe_with_meridians": "\ud83c\udf10", - "diamond_shape_with_a_dot_inside": "\ud83d\udca0", - "deciduous_tree": "\ud83c\udf33", - "shark": "\ud83e\udd88", - "tram": "\ud83d\ude8a", - "person_rowing_boat": "\ud83d\udea3", - "chopsticks": "\ud83e\udd62", - "black_heart": "\ud83d\udda4", - "seat": "\ud83d\udcba", - "kissing": "\ud83d\ude17", - "laughing": "\ud83d\ude06", - "slight_smile": "\ud83d\ude42", - "radio": "\ud83d\udcfb", - "arrow_up_small": "\ud83d\udd3c", - "dango": "\ud83c\udf61", - "rofl": "\ud83e\udd23", - "see_no_evil": "\ud83d\ude48", - "thermometer_face": "\ud83e\udd12", - "hotdog": "\ud83c\udf2d", - "virgo": "\u264d", - "poultry_leg": "\ud83c\udf57", - "hotel": "\ud83c\udfe8", - "wolf": "\ud83d\udc3a", - "curry": "\ud83c\udf5b", - "regional_indicator_v": "\ud83c\uddfb", - "crab": "\ud83e\udd80", - "tired_face": "\ud83d\ude2b", - "place_of_worship": "\ud83d\uded0", - "ok_hand": "\ud83d\udc4c", - "speech_balloon": "\ud83d\udcac", - "sleepy": "\ud83d\ude2a", - "earth_africa": "\ud83c\udf0d", - "police_car": "\ud83d\ude93", - "small_red_triangle_down": "\ud83d\udd3b", - "bearded_person": "\ud83e\uddd4", - "curling_stone": "\ud83e\udd4c", - "scarf": "\ud83e\udde3", - "fire": "\ud83d\udd25", - "file_folder": "\ud83d\udcc1", - "zipper_mouth": "\ud83e\udd10", - "new_moon": "\ud83c\udf11", - "regional_indicator_n": "\ud83c\uddf3", - "negative_squared_cross_mark": "\u274e", - "newspaper": "\ud83d\udcf0", - "dvd": "\ud83d\udcc0", - "pear": "\ud83c\udf50", - "partly_sunny": "\u26c5", - "black_square_button": "\ud83d\udd32", - "low_brightness": "\ud83d\udd05", - "sake": "\ud83c\udf76", - "bow_and_arrow": "\ud83c\udff9", - "cooking": "\ud83c\udf73", - "fish_cake": "\ud83c\udf65", - "tomato": "\ud83c\udf45", - "couple_with_heart": "\ud83d\udc91", - "telephone_receiver": "\ud83d\udcde", - "triangular_flag_on_post": "\ud83d\udea9", - "jack_o_lantern": "\ud83c\udf83", - "blue_book": "\ud83d\udcd8", - "clock530": "\ud83d\udd60", - "u6709": "\ud83c\ude36", - "palms_up_together": "\ud83e\udd32", - "lion_face": "\ud83e\udd81", - "lock": "\ud83d\udd12", - "duck": "\ud83e\udd86", - "truck": "\ud83d\ude9a", - "oden": "\ud83c\udf62", - "busts_in_silhouette": "\ud83d\udc65", - "hourglass_flowing_sand": "\u23f3", - "frog": "\ud83d\udc38", - "fox": "\ud83e\udd8a", - "bread": "\ud83c\udf5e", - "put_litter_in_its_place": "\ud83d\udeae", - "couple": "\ud83d\udc6b", - "bamboo": "\ud83c\udf8d", - "regional_indicator_c": "\ud83c\udde8", - "menorah": "\ud83d\udd4e", - "circus_tent": "\ud83c\udfaa", - "lying_face": "\ud83e\udd25", - "small_orange_diamond": "\ud83d\udd38", - "ship": "\ud83d\udea2", - "person_frowning": "\ud83d\ude4d", - "racehorse": "\ud83d\udc0e", - "thumbsup": "\ud83d\udc4d", - "cupid": "\ud83d\udc98", - "robot": "\ud83e\udd16", - "fallen_leaf": "\ud83c\udf42", - "pig_nose": "\ud83d\udc3d", - "vibration_mode": "\ud83d\udcf3", - "necktie": "\ud83d\udc54", - "boy": "\ud83d\udc66", - "house_with_garden": "\ud83c\udfe1", - "point_down": "\ud83d\udc47", - "grey_exclamation": "\u2755", - "books": "\ud83d\udcda", - "regional_indicator_k": "\ud83c\uddf0", - "shirt": "\ud83d\udc55", - "fries": "\ud83c\udf5f", - "dart": "\ud83c\udfaf", - "tea": "\ud83c\udf75", - "mrs_claus": "\ud83e\udd36", - "suspension_railway": "\ud83d\ude9f", - "baby_symbol": "\ud83d\udebc", - "sweet_potato": "\ud83c\udf60", - "butterfly": "\ud83e\udd8b", - "performing_arts": "\ud83c\udfad", - "notebook": "\ud83d\udcd3", - "bat": "\ud83e\udd87" -} + "100": "๐Ÿ’ฏ", + "1234": "๐Ÿ”ข", + "1st_place_medal": "๐Ÿฅ‡", + "2nd_place_medal": "๐Ÿฅˆ", + "3rd_place_medal": "๐Ÿฅ‰", + "8ball": "๐ŸŽฑ", + "a_button_blood_type": "๐Ÿ…ฐ", + "ab": "๐Ÿ†Ž", + "abacus": "๐Ÿงฎ", + "abc": "๐Ÿ”ค", + "abcd": "๐Ÿ”ก", + "accept": "๐Ÿ‰‘", + "adhesive_bandage": "๐Ÿฉน", + "admission_tickets": "๐ŸŽŸ", + "adult": "๐Ÿง‘", + "aerial_tramway": "๐Ÿšก", + "airplane": "โœˆ", + "airplane_arriving": "๐Ÿ›ฌ", + "airplane_departure": "๐Ÿ›ซ", + "alarm_clock": "โฐ", + "alembic": "โš—๏ธ", + "alien": "๐Ÿ‘ฝ", + "ambulance": "๐Ÿš‘", + "amphora": "๐Ÿบ", + "anchor": "โš“", + "angel": "๐Ÿ‘ผ", + "anger": "๐Ÿ’ข", + "anger_right": "๐Ÿ—ฏ", + "angry": "๐Ÿ˜ ", + "anguished": "๐Ÿ˜ง", + "ant": "๐Ÿœ", + "apple": "๐ŸŽ", + "aquarius": "โ™’", + "aries": "โ™ˆ", + "arrow_backward": "โ—€๏ธ", + "arrow_double_down": "โฌ", + "arrow_double_up": "โซ", + "arrow_down": "โฌ‡๏ธ", + "arrow_down_small": "๐Ÿ”ฝ", + "arrow_forward": "โ–ถ๏ธ", + "arrow_heading_down": "โคต๏ธ", + "arrow_heading_up": "โคด๏ธ", + "arrow_left": "โฌ…๏ธ", + "arrow_lower_left": "โ†™๏ธ", + "arrow_lower_right": "โ†˜๏ธ", + "arrow_right": "โžก", + "arrow_right_hook": "โ†ช๏ธ", + "arrow_up": "โฌ†๏ธ", + "arrow_up_down": "โ†•", + "arrow_up_small": "๐Ÿ”ผ", + "arrow_upper_left": "โ†–", + "arrow_upper_right": "โ†—๏ธ", + "arrows_clockwise": "๐Ÿ”ƒ", + "arrows_counterclockwise": "๐Ÿ”„", + "art": "๐ŸŽจ", + "articulated_lorry": "๐Ÿš›", + "artist_palette": "๐ŸŽจ", + "asterisk": "*โƒฃ", + "astonished": "๐Ÿ˜ฒ", + "athletic_shoe": "๐Ÿ‘Ÿ", + "atm": "๐Ÿง", + "atom": "โš›", + "atom_symbol": "โš›๏ธ", + "auto_rickshaw": "๐Ÿ›บ", + "automobile": "๐Ÿš—", + "avocado": "๐Ÿฅ‘", + "axe": "๐Ÿช“", + "b_button_blood_type": "๐Ÿ…ฑ", + "baby": "๐Ÿ‘ถ", + "baby_bottle": "๐Ÿผ", + "baby_chick": "๐Ÿค", + "baby_symbol": "๐Ÿšผ", + "back": "๐Ÿ”™", + "bacon": "๐Ÿฅ“", + "badger": "๐Ÿฆก", + "badminton": "๐Ÿธ", + "bagel": "๐Ÿฅฏ", + "baggage_claim": "๐Ÿ›„", + "baguette_bread": "๐Ÿฅ–", + "balance_scale": "โš–๏ธ", + "bald": "๐Ÿฆฒ", + "ballet_shoes": "๐Ÿฉฐ", + "balloon": "๐ŸŽˆ", + "ballot_box": "๐Ÿ—ณ", + "ballot_box_with_check": "โ˜‘๏ธ", + "bamboo": "๐ŸŽ", + "banana": "๐ŸŒ", + "bangbang": "โ€ผ๏ธ", + "banjo": "๐Ÿช•", + "bank": "๐Ÿฆ", + "bar_chart": "๐Ÿ“Š", + "barber": "๐Ÿ’ˆ", + "baseball": "โšพ", + "basket": "๐Ÿงบ", + "basketball": "๐Ÿ€", + "basketballer": "โ›น", + "bat": "๐Ÿฆ‡", + "bath": "๐Ÿ›€", + "bathtub": "๐Ÿ›", + "battery": "๐Ÿ”‹", + "beach_umbrella": "โ›ฑ", + "beach_with_umbrella": "๐Ÿ–", + "bear": "๐Ÿป", + "beard": "๐Ÿง”", + "bearded_person": "๐Ÿง”", + "bed": "๐Ÿ›", + "bee": "๐Ÿ", + "beer": "๐Ÿบ", + "beers": "๐Ÿป", + "beetle": "๐Ÿž", + "beginner": "๐Ÿ”ฐ", + "bell": "๐Ÿ””", + "bellhop_bell": "๐Ÿ›Ž", + "bento": "๐Ÿฑ", + "beverage_box": "๐Ÿงƒ", + "bicyclist": "๐Ÿšด", + "bike": "๐Ÿšฒ", + "bikini": "๐Ÿ‘™", + "billed_cap": "๐Ÿงข", + "biohazard": "โ˜ฃ๏ธ", + "bird": "๐Ÿฆ", + "birthday": "๐ŸŽ‚", + "black_circle": "โšซ", + "black_heart": "๐Ÿ–ค", + "black_joker": "๐Ÿƒ", + "black_large_square": "โฌ›", + "black_medium_small_square": "โ—พ", + "black_medium_square": "โ—ผ", + "black_nib": "โœ’๏ธ", + "black_small_square": "โ–ช", + "black_square_button": "๐Ÿ”ฒ", + "blond_haired_person": "๐Ÿ‘ฑ", + "blossom": "๐ŸŒผ", + "blowfish": "๐Ÿก", + "blue_book": "๐Ÿ“˜", + "blue_car": "๐Ÿš™", + "blue_circle": "๐Ÿ”ต", + "blue_heart": "๐Ÿ’™", + "blue_square": "๐ŸŸฆ", + "blush": "๐Ÿ˜Š", + "boar": "๐Ÿ—", + "bomb": "๐Ÿ’ฃ", + "bone": "๐Ÿฆด", + "book": "๐Ÿ“–", + "bookmark": "๐Ÿ”–", + "bookmark_tabs": "๐Ÿ“‘", + "books": "๐Ÿ“š", + "boom": "๐Ÿ’ฅ", + "boot": "๐Ÿ‘ข", + "bouquet": "๐Ÿ’", + "bow": "๐Ÿ™‡", + "bow_and_arrow": "๐Ÿน", + "bowl_with_spoon": "๐Ÿฅฃ", + "bowling": "๐ŸŽณ", + "boxing_glove": "๐ŸฅŠ", + "boy": "๐Ÿ‘ฆ", + "brain": "๐Ÿง ", + "bread": "๐Ÿž", + "breast_feeding": "๐Ÿคฑ", + "breastfeeding": "๐Ÿคฑ", + "brick": "๐Ÿงฑ", + "bride_with_veil": "๐Ÿ‘ฐ", + "bridge_at_night": "๐ŸŒ‰", + "briefcase": "๐Ÿ’ผ", + "briefs": "๐Ÿฉฒ", + "broccoli": "๐Ÿฅฆ", + "broken_heart": "๐Ÿ’”", + "broom": "๐Ÿงน", + "brown_circle": "๐ŸŸค", + "brown_heart": "๐ŸคŽ", + "bug": "๐Ÿ›", + "building_construction": "๐Ÿ—", + "bulb": "๐Ÿ’ก", + "bullettrain_front": "๐Ÿš…", + "bullettrain_side": "๐Ÿš„", + "burrito": "๐ŸŒฏ", + "bus": "๐ŸšŒ", + "busstop": "๐Ÿš", + "bust_in_silhouette": "๐Ÿ‘ค", + "busts_in_silhouette": "๐Ÿ‘ฅ", + "butter": "๐Ÿงˆ", + "butterfly": "๐Ÿฆ‹", + "cactus": "๐ŸŒต", + "cake": "๐Ÿฐ", + "calendar": "๐Ÿ“†", + "call_me": "๐Ÿค™", + "call_me_hand": "๐Ÿค™", + "calling": "๐Ÿ“ฒ", + "camel": "๐Ÿซ", + "camera": "๐Ÿ“ท", + "camera_with_flash": "๐Ÿ“ธ", + "camping": "๐Ÿ•", + "cancer": "โ™‹", + "candle": "๐Ÿ•ฏ", + "candy": "๐Ÿฌ", + "canned_food": "๐Ÿฅซ", + "canoe": "๐Ÿ›ถ", + "capital_abcd": "๐Ÿ” ", + "capricorn": "โ™‘", + "card_file_box": "๐Ÿ—ƒ", + "card_index": "๐Ÿ“‡", + "card_index_dividers": "๐Ÿ—‚", + "carousel_horse": "๐ŸŽ ", + "carrot": "๐Ÿฅ•", + "cat": "๐Ÿฑ", + "cat2": "๐Ÿˆ", + "cd": "๐Ÿ’ฟ", + "chains": "โ›“๏ธ", + "chair": "๐Ÿช‘", + "champagne": "๐Ÿพ", + "champagne_glass": "๐Ÿฅ‚", + "chart": "๐Ÿ’น", + "chart_with_downwards_trend": "๐Ÿ“‰", + "chart_with_upwards_trend": "๐Ÿ“ˆ", + "check_box_with_check": "โ˜‘", + "check_mark": "โœ”", + "checkered_flag": "๐Ÿ", + "cheese": "๐Ÿง€", + "cheese_wedge": "๐Ÿง€", + "cherries": "๐Ÿ’", + "cherry_blossom": "๐ŸŒธ", + "chess_pawn": "โ™Ÿ", + "chestnut": "๐ŸŒฐ", + "chicken": "๐Ÿ”", + "child": "๐Ÿง’", + "children_crossing": "๐Ÿšธ", + "chipmunk": "๐Ÿฟ", + "chocolate_bar": "๐Ÿซ", + "chopsticks": "๐Ÿฅข", + "christmas_tree": "๐ŸŽ„", + "church": "โ›ช", + "cinema": "๐ŸŽฆ", + "circled_m": "โ“‚", + "circus_tent": "๐ŸŽช", + "city_dusk": "๐ŸŒ†", + "city_sunset": "๐ŸŒ‡", + "cityscape": "๐Ÿ™", + "cityscape_at_dusk": "๐ŸŒ†", + "cl": "๐Ÿ†‘", + "clap": "๐Ÿ‘", + "clapper": "๐ŸŽฌ", + "classical_building": "๐Ÿ›", + "clinking_glasses": "๐Ÿฅ‚", + "clipboard": "๐Ÿ“‹", + "clock1": "๐Ÿ•", + "clock10": "๐Ÿ•™", + "clock1030": "๐Ÿ•ฅ", + "clock11": "๐Ÿ•š", + "clock1130": "๐Ÿ•ฆ", + "clock12": "๐Ÿ•›", + "clock1230": "๐Ÿ•ง", + "clock130": "๐Ÿ•œ", + "clock2": "๐Ÿ•‘", + "clock230": "๐Ÿ•", + "clock3": "๐Ÿ•’", + "clock330": "๐Ÿ•ž", + "clock4": "๐Ÿ•“", + "clock430": "๐Ÿ•Ÿ", + "clock5": "๐Ÿ•”", + "clock530": "๐Ÿ• ", + "clock6": "๐Ÿ••", + "clock630": "๐Ÿ•ก", + "clock7": "๐Ÿ•–", + "clock730": "๐Ÿ•ข", + "clock8": "๐Ÿ•—", + "clock830": "๐Ÿ•ฃ", + "clock9": "๐Ÿ•˜", + "clock930": "๐Ÿ•ค", + "closed_book": "๐Ÿ“•", + "closed_lock_with_key": "๐Ÿ”", + "closed_umbrella": "๐ŸŒ‚", + "cloud": "โ˜๏ธ", + "cloud_with_lightning": "๐ŸŒฉ", + "cloud_with_lightning_and_rain": "โ›ˆ๏ธ", + "cloud_with_rain": "๐ŸŒง", + "cloud_with_snow": "๐ŸŒจ", + "clown": "๐Ÿคก", + "clown_face": "๐Ÿคก", + "club_suit": "โ™ฃ๏ธ", + "clubs": "โ™ฃ", + "coat": "๐Ÿงฅ", + "cocktail": "๐Ÿธ", + "coconut": "๐Ÿฅฅ", + "coffee": "โ˜•", + "coffin": "โšฐ๏ธ", + "cold_face": "๐Ÿฅถ", + "cold_sweat": "๐Ÿ˜ฐ", + "comet": "โ˜„๏ธ", + "compass": "๐Ÿงญ", + "compression": "๐Ÿ—œ", + "computer": "๐Ÿ’ป", + "computer_mouse": "๐Ÿ–ฑ", + "confetti_ball": "๐ŸŽŠ", + "confounded": "๐Ÿ˜–", + "confused": "๐Ÿ˜•", + "congratulations": "ใŠ—", + "construction": "๐Ÿšง", + "construction_worker": "๐Ÿ‘ท", + "control_knobs": "๐ŸŽ›", + "convenience_store": "๐Ÿช", + "cookie": "๐Ÿช", + "cooking": "๐Ÿณ", + "cool": "๐Ÿ†’", + "cop": "๐Ÿ‘ฎ", + "copyright": "ยฉ", + "corn": "๐ŸŒฝ", + "couch_and_lamp": "๐Ÿ›‹", + "couple": "๐Ÿ‘ซ", + "couple_with_heart": "๐Ÿ’‘", + "couplekiss": "๐Ÿ’", + "cow": "๐Ÿฎ", + "cow2": "๐Ÿ„", + "cowboy": "๐Ÿค ", + "cowboy_hat_face": "๐Ÿค ", + "crab": "๐Ÿฆ€", + "crayon": "๐Ÿ–", + "crazy_face": "๐Ÿคช", + "credit_card": "๐Ÿ’ณ", + "crescent_moon": "๐ŸŒ™", + "cricket": "๐Ÿฆ—", + "cricket_game": "๐Ÿ", + "crocodile": "๐ŸŠ", + "croissant": "๐Ÿฅ", + "cross": "โœ๏ธ", + "crossed_fingers": "๐Ÿคž", + "crossed_flags": "๐ŸŽŒ", + "crossed_swords": "โš”๏ธ", + "crown": "๐Ÿ‘‘", + "cry": "๐Ÿ˜ข", + "crying_cat_face": "๐Ÿ˜ฟ", + "crystal_ball": "๐Ÿ”ฎ", + "cucumber": "๐Ÿฅ’", + "cup_with_straw": "๐Ÿฅค", + "cupcake": "๐Ÿง", + "cupid": "๐Ÿ’˜", + "curling_stone": "๐ŸฅŒ", + "curly_hair": "๐Ÿฆฑ", + "curly_loop": "โžฐ", + "currency_exchange": "๐Ÿ’ฑ", + "curry": "๐Ÿ›", + "custard": "๐Ÿฎ", + "customs": "๐Ÿ›ƒ", + "cut_of_meat": "๐Ÿฅฉ", + "cyclone": "๐ŸŒ€", + "dagger": "๐Ÿ—ก", + "dancer": "๐Ÿ’ƒ", + "dancers": "๐Ÿ‘ฏ", + "dango": "๐Ÿก", + "dark_skin_tone": "๐Ÿฟ", + "dark_sunglasses": "๐Ÿ•ถ", + "dart": "๐ŸŽฏ", + "dash": "๐Ÿ’จ", + "date": "๐Ÿ“…", + "deaf_person": "๐Ÿง", + "deciduous_tree": "๐ŸŒณ", + "deer": "๐ŸฆŒ", + "department_store": "๐Ÿฌ", + "derelict_house": "๐Ÿš", + "desert": "๐Ÿœ", + "desert_island": "๐Ÿ", + "desktop_computer": "๐Ÿ–ฅ", + "detective": "๐Ÿ•ต", + "diamond_shape_with_a_dot_inside": "๐Ÿ’ ", + "diamond_suit": "โ™ฆ๏ธ", + "diamonds": "โ™ฆ", + "disappointed": "๐Ÿ˜ž", + "disappointed_relieved": "๐Ÿ˜ฅ", + "diving_mask": "๐Ÿคฟ", + "diya_lamp": "๐Ÿช”", + "dizzy": "๐Ÿ’ซ", + "dizzy_face": "๐Ÿ˜ต", + "dna": "๐Ÿงฌ", + "do_not_litter": "๐Ÿšฏ", + "dog": "๐Ÿถ", + "dog2": "๐Ÿ•", + "dollar": "๐Ÿ’ต", + "dolls": "๐ŸŽŽ", + "dolphin": "๐Ÿฌ", + "door": "๐Ÿšช", + "double_exclamation_mark": "โ€ผ", + "doughnut": "๐Ÿฉ", + "dove": "๐Ÿ•Š", + "down_arrow": "โฌ‡", + "downleft_arrow": "โ†™", + "downright_arrow": "โ†˜", + "dragon": "๐Ÿ‰", + "dragon_face": "๐Ÿฒ", + "dress": "๐Ÿ‘—", + "dromedary_camel": "๐Ÿช", + "drooling_face": "๐Ÿคค", + "drop_of_blood": "๐Ÿฉธ", + "droplet": "๐Ÿ’ง", + "drum": "๐Ÿฅ", + "duck": "๐Ÿฆ†", + "dumpling": "๐ŸฅŸ", + "dvd": "๐Ÿ“€", + "e-mail": "๐Ÿ“ง", + "eagle": "๐Ÿฆ…", + "ear": "๐Ÿ‘‚", + "ear_of_rice": "๐ŸŒพ", + "ear_with_hearing_aid": "๐Ÿฆป", + "earth_africa": "๐ŸŒ", + "earth_americas": "๐ŸŒŽ", + "earth_asia": "๐ŸŒ", + "egg": "๐Ÿฅš", + "eggplant": "๐Ÿ†", + "eight": "8โƒฃ", + "eight_pointed_black_star": "โœด๏ธ", + "eight_spoked_asterisk": "โœณ๏ธ", + "eightpointed_star": "โœด", + "eightspoked_asterisk": "โœณ", + "eject_button": "โ", + "electric_plug": "๐Ÿ”Œ", + "elephant": "๐Ÿ˜", + "elf": "๐Ÿง", + "end": "๐Ÿ”š", + "envelope": "โœ‰", + "envelope_with_arrow": "๐Ÿ“ฉ", + "euro": "๐Ÿ’ถ", + "european_castle": "๐Ÿฐ", + "european_post_office": "๐Ÿค", + "evergreen_tree": "๐ŸŒฒ", + "exclamation": "โ—", + "exclamation_question_mark": "โ‰", + "exploding_head": "๐Ÿคฏ", + "expressionless": "๐Ÿ˜‘", + "eye": "๐Ÿ‘", + "eyeglasses": "๐Ÿ‘“", + "eyes": "๐Ÿ‘€", + "face_vomiting": "๐Ÿคฎ", + "face_with_hand_over_mouth": "๐Ÿคญ", + "face_with_headbandage": "๐Ÿค•", + "face_with_monocle": "๐Ÿง", + "face_with_raised_eyebrow": "๐Ÿคจ", + "face_with_symbols_on_mouth": "๐Ÿคฌ", + "face_with_symbols_over_mouth": "๐Ÿคฌ", + "face_with_thermometer": "๐Ÿค’", + "factory": "๐Ÿญ", + "fairy": "๐Ÿงš", + "falafel": "๐Ÿง†", + "fallen_leaf": "๐Ÿ‚", + "family": "๐Ÿ‘ช", + "fast_forward": "โฉ", + "fax": "๐Ÿ“ ", + "fearful": "๐Ÿ˜จ", + "feet": "๐Ÿพ", + "female_sign": "โ™€", + "ferris_wheel": "๐ŸŽก", + "ferry": "โ›ด๏ธ", + "field_hockey": "๐Ÿ‘", + "file_cabinet": "๐Ÿ—„", + "file_folder": "๐Ÿ“", + "film_frames": "๐ŸŽž", + "film_projector": "๐Ÿ“ฝ", + "fingers_crossed": "๐Ÿคž", + "fire": "๐Ÿ”ฅ", + "fire_engine": "๐Ÿš’", + "fire_extinguisher": "๐Ÿงฏ", + "firecracker": "๐Ÿงจ", + "fireworks": "๐ŸŽ†", + "first_place": "๐Ÿฅ‡", + "first_quarter_moon": "๐ŸŒ“", + "first_quarter_moon_with_face": "๐ŸŒ›", + "fish": "๐ŸŸ", + "fish_cake": "๐Ÿฅ", + "fishing_pole_and_fish": "๐ŸŽฃ", + "fist": "โœŠ", + "five": "5โƒฃ", + "flag_black": "๐Ÿด", + "flag_white": "๐Ÿณ", + "flags": "๐ŸŽ", + "flamingo": "๐Ÿฆฉ", + "flashlight": "๐Ÿ”ฆ", + "flat_shoe": "๐Ÿฅฟ", + "fleur-de-lis": "โšœ", + "fleurde-lis": "โšœ๏ธ", + "floppy_disk": "๐Ÿ’พ", + "flower_playing_cards": "๐ŸŽด", + "flushed": "๐Ÿ˜ณ", + "flying_disc": "๐Ÿฅ", + "flying_saucer": "๐Ÿ›ธ", + "fog": "๐ŸŒซ", + "foggy": "๐ŸŒ", + "foot": "๐Ÿฆถ", + "football": "๐Ÿˆ", + "footprints": "๐Ÿ‘ฃ", + "fork_and_knife": "๐Ÿด", + "fork_and_knife_with_plate": "๐Ÿฝ", + "fortune_cookie": "๐Ÿฅ ", + "fountain": "โ›ฒ", + "fountain_pen": "๐Ÿ–‹", + "four": "4โƒฃ", + "four_leaf_clover": "๐Ÿ€", + "fox": "๐ŸฆŠ", + "framed_picture": "๐Ÿ–ผ", + "free": "๐Ÿ†“", + "french_bread": "๐Ÿฅ–", + "fried_shrimp": "๐Ÿค", + "fries": "๐ŸŸ", + "frog": "๐Ÿธ", + "frowning": "๐Ÿ˜ฆ", + "frowning_face": "โ˜น๏ธ", + "fuelpump": "โ›ฝ", + "full_moon": "๐ŸŒ•", + "full_moon_with_face": "๐ŸŒ", + "funeral_urn": "โšฑ๏ธ", + "game_die": "๐ŸŽฒ", + "garlic": "๐Ÿง„", + "gear": "โš™๏ธ", + "gem": "๐Ÿ’Ž", + "gemini": "โ™Š", + "genie": "๐Ÿงž", + "ghost": "๐Ÿ‘ป", + "gift": "๐ŸŽ", + "gift_heart": "๐Ÿ’", + "giraffe": "๐Ÿฆ’", + "girl": "๐Ÿ‘ง", + "glass_of_milk": "๐Ÿฅ›", + "globe_with_meridians": "๐ŸŒ", + "gloves": "๐Ÿงค", + "goal": "๐Ÿฅ…", + "goal_net": "๐Ÿฅ…", + "goat": "๐Ÿ", + "goggles": "๐Ÿฅฝ", + "golf": "โ›ณ", + "golfer": "๐ŸŒ", + "gorilla": "๐Ÿฆ", + "grapes": "๐Ÿ‡", + "green_apple": "๐Ÿ", + "green_book": "๐Ÿ“—", + "green_circle": "๐ŸŸข", + "green_heart": "๐Ÿ’š", + "green_salad": "๐Ÿฅ—", + "green_square": "๐ŸŸฉ", + "grey_exclamation": "โ•", + "grey_question": "โ”", + "grimacing": "๐Ÿ˜ฌ", + "grin": "๐Ÿ˜", + "grinning": "๐Ÿ˜€", + "guard": "๐Ÿ’‚", + "guardsman": "๐Ÿ’‚", + "guide_dog": "๐Ÿฆฎ", + "guitar": "๐ŸŽธ", + "gun": "๐Ÿ”ซ", + "haircut": "๐Ÿ’‡", + "hamburger": "๐Ÿ”", + "hammer": "๐Ÿ”จ", + "hammer_and_pick": "โš’๏ธ", + "hammer_and_wrench": "๐Ÿ› ", + "hamster": "๐Ÿน", + "hand_with_fingers_splayed": "๐Ÿ–", + "handbag": "๐Ÿ‘œ", + "handshake": "๐Ÿค", + "hash": "#โƒฃ", + "hatched_chick": "๐Ÿฅ", + "hatching_chick": "๐Ÿฃ", + "head_bandage": "๐Ÿค•", + "headphones": "๐ŸŽง", + "hear_no_evil": "๐Ÿ™‰", + "heart": "โค๏ธ", + "heart_decoration": "๐Ÿ’Ÿ", + "heart_exclamation": "โฃ", + "heart_eyes": "๐Ÿ˜", + "heart_eyes_cat": "๐Ÿ˜ป", + "heart_suit": "โ™ฅ๏ธ", + "heartbeat": "๐Ÿ’“", + "heartpulse": "๐Ÿ’—", + "hearts": "โ™ฅ", + "heavy_check_mark": "โœ”๏ธ", + "heavy_division_sign": "โž—", + "heavy_dollar_sign": "๐Ÿ’ฒ", + "heavy_minus_sign": "โž–", + "heavy_multiplication_x": "โœ–๏ธ", + "heavy_plus_sign": "โž•", + "hedgehog": "๐Ÿฆ”", + "helicopter": "๐Ÿš", + "herb": "๐ŸŒฟ", + "hibiscus": "๐ŸŒบ", + "high_brightness": "๐Ÿ”†", + "high_heel": "๐Ÿ‘ ", + "hiking_boot": "๐Ÿฅพ", + "hindu_temple": "๐Ÿ›•", + "hippopotamus": "๐Ÿฆ›", + "hockey": "๐Ÿ’", + "hole": "๐Ÿ•ณ", + "honey_pot": "๐Ÿฏ", + "horse": "๐Ÿด", + "horse_racing": "๐Ÿ‡", + "hospital": "๐Ÿฅ", + "hot_face": "๐Ÿฅต", + "hot_pepper": "๐ŸŒถ", + "hot_springs": "โ™จ", + "hotdog": "๐ŸŒญ", + "hotel": "๐Ÿจ", + "hotsprings": "โ™จ๏ธ", + "hourglass": "โŒ›", + "hourglass_flowing_sand": "โณ", + "house": "๐Ÿ ", + "house_with_garden": "๐Ÿก", + "houses": "๐Ÿ˜", + "hugging": "๐Ÿค—", + "hundred_points": "๐Ÿ’ฏ", + "hushed": "๐Ÿ˜ฏ", + "ice": "๐ŸงŠ", + "ice_cream": "๐Ÿจ", + "ice_hockey": "๐Ÿ’", + "ice_skate": "โ›ธ๏ธ", + "icecream": "๐Ÿฆ", + "id": "๐Ÿ†”", + "ideograph_advantage": "๐Ÿ‰", + "imp": "๐Ÿ‘ฟ", + "inbox_tray": "๐Ÿ“ฅ", + "incoming_envelope": "๐Ÿ“จ", + "index_pointing_up": "โ˜", + "infinity": "โ™พ", + "information": "โ„น๏ธ", + "information_desk_person": "๐Ÿ’", + "information_source": "โ„น", + "innocent": "๐Ÿ˜‡", + "input_numbers": "๐Ÿ”ข", + "interrobang": "โ‰๏ธ", + "iphone": "๐Ÿ“ฑ", + "izakaya_lantern": "๐Ÿฎ", + "jack_o_lantern": "๐ŸŽƒ", + "japan": "๐Ÿ—พ", + "japanese_castle": "๐Ÿฏ", + "japanese_congratulations_button": "ใŠ—๏ธ", + "japanese_free_of_charge_button": "๐Ÿˆš", + "japanese_goblin": "๐Ÿ‘บ", + "japanese_ogre": "๐Ÿ‘น", + "japanese_reserved_button": "๐Ÿˆฏ", + "japanese_secret_button": "ใŠ™๏ธ", + "japanese_service_charge_button": "๐Ÿˆ‚", + "jeans": "๐Ÿ‘–", + "joy": "๐Ÿ˜‚", + "joy_cat": "๐Ÿ˜น", + "joystick": "๐Ÿ•น", + "kaaba": "๐Ÿ•‹", + "kangaroo": "๐Ÿฆ˜", + "key": "๐Ÿ”‘", + "keyboard": "โŒจ๏ธ", + "keycap_ten": "๐Ÿ”Ÿ", + "kick_scooter": "๐Ÿ›ด", + "kimono": "๐Ÿ‘˜", + "kiss": "๐Ÿ’‹", + "kissing": "๐Ÿ˜—", + "kissing_cat": "๐Ÿ˜ฝ", + "kissing_closed_eyes": "๐Ÿ˜š", + "kissing_heart": "๐Ÿ˜˜", + "kissing_smiling_eyes": "๐Ÿ˜™", + "kitchen_knife": "๐Ÿ”ช", + "kite": "๐Ÿช", + "kiwi": "๐Ÿฅ", + "kiwi_fruit": "๐Ÿฅ", + "knife": "๐Ÿ”ช", + "koala": "๐Ÿจ", + "koko": "๐Ÿˆ", + "lab_coat": "๐Ÿฅผ", + "label": "๐Ÿท", + "lacrosse": "๐Ÿฅ", + "large_blue_diamond": "๐Ÿ”ท", + "large_orange_diamond": "๐Ÿ”ถ", + "last_quarter_moon": "๐ŸŒ—", + "last_quarter_moon_with_face": "๐ŸŒœ", + "last_track_button": "โฎ๏ธ", + "latin_cross": "โœ", + "laughing": "๐Ÿ˜†", + "leafy_green": "๐Ÿฅฌ", + "leaves": "๐Ÿƒ", + "ledger": "๐Ÿ“’", + "left_arrow": "โฌ…", + "left_arrow_curving_right": "โ†ช", + "left_facing_fist": "๐Ÿค›", + "left_luggage": "๐Ÿ›…", + "left_right_arrow": "โ†”", + "leftfacing_fist": "๐Ÿค›", + "leftright_arrow": "โ†”๏ธ", + "leftwards_arrow_with_hook": "โ†ฉ๏ธ", + "leg": "๐Ÿฆต", + "lemon": "๐Ÿ‹", + "leo": "โ™Œ", + "leopard": "๐Ÿ†", + "level_slider": "๐ŸŽš", + "libra": "โ™Ž", + "light_rail": "๐Ÿšˆ", + "light_skin_tone": "๐Ÿป", + "link": "๐Ÿ”—", + "linked_paperclips": "๐Ÿ–‡", + "lion_face": "๐Ÿฆ", + "lips": "๐Ÿ‘„", + "lipstick": "๐Ÿ’„", + "lizard": "๐ŸฆŽ", + "llama": "๐Ÿฆ™", + "lobster": "๐Ÿฆž", + "lock": "๐Ÿ”’", + "lock_with_ink_pen": "๐Ÿ”", + "lollipop": "๐Ÿญ", + "loop": "โžฟ", + "lotion_bottle": "๐Ÿงด", + "loud_sound": "๐Ÿ”Š", + "loudspeaker": "๐Ÿ“ข", + "love_hotel": "๐Ÿฉ", + "love_letter": "๐Ÿ’Œ", + "love_you_gesture": "๐ŸคŸ", + "loveyou_gesture": "๐ŸคŸ", + "low_brightness": "๐Ÿ”…", + "luggage": "๐Ÿงณ", + "lying_face": "๐Ÿคฅ", + "m": "โ“‚๏ธ", + "mag": "๐Ÿ”", + "mag_right": "๐Ÿ”Ž", + "mage": "๐Ÿง™", + "magnet": "๐Ÿงฒ", + "mahjong": "๐Ÿ€„", + "mailbox": "๐Ÿ“ซ", + "mailbox_closed": "๐Ÿ“ช", + "mailbox_with_mail": "๐Ÿ“ฌ", + "mailbox_with_no_mail": "๐Ÿ“ญ", + "male_sign": "โ™‚", + "man": "๐Ÿ‘จ", + "man_dancing": "๐Ÿ•บ", + "man_in_suit": "๐Ÿ•ด", + "man_in_tuxedo": "๐Ÿคต", + "man_with_chinese_cap": "๐Ÿ‘ฒ", + "man_with_gua_pi_mao": "๐Ÿ‘ฒ", + "man_with_turban": "๐Ÿ‘ณ", + "mango": "๐Ÿฅญ", + "mans_shoe": "๐Ÿ‘ž", + "mantelpiece_clock": "๐Ÿ•ฐ", + "manual_wheelchair": "๐Ÿฆฝ", + "maple_leaf": "๐Ÿ", + "martial_arts_uniform": "๐Ÿฅ‹", + "mask": "๐Ÿ˜ท", + "massage": "๐Ÿ’†", + "mate": "๐Ÿง‰", + "meat_on_bone": "๐Ÿ–", + "mechanical_arm": "๐Ÿฆพ", + "mechanical_leg": "๐Ÿฆฟ", + "medal": "๐Ÿ…", + "medical_symbol": "โš•", + "medium_skin_tone": "๐Ÿฝ", + "mediumdark_skin_tone": "๐Ÿพ", + "mediumlight_skin_tone": "๐Ÿผ", + "mega": "๐Ÿ“ฃ", + "melon": "๐Ÿˆ", + "memo": "๐Ÿ“", + "menorah": "๐Ÿ•Ž", + "mens": "๐Ÿšน", + "merperson": "๐Ÿงœ", + "metal": "๐Ÿค˜", + "metro": "๐Ÿš‡", + "microbe": "๐Ÿฆ ", + "microphone": "๐ŸŽค", + "microscope": "๐Ÿ”ฌ", + "middle_finger": "๐Ÿ–•", + "military_medal": "๐ŸŽ–", + "milk": "๐Ÿฅ›", + "milky_way": "๐ŸŒŒ", + "minibus": "๐Ÿš", + "minidisc": "๐Ÿ’ฝ", + "mobile_phone_off": "๐Ÿ“ด", + "money_mouth": "๐Ÿค‘", + "money_with_wings": "๐Ÿ’ธ", + "moneybag": "๐Ÿ’ฐ", + "moneymouth_face": "๐Ÿค‘", + "monkey": "๐Ÿ’", + "monkey_face": "๐Ÿต", + "monorail": "๐Ÿš", + "moon_cake": "๐Ÿฅฎ", + "mortar_board": "๐ŸŽ“", + "mosque": "๐Ÿ•Œ", + "mosquito": "๐ŸฆŸ", + "motor_boat": "๐Ÿ›ฅ", + "motor_scooter": "๐Ÿ›ต", + "motorcycle": "๐Ÿ", + "motorized_wheelchair": "๐Ÿฆผ", + "motorway": "๐Ÿ›ฃ", + "mount_fuji": "๐Ÿ—ป", + "mountain": "โ›ฐ๏ธ", + "mountain_bicyclist": "๐Ÿšต", + "mountain_cableway": "๐Ÿš ", + "mountain_railway": "๐Ÿšž", + "mouse": "๐Ÿญ", + "mouse2": "๐Ÿ", + "movie_camera": "๐ŸŽฅ", + "moyai": "๐Ÿ—ฟ", + "mrs_claus": "๐Ÿคถ", + "multiplication_sign": "โœ–", + "muscle": "๐Ÿ’ช", + "mushroom": "๐Ÿ„", + "musical_keyboard": "๐ŸŽน", + "musical_note": "๐ŸŽต", + "musical_score": "๐ŸŽผ", + "mute": "๐Ÿ”‡", + "nail_care": "๐Ÿ’…", + "name_badge": "๐Ÿ“›", + "national_park": "๐Ÿž", + "nauseated_face": "๐Ÿคข", + "nazar_amulet": "๐Ÿงฟ", + "necktie": "๐Ÿ‘”", + "negative_squared_cross_mark": "โŽ", + "nerd": "๐Ÿค“", + "neutral_face": "๐Ÿ˜", + "new": "๐Ÿ†•", + "new_moon": "๐ŸŒ‘", + "new_moon_with_face": "๐ŸŒš", + "newspaper": "๐Ÿ“ฐ", + "next_track_button": "โญ๏ธ", + "ng": "๐Ÿ†–", + "night_with_stars": "๐ŸŒƒ", + "nine": "9โƒฃ", + "no_bell": "๐Ÿ”•", + "no_bicycles": "๐Ÿšณ", + "no_entry": "โ›”", + "no_entry_sign": "๐Ÿšซ", + "no_good": "๐Ÿ™…", + "no_mobile_phones": "๐Ÿ“ต", + "no_mouth": "๐Ÿ˜ถ", + "no_pedestrians": "๐Ÿšท", + "no_smoking": "๐Ÿšญ", + "non-potable_water": "๐Ÿšฑ", + "nose": "๐Ÿ‘ƒ", + "notebook": "๐Ÿ““", + "notebook_with_decorative_cover": "๐Ÿ“”", + "notes": "๐ŸŽถ", + "nut_and_bolt": "๐Ÿ”ฉ", + "o": "โญ•", + "o_button_blood_type": "๐Ÿ…พ", + "ocean": "๐ŸŒŠ", + "octagonal_sign": "๐Ÿ›‘", + "octopus": "๐Ÿ™", + "oden": "๐Ÿข", + "office": "๐Ÿข", + "oil_drum": "๐Ÿ›ข", + "ok": "๐Ÿ†—", + "ok_hand": "๐Ÿ‘Œ", + "ok_woman": "๐Ÿ™†", + "old_key": "๐Ÿ—", + "older_adult": "๐Ÿง“", + "older_man": "๐Ÿ‘ด", + "older_person": "๐Ÿง“", + "older_woman": "๐Ÿ‘ต", + "om_symbol": "๐Ÿ•‰", + "on": "๐Ÿ”›", + "oncoming_automobile": "๐Ÿš˜", + "oncoming_bus": "๐Ÿš", + "oncoming_fist": "๐Ÿ‘Š", + "oncoming_police_car": "๐Ÿš”", + "oncoming_taxi": "๐Ÿš–", + "one": "1โƒฃ", + "onepiece_swimsuit": "๐Ÿฉฑ", + "onion": "๐Ÿง…", + "open_file_folder": "๐Ÿ“‚", + "open_hands": "๐Ÿ‘", + "open_mouth": "๐Ÿ˜ฎ", + "ophiuchus": "โ›Ž", + "orange_book": "๐Ÿ“™", + "orange_circle": "๐ŸŸ ", + "orange_heart": "๐Ÿงก", + "orange_square": "๐ŸŸง", + "orangutan": "๐Ÿฆง", + "orthodox_cross": "โ˜ฆ๏ธ", + "otter": "๐Ÿฆฆ", + "outbox_tray": "๐Ÿ“ค", + "owl": "๐Ÿฆ‰", + "ox": "๐Ÿ‚", + "oyster": "๐Ÿฆช", + "p_button": "๐Ÿ…ฟ", + "package": "๐Ÿ“ฆ", + "page_facing_up": "๐Ÿ“„", + "page_with_curl": "๐Ÿ“ƒ", + "pager": "๐Ÿ“Ÿ", + "paintbrush": "๐Ÿ–Œ", + "palm_tree": "๐ŸŒด", + "palms_up_together": "๐Ÿคฒ", + "pancakes": "๐Ÿฅž", + "panda_face": "๐Ÿผ", + "paperclip": "๐Ÿ“Ž", + "parachute": "๐Ÿช‚", + "parrot": "๐Ÿฆœ", + "part_alternation_mark": "ใ€ฝ", + "partly_sunny": "โ›…", + "partying_face": "๐Ÿฅณ", + "passenger_ship": "๐Ÿ›ณ", + "passport_control": "๐Ÿ›‚", + "pause_button": "โธ๏ธ", + "peace": "โ˜ฎ", + "peace_symbol": "โ˜ฎ๏ธ", + "peach": "๐Ÿ‘", + "peacock": "๐Ÿฆš", + "peanuts": "๐Ÿฅœ", + "pear": "๐Ÿ", + "pen": "๐Ÿ–Š", + "pencil": "๐Ÿ“", + "pencil2": "โœ", + "penguin": "๐Ÿง", + "pensive": "๐Ÿ˜”", + "people_with_bunny_ears_partying": "๐Ÿ‘ฏ", + "people_wrestling": "๐Ÿคผ", + "performing_arts": "๐ŸŽญ", + "persevere": "๐Ÿ˜ฃ", + "person": "๐Ÿง‘", + "person_biking": "๐Ÿšด", + "person_bouncing_ball": "โ›น๏ธ", + "person_bowing": "๐Ÿ™‡", + "person_cartwheeling": "๐Ÿคธ", + "person_climbing": "๐Ÿง—", + "person_doing_cartwheel": "๐Ÿคธ", + "person_facepalming": "๐Ÿคฆ", + "person_fencing": "๐Ÿคบ", + "person_frowning": "๐Ÿ™", + "person_gesturing_no": "๐Ÿ™…", + "person_gesturing_ok": "๐Ÿ™†", + "person_getting_haircut": "๐Ÿ’‡", + "person_getting_massage": "๐Ÿ’†", + "person_in_lotus_position": "๐Ÿง˜", + "person_in_steamy_room": "๐Ÿง–", + "person_juggling": "๐Ÿคน", + "person_kneeling": "๐ŸงŽ", + "person_mountain_biking": "๐Ÿšต", + "person_playing_handball": "๐Ÿคพ", + "person_playing_water_polo": "๐Ÿคฝ", + "person_pouting": "๐Ÿ™Ž", + "person_raising_hand": "๐Ÿ™‹", + "person_rowing_boat": "๐Ÿšฃ", + "person_running": "๐Ÿƒ", + "person_shrugging": "๐Ÿคท", + "person_standing": "๐Ÿง", + "person_surfing": "๐Ÿ„", + "person_swimming": "๐ŸŠ", + "person_tipping_hand": "๐Ÿ’", + "person_walking": "๐Ÿšถ", + "person_wearing_turban": "๐Ÿ‘ณ", + "person_with_blond_hair": "๐Ÿ‘ฑ", + "person_with_pouting_face": "๐Ÿ™Ž", + "petri_dish": "๐Ÿงซ", + "pick": "โ›๏ธ", + "pie": "๐Ÿฅง", + "pig": "๐Ÿท", + "pig2": "๐Ÿ–", + "pig_nose": "๐Ÿฝ", + "pill": "๐Ÿ’Š", + "pinching_hand": "๐Ÿค", + "pineapple": "๐Ÿ", + "ping_pong": "๐Ÿ“", + "pisces": "โ™“", + "pizza": "๐Ÿ•", + "place_of_worship": "๐Ÿ›", + "play_button": "โ–ถ", + "play_or_pause_button": "โฏ๏ธ", + "play_pause": "โฏ", + "pleading_face": "๐Ÿฅบ", + "point_down": "๐Ÿ‘‡", + "point_left": "๐Ÿ‘ˆ", + "point_right": "๐Ÿ‘‰", + "point_up": "โ˜๏ธ", + "point_up_2": "๐Ÿ‘†", + "police_car": "๐Ÿš“", + "police_officer": "๐Ÿ‘ฎ", + "poodle": "๐Ÿฉ", + "poop": "๐Ÿ’ฉ", + "popcorn": "๐Ÿฟ", + "post_office": "๐Ÿฃ", + "postal_horn": "๐Ÿ“ฏ", + "postbox": "๐Ÿ“ฎ", + "potable_water": "๐Ÿšฐ", + "potato": "๐Ÿฅ”", + "pouch": "๐Ÿ‘", + "poultry_leg": "๐Ÿ—", + "pound": "๐Ÿ’ท", + "pouting_cat": "๐Ÿ˜พ", + "pray": "๐Ÿ™", + "prayer_beads": "๐Ÿ“ฟ", + "pregnant_woman": "๐Ÿคฐ", + "pretzel": "๐Ÿฅจ", + "prince": "๐Ÿคด", + "princess": "๐Ÿ‘ธ", + "printer": "๐Ÿ–จ", + "probing_cane": "๐Ÿฆฏ", + "punch": "๐Ÿ‘Š", + "purple_circle": "๐ŸŸฃ", + "purple_heart": "๐Ÿ’œ", + "purse": "๐Ÿ‘›", + "pushpin": "๐Ÿ“Œ", + "put_litter_in_its_place": "๐Ÿšฎ", + "puzzle_piece": "๐Ÿงฉ", + "question": "โ“", + "rabbit": "๐Ÿฐ", + "rabbit2": "๐Ÿ‡", + "raccoon": "๐Ÿฆ", + "racehorse": "๐ŸŽ", + "racing_car": "๐ŸŽ", + "radio": "๐Ÿ“ป", + "radio_button": "๐Ÿ”˜", + "radioactive": "โ˜ข๏ธ", + "rage": "๐Ÿ˜ก", + "railway_car": "๐Ÿšƒ", + "railway_track": "๐Ÿ›ค", + "rainbow": "๐ŸŒˆ", + "raised_back_of_hand": "๐Ÿคš", + "raised_hand": "โœ‹", + "raised_hands": "๐Ÿ™Œ", + "raising_hand": "๐Ÿ™‹", + "ram": "๐Ÿ", + "ramen": "๐Ÿœ", + "rat": "๐Ÿ€", + "razor": "๐Ÿช’", + "receipt": "๐Ÿงพ", + "record_button": "โบ๏ธ", + "recycle": "โ™ป", + "recycling_symbol": "โ™ป๏ธ", + "red_car": "๐Ÿš—", + "red_circle": "๐Ÿ”ด", + "red_envelope": "๐Ÿงง", + "red_hair": "๐Ÿฆฐ", + "red_heart": "โค", + "red_square": "๐ŸŸฅ", + "regional_indicator_a": "๐Ÿ‡ฆ", + "regional_indicator_b": "๐Ÿ‡ง", + "regional_indicator_c": "๐Ÿ‡จ", + "regional_indicator_d": "๐Ÿ‡ฉ", + "regional_indicator_e": "๐Ÿ‡ช", + "regional_indicator_f": "๐Ÿ‡ซ", + "regional_indicator_g": "๐Ÿ‡ฌ", + "regional_indicator_h": "๐Ÿ‡ญ", + "regional_indicator_i": "๐Ÿ‡ฎ", + "regional_indicator_j": "๐Ÿ‡ฏ", + "regional_indicator_k": "๐Ÿ‡ฐ", + "regional_indicator_l": "๐Ÿ‡ฑ", + "regional_indicator_m": "๐Ÿ‡ฒ", + "regional_indicator_n": "๐Ÿ‡ณ", + "regional_indicator_o": "๐Ÿ‡ด", + "regional_indicator_p": "๐Ÿ‡ต", + "regional_indicator_q": "๐Ÿ‡ถ", + "regional_indicator_r": "๐Ÿ‡ท", + "regional_indicator_s": "๐Ÿ‡ธ", + "regional_indicator_t": "๐Ÿ‡น", + "regional_indicator_u": "๐Ÿ‡บ", + "regional_indicator_v": "๐Ÿ‡ป", + "regional_indicator_w": "๐Ÿ‡ผ", + "regional_indicator_x": "๐Ÿ‡ฝ", + "regional_indicator_y": "๐Ÿ‡พ", + "regional_indicator_z": "๐Ÿ‡ฟ", + "registered": "ยฎ", + "relieved": "๐Ÿ˜Œ", + "reminder_ribbon": "๐ŸŽ—", + "repeat": "๐Ÿ”", + "repeat_one": "๐Ÿ”‚", + "rescue_workerโ€™s_helmet": "โ›‘๏ธ", + "restroom": "๐Ÿšป", + "reverse_button": "โ—€", + "revolving_hearts": "๐Ÿ’ž", + "rewind": "โช", + "rhino": "๐Ÿฆ", + "rhinoceros": "๐Ÿฆ", + "ribbon": "๐ŸŽ€", + "rice": "๐Ÿš", + "rice_ball": "๐Ÿ™", + "rice_cracker": "๐Ÿ˜", + "rice_scene": "๐ŸŽ‘", + "right_arrow": "โžก๏ธ", + "right_arrow_curving_down": "โคต", + "right_arrow_curving_left": "โ†ฉ", + "right_arrow_curving_up": "โคด", + "right_facing_fist": "๐Ÿคœ", + "rightfacing_fist": "๐Ÿคœ", + "ring": "๐Ÿ’", + "ringed_planet": "๐Ÿช", + "robot": "๐Ÿค–", + "rocket": "๐Ÿš€", + "rofl": "๐Ÿคฃ", + "roll_of_paper": "๐Ÿงป", + "rolledup_newspaper": "๐Ÿ—ž", + "roller_coaster": "๐ŸŽข", + "rolling_eyes": "๐Ÿ™„", + "rolling_on_the_floor_laughing": "๐Ÿคฃ", + "rooster": "๐Ÿ“", + "rose": "๐ŸŒน", + "rosette": "๐Ÿต", + "rotating_light": "๐Ÿšจ", + "round_pushpin": "๐Ÿ“", + "rowboat": "๐Ÿšฃ", + "rugby_football": "๐Ÿ‰", + "runner": "๐Ÿƒ", + "running_shirt_with_sash": "๐ŸŽฝ", + "safety_pin": "๐Ÿงท", + "safety_vest": "๐Ÿฆบ", + "sagittarius": "โ™", + "sailboat": "โ›ต", + "sake": "๐Ÿถ", + "salad": "๐Ÿฅ—", + "salt": "๐Ÿง‚", + "sandal": "๐Ÿ‘ก", + "sandwich": "๐Ÿฅช", + "santa": "๐ŸŽ…", + "sari": "๐Ÿฅป", + "satellite": "๐Ÿ“ก", + "sauropod": "๐Ÿฆ•", + "saxophone": "๐ŸŽท", + "scales": "โš–", + "scarf": "๐Ÿงฃ", + "school": "๐Ÿซ", + "school_satchel": "๐ŸŽ’", + "scissors": "โœ‚", + "scooter": "๐Ÿ›ด", + "scorpion": "๐Ÿฆ‚", + "scorpius": "โ™", + "scream": "๐Ÿ˜ฑ", + "scream_cat": "๐Ÿ™€", + "scroll": "๐Ÿ“œ", + "seat": "๐Ÿ’บ", + "second_place": "๐Ÿฅˆ", + "secret": "ใŠ™", + "see_no_evil": "๐Ÿ™ˆ", + "seedling": "๐ŸŒฑ", + "selfie": "๐Ÿคณ", + "seven": "7โƒฃ", + "shallow_pan_of_food": "๐Ÿฅ˜", + "shamrock": "โ˜˜๏ธ", + "shark": "๐Ÿฆˆ", + "shaved_ice": "๐Ÿง", + "sheep": "๐Ÿ‘", + "shell": "๐Ÿš", + "shield": "๐Ÿ›ก", + "shinto_shrine": "โ›ฉ๏ธ", + "ship": "๐Ÿšข", + "shirt": "๐Ÿ‘•", + "shopping_bags": "๐Ÿ›", + "shopping_cart": "๐Ÿ›’", + "shorts": "๐Ÿฉณ", + "shower": "๐Ÿšฟ", + "shrimp": "๐Ÿฆ", + "shushing_face": "๐Ÿคซ", + "sign_of_the_horns": "๐Ÿค˜", + "signal_strength": "๐Ÿ“ถ", + "six": "6โƒฃ", + "six_pointed_star": "๐Ÿ”ฏ", + "skateboard": "๐Ÿ›น", + "ski": "๐ŸŽฟ", + "skier": "โ›ท๏ธ", + "skull": "๐Ÿ’€", + "skull_and_crossbones": "โ˜ ๏ธ", + "skull_crossbones": "โ˜ ", + "skunk": "๐Ÿฆจ", + "sled": "๐Ÿ›ท", + "sleeping": "๐Ÿ˜ด", + "sleeping_accommodation": "๐Ÿ›Œ", + "sleepy": "๐Ÿ˜ช", + "slight_frown": "๐Ÿ™", + "slight_smile": "๐Ÿ™‚", + "slightly_frowning_face": "๐Ÿ™", + "slot_machine": "๐ŸŽฐ", + "sloth": "๐Ÿฆฅ", + "small_airplane": "๐Ÿ›ฉ", + "small_blue_diamond": "๐Ÿ”น", + "small_orange_diamond": "๐Ÿ”ธ", + "small_red_triangle": "๐Ÿ”บ", + "small_red_triangle_down": "๐Ÿ”ป", + "smile": "๐Ÿ˜„", + "smile_cat": "๐Ÿ˜ธ", + "smiley": "๐Ÿ˜ƒ", + "smiley_cat": "๐Ÿ˜บ", + "smiling": "โ˜บ๏ธ", + "smiling_face": "โ˜บ", + "smiling_face_with_hearts": "๐Ÿฅฐ", + "smiling_imp": "๐Ÿ˜ˆ", + "smirk": "๐Ÿ˜", + "smirk_cat": "๐Ÿ˜ผ", + "smoking": "๐Ÿšฌ", + "snail": "๐ŸŒ", + "snake": "๐Ÿ", + "sneezing_face": "๐Ÿคง", + "snowboarder": "๐Ÿ‚", + "snowcapped_mountain": "๐Ÿ”", + "snowflake": "โ„", + "snowman": "โ›„", + "soap": "๐Ÿงผ", + "sob": "๐Ÿ˜ญ", + "soccer": "โšฝ", + "socks": "๐Ÿงฆ", + "softball": "๐ŸฅŽ", + "soon": "๐Ÿ”œ", + "sos": "๐Ÿ†˜", + "sound": "๐Ÿ”‰", + "space_invader": "๐Ÿ‘พ", + "spade_suit": "โ™ ๏ธ", + "spades": "โ™ ", + "spaghetti": "๐Ÿ", + "sparkle": "โ‡", + "sparkler": "๐ŸŽ‡", + "sparkles": "โœจ", + "sparkling_heart": "๐Ÿ’–", + "speak_no_evil": "๐Ÿ™Š", + "speaker": "๐Ÿ”ˆ", + "speaking_head": "๐Ÿ—ฃ", + "speech_balloon": "๐Ÿ’ฌ", + "speech_left": "๐Ÿ—จ", + "speedboat": "๐Ÿšค", + "spider": "๐Ÿ•ท", + "spider_web": "๐Ÿ•ธ", + "spiral_calendar": "๐Ÿ—“", + "spiral_notepad": "๐Ÿ—’", + "sponge": "๐Ÿงฝ", + "spoon": "๐Ÿฅ„", + "squid": "๐Ÿฆ‘", + "stadium": "๐ŸŸ", + "star": "โญ", + "star2": "๐ŸŒŸ", + "star_and_crescent": "โ˜ช๏ธ", + "star_of_david": "โœก", + "star_struck": "๐Ÿคฉ", + "stars": "๐ŸŒ ", + "starstruck": "๐Ÿคฉ", + "station": "๐Ÿš‰", + "statue_of_liberty": "๐Ÿ—ฝ", + "steam_locomotive": "๐Ÿš‚", + "stethoscope": "๐Ÿฉบ", + "stew": "๐Ÿฒ", + "stop_button": "โน๏ธ", + "stopwatch": "โฑ๏ธ", + "straight_ruler": "๐Ÿ“", + "strawberry": "๐Ÿ“", + "stuck_out_tongue": "๐Ÿ˜›", + "stuck_out_tongue_closed_eyes": "๐Ÿ˜", + "stuck_out_tongue_winking_eye": "๐Ÿ˜œ", + "studio_microphone": "๐ŸŽ™", + "stuffed_flatbread": "๐Ÿฅ™", + "sun": "โ˜€", + "sun_behind_large_cloud": "๐ŸŒฅ", + "sun_behind_rain_cloud": "๐ŸŒฆ", + "sun_behind_small_cloud": "๐ŸŒค", + "sun_with_face": "๐ŸŒž", + "sunflower": "๐ŸŒป", + "sunglasses": "๐Ÿ˜Ž", + "sunny": "โ˜€๏ธ", + "sunrise": "๐ŸŒ…", + "sunrise_over_mountains": "๐ŸŒ„", + "superhero": "๐Ÿฆธ", + "supervillain": "๐Ÿฆน", + "surfer": "๐Ÿ„", + "sushi": "๐Ÿฃ", + "suspension_railway": "๐ŸšŸ", + "swan": "๐Ÿฆข", + "sweat": "๐Ÿ˜“", + "sweat_drops": "๐Ÿ’ฆ", + "sweat_smile": "๐Ÿ˜…", + "sweet_potato": "๐Ÿ ", + "swimmer": "๐ŸŠ", + "symbols": "๐Ÿ”ฃ", + "synagogue": "๐Ÿ•", + "syringe": "๐Ÿ’‰", + "t_rex": "๐Ÿฆ–", + "taco": "๐ŸŒฎ", + "tada": "๐ŸŽ‰", + "takeout_box": "๐Ÿฅก", + "tanabata_tree": "๐ŸŽ‹", + "tangerine": "๐ŸŠ", + "taurus": "โ™‰", + "taxi": "๐Ÿš•", + "tea": "๐Ÿต", + "teddy_bear": "๐Ÿงธ", + "telephone": "โ˜Ž", + "telephone_receiver": "๐Ÿ“ž", + "telescope": "๐Ÿ”ญ", + "tennis": "๐ŸŽพ", + "tent": "โ›บ", + "test_tube": "๐Ÿงช", + "thermometer": "๐ŸŒก", + "thermometer_face": "๐Ÿค’", + "thinking": "๐Ÿค”", + "third_place": "๐Ÿฅ‰", + "thought_balloon": "๐Ÿ’ญ", + "thread": "๐Ÿงต", + "three": "3โƒฃ", + "thumbsdown": "๐Ÿ‘Ž", + "thumbsup": "๐Ÿ‘", + "ticket": "๐ŸŽซ", + "tiger": "๐Ÿฏ", + "tiger2": "๐Ÿ…", + "timer_clock": "โฒ๏ธ", + "tired_face": "๐Ÿ˜ซ", + "tm": "โ„ข", + "toilet": "๐Ÿšฝ", + "tokyo_tower": "๐Ÿ—ผ", + "tomato": "๐Ÿ…", + "tone1": "๐Ÿป", + "tone2": "๐Ÿผ", + "tone3": "๐Ÿฝ", + "tone4": "๐Ÿพ", + "tone5": "๐Ÿฟ", + "tongue": "๐Ÿ‘…", + "toolbox": "๐Ÿงฐ", + "tooth": "๐Ÿฆท", + "top": "๐Ÿ”", + "tophat": "๐ŸŽฉ", + "tornado": "๐ŸŒช", + "track_next": "โญ", + "track_previous": "โฎ", + "trackball": "๐Ÿ–ฒ", + "tractor": "๐Ÿšœ", + "trade_mark": "โ„ข๏ธ", + "traffic_light": "๐Ÿšฅ", + "train": "๐Ÿš‹", + "train2": "๐Ÿš†", + "tram": "๐ŸšŠ", + "trex": "๐Ÿฆ–", + "triangular_flag_on_post": "๐Ÿšฉ", + "triangular_ruler": "๐Ÿ“", + "trident": "๐Ÿ”ฑ", + "triumph": "๐Ÿ˜ค", + "trolleybus": "๐ŸšŽ", + "trophy": "๐Ÿ†", + "tropical_drink": "๐Ÿน", + "tropical_fish": "๐Ÿ ", + "truck": "๐Ÿšš", + "trumpet": "๐ŸŽบ", + "tulip": "๐ŸŒท", + "tumbler_glass": "๐Ÿฅƒ", + "turkey": "๐Ÿฆƒ", + "turtle": "๐Ÿข", + "tv": "๐Ÿ“บ", + "twisted_rightwards_arrows": "๐Ÿ”€", + "two": "2โƒฃ", + "two_hearts": "๐Ÿ’•", + "two_men_holding_hands": "๐Ÿ‘ฌ", + "two_women_holding_hands": "๐Ÿ‘ญ", + "u5272": "๐Ÿˆน", + "u5408": "๐Ÿˆด", + "u55b6": "๐Ÿˆบ", + "u6307": "๐Ÿˆฏ", + "u6708": "๐Ÿˆท", + "u6709": "๐Ÿˆถ", + "u6e80": "๐Ÿˆต", + "u7121": "๐Ÿˆš", + "u7533": "๐Ÿˆธ", + "u7981": "๐Ÿˆฒ", + "u7a7a": "๐Ÿˆณ", + "umbrella": "โ˜”", + "umbrella_on_ground": "โ›ฑ๏ธ", + "unamused": "๐Ÿ˜’", + "underage": "๐Ÿ”ž", + "unicorn": "๐Ÿฆ„", + "unlock": "๐Ÿ”“", + "up": "๐Ÿ†™", + "up_arrow": "โฌ†", + "updown_arrow": "โ†•๏ธ", + "upleft_arrow": "โ†–๏ธ", + "upright_arrow": "โ†—", + "upside_down": "๐Ÿ™ƒ", + "v": "โœŒ๏ธ", + "vampire": "๐Ÿง›", + "vertical_traffic_light": "๐Ÿšฆ", + "vhs": "๐Ÿ“ผ", + "vibration_mode": "๐Ÿ“ณ", + "victory_hand": "โœŒ", + "video_camera": "๐Ÿ“น", + "video_game": "๐ŸŽฎ", + "violin": "๐ŸŽป", + "virgo": "โ™", + "volcano": "๐ŸŒ‹", + "volleyball": "๐Ÿ", + "vs": "๐Ÿ†š", + "vulcan": "๐Ÿ––", + "vulcan_salute": "๐Ÿ––", + "waffle": "๐Ÿง‡", + "walking": "๐Ÿšถ", + "waning_crescent_moon": "๐ŸŒ˜", + "waning_gibbous_moon": "๐ŸŒ–", + "warning": "โš ", + "wastebasket": "๐Ÿ—‘", + "watch": "โŒš", + "water_buffalo": "๐Ÿƒ", + "watermelon": "๐Ÿ‰", + "wave": "๐Ÿ‘‹", + "wavy_dash": "ใ€ฐ๏ธ", + "waxing_crescent_moon": "๐ŸŒ’", + "waxing_gibbous_moon": "๐ŸŒ”", + "wc": "๐Ÿšพ", + "weary": "๐Ÿ˜ฉ", + "wedding": "๐Ÿ’’", + "weightlifter": "๐Ÿ‹", + "whale": "๐Ÿณ", + "whale2": "๐Ÿ‹", + "wheel_of_dharma": "โ˜ธ๏ธ", + "wheelchair": "โ™ฟ", + "white_check_mark": "โœ…", + "white_circle": "โšช", + "white_flower": "๐Ÿ’ฎ", + "white_hair": "๐Ÿฆณ", + "white_heart": "๐Ÿค", + "white_large_square": "โฌœ", + "white_medium_small_square": "โ—ฝ", + "white_medium_square": "โ—ป๏ธ", + "white_small_square": "โ–ซ๏ธ", + "white_square_button": "๐Ÿ”ณ", + "wilted_flower": "๐Ÿฅ€", + "wilted_rose": "๐Ÿฅ€", + "wind_blowing_face": "๐ŸŒฌ", + "wind_chime": "๐ŸŽ", + "wine_glass": "๐Ÿท", + "wink": "๐Ÿ˜‰", + "wolf": "๐Ÿบ", + "woman": "๐Ÿ‘ฉ", + "woman_with_headscarf": "๐Ÿง•", + "womans_clothes": "๐Ÿ‘š", + "womans_hat": "๐Ÿ‘’", + "womens": "๐Ÿšบ", + "woozy_face": "๐Ÿฅด", + "world_map": "๐Ÿ—บ", + "worried": "๐Ÿ˜Ÿ", + "wrench": "๐Ÿ”ง", + "writing_hand": "โœ๏ธ", + "x": "โŒ", + "yarn": "๐Ÿงถ", + "yawning_face": "๐Ÿฅฑ", + "yellow_circle": "๐ŸŸก", + "yellow_heart": "๐Ÿ’›", + "yellow_square": "๐ŸŸจ", + "yen": "๐Ÿ’ด", + "yin_yang": "โ˜ฏ๏ธ", + "yoyo": "๐Ÿช€", + "yum": "๐Ÿ˜‹", + "zany_face": "๐Ÿคช", + "zap": "โšก", + "zebra": "๐Ÿฆ“", + "zero": "0โƒฃ", + "zipper_mouth": "๐Ÿค", + "zombie": "๐ŸงŸ", + "zzz": "๐Ÿ’ค" +} \ No newline at end of file diff --git a/priv/static/static/js/10.0044e0a91e709d07cc7f.js b/priv/static/static/js/10.0044e0a91e709d07cc7f.js new file mode 100644 index 000000000..1d9eb70f5 Binary files /dev/null and b/priv/static/static/js/10.0044e0a91e709d07cc7f.js differ diff --git a/priv/static/static/js/10.0044e0a91e709d07cc7f.js.map b/priv/static/static/js/10.0044e0a91e709d07cc7f.js.map new file mode 100644 index 000000000..2f816ec9d Binary files /dev/null and b/priv/static/static/js/10.0044e0a91e709d07cc7f.js.map differ diff --git a/priv/static/static/js/10.46f441b948010eda4403.js b/priv/static/static/js/10.46f441b948010eda4403.js deleted file mode 100644 index 308d124c0..000000000 Binary files a/priv/static/static/js/10.46f441b948010eda4403.js and /dev/null differ diff --git a/priv/static/static/js/10.46f441b948010eda4403.js.map b/priv/static/static/js/10.46f441b948010eda4403.js.map deleted file mode 100644 index e0623e6bf..000000000 Binary files a/priv/static/static/js/10.46f441b948010eda4403.js.map and /dev/null differ diff --git a/priv/static/static/js/16.49ae236fe0fc6a010e66.js b/priv/static/static/js/16.49ae236fe0fc6a010e66.js new file mode 100644 index 000000000..dc0e1b08d Binary files /dev/null and b/priv/static/static/js/16.49ae236fe0fc6a010e66.js differ diff --git a/priv/static/static/js/16.49ae236fe0fc6a010e66.js.map b/priv/static/static/js/16.49ae236fe0fc6a010e66.js.map new file mode 100644 index 000000000..ec00186b1 Binary files /dev/null and b/priv/static/static/js/16.49ae236fe0fc6a010e66.js.map differ diff --git a/priv/static/static/js/16.5e3f20da470591d0cabf.js b/priv/static/static/js/16.5e3f20da470591d0cabf.js deleted file mode 100644 index e90ed4ca1..000000000 Binary files a/priv/static/static/js/16.5e3f20da470591d0cabf.js and /dev/null differ diff --git a/priv/static/static/js/16.5e3f20da470591d0cabf.js.map b/priv/static/static/js/16.5e3f20da470591d0cabf.js.map deleted file mode 100644 index 0c4d0e385..000000000 Binary files a/priv/static/static/js/16.5e3f20da470591d0cabf.js.map and /dev/null differ diff --git a/priv/static/static/js/18.9a5b877f94b2b53065e1.js b/priv/static/static/js/18.9a5b877f94b2b53065e1.js deleted file mode 100644 index c4aea5b25..000000000 Binary files a/priv/static/static/js/18.9a5b877f94b2b53065e1.js and /dev/null differ diff --git a/priv/static/static/js/18.9a5b877f94b2b53065e1.js.map b/priv/static/static/js/18.9a5b877f94b2b53065e1.js.map deleted file mode 100644 index 61d9a7d41..000000000 Binary files a/priv/static/static/js/18.9a5b877f94b2b53065e1.js.map and /dev/null differ diff --git a/priv/static/static/js/18.cf36e1127e02cd2a36a4.js b/priv/static/static/js/18.cf36e1127e02cd2a36a4.js new file mode 100644 index 000000000..d7c021bed Binary files /dev/null and b/priv/static/static/js/18.cf36e1127e02cd2a36a4.js differ diff --git a/priv/static/static/js/18.cf36e1127e02cd2a36a4.js.map b/priv/static/static/js/18.cf36e1127e02cd2a36a4.js.map new file mode 100644 index 000000000..0431728a4 Binary files /dev/null and b/priv/static/static/js/18.cf36e1127e02cd2a36a4.js.map differ diff --git a/priv/static/static/js/2.422e6c756ac673a6fd44.js b/priv/static/static/js/2.422e6c756ac673a6fd44.js deleted file mode 100644 index 9fb47e2bf..000000000 Binary files a/priv/static/static/js/2.422e6c756ac673a6fd44.js and /dev/null differ diff --git a/priv/static/static/js/2.422e6c756ac673a6fd44.js.map b/priv/static/static/js/2.422e6c756ac673a6fd44.js.map deleted file mode 100644 index 92fdb4d2c..000000000 Binary files a/priv/static/static/js/2.422e6c756ac673a6fd44.js.map and /dev/null differ diff --git a/priv/static/static/js/2.9b94fcdec8b4c4dde80f.js b/priv/static/static/js/2.9b94fcdec8b4c4dde80f.js new file mode 100644 index 000000000..b85deca02 Binary files /dev/null and b/priv/static/static/js/2.9b94fcdec8b4c4dde80f.js differ diff --git a/priv/static/static/js/2.9b94fcdec8b4c4dde80f.js.map b/priv/static/static/js/2.9b94fcdec8b4c4dde80f.js.map new file mode 100644 index 000000000..1f5da32fe Binary files /dev/null and b/priv/static/static/js/2.9b94fcdec8b4c4dde80f.js.map differ diff --git a/priv/static/static/js/28.e575fccfc5c48ba080e1.js b/priv/static/static/js/28.e575fccfc5c48ba080e1.js new file mode 100644 index 000000000..3b503347c Binary files /dev/null and b/priv/static/static/js/28.e575fccfc5c48ba080e1.js differ diff --git a/priv/static/static/js/28.e575fccfc5c48ba080e1.js.map b/priv/static/static/js/28.e575fccfc5c48ba080e1.js.map new file mode 100644 index 000000000..0bfdc3fc1 Binary files /dev/null and b/priv/static/static/js/28.e575fccfc5c48ba080e1.js.map differ diff --git a/priv/static/static/js/28.f1353aa382a104262d1a.js b/priv/static/static/js/28.f1353aa382a104262d1a.js deleted file mode 100644 index a253284f0..000000000 Binary files a/priv/static/static/js/28.f1353aa382a104262d1a.js and /dev/null differ diff --git a/priv/static/static/js/28.f1353aa382a104262d1a.js.map b/priv/static/static/js/28.f1353aa382a104262d1a.js.map deleted file mode 100644 index 3421c9511..000000000 Binary files a/priv/static/static/js/28.f1353aa382a104262d1a.js.map and /dev/null differ diff --git a/priv/static/static/js/3.a0df8a5bcd120d1f8581.js b/priv/static/static/js/3.a0df8a5bcd120d1f8581.js deleted file mode 100644 index 423121114..000000000 Binary files a/priv/static/static/js/3.a0df8a5bcd120d1f8581.js and /dev/null differ diff --git a/priv/static/static/js/3.a0df8a5bcd120d1f8581.js.map b/priv/static/static/js/3.a0df8a5bcd120d1f8581.js.map deleted file mode 100644 index 653727d10..000000000 Binary files a/priv/static/static/js/3.a0df8a5bcd120d1f8581.js.map and /dev/null differ diff --git a/priv/static/static/js/3.c16fafd37452b101b5bc.js b/priv/static/static/js/3.c16fafd37452b101b5bc.js new file mode 100644 index 000000000..8115aa69a Binary files /dev/null and b/priv/static/static/js/3.c16fafd37452b101b5bc.js differ diff --git a/priv/static/static/js/3.c16fafd37452b101b5bc.js.map b/priv/static/static/js/3.c16fafd37452b101b5bc.js.map new file mode 100644 index 000000000..c1258b4d6 Binary files /dev/null and b/priv/static/static/js/3.c16fafd37452b101b5bc.js.map differ diff --git a/priv/static/static/js/30.64736585965c63c2b5d4.js b/priv/static/static/js/30.64736585965c63c2b5d4.js deleted file mode 100644 index 4fdbe8c3e..000000000 Binary files a/priv/static/static/js/30.64736585965c63c2b5d4.js and /dev/null differ diff --git a/priv/static/static/js/30.64736585965c63c2b5d4.js.map b/priv/static/static/js/30.64736585965c63c2b5d4.js.map deleted file mode 100644 index 376920946..000000000 Binary files a/priv/static/static/js/30.64736585965c63c2b5d4.js.map and /dev/null differ diff --git a/priv/static/static/js/30.b461727270655cb0f752.js b/priv/static/static/js/30.b461727270655cb0f752.js new file mode 100644 index 000000000..1baa0f5b1 Binary files /dev/null and b/priv/static/static/js/30.b461727270655cb0f752.js differ diff --git a/priv/static/static/js/30.b461727270655cb0f752.js.map b/priv/static/static/js/30.b461727270655cb0f752.js.map new file mode 100644 index 000000000..570e88f38 Binary files /dev/null and b/priv/static/static/js/30.b461727270655cb0f752.js.map differ diff --git a/priv/static/static/js/31.554145c52128030ca625.js b/priv/static/static/js/31.554145c52128030ca625.js new file mode 100644 index 000000000..46cfcc376 Binary files /dev/null and b/priv/static/static/js/31.554145c52128030ca625.js differ diff --git a/priv/static/static/js/31.554145c52128030ca625.js.map b/priv/static/static/js/31.554145c52128030ca625.js.map new file mode 100644 index 000000000..f16ddae52 Binary files /dev/null and b/priv/static/static/js/31.554145c52128030ca625.js.map differ diff --git a/priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js b/priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js deleted file mode 100644 index 4da4c56fa..000000000 Binary files a/priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js and /dev/null differ diff --git a/priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js.map b/priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js.map deleted file mode 100644 index bc040ab9b..000000000 Binary files a/priv/static/static/js/4.4cde7fdd1fe6bf2a9499.js.map and /dev/null differ diff --git a/priv/static/static/js/4.e8cf78e629b76635765f.js b/priv/static/static/js/4.e8cf78e629b76635765f.js new file mode 100644 index 000000000..bb655979f Binary files /dev/null and b/priv/static/static/js/4.e8cf78e629b76635765f.js differ diff --git a/priv/static/static/js/4.e8cf78e629b76635765f.js.map b/priv/static/static/js/4.e8cf78e629b76635765f.js.map new file mode 100644 index 000000000..61ef570d8 Binary files /dev/null and b/priv/static/static/js/4.e8cf78e629b76635765f.js.map differ diff --git a/priv/static/static/js/9.3a29094f1886648a0af3.js b/priv/static/static/js/9.3a29094f1886648a0af3.js deleted file mode 100644 index eb3516dcd..000000000 Binary files a/priv/static/static/js/9.3a29094f1886648a0af3.js and /dev/null differ diff --git a/priv/static/static/js/9.3a29094f1886648a0af3.js.map b/priv/static/static/js/9.3a29094f1886648a0af3.js.map deleted file mode 100644 index 1b6224a6a..000000000 Binary files a/priv/static/static/js/9.3a29094f1886648a0af3.js.map and /dev/null differ diff --git a/priv/static/static/js/9.fce4dde4ce07554d517f.js b/priv/static/static/js/9.fce4dde4ce07554d517f.js new file mode 100644 index 000000000..ebf9272c9 Binary files /dev/null and b/priv/static/static/js/9.fce4dde4ce07554d517f.js differ diff --git a/priv/static/static/js/9.fce4dde4ce07554d517f.js.map b/priv/static/static/js/9.fce4dde4ce07554d517f.js.map new file mode 100644 index 000000000..ac0899d25 Binary files /dev/null and b/priv/static/static/js/9.fce4dde4ce07554d517f.js.map differ diff --git a/priv/static/static/js/app.45547c05212c403dd77c.js b/priv/static/static/js/app.45547c05212c403dd77c.js deleted file mode 100644 index 219a59493..000000000 Binary files a/priv/static/static/js/app.45547c05212c403dd77c.js and /dev/null differ diff --git a/priv/static/static/js/app.45547c05212c403dd77c.js.map b/priv/static/static/js/app.45547c05212c403dd77c.js.map deleted file mode 100644 index e1dd6c992..000000000 Binary files a/priv/static/static/js/app.45547c05212c403dd77c.js.map and /dev/null differ diff --git a/priv/static/static/js/app.c4f570328dc17a633803.js b/priv/static/static/js/app.c4f570328dc17a633803.js new file mode 100644 index 000000000..a3cd5f5ee Binary files /dev/null and b/priv/static/static/js/app.c4f570328dc17a633803.js differ diff --git a/priv/static/static/js/app.c4f570328dc17a633803.js.map b/priv/static/static/js/app.c4f570328dc17a633803.js.map new file mode 100644 index 000000000..5d215f8ac Binary files /dev/null and b/priv/static/static/js/app.c4f570328dc17a633803.js.map differ diff --git a/priv/static/static/js/vendors~app.4103f03e428eb765f04d.js b/priv/static/static/js/vendors~app.4103f03e428eb765f04d.js new file mode 100644 index 000000000..8884654a1 Binary files /dev/null and b/priv/static/static/js/vendors~app.4103f03e428eb765f04d.js differ diff --git a/priv/static/static/js/vendors~app.4103f03e428eb765f04d.js.map b/priv/static/static/js/vendors~app.4103f03e428eb765f04d.js.map new file mode 100644 index 000000000..43c374b39 Binary files /dev/null and b/priv/static/static/js/vendors~app.4103f03e428eb765f04d.js.map differ diff --git a/priv/static/static/js/vendors~app.952124344a84613dbac0.js b/priv/static/static/js/vendors~app.952124344a84613dbac0.js deleted file mode 100644 index f7943c122..000000000 Binary files a/priv/static/static/js/vendors~app.952124344a84613dbac0.js and /dev/null differ diff --git a/priv/static/static/js/vendors~app.952124344a84613dbac0.js.map b/priv/static/static/js/vendors~app.952124344a84613dbac0.js.map deleted file mode 100644 index 05fc07c18..000000000 Binary files a/priv/static/static/js/vendors~app.952124344a84613dbac0.js.map and /dev/null differ diff --git a/priv/static/static/themes/redmond-xx-se.json b/priv/static/static/themes/redmond-xx-se.json index 24480d2c7..b62769dbc 100644 --- a/priv/static/static/themes/redmond-xx-se.json +++ b/priv/static/static/themes/redmond-xx-se.json @@ -267,6 +267,7 @@ }, "colors": { "bg": "#c0c0c0", + "wallpaper": "#008080", "text": "#000000", "link": "#0000ff", "accent": "#000080", diff --git a/priv/static/static/themes/redmond-xx.json b/priv/static/static/themes/redmond-xx.json index cf9010fe2..83b591091 100644 --- a/priv/static/static/themes/redmond-xx.json +++ b/priv/static/static/themes/redmond-xx.json @@ -258,6 +258,7 @@ }, "colors": { "bg": "#c0c0c0", + "wallpaper": "#008080", "text": "#000000", "link": "#0000ff", "accent": "#000080", diff --git a/priv/static/static/themes/redmond-xxi.json b/priv/static/static/themes/redmond-xxi.json index 7fdc4a6d6..60ceae7c2 100644 --- a/priv/static/static/themes/redmond-xxi.json +++ b/priv/static/static/themes/redmond-xxi.json @@ -240,6 +240,7 @@ }, "colors": { "bg": "#d6d6ce", + "wallpaper": "#396ba5", "text": "#000000", "link": "#0000ff", "accent": "#0a246a", diff --git a/priv/static/sw-pleroma.js b/priv/static/sw-pleroma.js index 385ee2f0c..e35f11e38 100644 Binary files a/priv/static/sw-pleroma.js and b/priv/static/sw-pleroma.js differ diff --git a/priv/static/sw-pleroma.js.map b/priv/static/sw-pleroma.js.map index 0b6a76c2f..2e4aaeff9 100644 Binary files a/priv/static/sw-pleroma.js.map and b/priv/static/sw-pleroma.js.map differ -- cgit v1.2.3 From 68eed0873ea8406b7b6b8d2a5d2c07b093a2bd09 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Dec 2020 11:16:13 +0100 Subject: Linting --- test/pleroma/user_search_test.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/pleroma/user_search_test.exs b/test/pleroma/user_search_test.exs index 42f3f78a8..349797adb 100644 --- a/test/pleroma/user_search_test.exs +++ b/test/pleroma/user_search_test.exs @@ -66,7 +66,8 @@ test "excludes invisible users from results" do end test "does NOT exclude non-discoverable users from results (as long as it's the default)" do - # NOTE: as long as users are non-discoverable by default, we can't filter out most users: #2301 + # NOTE: as long as users are non-discoverable by default, + # we can't filter out most users: #2301 insert(:user, %{nickname: "john 3000", discoverable: false}) insert(:user, %{nickname: "john 3001"}) -- cgit v1.2.3 From 463eec992a43c74682aca192cebff4a293d4a358 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Dec 2020 10:35:41 +0000 Subject: Apply 1 suggestion(s) to 1 file(s) --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6438c9957..f8d947578 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,10 +18,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fixes for the autolinker. - Forwarded reports duplication from Pleroma instances. -
    - API -- Statuses were not displayed for Mastodon forwarded reports. -
    +-
    + API + - Statuses were not displayed for Mastodon forwarded reports. +
    ## [2.2.0] - 2020-11-12 -- cgit v1.2.3 From 322463e1bdc9da76a93918fd9168a0e8fbd46802 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Dec 2020 11:39:19 +0100 Subject: Update changelog --- CHANGELOG.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6438c9957..35e245d1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,11 +18,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fixes for the autolinker. - Forwarded reports duplication from Pleroma instances. -
    +-
    API - Statuses were not displayed for Mastodon forwarded reports.
    +### Upgrade notes + +1. Restart Pleroma + ## [2.2.0] - 2020-11-12 @@ -87,11 +91,6 @@ switched to a new configuration mechanism, however it was not officially removed - From Source: `mix ecto.migrate` 3. Restart Pleroma - -### Fixes -- Config generation: rename `Pleroma.Upload.Filter.ExifTool` to `Pleroma.Upload.Filter.Exiftool` -- S3 Uploads with Elixir 1.11 - ## [2.1.2] - 2020-09-17 ### Security -- cgit v1.2.3 From 843d2074fe79637016579c27062889a7e5371b7a Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Dec 2020 11:56:08 +0100 Subject: Fixtures: Add application actor fixture. --- test/fixtures/mastodon/application_actor.json | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 test/fixtures/mastodon/application_actor.json diff --git a/test/fixtures/mastodon/application_actor.json b/test/fixtures/mastodon/application_actor.json new file mode 100644 index 000000000..2089ea049 --- /dev/null +++ b/test/fixtures/mastodon/application_actor.json @@ -0,0 +1,67 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + { + "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", + "toot": "http://joinmastodon.org/ns#", + "featured": { + "@id": "toot:featured", + "@type": "@id" + }, + "alsoKnownAs": { + "@id": "as:alsoKnownAs", + "@type": "@id" + }, + "movedTo": { + "@id": "as:movedTo", + "@type": "@id" + }, + "schema": "http://schema.org#", + "PropertyValue": "schema:PropertyValue", + "value": "schema:value", + "IdentityProof": "toot:IdentityProof", + "discoverable": "toot:discoverable", + "Device": "toot:Device", + "Ed25519Signature": "toot:Ed25519Signature", + "Ed25519Key": "toot:Ed25519Key", + "Curve25519Key": "toot:Curve25519Key", + "EncryptedMessage": "toot:EncryptedMessage", + "publicKeyBase64": "toot:publicKeyBase64", + "deviceId": "toot:deviceId", + "claim": { + "@type": "@id", + "@id": "toot:claim" + }, + "fingerprintKey": { + "@type": "@id", + "@id": "toot:fingerprintKey" + }, + "identityKey": { + "@type": "@id", + "@id": "toot:identityKey" + }, + "devices": { + "@type": "@id", + "@id": "toot:devices" + }, + "messageFranking": "toot:messageFranking", + "messageType": "toot:messageType", + "cipherText": "toot:cipherText" + } + ], + "id": "https://{{DOMAIN}}/actor", + "type": "Application", + "inbox": "https://{{DOMAIN}}/actor/inbox", + "preferredUsername": "{{DOMAIN}}", + "url": "https://{{DOMAIN}}/about/more?instance_actor=true", + "manuallyApprovesFollowers": true, + "publicKey": { + "id": "https://{{DOMAIN}}/actor#main-key", + "owner": "https://{{DOMAIN}}/actor", + "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAA0CA08AMIIBCgKCAQEAyi2T2FFZJgRPY+96YQrn\n6J6eF2P60J+nz+/pRc/acv/Nx+NLxxPyXby0F2s60MV7uALRQbBBnf7oNKCd/T4S\nvbr7UXMCWTdaJBpYubMKWT9uBlaUUkUfqL+WTV+IQnlcKtssQ4+AwrAKAZXza8ws\nZypevOsLHzayyEzztmm1KQC9GCUOITCLf7Q6qEhy8z/HuqLBEC0Own0pD7QsbfcS\no1peuZY7g1E/jJ9HR9GqJccMaR0H28KmJ7tT1Yzlyf5uZMRIdPxsoMR9sGLjR2B8\noegSwaf9SogR3ScP395Tt/9Ud1VVzuhpoS8Uy7jKSs+3CuLJsEGoMrib8VyOwadS\n9wIDAQAB\n-----END PUBLIC KEY-----\n" + }, + "endpoints": { + "sharedInbox": "https://{{DOMAIN}}/inbox" + } +} -- cgit v1.2.3