fedipod-server 0.21.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/claims.d.ts +3 -1
- package/dist/claims.js +20 -7
- package/dist/components/context.jsonld +6 -0
- package/dist/handler.d.ts +29 -1
- package/dist/handler.js +85 -4
- package/dist/handler.jsonld +36 -1
- package/lib/client/c2s.mjs +100 -3
- package/lib/client/masto/accounts.mjs +44 -4
- package/lib/client/masto/body.mjs +90 -3
- package/lib/client/masto/index.mjs +5 -1
- package/lib/client/masto/instance.mjs +11 -3
- package/lib/client/masto/media.mjs +3 -57
- package/lib/client/masto/oauth.mjs +66 -9
- package/lib/client/masto/render.mjs +62 -5
- package/lib/client/masto/statuses.mjs +25 -1
- package/lib/client/masto/timelines.mjs +128 -6
- package/lib/connections/tagfeed.mjs +42 -5
- package/lib/core/as2.mjs +36 -5
- package/lib/core/contexts/index.mjs +14 -0
- package/lib/core/contexts/litepub-0.1.json +60 -0
- package/lib/core/contexts/map.json +3 -1
- package/lib/core/contexts/quotes.json +18 -0
- package/lib/core/graphview.mjs +41 -3
- package/lib/core/intake/activities.mjs +136 -2
- package/lib/core/intake/activity.mjs +79 -1
- package/lib/core/intake/group.mjs +37 -3
- package/lib/core/intake/index.mjs +32 -2
- package/lib/core/intake/notes.mjs +60 -3
- package/lib/core/lease.mjs +12 -2
- package/lib/core/profile-page.mjs +104 -0
- package/lib/core/publisher/collections.mjs +6 -1
- package/lib/core/publisher/index.mjs +32 -17
- package/lib/core/publisher/notes.mjs +104 -3
- package/lib/core/shapes/activitystreams.ttl +28 -0
- package/lib/core/shapes/index.mjs +26 -1
- package/lib/core/wire-quotes.mjs +71 -0
- package/lib/core/wire.mjs +49 -102
- package/lib/device/admin/routes/lifecycle.mjs +9 -0
- package/lib/device/admin/static.mjs +4 -1
- package/lib/device/admin/surface.mjs +26 -2
- package/lib/device/certs.mjs +18 -2
- package/lib/device/cli/commands/state.mjs +3 -1
- package/lib/gateway/front-core.mjs +189 -17
- package/lib/pod/root.mjs +6 -3
- package/lib/pod/transport.mjs +5 -1
- package/lib/session/README.md +123 -0
- package/lib/session/demo.html +94 -0
- package/lib/session/fedi-account.mjs +346 -0
- package/lib/session/fedi-login.mjs +123 -0
- package/lib/session/oidc-session.mjs +233 -0
- package/lib/session/package.json +41 -0
- package/package.json +1 -1
- package/run-agent.mjs +9 -0
- package/vendor/gate.cjs +6 -3
- package/web/admin/bar.css +32 -0
- package/web/admin/bar.js +38 -0
- package/web/admin/client/index.html +2 -1
- package/web/admin/client-pick.js +79 -0
- package/web/admin/index.html +2 -1
- package/web/admin/oauth-signin.mjs +37 -0
- package/web/admin/setup/index.html +2 -1
- package/web/admin/tokens.css +15 -3
- package/web/app/admin-facade.mjs +25 -2
- package/web/app/agent.mjs +99 -3
- package/web/app/authorize_interaction.html +56 -0
- package/web/app/authorize_interaction.js +69 -0
- package/web/app/boot.mjs +81 -5
- package/web/app/dist/boot.js +245 -156
- package/web/app/dist/boot.js.map +4 -4
- package/web/app/dist/sw.js +1702 -478
- package/web/app/dist/sw.js.map +4 -4
- package/web/app/index.html +4 -3
- package/web/app/oidc-session.mjs +5 -188
- package/web/app/site/_headers +22 -0
- package/web/app/site/_redirects +17 -0
- package/web/app/site/admin/bar.css +32 -0
- package/web/app/site/admin/bar.js +38 -0
- package/web/app/site/admin/client/index.html +21 -3
- package/web/app/site/admin/client-phanpy/index.html +61 -0
- package/web/app/site/admin/client-pick.js +79 -0
- package/web/app/site/admin/index.html +19 -1
- package/web/app/site/admin/oauth-signin.mjs +37 -0
- package/web/app/site/admin/setup/index.html +5 -1
- package/web/app/site/admin/tokens.css +15 -3
- package/web/app/site/app/compose/index.html +4 -1
- package/web/app/site/app/index.html +4 -1
- package/web/app/site/authorize_interaction.html +59 -0
- package/web/app/site/authorize_interaction.js +69 -0
- package/web/app/site/bb/bb.js +1617 -0
- package/web/app/site/bb/index.html +300 -0
- package/web/app/site/bb/markdown.mjs +0 -0
- package/web/app/site/bb/masto.mjs +179 -0
- package/web/app/site/bb/mine.mjs +48 -0
- package/web/app/site/bb/oidc-session.mjs +6 -0
- package/web/app/site/bb/pod.mjs +340 -0
- package/web/app/site/bb/private.mjs +98 -0
- package/web/app/site/bb/read.mjs +296 -0
- package/web/app/site/bb/seen.mjs +64 -0
- package/web/app/site/bb/solid-oidc-session.mjs +233 -0
- package/web/app/site/bb/tokens.css +68 -0
- package/web/app/site/boot.js +245 -156
- package/web/app/site/build.json +1 -0
- package/web/app/site/demo/fedi-account.mjs +346 -0
- package/web/app/site/demo/fedi-login.mjs +123 -0
- package/web/app/site/demo/index.html +94 -0
- package/web/app/site/demo/oidc-session.mjs +233 -0
- package/web/app/site/demo/tokens.css +68 -0
- package/web/app/site/icons/forum.svg +11 -0
- package/web/app/site/icons/gateway.svg +14 -0
- package/web/app/site/icons/local.svg +11 -0
- package/web/app/site/index.html +7 -3
- package/web/app/site/sengi/3rdpartylicenses.txt +832 -0
- package/web/app/site/sengi/Roboto-Black.72f6fd218b59c42e804c.woff2 +0 -0
- package/web/app/site/sengi/Roboto-Black.fdd88b742a9f6304f05b.woff +0 -0
- package/web/app/site/sengi/Roboto-Bold.08cb8f79715774f9a628.woff +0 -0
- package/web/app/site/sengi/Roboto-Bold.f3a02e2578bee50e620e.woff2 +0 -0
- package/web/app/site/sengi/Roboto-Light.10ad0f861c0c58077340.woff +0 -0
- package/web/app/site/sengi/Roboto-Light.ed4b08d2702fa26acc32.woff2 +0 -0
- package/web/app/site/sengi/Roboto-Medium.50d01d3e6c994995bcaf.woff2 +0 -0
- package/web/app/site/sengi/Roboto-Medium.9a3bf7acae14d9b5ed5a.woff +0 -0
- package/web/app/site/sengi/Roboto-Regular.94dac78eee406a8c8f04.woff +0 -0
- package/web/app/site/sengi/Roboto-Regular.9feb0110b6dff9ee2b9e.woff2 +0 -0
- package/web/app/site/sengi/Roboto-Thin.46888f279ddb7baaf897.woff2 +0 -0
- package/web/app/site/sengi/Roboto-Thin.f09d9b5e8e8a5f3843c1.woff +0 -0
- package/web/app/site/sengi/arrow_1.bc5b1e3edc01f84c94d7.png +0 -0
- package/web/app/site/sengi/arrow_2.4ca4d04924079fc62d23.png +0 -0
- package/web/app/site/sengi/assets/audio/all-eyes-on-me.mp3 +0 -0
- package/web/app/site/sengi/assets/audio/appointed.mp3 +0 -0
- package/web/app/site/sengi/assets/audio/boop.mp3 +0 -0
- package/web/app/site/sengi/assets/audio/exquisite.mp3 +0 -0
- package/web/app/site/sengi/assets/docs/privacy.html +20 -0
- package/web/app/site/sengi/assets/emoji/64/0023-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0023.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/002a-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/002a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0030-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0030.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0031-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0031.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0032-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0032.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0033-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0033.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0034-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0034.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0035-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0035.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0036-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0036.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0037-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0037.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0038-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0038.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0039-20e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/0039.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/00a9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/00ae.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f004.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f0cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f170.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f171.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f17e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f17f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f18e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f191.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f192.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f193.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f194.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f195.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f196.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f197.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f198.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f199.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f19a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb-1f1ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ef-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ef-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ef-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ef-1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f4-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f6-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f7-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f7-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f7-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f7-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f7-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa-1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb-1f1fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fc-1f1eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fc-1f1f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fd-1f1f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fe-1f1ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fe-1f1f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ff-1f1e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ff-1f1f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ff-1f1fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f1ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f201.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f202.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f21a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f22f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f232.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f233.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f234.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f235.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f236.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f237.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f238.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f239.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f23a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f250.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f251.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f300.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f301.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f302.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f303.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f304.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f305.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f306.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f307.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f308.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f309.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f30a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f30b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f30c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f30d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f30e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f30f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f310.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f311.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f312.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f313.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f314.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f315.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f316.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f317.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f318.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f319.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f31a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f31b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f31c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f31d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f31e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f31f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f320.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f321.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f324.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f325.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f326.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f327.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f328.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f329.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f32a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f32b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f32c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f32d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f32e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f32f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f330.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f331.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f332.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f333.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f334.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f335.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f336.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f337.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f338.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f339.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f33a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f33b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f33c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f33d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f33f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f340.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f341.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f342.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f343.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f344-1f7eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f344.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f345.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f346.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f347.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f348.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f349.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34b-1f7e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f34f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f350.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f351.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f352.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f353.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f354.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f355.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f356.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f357.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f358.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f359.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f35a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f35b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f35c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f35d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f35e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f35f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f360.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f361.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f362.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f363.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f364.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f365.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f366.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f367.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f368.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f369.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f36a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f36b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f36c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f36d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f36e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f36f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f370.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f371.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f372.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f374.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f375.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f376.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f377.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f378.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f379.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f37a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f37b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f37d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f37e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f37f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f380.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f381.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f382.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f383.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f385-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f385-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f385-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f385-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f385-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f385.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f386.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f387.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f388.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f389.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f38a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f38b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f38c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f38d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f38e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f38f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f390.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f391.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f392.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f396.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f397.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f399.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f39a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f39b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f39e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f39f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3a9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ac.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ad.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ae.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3b9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ba.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3be.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3bf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fb-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fb-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fb-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fc-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fc-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fd-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fd-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fe-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fe-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fe-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3ff-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3ff-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3ff-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c7-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c7-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c7-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c7-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c7-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3c9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ca.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ce.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3d9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3da.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3db.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3dc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3dd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3de.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3df.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f3-1f308.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f3-26a7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f4-2620.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f400.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f401.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f402.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f403.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f404.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f405.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f406.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f407.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f408-2b1b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f408.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f409.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f40a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f40b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f40c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f40d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f40e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f40f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f410.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f411.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f412.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f413.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f414.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f415-1f9ba.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f415.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f416.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f417.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f418.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f419.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f41a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f41b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f41c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f41d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f41e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f41f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f420.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f421.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f422.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f423.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f424.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f425.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f426-1f525.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f426-2b1b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f426.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f427.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f428.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f429.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f42a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f42b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f42c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f42d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f42e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f42f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f430.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f431.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f432.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f433.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f434.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f435.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f436.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f437.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f438.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f439.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43b-2744.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f43f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f440.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f441-1f5e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f441.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f442-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f442-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f442-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f442-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f442-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f442.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f443-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f443-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f443-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f443-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f443-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f443.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f444.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f445.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f446-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f446-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f446-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f446-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f446-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f446.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f447-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f447-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f447-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f447-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f447-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f447.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f448-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f448-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f448-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f448-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f448-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f448.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f449-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f449-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f449-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f449-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f449-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f449.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44a-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44a-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44a-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44a-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44a-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44b-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44b-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44b-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44b-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44b-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44e-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44e-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44e-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44e-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44e-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44f-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44f-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44f-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44f-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44f-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f44f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f450-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f450-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f450-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f450-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f450-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f450.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f451.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f452.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f453.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f454.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f455.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f456.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f457.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f458.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f459.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f45a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f45b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f45c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f45d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f45e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f45f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f460.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f461.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f462.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f463.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f464.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f465.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f466-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f466-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f466-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f466-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f466-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f467-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f467-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f467-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f467-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f467-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f466-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f467-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f467-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f468-1f466-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f468-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f468-1f467-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f468-1f467-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f468-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f469-1f466-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f469-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f469-1f467-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f469-1f467-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f469-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-2764-1f468.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468-2764-1f48b-1f468.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f468.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f91d-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb-2764-1f48b-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f91d-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc-2764-1f48b-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f91d-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd-2764-1f48b-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f91d-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe-2764-1f48b-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f91d-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f468-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f468-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f468-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f468-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f468-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f469-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f469-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f469-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f469-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff-2764-1f48b-1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f466-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f467-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f467-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f469-1f466-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f469-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f469-1f467-1f466.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f469-1f467-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f469-1f467.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2764-1f468.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2764-1f469.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2764-1f48b-1f468.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469-2764-1f48b-1f469.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f469.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46b-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46b-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46b-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46b-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46b-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46f-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46f-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f46f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f470.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f471.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f472-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f472-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f472-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f472-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f472-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f472.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f473.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f474-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f474-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f474-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f474-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f474-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f474.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f475-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f475-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f475-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f475-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f475-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f475.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f476-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f476-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f476-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f476-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f476-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f476.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f477.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f478-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f478-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f478-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f478-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f478-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f478.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f479.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f47f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f480.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f481.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f482.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f483-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f483-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f483-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f483-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f483-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f483.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f484.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f485-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f485-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f485-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f485-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f485-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f485.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f486.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f487.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f488.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f489.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48f-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48f-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48f-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48f-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48f-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f48f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f490.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f491-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f491-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f491-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f491-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f491-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f491.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f492.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f493.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f494.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f495.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f496.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f497.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f498.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f499.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f49a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f49b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f49c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f49d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f49e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f49f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4a9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4aa-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4aa-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4aa-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4aa-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4aa-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ac.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ad.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ae.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4b9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ba.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4be.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4bf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4c9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ca.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4cb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4cc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4cd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ce.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4d9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4da.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4db.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4dc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4dd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4de.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4df.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f4ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f500.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f501.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f502.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f503.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f504.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f505.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f506.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f507.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f508.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f509.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f50a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f50b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f50c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f50d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f50e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f50f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f510.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f511.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f512.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f513.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f514.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f515.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f516.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f517.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f518.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f519.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f51a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f51b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f51c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f51d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f51e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f51f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f520.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f521.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f522.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f523.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f524.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f525.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f526.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f528.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f529.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f52a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f52b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f52d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f52e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f52f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f530.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f531.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f532.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f533.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f534.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f535.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f536.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f537.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f538.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f539.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f53a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f53b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f53c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f53d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f549.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f54a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f54b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f54c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f54d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f54e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f550.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f551.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f552.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f553.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f554.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f555.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f556.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f557.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f558.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f559.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f55a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f55b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f55c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f55d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f55e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f55f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f560.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f561.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f562.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f563.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f564.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f565.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f566.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f567.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f56f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f570.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f573.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f574-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f574-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f574-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f574-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f574-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f574.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f575.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f576.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f577.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f578.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f579.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f57a-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f57a-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f57a-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f57a-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f57a-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f57a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f587.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f58a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f58b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f58c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f58d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f590-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f590-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f590-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f590-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f590-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f590.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f595-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f595-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f595-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f595-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f595-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f595.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f596-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f596-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f596-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f596-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f596-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f596.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5a5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5c2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5c3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5c4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5d3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5dc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5dd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5de.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5e1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f5ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f600.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f601.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f602.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f603.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f604.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f605.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f606.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f607.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f608.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f609.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f60a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f60b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f60c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f60d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f60e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f60f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f610.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f611.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f612.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f613.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f614.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f615.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f616.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f617.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f618.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f619.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f61a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f61b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f61c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f61d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f61e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f61f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f620.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f621.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f622.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f623.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f624.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f625.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f626.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f627.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f628.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f629.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62e-1f4a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f62f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f630.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f631.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f632.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f633.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f634.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f635-1f4ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f635.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f636-1f32b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f636.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f637.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f638.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f639.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f63a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f63b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f63c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f63d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f63e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f63f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f641.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f642-2194.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f642-2195.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f643.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f644.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f645.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f646.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f647.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f648.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f649.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64f-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64f-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64f-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64f-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64f-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f64f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f681.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f682.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f683.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f684.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f685.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f686.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f687.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f688.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f689.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f68a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f68b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f68c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f68d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f68e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f68f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f690.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f691.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f693.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f694.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f697.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f698.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f699.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f69a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f69b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f69c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f69d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f69e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f69f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6a9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ac.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ad.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ae.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fb-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fb-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fb-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fc-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fc-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fd-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fd-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fe-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fe-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fe-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3ff-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3ff-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3ff-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6b9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ba.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6be.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6bf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c0-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c0-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c0-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c0-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c0-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6c5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cc-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cc-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cc-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cc-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cc-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ce.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6d0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6d5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6d6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6d7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6dc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6dd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6de.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6df.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f6fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f7f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90f-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90f-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90f-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90f-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90f-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f90f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f910.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f911.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f912.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f913.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f914.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f915.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f916.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f917.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f918-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f918-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f918-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f918-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f918-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f918.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f919-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f919-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f919-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f919-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f919-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f919.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91a-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91a-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91a-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91a-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91a-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91b-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91b-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91b-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91b-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91b-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91e-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91e-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91e-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91e-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91e-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91f-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91f-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91f-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91f-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91f-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f91f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f920.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f921.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f922.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f923.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f924.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f925.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f926.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f927.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f928.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f929.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f92a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f92b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f92c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f92d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f92e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f92f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f930-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f930-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f930-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f930-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f930-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f930.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f931-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f931-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f931-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f931-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f931-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f931.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f932-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f932-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f932-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f932-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f932-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f932.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f933-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f933-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f933-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f933-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f933-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f933.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f934-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f934-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f934-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f934-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f934-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f934.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f935.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f936-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f936-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f936-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f936-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f936-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f936.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f937.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f938.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f939.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93c-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93c-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f93f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f940.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f941.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f942.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f943.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f944.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f945.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f947.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f948.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f949.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f94a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f94b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f94c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f94d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f94e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f94f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f950.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f951.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f952.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f953.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f954.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f955.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f956.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f957.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f958.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f959.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f95a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f95b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f95c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f95d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f95e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f95f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f960.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f961.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f962.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f963.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f964.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f965.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f966.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f967.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f968.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f969.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f96a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f96b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f96c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f96d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f96e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f96f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f970.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f971.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f972.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f973.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f974.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f975.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f976.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f977-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f977-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f977-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f977-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f977-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f977.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f978.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f979.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f97a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f97b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f97c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f97d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f97e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f97f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f980.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f981.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f982.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f983.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f984.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f985.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f986.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f987.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f988.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f989.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f98a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f98b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f98c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f98d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f98e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f98f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f990.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f991.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f992.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f993.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f994.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f995.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f996.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f997.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f998.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f999.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f99a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f99b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f99c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f99d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f99e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f99f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9a9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ac.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ad.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ae.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b5-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b5-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b5-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b5-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b5-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b6-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b6-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b6-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b6-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b6-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9b9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ba.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bb-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bb-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bb-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bb-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bb-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9be.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9bf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9c9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ca.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fb-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fb-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fb-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fc-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fc-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fd-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fd-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fe-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fe-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fe-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3ff-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3ff-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3ff-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-2640-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-2642-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ce.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f91d-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f91d-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f91d-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f91d-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f91d-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f48b-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f48b-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f48b-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f48b-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb-2764-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f91d-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f91d-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f91d-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f91d-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f91d-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f48b-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f48b-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f48b-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f48b-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc-2764-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f91d-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f91d-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f91d-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f91d-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f91d-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f48b-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f48b-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f48b-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f48b-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd-2764-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f91d-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f91d-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f91d-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f91d-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f91d-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f48b-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f48b-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f48b-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f48b-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe-2764-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f33e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f373.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f37c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f384.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f393.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f3a4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f3a8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f3eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f3ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f91d-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f91d-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f91d-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f91d-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f91d-1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f48b-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f48b-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f48b-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f48b-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f9d1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f9d1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f9d1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff-2764-1f9d1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f4bb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f4bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f527.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f52c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f680.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f91d-1f9d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9af-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9af.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9b2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9b3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9bc-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9bc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9bd-27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9d1-1f9d2-1f9d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9d1-1f9d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9d2-1f9d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-1f9d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1-2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d3-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d3-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d3-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d3-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d3-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d5-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d5-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d5-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d5-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d5-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9d9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9da.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9db.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9dd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9de-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9de-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9de.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9df-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9df-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9df.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1f9ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa70.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa71.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa72.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa73.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa74.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa75.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa76.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa77.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa78.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa79.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa7a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa7b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa7c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa80.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa81.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa82.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa83.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa84.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa85.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa86.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa87.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa88.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa89.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa8f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa90.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa91.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa92.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa93.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa94.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa95.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa96.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa97.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa98.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa99.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa9a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa9b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa9c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa9d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa9e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fa9f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faa9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faaa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faac.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faad.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faae.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faaf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fab9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faba.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fabb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fabc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fabd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fabe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fabf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac3-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac3-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac3-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac3-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac3-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac4-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac4-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac4-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac4-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac4-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac5-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac5-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac5-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac5-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac5-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fac6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1face.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1facf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fad9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fada.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fadb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fadc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fadf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1fae9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf0-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf0-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf0-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf0-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf0-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fb-1faf2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fb-1faf2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fb-1faf2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fb-1faf2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fc-1faf2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fc-1faf2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fc-1faf2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fc-1faf2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fd-1faf2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fd-1faf2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fd-1faf2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fd-1faf2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fe-1faf2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fe-1faf2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fe-1faf2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fe-1faf2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3ff-1faf2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3ff-1faf2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3ff-1faf2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3ff-1faf2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf2-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf2-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf2-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf2-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf2-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf3-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf3-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf3-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf3-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf3-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf4-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf4-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf4-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf4-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf4-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf5-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf5-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf5-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf5-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf5-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf6-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf6-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf6-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf6-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf6-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf7-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf7-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf7-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf7-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf7-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf8-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf8-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf8-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf8-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf8-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/1faf8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/203c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2049.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2122.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2139.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2194.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2195.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2196.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2197.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2198.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2199.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/21a9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/21aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/231a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/231b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2328.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23eb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23ec.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23ed.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23ee.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23ef.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/23fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/24c2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25b6.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25c0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/25fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2600.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2601.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2602.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2603.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2604.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/260e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2611.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2614.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2615.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2618.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/261d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/261d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/261d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/261d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/261d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/261d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2620.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2622.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2623.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2626.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/262a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/262e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/262f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2638.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2639.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/263a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2648.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2649.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/264a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/264b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/264c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/264d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/264e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/264f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2650.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2651.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2652.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2653.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/265f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2660.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2663.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2665.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2666.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2668.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/267b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/267e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/267f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2692.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2693.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2694.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2695.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2696.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2697.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2699.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/269b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/269c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26a0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26a7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26aa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26ab.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26b1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26bd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26be.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26c4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26c5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26c8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26ce.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26cf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26d1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26d3-1f4a5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26d3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26d4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26e9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26ea.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f2.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f3.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f4.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f5.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f7.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f8.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fb-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fb-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fc-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fc-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fd-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fd-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fe-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fe-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3ff-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3ff-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-2640.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9-2642.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26f9.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26fa.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/26fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2702.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2705.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2708.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2709.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270a-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270a-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270a-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270a-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270a-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270a.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270b-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270b-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270b-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270b-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270b-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270c-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270c-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270c-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270c-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270c-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270d-1f3fb.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270d-1f3fc.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270d-1f3fd.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270d-1f3fe.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270d-1f3ff.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/270f.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2712.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2714.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2716.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/271d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2721.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2728.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2733.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2734.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2744.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2747.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/274c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/274e.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2753.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2754.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2755.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2757.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2763.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2764-1f525.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2764-1fa79.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2764.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2795.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2796.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2797.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/27a1.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/27b0.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/27bf.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2934.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2935.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b05.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b06.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b07.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b1b.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b1c.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b50.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/2b55.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/3030.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/303d.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/3297.png +0 -0
- package/web/app/site/sengi/assets/emoji/64/3299.png +0 -0
- package/web/app/site/sengi/assets/fonts/Black/Roboto-Black.woff +0 -0
- package/web/app/site/sengi/assets/fonts/Black/Roboto-Black.woff2 +0 -0
- package/web/app/site/sengi/assets/fonts/Bold/Roboto-Bold.woff +0 -0
- package/web/app/site/sengi/assets/fonts/Bold/Roboto-Bold.woff2 +0 -0
- package/web/app/site/sengi/assets/fonts/Light/Roboto-Light.woff +0 -0
- package/web/app/site/sengi/assets/fonts/Light/Roboto-Light.woff2 +0 -0
- package/web/app/site/sengi/assets/fonts/Medium/Roboto-Medium.woff +0 -0
- package/web/app/site/sengi/assets/fonts/Medium/Roboto-Medium.woff2 +0 -0
- package/web/app/site/sengi/assets/fonts/Regular/Roboto-Regular.woff +0 -0
- package/web/app/site/sengi/assets/fonts/Regular/Roboto-Regular.woff2 +0 -0
- package/web/app/site/sengi/assets/fonts/Thin/Roboto-Thin.woff +0 -0
- package/web/app/site/sengi/assets/fonts/Thin/Roboto-Thin.woff2 +0 -0
- package/web/app/site/sengi/assets/icons/icon-128x128.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-144x144.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-152x152.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-192x192.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-384x384.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-512x512.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-72x72.png +0 -0
- package/web/app/site/sengi/assets/icons/icon-96x96.png +0 -0
- package/web/app/site/sengi/assets/img/account.png +0 -0
- package/web/app/site/sengi/assets/img/arrow_1.png +0 -0
- package/web/app/site/sengi/assets/img/arrow_1_dark.png +0 -0
- package/web/app/site/sengi/assets/img/arrow_2.png +0 -0
- package/web/app/site/sengi/assets/img/arrow_2_dark.png +0 -0
- package/web/app/site/sengi/assets/img/avatar-not-found.png +0 -0
- package/web/app/site/sengi/assets/img/juche-background.jpg +0 -0
- package/web/app/site/sengi/assets/img/labels.png +0 -0
- package/web/app/site/sengi/assets/scss/modules/_fonts.scss +48 -0
- package/web/app/site/sengi/assets/video/flashing.gif +0 -0
- package/web/app/site/sengi/assets/video/flashing.mp4 +0 -0
- package/web/app/site/sengi/assets/video/notification.mp4 +0 -0
- package/web/app/site/sengi/favicon.ico +0 -0
- package/web/app/site/sengi/index.html +64 -0
- package/web/app/site/sengi/juche-background.5779872958c0aa8356d2.jpg +0 -0
- package/web/app/site/sengi/main.1f5d89d26480c74fad14.js +1 -0
- package/web/app/site/sengi/manifest.json +51 -0
- package/web/app/site/sengi/polyfills.c1e766542f6691fc86da.js +1 -0
- package/web/app/site/sengi/runtime.26209474bfa8dc87a77c.js +1 -0
- package/web/app/site/sengi/styles.6f7454aa4cf8f2d23457.css +6 -0
- package/web/app/site/sw.js +1702 -478
- package/web/app/site/update.js +66 -0
- package/web/app/update.js +66 -0
- package/web/front/admin.html +2 -2
- package/web/front/new-account.html +2 -2
- package/web/front/run.html +15 -8
- package/web/front/run.js +124 -36
- package/web/icons/forum.svg +11 -0
- package/web/icons/gateway.svg +14 -0
- package/web/icons/local.svg +11 -0
|
@@ -0,0 +1,1617 @@
|
|
|
1
|
+
// bb.js — the forum website: reads a forum from its pod (through this site's
|
|
2
|
+
// own /u/<handle>/ when the forum is attached here, or a pod named outright)
|
|
3
|
+
// and shows categories, topics and threads. Replying signs the reader in
|
|
4
|
+
// with a Mastodon account and posts from it; the reply appears here once the
|
|
5
|
+
// forum's host has placed it, and until then the reader sees their own copy
|
|
6
|
+
// marked as waiting.
|
|
7
|
+
//
|
|
8
|
+
// /bb/?forum=<handle> a forum attached to this site
|
|
9
|
+
// /bb/?pod=https://…/fedipod-bb/ a forum read from its pod directly
|
|
10
|
+
// https://bb.<site>/<handle>/ the same forum at its own address
|
|
11
|
+
// #/ #/c/<slug> #/t/<slug>/<tid>
|
|
12
|
+
|
|
13
|
+
import { reader, placeOf, authorLabel, cacheKey, categoryBase } from './read.mjs?v=1e46e77224';
|
|
14
|
+
import { MastoLogin, hostOfHandle, serverKind, actorOfHandle } from './masto.mjs?v=2e3c531c63';
|
|
15
|
+
import * as pod from './pod.mjs?v=5d0995ec1d';
|
|
16
|
+
import { mine as keptByReader } from './mine.mjs?v=2e33e2ff90';
|
|
17
|
+
import { readState } from './seen.mjs?v=1a3acc66e7';
|
|
18
|
+
import { toHtml } from './markdown.mjs?v=83efe6b33d';
|
|
19
|
+
|
|
20
|
+
const $ = (id) => document.getElementById(id);
|
|
21
|
+
// Said to a screen reader when the page changes under it and no focus moves:
|
|
22
|
+
// what is loading, how much arrived, that a link was copied.
|
|
23
|
+
const say = (msg) => { const el = $('say'); if (el) el.textContent = msg; };
|
|
24
|
+
const esc = (s) => String(s ?? '').replace(/[&<>"]/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c]));
|
|
25
|
+
const when = (iso) => { const d = new Date(iso); return Number.isNaN(d.getTime()) ? '' : d.toISOString().slice(0, 10); };
|
|
26
|
+
const ago = (iso) => {
|
|
27
|
+
const ms = Date.now() - Date.parse(iso);
|
|
28
|
+
if (!Number.isFinite(ms)) return '';
|
|
29
|
+
const m = Math.round(ms / 60_000);
|
|
30
|
+
if (m < 2) return 'just now';
|
|
31
|
+
if (m < 90) return `${m} min ago`;
|
|
32
|
+
const h = Math.round(m / 60);
|
|
33
|
+
if (h < 36) return `${h} h ago`;
|
|
34
|
+
return `${Math.round(h / 24)} days ago`;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const params = new URLSearchParams(location.search);
|
|
38
|
+
const place = placeOf({ origin: location.origin, pathname: location.pathname, search: location.search });
|
|
39
|
+
const { front, base } = place;
|
|
40
|
+
const frontHost = new URL(front).host;
|
|
41
|
+
// The reader asks anonymously first; where a category is members-only it
|
|
42
|
+
// asks again with the pod session, if there is one.
|
|
43
|
+
let read = reader();
|
|
44
|
+
const login = new MastoLogin({ storage: localStorage, redirectUri: location.origin + location.pathname + location.search });
|
|
45
|
+
// What this reader has already read. Theirs, in their own browser: a public
|
|
46
|
+
// forum has nowhere to keep it and no business keeping it.
|
|
47
|
+
const seen = base ? readState({ storage: localStorage, forum: base }) : null;
|
|
48
|
+
|
|
49
|
+
let forum = null;
|
|
50
|
+
let podAcct = null; // { handle, actor, webId } when signed in with a pod
|
|
51
|
+
let moderators = []; // the category's own list, read from the forum
|
|
52
|
+
const account = () => podAcct || login.account();
|
|
53
|
+
const cats = () => forum?.categories || [];
|
|
54
|
+
const iModerate = () => {
|
|
55
|
+
const me = podAcct?.actor || login.account()?.url;
|
|
56
|
+
return !!me && moderators.includes(me);
|
|
57
|
+
};
|
|
58
|
+
const catBySlug = (slug) => cats().find(c => c.slug === slug || c.base.endsWith('/c/' + slug + '/'));
|
|
59
|
+
const handleOf = (cat) => {
|
|
60
|
+
// Through a Gateway a category answers as @slug@gateway; read from a pod, its id is its address.
|
|
61
|
+
if (place.handle && cat.slug) return `@${cat.slug}@${frontHost}`;
|
|
62
|
+
return cat.id;
|
|
63
|
+
};
|
|
64
|
+
// A post names the category it is for, and every reader of this page is
|
|
65
|
+
// already in it: the address is how it got here, not something to read.
|
|
66
|
+
function body(p, cat) {
|
|
67
|
+
const html = p?.content || '';
|
|
68
|
+
if (!cat) return html;
|
|
69
|
+
const d = document.createElement('div');
|
|
70
|
+
d.innerHTML = html;
|
|
71
|
+
for (const a of [...d.querySelectorAll('a')]) {
|
|
72
|
+
const names = a.getAttribute('href') === cat.id
|
|
73
|
+
|| a.textContent.trim().replace(/^@/u, '') === String(cat.slug || '')
|
|
74
|
+
|| a.textContent.trim() === handleOf(cat);
|
|
75
|
+
if (!names) continue;
|
|
76
|
+
const p0 = a.closest('p') || a.parentElement;
|
|
77
|
+
a.remove();
|
|
78
|
+
if (p0 && !p0.textContent.trim() && !p0.querySelector('img,a')) p0.remove();
|
|
79
|
+
}
|
|
80
|
+
return d.innerHTML;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// The author as they are known: their name when the forum kept a card for
|
|
84
|
+
// them, and always the handle, which is the thing that is theirs everywhere.
|
|
85
|
+
function byline(p, author) {
|
|
86
|
+
if (!author) return esc(p.author ? authorLabel(p.author) : '');
|
|
87
|
+
const handle = esc(author.handle);
|
|
88
|
+
const name = author.name && author.name !== author.handle ? esc(author.name) : null;
|
|
89
|
+
const inner = name ? `${name} <span class="dim">${handle}</span>` : handle;
|
|
90
|
+
// Their posts in this forum, not their page elsewhere: that is what a
|
|
91
|
+
// reader here is asking for when they click a name.
|
|
92
|
+
return `<a href="#/who/${encodeURIComponent(author.id)}">${inner}</a>`;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Where this post can be READ away from here. A pod answers its post's own
|
|
96
|
+
// address with JSON, so that address is no use to a person and is not shown;
|
|
97
|
+
// a server that publishes a page for it says so, and the link names its host.
|
|
98
|
+
function elsewhere(p) {
|
|
99
|
+
if (!p?.page) return '';
|
|
100
|
+
let host = '';
|
|
101
|
+
try { host = new URL(p.page).host; } catch { return ''; }
|
|
102
|
+
return ` <a href="${esc(p.page)}" class="dim" rel="noopener">on ${esc(host)}</a>`;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Whose post this is, as this browser can tell: a pod account is its actor,
|
|
106
|
+
// a Mastodon account is the profile its server gave us.
|
|
107
|
+
const mine = (p) => {
|
|
108
|
+
const me = podAcct?.actor || login.account()?.url;
|
|
109
|
+
return !!me && !!p?.author && (p.author === me || p.author === podAcct?.webId);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// A thread in the shape it was written: each reply under the post it answers,
|
|
113
|
+
// and anything whose parent is not here at the top level. Depth is capped so
|
|
114
|
+
// a long argument does not walk off the side of the page.
|
|
115
|
+
const MAX_DEPTH = 6;
|
|
116
|
+
async function threaded(posts, authors, cat) {
|
|
117
|
+
const byId = new Map(posts.map(p => [p.id, p]));
|
|
118
|
+
const kids = new Map();
|
|
119
|
+
const roots = [];
|
|
120
|
+
for (const p of posts) {
|
|
121
|
+
const parent = p.inReplyTo && byId.has(p.inReplyTo) && p.inReplyTo !== p.id ? p.inReplyTo : null;
|
|
122
|
+
if (!parent) { roots.push(p); continue; }
|
|
123
|
+
if (!kids.has(parent)) kids.set(parent, []);
|
|
124
|
+
kids.get(parent).push(p);
|
|
125
|
+
}
|
|
126
|
+
const out = [];
|
|
127
|
+
const walk = async (p, depth) => {
|
|
128
|
+
const html = card(p, { author: p.author ? authors.get(p.author) : null, cat, anchor: await cacheKey(p.id) });
|
|
129
|
+
out.push(depth ? `<div class="nest" style="--depth:${Math.min(depth, MAX_DEPTH)}">${html}</div>` : html);
|
|
130
|
+
for (const k of kids.get(p.id) || []) await walk(k, depth + 1);
|
|
131
|
+
};
|
|
132
|
+
for (const r of roots) await walk(r, 0);
|
|
133
|
+
return out;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function topicActs(topicId) {
|
|
137
|
+
if (!iModerate()) return '';
|
|
138
|
+
return `<div class="acts mod" role="group" aria-label="Moderator actions for this topic" data-topic="${esc(topicId)}">
|
|
139
|
+
<button data-act="rename">Rename topic</button>
|
|
140
|
+
<button data-act="unlock">Reopen topic</button>
|
|
141
|
+
<button data-act="pin">Pin topic</button><button data-act="unpin">Unpin topic</button>
|
|
142
|
+
<button data-act="sitepin">Pin site-wide</button><button data-act="siteunpin">Unpin site-wide</button>
|
|
143
|
+
<button class="grave" data-act="lock">Close topic</button><button class="grave" data-act="droptopic">Delete topic</button>
|
|
144
|
+
</div>`;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Voting, both ways, as a forum has always had it: up, down, and the one you
|
|
148
|
+
// cast again to take it back. A reader with no account sees the counts.
|
|
149
|
+
function votes(p) {
|
|
150
|
+
const up = p.likes || 0;
|
|
151
|
+
const down = p.dislikes || 0;
|
|
152
|
+
// Signed out, the buttons are still buttons: pressing one asks who you are
|
|
153
|
+
// and then casts the vote. Showing the counts as dead text hid the fact that
|
|
154
|
+
// voting was possible at all.
|
|
155
|
+
const mineWay = account() ? own().votedOn(p.id) : 'none';
|
|
156
|
+
const one = (way, mark, n, label) => `<button data-act="vote-${mineWay === way ? 'none' : way}"
|
|
157
|
+
data-was="${mineWay}"${mineWay === way ? ' aria-pressed="true" class="voted"' : ''}
|
|
158
|
+
aria-label="${mineWay === way ? `Take back your vote ${label}` : `Vote ${label} this post`}">${mark} ${n}</button>`;
|
|
159
|
+
return one('up', '▲', up, 'for') + one('down', '▼', down, 'against');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function card(p, { author = null, cat = null, extra = '', waiting = false, anchor = null } = {}) {
|
|
163
|
+
const at = p.published ? when(p.published) : '';
|
|
164
|
+
// What a screen reader hears before the words, and what each of this post's
|
|
165
|
+
// own buttons is called — a thread of them is not twenty identical "Reply"s.
|
|
166
|
+
const whose = esc(author ? (author.name || author.handle) : (p.author ? authorLabel(p.author) : 'someone'));
|
|
167
|
+
const named = `${waiting ? 'Waiting: p' : 'P'}ost by ${whose}${at ? `, ${esc(at)}` : ''}`;
|
|
168
|
+
return `<article class="post${p.gone ? ' gone' : ''}${extra}" aria-label="${named}"${anchor ? ` id="p-${esc(anchor)}"` : ''}>
|
|
169
|
+
<div class="who"><b>${waiting ? '<span class="dim">waiting for the forum · </span>' : ''}${byline(p, author)}</b>
|
|
170
|
+
<span class="when">${esc(at)}${elsewhere(p)}</span></div>
|
|
171
|
+
<div class="body">${p.gone ? 'This post was removed.' : (body(p, cat) || '<span class="dim">(not readable here)</span>')}</div>
|
|
172
|
+
${p.gone || waiting || !p.id ? '' : `<div class="acts" data-post="${esc(p.id)}">
|
|
173
|
+
<button data-act="reply" aria-label="Reply to ${whose}">Reply</button>
|
|
174
|
+
${votes(p)}
|
|
175
|
+
<button data-act="share" aria-label="Copy a link to the post by ${whose}">Share</button>
|
|
176
|
+
${account() ? `<button data-act="${own().isSaved(p.id) ? 'unsave' : 'save'}" aria-label="${own().isSaved(p.id) ? 'Remove this post from your bookmarks' : 'Bookmark this post'}">${own().isSaved(p.id) ? 'Bookmarked' : 'Bookmark'}</button>` : ''}
|
|
177
|
+
${mine(p) || !account() ? '' : `<button data-act="report" aria-label="Report the post by ${whose}">Report</button>`}
|
|
178
|
+
${mine(p) ? '<button data-act="edit" aria-label="Edit your own post">Edit</button><button data-act="delete" aria-label="Delete your own post">Delete</button>' : ''}
|
|
179
|
+
${!mine(p) && iModerate() ? `<button data-act="remove" aria-label="Remove the post by ${whose}">Remove</button>` : ''}
|
|
180
|
+
</div>`}
|
|
181
|
+
</article>`;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const waitingKey = (topicId) => 'bb:waiting:' + topicId;
|
|
185
|
+
const waiting = (topicId) => { try { return (JSON.parse(localStorage.getItem(waitingKey(topicId)) || '[]') || []).filter(w => w?.id); } catch { return []; } };
|
|
186
|
+
// A copy is kept only for a post that is waiting to be PLACED, and only when
|
|
187
|
+
// it carries the id the topic will name it by: an entry nothing can match is
|
|
188
|
+
// an entry nothing can ever clear.
|
|
189
|
+
const remember = (topicId, entry) => {
|
|
190
|
+
if (!entry?.id) return;
|
|
191
|
+
try { localStorage.setItem(waitingKey(topicId), JSON.stringify([...waiting(topicId), entry].slice(-20))); } catch { /* full or blocked */ }
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
async function load() {
|
|
195
|
+
if (!base) {
|
|
196
|
+
$('main').innerHTML = `<p class="err">Name a forum: <code>${esc(location.origin)}/<forum>/</code></p>`;
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
forum = await read.forum(base);
|
|
200
|
+
if (!forum) {
|
|
201
|
+
$('main').innerHTML = '<p class="err">No forum answers at this address.</p>';
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
document.title = forum.name || 'FediPod-BB';
|
|
205
|
+
$('forum-link').textContent = forum.name || 'Forum';
|
|
206
|
+
// Who moderates, under the line: the forum's own list, each name linking to
|
|
207
|
+
// the page that account keeps.
|
|
208
|
+
const mods = (forum.admins || []).map(a => `<a href="#/who/${encodeURIComponent(a.id)}">${esc(a.handle)}</a>`).join(', ');
|
|
209
|
+
$('mods-who').innerHTML = mods ? `<span class="lead">moderators:</span> ${mods}` : '';
|
|
210
|
+
route();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function crumbs(parts) {
|
|
214
|
+
// One stop is no trail: the front page needs no line saying it is the
|
|
215
|
+
// front page.
|
|
216
|
+
if (parts.length < 2) { $('crumbs').textContent = ''; $('crumbs').hidden = true; return; }
|
|
217
|
+
$('crumbs').hidden = false;
|
|
218
|
+
$('crumbs').innerHTML = parts.map(([label, href], i) => (href && i < parts.length - 1 ? `<a href="${esc(href)}">${esc(label)}</a>` : esc(label))).join(' › ');
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Who the page is holding, in the top row: the handle a reader posts under,
|
|
222
|
+
// and the way in when there is nobody. Signing in from here is what makes the
|
|
223
|
+
// moderator's Queue and Settings reachable at all.
|
|
224
|
+
function paintWho() {
|
|
225
|
+
const acct = account();
|
|
226
|
+
$('who-name').textContent = acct ? `signed in as ${acct.handle}` : '';
|
|
227
|
+
$('who-act').textContent = acct ? 'Sign out' : 'Sign in';
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async function route() {
|
|
231
|
+
paintWho();
|
|
232
|
+
// Searching and starting a topic belong to the forum's own view; the rest of
|
|
233
|
+
// the page keeps the moderators line and nothing else.
|
|
234
|
+
$('mods-acts').innerHTML = '';
|
|
235
|
+
const mine = ++view;
|
|
236
|
+
void mine;
|
|
237
|
+
const hash = location.hash.replace(/^#\/?/u, '');
|
|
238
|
+
const [kind, a, b, c] = hash.split('/');
|
|
239
|
+
$('reply-row').hidden = true;
|
|
240
|
+
$('reply-dlg').close();
|
|
241
|
+
if (kind === 'replies') return showReplies();
|
|
242
|
+
if (kind === 'bookmarks' || kind === 'saved') return showSaved();
|
|
243
|
+
if (kind === 'queue') return showQueue();
|
|
244
|
+
if (kind === 'settings') return showSettings();
|
|
245
|
+
if (kind === 'who' && a) return showWho(decodeURIComponent(a));
|
|
246
|
+
if (kind === 'c' && a) { if (feedFilter !== a) shown = 30; feedFilter = a; return showForum(); }
|
|
247
|
+
if (kind === 't' && a && b) return showTopic(a, b, c || null);
|
|
248
|
+
// `#/` IS the whole forum, so arriving at it clears the category. Leaving the
|
|
249
|
+
// filter where it was meant Home redrew whatever category you had been in,
|
|
250
|
+
// and All — whose link is `#/` — redrew the same one, which from the reader's
|
|
251
|
+
// side was a button that did nothing at all.
|
|
252
|
+
if (feedFilter !== 'all') { feedFilter = 'all'; shown = 30; }
|
|
253
|
+
return showForum();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// The front page is an index of what has been said, newest first, across the
|
|
257
|
+
// forum: which category, which topic, who, and when. The words themselves are
|
|
258
|
+
// in the topic, one click away.
|
|
259
|
+
let feedFilter = 'all'; // 'all', or a category's slug
|
|
260
|
+
let shown = 30; // how many of the index's rows are on the page
|
|
261
|
+
let view = 0; // which view the page is on; an older one must not draw
|
|
262
|
+
let order = 'date'; // which column the index is ordered by
|
|
263
|
+
let down = true; // and which way
|
|
264
|
+
let finding = ''; // what the reader is looking for, if anything
|
|
265
|
+
// What this reader keeps for themselves, under the account they signed in as.
|
|
266
|
+
const own = () => keptByReader({ storage: localStorage, who: account()?.handle || null });
|
|
267
|
+
|
|
268
|
+
// Answers to this reader's own posts, newest first. The forum publishes what
|
|
269
|
+
// each post answers, so nobody has to be told whom to notify.
|
|
270
|
+
async function showReplies() {
|
|
271
|
+
crumbs([['Home', '#/'], ['Replies to you', null]]);
|
|
272
|
+
const me = podAcct?.actor || login.account()?.url;
|
|
273
|
+
if (!me) { $('main').innerHTML = '<p class="empty">Sign in to see answers to your posts.</p>'; return; }
|
|
274
|
+
$('main').innerHTML = '<p class="dim">Looking…</p>';
|
|
275
|
+
const latest = await read.latest(base, { limit: 200 });
|
|
276
|
+
const mineIds = new Set(latest.filter(p => p.author === me).map(p => p.id));
|
|
277
|
+
const answers = latest.filter(p => p.inReplyTo && mineIds.has(p.inReplyTo) && p.author !== me);
|
|
278
|
+
if (!answers.length) { $('main').innerHTML = '<p class="empty">Nobody has answered you yet.</p>'; return; }
|
|
279
|
+
const items = [];
|
|
280
|
+
for (const p of answers) {
|
|
281
|
+
const cat = cats().find(c => c.id === p.category) || null;
|
|
282
|
+
const who = cat && p.author ? await read.author(cat.base, p.author) : null;
|
|
283
|
+
const tid = p.topic ? p.topic.split('/').pop() : null;
|
|
284
|
+
const href = cat && tid ? `#/t/${esc(cat.slug)}/${esc(tid)}/${esc(await cacheKey(p.id))}` : '#/';
|
|
285
|
+
items.push(`<li><a class="title" href="${href}">${esc(p.topicName || 'Topic')}</a>
|
|
286
|
+
<div class="meta">${who ? esc(who.handle) : esc(authorLabel(p.author || ''))} · ${esc(when(p.published))}</div>
|
|
287
|
+
<article class="post"><div class="body">${p.content || ''}</div></article></li>`);
|
|
288
|
+
}
|
|
289
|
+
$('main').innerHTML = `<ul class="list">${items.join('')}</ul>`;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Posts this reader kept. The list is theirs and lives in this browser.
|
|
293
|
+
function showSaved() {
|
|
294
|
+
crumbs([['Home', '#/'], ['Bookmarked', null]]);
|
|
295
|
+
const rows = own().saved();
|
|
296
|
+
if (!rows.length) { $('main').innerHTML = '<p class="empty">Nothing bookmarked yet. Use Bookmark on a post.</p>'; return; }
|
|
297
|
+
$('main').innerHTML = `<ul class="list">${rows.map(r => {
|
|
298
|
+
const cat = cats().find(c => c.slug === r.cat) || null;
|
|
299
|
+
const tid = r.topic ? r.topic.split('/').pop() : null;
|
|
300
|
+
const href = cat && tid ? `#/t/${esc(cat.slug)}/${esc(tid)}` : '#/';
|
|
301
|
+
return `<li><a class="title" href="${href}">${esc(r.text || r.id)}</a>
|
|
302
|
+
<div class="meta">bookmarked ${esc(when(r.at))}${cat ? ' · ' + esc(cat.name) : ''}</div></li>`;
|
|
303
|
+
}).join('')}</ul>`;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// The moderators' queue: reports, posts held from people who have not joined,
|
|
307
|
+
// and asks not yet acted on. Read from the forum's pod with the moderator's
|
|
308
|
+
// own login — it is not public and never passes through the Gateway.
|
|
309
|
+
async function showQueue() {
|
|
310
|
+
crumbs([['Home', '#/'], ['Queue', null]]);
|
|
311
|
+
if (!podAcct) { $('main').innerHTML = '<p class="empty">The queue is read with your pod account.</p>'; return; }
|
|
312
|
+
$('main').innerHTML = '<p class="dim">Reading the queue…</p>';
|
|
313
|
+
try {
|
|
314
|
+
const said = await serverKind(new URL(front).host, front, undefined, forum.handle || 'forum');
|
|
315
|
+
if (!said?.podHome) throw new Error('this forum does not say where its pod is');
|
|
316
|
+
const q = await pod.modQueue(said.podHome);
|
|
317
|
+
const rows = q?.rows || [];
|
|
318
|
+
if (!rows.length) { $('main').innerHTML = '<p class="empty">Nothing is waiting.</p>'; return; }
|
|
319
|
+
$('main').innerHTML = `<ul class="list">${rows.map(r => `<li>
|
|
320
|
+
<div class="title">${esc(r.type)}${r.category ? ' · ' + esc(r.category) : ''}</div>
|
|
321
|
+
<div class="meta">${r.type === 'Flag' ? 'reported by ' : ''}${esc(r.by ? authorLabel(r.by) : '')}${r.about ? ` · about <a href="#/who/${encodeURIComponent(r.about)}">${esc(authorLabel(r.about))}</a>` : ''} · ${esc(when(r.at))}${r.verified ? ' · checked' : ''}</div>
|
|
322
|
+
${r.object ? `<div class="dim">${esc(r.object)}</div>` : ''}
|
|
323
|
+
${r.failed ? `<p class="err">It did not take: ${esc(r.failed)}${r.failedAt ? ` (${esc(when(r.failedAt))})` : ''}. It is still here and will be tried again.</p>` : ''}
|
|
324
|
+
${r.why ? `<article class="post"><div class="body">${esc(r.why)}</div></article>` : ''}
|
|
325
|
+
${r.object ? `<div class="acts mod" data-post="${esc(r.object)}" data-cat="${esc(r.category || '')}">
|
|
326
|
+
${r.type === 'Held' || r.type === 'Create' ? '<button data-act="approve">Let it through</button><button data-act="refuse">Turn it away</button>' : ''}
|
|
327
|
+
${r.type === 'Join request' ? '<button data-act="admit">Admit</button><button data-act="refuse">Turn them away</button>' : ''}
|
|
328
|
+
${r.about ? '<button data-act="ban" data-who="' + esc(r.about) + '">Ban the author</button>' : ''}
|
|
329
|
+
${r.about && r.object ? '<button data-act="removepost" data-post="' + esc(r.object) + '">Remove the post</button>' : ''}
|
|
330
|
+
${r.type !== 'Flag' && r.by ? '<button data-act="ban" data-who="' + esc(r.by) + '">Ban them</button>' : ''}
|
|
331
|
+
</div>` : ''}
|
|
332
|
+
</li>`).join('')}</ul>`;
|
|
333
|
+
} catch (e) { $('main').innerHTML = `<p class="err">${esc(e.message)}</p>`; }
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
async function showWho(handleOrId) {
|
|
337
|
+
crumbs([['Home', '#/'], ['Someone', null]]);
|
|
338
|
+
$('main').innerHTML = '<p class="dim">Looking…</p>';
|
|
339
|
+
const latest = await read.latest(base, { limit: 200 });
|
|
340
|
+
const theirs = latest.filter(p => p.author === handleOrId);
|
|
341
|
+
const cat = theirs[0] ? cats().find(c => c.id === theirs[0].category) : cats()[0];
|
|
342
|
+
// What the forum kept of them, and failing that their own actor: a moderator
|
|
343
|
+
// who has never posted here has no card, and this page is where every handle
|
|
344
|
+
// in the forum now leads.
|
|
345
|
+
const kept = cat ? await read.author(cat.base, handleOrId) : null;
|
|
346
|
+
// The copy the forum kept may predate the account saying where its profile
|
|
347
|
+
// is, so where it names no page the account itself is asked.
|
|
348
|
+
const said = kept?.url ? null : await read.actorCard(handleOrId).catch(() => null);
|
|
349
|
+
const card = kept && said ? { ...kept, url: said.url, name: kept.name || said.name } : (kept || said);
|
|
350
|
+
crumbs([['Home', '#/'], [card?.handle || authorLabel(handleOrId), null]]);
|
|
351
|
+
const named = esc(card?.handle || authorLabel(handleOrId));
|
|
352
|
+
// A word with them and nobody else. Only from a pod account: the message is
|
|
353
|
+
// written on the sender's own pod before it is handed over.
|
|
354
|
+
const messageBox = podAcct && podAcct.actor !== handleOrId ? `<section class="reply">
|
|
355
|
+
<h2>Post to ${named}'s timeline</h2>
|
|
356
|
+
<p class="hint">A post of yours that names them, so it reaches them and anyone who reads either of
|
|
357
|
+
you. It is public: everybody can read it. Your own account posts it and signs it, so it reaches
|
|
358
|
+
Mastodon and the rest of the Fediverse — which means it goes out when your agent next reads its
|
|
359
|
+
inbox, and that it needs an account fronted at this Gateway.</p>
|
|
360
|
+
<label class="vh" for="dm-text">Your post</label>
|
|
361
|
+
<textarea id="dm-text" rows="3" placeholder="Your post"></textarea>
|
|
362
|
+
<p class="row"><button class="primary" data-act="post-to" data-to="${esc(handleOrId)}"
|
|
363
|
+
data-handle="${esc(card?.handle || '')}">Post</button></p>
|
|
364
|
+
<p class="err" id="dm-err" role="alert"></p>
|
|
365
|
+
</section>` : '';
|
|
366
|
+
const head = `<div class="topline"><h1>${esc(card?.name || card?.handle || authorLabel(handleOrId))}</h1></div>
|
|
367
|
+
<p class="hint">${named}${card?.url ? ` · <a href="${esc(card.url)}">their profile</a>` : ''}
|
|
368
|
+
· ${theirs.length} post${theirs.length === 1 ? '' : 's'} here</p>${messageBox}`;
|
|
369
|
+
if (!theirs.length) { $('main').innerHTML = head + '<p class="empty">Nothing from them in what the forum is holding.</p>'; return; }
|
|
370
|
+
const items = [];
|
|
371
|
+
for (const p of theirs) {
|
|
372
|
+
const c = cats().find(x => x.id === p.category) || null;
|
|
373
|
+
const tid = p.topic ? p.topic.split('/').pop() : null;
|
|
374
|
+
const href = c && tid ? `#/t/${esc(c.slug)}/${esc(tid)}/${esc(await cacheKey(p.id))}` : '#/';
|
|
375
|
+
items.push(`<li><a class="title" href="${href}">${esc(p.topicName || 'Topic')}</a>
|
|
376
|
+
<div class="meta">${c ? esc(c.name) + ' · ' : ''}${esc(when(p.published))} · ▲ ${p.likes || 0} ▼ ${p.dislikes || 0}</div>
|
|
377
|
+
<article class="post"><div class="body">${p.content || ''}</div></article></li>`);
|
|
378
|
+
}
|
|
379
|
+
$('main').innerHTML = head + `<ul class="list">${items.join('')}</ul>`;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// What a moderator may change about the forum itself. Every change is a
|
|
383
|
+
// request published at the moderator's own pod and checked there, so this
|
|
384
|
+
// page needs no rights on the forum's pod at all.
|
|
385
|
+
// Who moderates is learned while the forum is drawn. A page opened straight
|
|
386
|
+
// at a link — Settings, say, or a bookmark — has drawn nothing yet, and would
|
|
387
|
+
// take a moderator for a stranger and turn them away.
|
|
388
|
+
async function knowModerators() {
|
|
389
|
+
if (moderators.length || !cats().length) return;
|
|
390
|
+
const lists = await Promise.all(cats().map(c => read.moderators(c.base).catch(() => [])));
|
|
391
|
+
moderators = [...new Set(lists.flat())];
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
async function showSettings() {
|
|
395
|
+
crumbs([['Home', '#/'], ['Settings', null]]);
|
|
396
|
+
await knowModerators();
|
|
397
|
+
if (!iModerate()) { $('main').innerHTML = '<p class="empty">Only this forum\'s moderators may change it.</p>'; return; }
|
|
398
|
+
if (!podAcct) { $('main').innerHTML = '<p class="empty">Changing the forum is done with your pod account.</p>'; return; }
|
|
399
|
+
$('main').innerHTML = `
|
|
400
|
+
<div class="topline"><h1>Settings</h1></div>
|
|
401
|
+
<section class="reply">
|
|
402
|
+
<h2>The forum</h2>
|
|
403
|
+
<div class="row oneline">
|
|
404
|
+
<label for="set-forum-name">Name</label>
|
|
405
|
+
<input type="text" id="set-forum-name" value="${esc(forum.name || '')}">
|
|
406
|
+
<button data-act="set-forum-name">Rename</button>
|
|
407
|
+
<button data-act="open-mods">Manage moderators</button>
|
|
408
|
+
</div>
|
|
409
|
+
</section>
|
|
410
|
+
<section class="reply">
|
|
411
|
+
<h2>Categories</h2>
|
|
412
|
+
<ul class="list bare">${cats().map(c => `<li>
|
|
413
|
+
<div class="row">
|
|
414
|
+
<input type="text" class="cat-name" data-cat="${esc(c.id)}" value="${esc(c.name)}">
|
|
415
|
+
<button data-act="set-cat-name" data-cat="${esc(c.id)}">Rename</button>
|
|
416
|
+
<button data-act="open-members" data-cat="${esc(c.id)}">Manage members</button>
|
|
417
|
+
<span class="dim">${esc(handleOf(c))}</span>
|
|
418
|
+
<label><input type="radio" name="cat-private-${esc(c.slug || c.id)}" data-act="set-cat-private" data-cat="${esc(c.id)}" value="open"${c.private ? '' : ' checked'}> Open</label>
|
|
419
|
+
<label><input type="radio" name="cat-private-${esc(c.slug || c.id)}" data-act="set-cat-private" data-cat="${esc(c.id)}" value="private"${c.private ? ' checked' : ''}> Private</label>
|
|
420
|
+
</div>
|
|
421
|
+
</li>`).join('')}</ul>
|
|
422
|
+
</section>
|
|
423
|
+
<section class="reply">
|
|
424
|
+
<h2>New Category</h2>
|
|
425
|
+
<div class="row oneline">
|
|
426
|
+
<label for="set-new-name">Category name</label>
|
|
427
|
+
<input type="text" id="set-new-name">
|
|
428
|
+
<label for="set-new-slug">Category slug</label>
|
|
429
|
+
<input type="text" id="set-new-slug" placeholder="Fediverse Username" size="18">
|
|
430
|
+
</div>
|
|
431
|
+
<div class="row">
|
|
432
|
+
<label><input type="radio" name="set-new-private" value="open" checked> Open</label>
|
|
433
|
+
<label><input type="radio" name="set-new-private" value="private"> Private</label>
|
|
434
|
+
<button data-act="add-cat">Create</button>
|
|
435
|
+
</div>
|
|
436
|
+
</section>
|
|
437
|
+
`;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// The index, read once and filtered here. Changing category, ordering it,
|
|
441
|
+
// or typing in the search box changes NOTHING about what the forum holds — yet
|
|
442
|
+
// each of them refetched every post, every category's moderators and every
|
|
443
|
+
// category's pinned topics, and blanked the page to "Loading…" while it went.
|
|
444
|
+
// Searching did it on every keystroke.
|
|
445
|
+
//
|
|
446
|
+
// So it is read once and kept: whole, unfiltered, for every category, because
|
|
447
|
+
// which subset is on screen is the reader's business and not the network's.
|
|
448
|
+
// Thrown away after a minute, when more rows are asked for than were fetched,
|
|
449
|
+
// and by hand whenever this page writes something the forum will show back.
|
|
450
|
+
let index = null;
|
|
451
|
+
const INDEX_STALE_MS = 60_000;
|
|
452
|
+
function forgetIndex() { index = null; authors.clear(); }
|
|
453
|
+
|
|
454
|
+
// Who wrote it, and the digest a topic link carries. Both are asked once per
|
|
455
|
+
// ROW, and the same people and the same posts come round again every time the
|
|
456
|
+
// index is redrawn — so each was a fresh lookup for an answer that cannot have
|
|
457
|
+
// changed. Serially, too: thirty rows was thirty round trips one after another,
|
|
458
|
+
// which is where the wait after choosing a category actually went.
|
|
459
|
+
const authors = new Map();
|
|
460
|
+
const digests = new Map();
|
|
461
|
+
function authorOnce(catBase, id) {
|
|
462
|
+
const key = `${catBase}|${id}`;
|
|
463
|
+
if (!authors.has(key)) authors.set(key, read.author(catBase, id).catch(() => null));
|
|
464
|
+
return authors.get(key);
|
|
465
|
+
}
|
|
466
|
+
function digestOnce(id) {
|
|
467
|
+
if (!digests.has(id)) digests.set(id, cacheKey(id));
|
|
468
|
+
return digests.get(id);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
async function readIndex(want) {
|
|
472
|
+
if (index && index.limit >= want && Date.now() - index.at < INDEX_STALE_MS) return index;
|
|
473
|
+
const latest = await read.latest(base, { limit: want });
|
|
474
|
+
const site = new Set(await read.featured(base));
|
|
475
|
+
const pinned = new Map();
|
|
476
|
+
const mods = new Map();
|
|
477
|
+
for (const c of cats()) {
|
|
478
|
+
pinned.set(c.id, new Set(await read.featured(c.base)));
|
|
479
|
+
mods.set(c.id, await read.moderators(c.base));
|
|
480
|
+
}
|
|
481
|
+
index = { at: Date.now(), limit: want, latest, site, pinned, mods };
|
|
482
|
+
return index;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
async function showForum() {
|
|
486
|
+
const mineView = view;
|
|
487
|
+
const here = cats().find(c => c.slug === feedFilter) || null;
|
|
488
|
+
crumbs(here ? [['Home', '#/'], [here.name, `#/c/${here.slug}`]] : [['Home', '#/']]);
|
|
489
|
+
// Who moderates what is on screen. Showing the whole forum, that is
|
|
490
|
+
// whoever moderates its categories — otherwise a moderator looking at
|
|
491
|
+
// everything would look like a stranger.
|
|
492
|
+
// Moderators come out of the index below, which holds them for every
|
|
493
|
+
// category — so this no longer decides what to fetch, only what to show.
|
|
494
|
+
const showMods = (idx) => {
|
|
495
|
+
if (here) { moderators = idx.mods.get(here.id) || []; } else {
|
|
496
|
+
const all = new Set();
|
|
497
|
+
for (const list of idx.mods.values()) for (const m of list) all.add(m);
|
|
498
|
+
moderators = [...all];
|
|
499
|
+
}
|
|
500
|
+
// The line under the rule says who they are. It is painted from the
|
|
501
|
+
// forum's own list when the page loads; this keeps it with the categories'
|
|
502
|
+
// lists, which is where a moderator added while you read appears first.
|
|
503
|
+
paintMods(moderators);
|
|
504
|
+
};
|
|
505
|
+
const chip = (slug, label) => `<a class="chip${feedFilter === slug ? ' on' : ''}"${feedFilter === slug ? ' aria-current="page"' : ''} href="${slug === 'all' ? '#/' : `#/c/${esc(slug)}`}">${esc(label)}</a>`;
|
|
506
|
+
// Starting a topic from the front page: in the category being shown, or the
|
|
507
|
+
// first one when the whole forum is.
|
|
508
|
+
const into = cats().find(c => c.slug === feedFilter) || cats()[0] || null;
|
|
509
|
+
// Built where it is drawn, not once above: whether this reader moderates is
|
|
510
|
+
// read with the index below, and a row composed before that always said no.
|
|
511
|
+
const head = () => `<p class="hint chips">Categories: ${chip('all', 'All')}${cats().map(c => chip(c.slug || '', c.name)).join('')}
|
|
512
|
+
${account() ? '<a class="chip" href="#/replies">Replies to you</a><a class="chip" href="#/bookmarks">Bookmarked</a>' : ''}
|
|
513
|
+
${iModerate() ? '<a class="chip" href="#/queue">Queue</a><a class="chip" href="#/settings">Settings</a>' : ''}
|
|
514
|
+
<span class="rowend">
|
|
515
|
+
${here && account() && podAcct ? `<button class="new" data-act="${own().isJoined(here.id) ? 'leave' : 'join'}" data-cat="${esc(here.id)}">${own().isJoined(here.id) ? 'Leave' : 'Join'}</button>` : ''}
|
|
516
|
+
</span></p>`;
|
|
517
|
+
// Search and New topic ride at the right end of the moderators row, which is
|
|
518
|
+
// the one line the page keeps above whatever is being read.
|
|
519
|
+
const acts = () => `<label class="vh" for="find">Search this forum</label>
|
|
520
|
+
<input type="text" id="find" placeholder="Search" value="${esc(finding)}" autocomplete="off"${finding ? '' : ' hidden'}>
|
|
521
|
+
<button data-act="search"${finding ? ' hidden' : ''}>Search</button>
|
|
522
|
+
${into ? `<button data-act="newtopic" data-slug="${esc(into.slug || '')}">New topic</button>` : ''}`;
|
|
523
|
+
if (mineView !== view) return;
|
|
524
|
+
// Enough posts to fill a page of TOPICS: several posts can belong to one.
|
|
525
|
+
const want = Math.min(300, shown * 5);
|
|
526
|
+
// Only say "Loading" when something is actually going to be waited for. The
|
|
527
|
+
// reader changing category has everything already; blanking the page for
|
|
528
|
+
// them was the whole of the delay they could see.
|
|
529
|
+
const willFetch = !(index && index.limit >= want && Date.now() - index.at < INDEX_STALE_MS);
|
|
530
|
+
if (willFetch) {
|
|
531
|
+
$('mods-acts').innerHTML = acts();
|
|
532
|
+
$('main').innerHTML = head() + '<p class="dim">Loading…</p>';
|
|
533
|
+
say('Loading the latest posts');
|
|
534
|
+
}
|
|
535
|
+
const idx = await readIndex(want);
|
|
536
|
+
if (mineView !== view) return;
|
|
537
|
+
showMods(idx);
|
|
538
|
+
const latest = idx.latest;
|
|
539
|
+
const looking = finding.trim().toLowerCase();
|
|
540
|
+
const mine = latest.filter(p => (feedFilter === 'all'
|
|
541
|
+
|| (cats().find(c => c.id === p.category)?.slug === feedFilter))
|
|
542
|
+
// Searching what the page has: a topic's name, an author's handle, and
|
|
543
|
+
// the words of the post itself.
|
|
544
|
+
&& (!looking || [p.topicName, p.author, p.content].some(v => String(v || '').toLowerCase().includes(looking))));
|
|
545
|
+
// Pinned topics first. A pin belongs to a category; the forum has a
|
|
546
|
+
// featured collection of its own for a pin that holds everywhere.
|
|
547
|
+
const pins = { cat: new Set(), site: idx.site };
|
|
548
|
+
for (const c of cats()) {
|
|
549
|
+
if (feedFilter !== 'all' && c.slug !== feedFilter) continue;
|
|
550
|
+
for (const id of idx.pinned.get(c.id) || []) pins.cat.add(id);
|
|
551
|
+
}
|
|
552
|
+
// One row per topic: the newest post in it stands for it, which is what a
|
|
553
|
+
// reader wants to open — the thing they have not read.
|
|
554
|
+
const byTopic = new Map();
|
|
555
|
+
for (const p of mine) {
|
|
556
|
+
if (!p.topic) continue;
|
|
557
|
+
const held = byTopic.get(p.topic);
|
|
558
|
+
if (!held || String(p.published || '') > String(held.published || '')) byTopic.set(p.topic, p);
|
|
559
|
+
}
|
|
560
|
+
const rank = (p) => (pins.site.has(p.topic) ? 2 : pins.cat.has(p.topic) ? 1 : 0);
|
|
561
|
+
// Pinned first whatever the order; then the column the reader chose.
|
|
562
|
+
// Posts, not replies: a topic with nobody answering yet still HAS the post
|
|
563
|
+
// that started it, and a column reading 0 beside a topic you can open and
|
|
564
|
+
// read says the wrong thing. The count the forum keeps is of replies, so the
|
|
565
|
+
// opening post is the one added here.
|
|
566
|
+
const by = (p) => (order === 'replies' ? (p.topicReplies || 0) + 1 : String(p.published || ''));
|
|
567
|
+
const topics = [...byTopic.values()].sort((a, b) => rank(b) - rank(a)
|
|
568
|
+
|| (down ? (by(a) > by(b) ? -1 : by(a) < by(b) ? 1 : 0) : (by(a) > by(b) ? 1 : by(a) < by(b) ? -1 : 0)));
|
|
569
|
+
const page = topics.slice(0, shown);
|
|
570
|
+
if (!topics.length) {
|
|
571
|
+
// A members-only category that will not answer this reader looks exactly
|
|
572
|
+
// like an empty one. Ask it a question only a member can have answered.
|
|
573
|
+
if (here && !(await read.topics(here.base)).total && !(await read.canRead(here.base))) {
|
|
574
|
+
if (mineView !== view) return;
|
|
575
|
+
$('mods-acts').innerHTML = acts();
|
|
576
|
+
$('main').innerHTML = head() + (podAcct
|
|
577
|
+
? `<p class="empty row">This category is for its members.
|
|
578
|
+
<button class="new" data-act="ask-join" data-cat="${esc(here.id)}">Request membership</button></p>`
|
|
579
|
+
: `<p class="empty row">This category is for its members, and membership needs a FediPod account.
|
|
580
|
+
<a class="big" href="${esc(front)}/new-account">Get a FediPod account</a></p>`);
|
|
581
|
+
say('This category is for its members');
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
584
|
+
// The one thing to do on an empty page is the one thing offered.
|
|
585
|
+
if (mineView !== view) return;
|
|
586
|
+
$('mods-acts').innerHTML = acts();
|
|
587
|
+
$('main').innerHTML = head() + '<p class="empty">Nothing posted here yet. Use the button at the upper right to create a topic.</p>';
|
|
588
|
+
say('Nothing posted here yet');
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
const rows = [];
|
|
592
|
+
let fresh = 0;
|
|
593
|
+
// Every row's author and digest at once rather than one row at a time: they
|
|
594
|
+
// do not depend on each other, and waiting for each in turn is the whole of
|
|
595
|
+
// the delay between choosing a category and seeing it.
|
|
596
|
+
const looked = await Promise.all(page.map(async (p) => {
|
|
597
|
+
const cat = cats().find(c => c.id === p.category) || null;
|
|
598
|
+
return {
|
|
599
|
+
cat,
|
|
600
|
+
who: cat && p.author ? await authorOnce(cat.base, p.author) : null,
|
|
601
|
+
digest: await digestOnce(p.id),
|
|
602
|
+
};
|
|
603
|
+
}));
|
|
604
|
+
if (mineView !== view) return;
|
|
605
|
+
for (let i = 0; i < page.length; i++) {
|
|
606
|
+
const p = page[i];
|
|
607
|
+
const { cat, who, digest } = looked[i];
|
|
608
|
+
const tid = p.topic ? p.topic.split('/').pop() : null;
|
|
609
|
+
const href = cat && tid ? `#/t/${esc(cat.slug)}/${esc(tid)}/${esc(digest)}` : null;
|
|
610
|
+
const name = esc(p.topicName || 'Topic');
|
|
611
|
+
// New to THIS reader: posted since they last had the topic open.
|
|
612
|
+
const isNew = !!seen?.isNew(p.topic, p.published);
|
|
613
|
+
if (isNew) fresh += 1;
|
|
614
|
+
const byline = who ? who.handle : (p.author ? authorLabel(p.author) : '');
|
|
615
|
+
rows.push(`<tr>
|
|
616
|
+
<td>${pins.site.has(p.topic) ? '<span class="pin" title="Pinned across the forum" role="img" aria-label="pinned across the forum">\u2B50</span> ' : pins.cat.has(p.topic) ? '<span class="pin" title="Pinned in this category" role="img" aria-label="pinned in this category">\uD83D\uDCCC</span> ' : ''}${href ? `<a href="${href}">${name}</a>` : name}${isNew
|
|
617
|
+
? ' <span class="badge">New<span class="vh"> since you last opened this topic</span></span>' : ''}</td>
|
|
618
|
+
<td>${cat ? esc(cat.name) : ''}</td>
|
|
619
|
+
<td>${byline ? (p.author
|
|
620
|
+
? `<a class="who" href="#/who/${encodeURIComponent(p.author)}" title="${esc(byline)}">${esc(byline)}</a>`
|
|
621
|
+
: `<span class="who" title="${esc(byline)}">${esc(byline)}</span>`) : ''}</td>
|
|
622
|
+
<td>${esc(when(p.published))}</td>
|
|
623
|
+
<td>${Number.isFinite(p.topicReplies) ? p.topicReplies + 1 : ''}</td>
|
|
624
|
+
</tr>`);
|
|
625
|
+
}
|
|
626
|
+
// A table, so a reader can run their eye down any one of the four things
|
|
627
|
+
// an entry says.
|
|
628
|
+
const more = Math.max(0, topics.length - page.length) + (latest.more || 0);
|
|
629
|
+
if (mineView !== view) return;
|
|
630
|
+
$('mods-acts').innerHTML = acts();
|
|
631
|
+
$('main').innerHTML = head() + `<div class="scroll" role="region" aria-label="Topics, most recently posted in first" tabindex="0"><table class="index">
|
|
632
|
+
<thead><tr><th scope="col">Topic</th><th scope="col">Category</th><th scope="col">Latest by</th>
|
|
633
|
+
<th scope="col" aria-sort="${order === 'date' ? (down ? 'descending' : 'ascending') : 'none'}">
|
|
634
|
+
<button class="sort" data-act="order" data-order="date">Date ${order === 'date' ? (down ? '▼' : '▲') : '<span class="dim">▽</span>'}</button></th>
|
|
635
|
+
<th scope="col" aria-sort="${order === 'replies' ? (down ? 'descending' : 'ascending') : 'none'}">
|
|
636
|
+
<button class="sort" data-act="order" data-order="replies">Posts ${order === 'replies' ? (down ? '▼' : '▲') : '<span class="dim">▽</span>'}</button></th></tr></thead>
|
|
637
|
+
<tbody>${rows.join('')}</tbody></table>
|
|
638
|
+
${more ? `<p class="row"><button data-act="more">Show ${Math.min(more, 30)} more of ${more}</button></p>` : ''}</div>`;
|
|
639
|
+
say(`${rows.length} topic${rows.length === 1 ? '' : 's'}${fresh ? `, ${fresh} with something new` : ''}`);
|
|
640
|
+
// The box takes the keyboard only when there is something in it to scroll:
|
|
641
|
+
// a tab stop that does nothing is one more press between a reader and the page.
|
|
642
|
+
const box = $('main').querySelector('.scroll');
|
|
643
|
+
if (box) { if (box.scrollHeight > box.clientHeight) box.tabIndex = 0; else box.removeAttribute('tabindex'); }
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
async function showTopic(slug, tid, atPost = null) {
|
|
648
|
+
const cat = catBySlug(slug);
|
|
649
|
+
if (!cat) { $('main').innerHTML = '<p class="err">No such category.</p>'; return; }
|
|
650
|
+
const topicId = cat.base + 'ap/topic/' + tid;
|
|
651
|
+
moderators = await read.moderators(cat.base);
|
|
652
|
+
crumbs([['Home', '#/'], [cat.name, `#/c/${slug}`], ['topic', null]]);
|
|
653
|
+
$('main').innerHTML = '<p class="dim">Loading…</p>';
|
|
654
|
+
say('Loading the topic');
|
|
655
|
+
const t = await read.topic(topicId);
|
|
656
|
+
if (!t) { $('main').innerHTML = '<p class="err">No such topic.</p>'; return; }
|
|
657
|
+
crumbs([['Home', '#/'], [cat.name, `#/c/${slug}`], [t.name, null]]);
|
|
658
|
+
const posts = [];
|
|
659
|
+
for (const id of t.posts) posts.push({ id, ...(await read.post(cat.base, id)) });
|
|
660
|
+
const authors = new Map();
|
|
661
|
+
for (const p of posts) {
|
|
662
|
+
if (!p.author || authors.has(p.author)) continue;
|
|
663
|
+
authors.set(p.author, await read.author(cat.base, p.author));
|
|
664
|
+
}
|
|
665
|
+
// Opening a topic reads it, up to the newest post that was in it.
|
|
666
|
+
seen?.markRead(topicId, seen.newest(posts));
|
|
667
|
+
const placed = new Set(t.posts);
|
|
668
|
+
const pending = waiting(topicId).filter(w => !placed.has(w.id));
|
|
669
|
+
$('main').innerHTML = `<div class="topline"><h1>${esc(t.name)}</h1>
|
|
670
|
+
<button class="primary" data-act="newpost" data-topic="${esc(topicId)}">New post</button></div>
|
|
671
|
+
${topicActs(topicId)}
|
|
672
|
+
|
|
673
|
+
${(await threaded(posts, authors, cat)).join('')}
|
|
674
|
+
${pending.map(w => card({ author: w.author, published: w.at, content: toHtml(w.text) },
|
|
675
|
+
{ cat, extra: ' waiting', waiting: true })).join('')}`;
|
|
676
|
+
replyBox({ cat, title: 'Reply', inReplyToUrl: t.posts[t.posts.length - 1] || null, topicId });
|
|
677
|
+
$('reply-row').hidden = true; // the thread's own button opens it
|
|
678
|
+
// A closed topic takes nothing more: the forum would refuse it anyway, so
|
|
679
|
+
// the page does not offer it.
|
|
680
|
+
if (t.closed) {
|
|
681
|
+
for (const b of document.querySelectorAll('[data-act="newpost"], [data-act="reply"]')) b.remove();
|
|
682
|
+
const said = document.createElement('p');
|
|
683
|
+
said.className = 'hint';
|
|
684
|
+
said.textContent = 'This topic is closed. No more replies are being taken.';
|
|
685
|
+
document.querySelector('.topline')?.after(said);
|
|
686
|
+
}
|
|
687
|
+
// Arriving from the front page: the post that was linked to, in view and
|
|
688
|
+
// marked, rather than the top of a thread it sits somewhere inside.
|
|
689
|
+
say(`${t.name}, ${posts.length} post${posts.length === 1 ? '' : 's'}`);
|
|
690
|
+
if (atPost) {
|
|
691
|
+
const el = document.getElementById('p-' + atPost);
|
|
692
|
+
// Taken to, not just scrolled to: a keyboard and a screen reader both land
|
|
693
|
+
// on the post that was linked, rather than at the top of the thread.
|
|
694
|
+
if (el) { el.scrollIntoView({ block: 'center' }); el.classList.add('picked'); el.tabIndex = -1; el.focus(); }
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
// The reply box: signed out, it offers the two ways in; signed in, it posts.
|
|
699
|
+
let replyCtx = null;
|
|
700
|
+
function replyBox(ctx) {
|
|
701
|
+
replyCtx = ctx;
|
|
702
|
+
$('reply-row').hidden = false;
|
|
703
|
+
$('reply-open').textContent = ctx.title;
|
|
704
|
+
$('reply-title').textContent = ctx.title;
|
|
705
|
+
$('reply-err').textContent = '';
|
|
706
|
+
const acct = account();
|
|
707
|
+
$('reply-signed-out').hidden = !!acct;
|
|
708
|
+
$('reply-signed-in').hidden = !acct;
|
|
709
|
+
$('fedi-note').textContent = '';
|
|
710
|
+
editing = null;
|
|
711
|
+
$('reply-send').textContent = 'Post reply';
|
|
712
|
+
$('topic-title-row').hidden = !!ctx.topicId;
|
|
713
|
+
$('reply-text').placeholder = ctx.topicId ? 'Write your reply' : 'Your opening post';
|
|
714
|
+
$('reply-text-label').textContent = ctx.topicId ? 'Your reply' : 'Your opening post';
|
|
715
|
+
if (acct) $('reply-as').textContent = acct.handle;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
// From a handle to a way in. A server that speaks the Mastodon API signs the
|
|
719
|
+
// reader in here; a Lemmy server takes part by its own community address; any
|
|
720
|
+
// other account posts from where it is, naming the category.
|
|
721
|
+
async function signIn(handleInput, noteId = 'fedi-note') {
|
|
722
|
+
const host = hostOfHandle(handleInput);
|
|
723
|
+
if (!host) throw new Error('a handle looks like @you@your.server');
|
|
724
|
+
const at = replyCtx?.cat ? handleOf(replyCtx.cat) : 'the category';
|
|
725
|
+
$(noteId).textContent = `Asking ${host}…`;
|
|
726
|
+
const handle = String(handleInput).trim().replace(/^@/u, '').split('@')[0];
|
|
727
|
+
const said = await serverKind(host, front, undefined, handle);
|
|
728
|
+
const kind = said.kind;
|
|
729
|
+
if (kind === 'mastodon-api') {
|
|
730
|
+
sessionStorage.setItem('bb:return', location.hash);
|
|
731
|
+
location.href = await login.begin(host);
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
const note = $(noteId);
|
|
735
|
+
note.textContent = '';
|
|
736
|
+
if (kind === 'fedipod') {
|
|
737
|
+
if (!said.issuer || !said.actor) throw new Error(`${host} did not say where ${handleInput} signs in`);
|
|
738
|
+
sessionStorage.setItem('bb:return', location.hash);
|
|
739
|
+
sessionStorage.setItem('bb:pod', JSON.stringify({ handle: `@${handle}@${host}`, actor: said.actor, podHome: said.podHome }));
|
|
740
|
+
location.href = await pod.signIn({ issuer: said.issuer, redirectUri: location.origin + location.pathname });
|
|
741
|
+
return;
|
|
742
|
+
}
|
|
743
|
+
note.textContent = kind === 'lemmy'
|
|
744
|
+
? `From ${host}, subscribe to !${at.replace(/^@/u, '')} and post there; it arrives here.`
|
|
745
|
+
: kind === 'invalid'
|
|
746
|
+
? 'A handle looks like @you@your.server.'
|
|
747
|
+
: `${host} does not offer a sign-in this page can use. Post from your account there, naming ${at}, and it arrives here.`;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// A box in front of the page is movable: press its heading and drag. It
|
|
751
|
+
// stays where it was put until it is closed, and it cannot be dragged off
|
|
752
|
+
// the edge and lost.
|
|
753
|
+
function movable(dlg) {
|
|
754
|
+
const grip = dlg.querySelector('h2');
|
|
755
|
+
if (!grip || grip.dataset.movable) return;
|
|
756
|
+
grip.dataset.movable = '1';
|
|
757
|
+
grip.addEventListener('pointerdown', (e) => {
|
|
758
|
+
if (e.button && e.button !== 0) return;
|
|
759
|
+
const box = dlg.getBoundingClientRect();
|
|
760
|
+
const from = { x: e.clientX - box.left, y: e.clientY - box.top };
|
|
761
|
+
grip.setPointerCapture(e.pointerId);
|
|
762
|
+
const move = (ev) => {
|
|
763
|
+
const x = Math.min(Math.max(0, ev.clientX - from.x), window.innerWidth - box.width);
|
|
764
|
+
const y = Math.min(Math.max(0, ev.clientY - from.y), window.innerHeight - 40);
|
|
765
|
+
dlg.classList.add('moved');
|
|
766
|
+
dlg.style.left = `${x}px`;
|
|
767
|
+
dlg.style.top = `${y}px`;
|
|
768
|
+
};
|
|
769
|
+
const done = () => { grip.removeEventListener('pointermove', move); grip.removeEventListener('pointerup', done); };
|
|
770
|
+
grip.addEventListener('pointermove', move);
|
|
771
|
+
grip.addEventListener('pointerup', done);
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
// Anything the page opens in front of itself goes through here.
|
|
776
|
+
function openPanel(title, html) {
|
|
777
|
+
$('panel-title').textContent = title;
|
|
778
|
+
$('panel-body').innerHTML = html;
|
|
779
|
+
$('panel-err').textContent = '';
|
|
780
|
+
const dlg = $('panel');
|
|
781
|
+
dlg.classList.remove('moved');
|
|
782
|
+
dlg.style.left = dlg.style.top = '';
|
|
783
|
+
movable(dlg);
|
|
784
|
+
dlg.showModal();
|
|
785
|
+
}
|
|
786
|
+
$('panel-close').addEventListener('click', () => $('panel').close());
|
|
787
|
+
|
|
788
|
+
// A panel is a box in front of the page, and it sits OUTSIDE <main> — so the
|
|
789
|
+
// page's own click handler never saw the buttons in one, and pressing Add did
|
|
790
|
+
// nothing at all. Its buttons are settings acts like any other.
|
|
791
|
+
$('panel').addEventListener('click', (e) => {
|
|
792
|
+
const b = e.target.closest('button[data-act]');
|
|
793
|
+
const act = b?.dataset.act || '';
|
|
794
|
+
if (act.startsWith('set-') || act.startsWith('add-') || act.startsWith('drop-')) return onSettings(b);
|
|
795
|
+
return undefined;
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
$('reply-open').addEventListener('click', () => { openReply({ inReplyToUrl: replyCtx?.inReplyToUrl || null }); });
|
|
799
|
+
$('main').addEventListener('click', async (e) => {
|
|
800
|
+
|
|
801
|
+
// Every button in the page that names an action, wherever it sits: a
|
|
802
|
+
// post's row, a topic's row, or the categories line.
|
|
803
|
+
const b = e.target.closest('button[data-act]');
|
|
804
|
+
if (!b) return;
|
|
805
|
+
const id = b.closest('[data-post]')?.dataset.post;
|
|
806
|
+
const act = b.dataset.act;
|
|
807
|
+
if (act === 'reply') return openReply({ inReplyToUrl: id });
|
|
808
|
+
if (act === 'edit') return openEdit(id);
|
|
809
|
+
if (act === 'delete') return removePost(id);
|
|
810
|
+
if (act === 'share') return share(id, b);
|
|
811
|
+
if (act === 'report') return report(id);
|
|
812
|
+
if (act === 'remove') return modRemove(id);
|
|
813
|
+
const topic = b.dataset.topic || b.closest('[data-topic]')?.dataset.topic;
|
|
814
|
+
if (act === 'more') { shown += 30; return showForum(); }
|
|
815
|
+
if (act === 'order') {
|
|
816
|
+
const col = b.dataset.order;
|
|
817
|
+
if (order === col) down = !down; else { order = col; down = true; }
|
|
818
|
+
shown = 30;
|
|
819
|
+
return showForum();
|
|
820
|
+
}
|
|
821
|
+
// Anything that acts as somebody asks who that is first, and remembers what
|
|
822
|
+
// was pressed so signing in finishes it.
|
|
823
|
+
if (GATED[act] && !account()) { rememberIntent(b); return askToSignIn(GATED[act]); }
|
|
824
|
+
if (act === 'join' || act === 'leave') return joinOrLeave(b.dataset.cat, act === 'join');
|
|
825
|
+
if (act === 'ask-join') return askToJoin(b.dataset.cat);
|
|
826
|
+
if (act === 'admit') return modAdmit(id, b.closest('[data-cat]')?.dataset.cat);
|
|
827
|
+
if (act === 'removepost') return modRemoveFromQueue(b.dataset.post, b.closest('[data-cat]')?.dataset.cat);
|
|
828
|
+
if (act === 'save' || act === 'unsave') return saveOrNot(id, act === 'save');
|
|
829
|
+
if (act.startsWith('vote-')) return voteOn(id, act.slice(5), b.dataset.was || 'none');
|
|
830
|
+
if (act === 'approve' || act === 'refuse') return modHeld(id, b.closest('[data-cat]')?.dataset.cat, act === 'approve');
|
|
831
|
+
if (act === 'ban') return modBan(b.dataset.who, b.closest('[data-cat]')?.dataset.cat);
|
|
832
|
+
if (act === 'open-mods') {
|
|
833
|
+
const named = await Promise.all(moderators.map(m => modLabel(m)));
|
|
834
|
+
return openPanel('Moderators', `<p class="hint">${named.map(esc).join(', ') || 'nobody yet'}</p>
|
|
835
|
+
<div class="row oneline">
|
|
836
|
+
<label for="set-mod">Their handle</label>
|
|
837
|
+
<input type="text" id="set-mod" placeholder="@mei@their.server">
|
|
838
|
+
<button data-act="add-mod">Add</button><button data-act="drop-mod">Remove</button>
|
|
839
|
+
</div>
|
|
840
|
+
<p class="hint">Adding somebody makes them a moderator and lets them read the queue.
|
|
841
|
+
The queue is held under the pod's own access rule, and a rule names a person by the
|
|
842
|
+
WebID of their pod: a Mastodon account has none, so it can moderate and have its
|
|
843
|
+
asks acted on, but it cannot open the queue.</p>`);
|
|
844
|
+
}
|
|
845
|
+
if (act === 'open-members') {
|
|
846
|
+
const cat = cats().find(c => c.id === b.dataset.cat);
|
|
847
|
+
if (!cat) return;
|
|
848
|
+
return openPanel(`Members of ${cat.name}`, `<p class="hint">Naming anyone here closes this category to everyone else. A member is named by their WebID, which is what a pod's own rule can grant.</p>
|
|
849
|
+
<div class="row">
|
|
850
|
+
<label for="set-member">Their WebID</label>
|
|
851
|
+
<input type="text" id="set-member" class="cat-member" data-cat="${esc(cat.id)}" placeholder="https://someone.example/profile/card#me">
|
|
852
|
+
<button data-act="add-member" data-cat="${esc(cat.id)}">Let them in</button>
|
|
853
|
+
<button data-act="drop-member" data-cat="${esc(cat.id)}">Take them out</button>
|
|
854
|
+
</div>`);
|
|
855
|
+
}
|
|
856
|
+
if (act.startsWith('set-') || act.startsWith('add-') || act.startsWith('drop-')) return onSettings(b);
|
|
857
|
+
// Search asks for the room to type in rather than holding it open: the
|
|
858
|
+
// button becomes the box, and an empty box left alone becomes the button.
|
|
859
|
+
if (act === 'search') {
|
|
860
|
+
const box = $('find');
|
|
861
|
+
if (!box) return undefined;
|
|
862
|
+
b.hidden = true;
|
|
863
|
+
box.hidden = false;
|
|
864
|
+
box.focus();
|
|
865
|
+
return undefined;
|
|
866
|
+
}
|
|
867
|
+
if (act === 'post-to') return postToTimeline(b.dataset.to, b.dataset.handle || '');
|
|
868
|
+
if (act === 'newpost') return openReply({ inReplyToUrl: replyCtx?.inReplyToUrl || null });
|
|
869
|
+
if (act === 'newtopic') {
|
|
870
|
+
const cat = catBySlug(b.dataset.slug);
|
|
871
|
+
if (!cat) return;
|
|
872
|
+
replyBox({ cat, title: 'Start a topic', inReplyToUrl: null, topicId: null });
|
|
873
|
+
$('reply-row').hidden = true;
|
|
874
|
+
return openReply({ inReplyToUrl: null });
|
|
875
|
+
}
|
|
876
|
+
if (act === 'rename') return modRename(topic);
|
|
877
|
+
if (act === 'pin' || act === 'unpin') return modPin(topic, act === 'pin');
|
|
878
|
+
if (act === 'sitepin' || act === 'siteunpin') return modPin(topic, act === 'sitepin', true);
|
|
879
|
+
if (act === 'lock' || act === 'unlock') return modLock(topic, act === 'lock');
|
|
880
|
+
if (act === 'droptopic') return modDropTopic(topic);
|
|
881
|
+
});
|
|
882
|
+
|
|
883
|
+
// The dialog takes the focus when it opens and hands it back to whatever
|
|
884
|
+
// opened it when it closes, so a keyboard is never left where the page was.
|
|
885
|
+
let reopener = null;
|
|
886
|
+
// What a private category actually promises the person about to write in it.
|
|
887
|
+
// Said in the box, at the moment it matters, because the word Private on a
|
|
888
|
+
// button is a claim and this is the whole of what is behind it.
|
|
889
|
+
function sayPrivacy() {
|
|
890
|
+
const note = $('reply-private');
|
|
891
|
+
if (!note) return;
|
|
892
|
+
const cat = replyCtx?.cat;
|
|
893
|
+
if (!cat?.private) { note.hidden = true; note.textContent = ''; return; }
|
|
894
|
+
note.hidden = false;
|
|
895
|
+
note.textContent = `${cat.name} is private. This is written into your own pod for its members to read, `
|
|
896
|
+
+ 'and goes to nobody else. Your followers are not sent it and cannot read it. '
|
|
897
|
+
+ 'Anyone admitted later can read it, and anyone admitted now can copy it.';
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
function showDialog() {
|
|
901
|
+
sayPrivacy();
|
|
902
|
+
reopener = document.activeElement;
|
|
903
|
+
$('reply-dlg').showModal();
|
|
904
|
+
(account() ? $('reply-text') : $('fedi-handle'))?.focus();
|
|
905
|
+
}
|
|
906
|
+
$('reply-dlg').addEventListener('close', () => { reopener?.focus?.(); reopener = null; });
|
|
907
|
+
|
|
908
|
+
// The dialog, armed for what it is about to do.
|
|
909
|
+
function openReply({ inReplyToUrl = null } = {}) {
|
|
910
|
+
movable($('reply-dlg'));
|
|
911
|
+
editing = null;
|
|
912
|
+
if (replyCtx) replyCtx.inReplyToUrl = inReplyToUrl;
|
|
913
|
+
$('reply-title').textContent = replyCtx?.title || 'Reply';
|
|
914
|
+
$('reply-send').textContent = 'Post reply';
|
|
915
|
+
$('reply-err').textContent = '';
|
|
916
|
+
showDialog();
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
let editing = null;
|
|
920
|
+
async function openEdit(id) {
|
|
921
|
+
const p = await read.post(replyCtx.cat.base, id);
|
|
922
|
+
if (!p) { $('reply-err').textContent = 'that post is not readable here'; return; }
|
|
923
|
+
editing = { id, page: p.page || null };
|
|
924
|
+
$('reply-title').textContent = 'Edit your post';
|
|
925
|
+
$('reply-text-label').textContent = 'Your post';
|
|
926
|
+
$('reply-send').textContent = 'Save';
|
|
927
|
+
$('reply-err').textContent = '';
|
|
928
|
+
$('topic-title-row').hidden = true;
|
|
929
|
+
// Back to the words, from the HTML the post is kept as.
|
|
930
|
+
if (p.source) {
|
|
931
|
+
$('reply-text').value = p.source;
|
|
932
|
+
} else {
|
|
933
|
+
// Written before the forum kept the source, or written elsewhere: the
|
|
934
|
+
// words are recovered from the HTML, losing whatever marked them up.
|
|
935
|
+
const d = document.createElement('div');
|
|
936
|
+
d.innerHTML = body(p, replyCtx.cat);
|
|
937
|
+
$('reply-text').value = [...d.querySelectorAll('p')].map(x => x.textContent.trim()).join('\n\n') || d.textContent.trim();
|
|
938
|
+
}
|
|
939
|
+
showDialog();
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
// The address of this post on this site, for pasting anywhere. The thread is
|
|
943
|
+
// what a person wants to open, and the post is named in it.
|
|
944
|
+
async function share(id, btn) {
|
|
945
|
+
const hash = location.hash.startsWith('#/t/') ? location.hash : `#/t/${replyCtx.cat.slug}/${(await topicOf(id)) || ''}`;
|
|
946
|
+
const link = `${location.origin}${location.pathname}${hash}`;
|
|
947
|
+
try { await navigator.clipboard.writeText(link); btn.textContent = 'Copied'; say('Link copied'); }
|
|
948
|
+
catch { window.prompt('Copy this address', link); return; }
|
|
949
|
+
setTimeout(() => { btn.textContent = 'Share'; }, 1500);
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
// Which topic holds a post, when the page is showing a category rather than a
|
|
953
|
+
// thread: the card sits inside the topic's own list item.
|
|
954
|
+
async function topicOf(id) {
|
|
955
|
+
const li = [...document.querySelectorAll('ul.list li')].find(el => el.querySelector(`[data-post="${CSS.escape(id)}"]`));
|
|
956
|
+
const a = li?.querySelector('a[href^="#/t/"]');
|
|
957
|
+
return a ? a.getAttribute('href').split('/').pop() : null;
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
async function report(id) {
|
|
961
|
+
const why = window.prompt('Report this post to the moderators. What is wrong with it?');
|
|
962
|
+
if (why === null) return;
|
|
963
|
+
try {
|
|
964
|
+
const cat = replyCtx.cat;
|
|
965
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
966
|
+
const who = podAcct?.actor || login.account()?.url;
|
|
967
|
+
await pod.report({ actor: who, object: id, category: cat.id, inbox, why });
|
|
968
|
+
alert('Reported. A moderator will see it in the forum\'s queue.');
|
|
969
|
+
} catch (e) { alert(e.message); }
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
async function asksTo(activity, forCat = null) {
|
|
973
|
+
if (!podAcct) throw new Error('moderating from here needs your pod account');
|
|
974
|
+
const cat = forCat || replyCtx?.cat;
|
|
975
|
+
if (!cat) throw new Error('this is not in a category the page knows about — open the topic and try from there');
|
|
976
|
+
// Which step failed, not only that one did. Three requests go out here — ask
|
|
977
|
+
// the Gateway where the forum takes mail, write the request on your own pod,
|
|
978
|
+
// hand it to the forum — and each can fail with the browser's bare "Failed to
|
|
979
|
+
// fetch", which on its own says nothing about which address would not answer.
|
|
980
|
+
// The same reason voteOn says it.
|
|
981
|
+
let step = 'finding where the forum takes mail';
|
|
982
|
+
try {
|
|
983
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
984
|
+
if (!inbox) throw new Error('the forum did not say where to send it');
|
|
985
|
+
// moderate() names its own two requests, so nothing is added over the top.
|
|
986
|
+
step = 'sending the request';
|
|
987
|
+
await pod.moderate({ actor: podAcct.actor, podHome: podAcct.podHome, inbox, activity });
|
|
988
|
+
} catch (e) {
|
|
989
|
+
throw new Error(`${e.message} — while ${step}`);
|
|
990
|
+
}
|
|
991
|
+
alert('Sent to the forum. It takes effect once the forum has checked who asked.');
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
// A post out of its topic: a Delete whose origin is the topic it is leaving.
|
|
995
|
+
async function modRemove(id) {
|
|
996
|
+
if (!confirm('Remove this post from the topic?')) return;
|
|
997
|
+
const topicId = replyCtx.topicId || (replyCtx.cat.base + 'ap/topic/' + (await topicOf(id)));
|
|
998
|
+
try { await asksTo({ type: 'Delete', object: id, origin: topicId }); } catch (e) { alert(e.message); }
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
// A topic's name belongs to the topic, and only the forum writes it.
|
|
1002
|
+
async function modRename(topicId) {
|
|
1003
|
+
const now = document.querySelector('.topline h1')?.textContent || '';
|
|
1004
|
+
const name = window.prompt('Name for this topic', now);
|
|
1005
|
+
if (name === null || !name.trim()) return;
|
|
1006
|
+
try { await asksTo({ type: 'Update', object: { id: topicId, name: name.trim() } }); } catch (e) { alert(e.message); }
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
// Pinned topics are the category's featured collection.
|
|
1010
|
+
// Closed to further replies. `closed` is AS2's own word for a collection
|
|
1011
|
+
// that takes no more, so a reader on any server can see it too.
|
|
1012
|
+
// Joining is a Follow to the category and leaving undoes it. A category
|
|
1013
|
+
// carries its members' posts and nobody else's, so this is what makes
|
|
1014
|
+
// posting from here work at all.
|
|
1015
|
+
async function joinOrLeave(categoryId, on) {
|
|
1016
|
+
const cat = cats().find(c => c.id === categoryId);
|
|
1017
|
+
if (!cat) return;
|
|
1018
|
+
if (!podAcct) {
|
|
1019
|
+
alert(account()
|
|
1020
|
+
? 'Joining is sent from your own pod, so it needs a pod account — sign out and sign in with your @you@your-pod handle.'
|
|
1021
|
+
: 'Joining needs an account.');
|
|
1022
|
+
return;
|
|
1023
|
+
}
|
|
1024
|
+
try {
|
|
1025
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
1026
|
+
const ok = on
|
|
1027
|
+
? await pod.join({ actor: podAcct.actor, category: cat.id, inbox })
|
|
1028
|
+
: await pod.leave({ actor: podAcct.actor, category: cat.id, inbox });
|
|
1029
|
+
if (!ok) throw new Error('the forum did not take it');
|
|
1030
|
+
if (on) own().join(cat.id); else own().leave(cat.id);
|
|
1031
|
+
forgetIndex();
|
|
1032
|
+
await showForum();
|
|
1033
|
+
} catch (e) { alert(e.message); }
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
// --- signing in where the reader is, rather than where the form is ---
|
|
1037
|
+
//
|
|
1038
|
+
// Everything below the counts needs an account: voting, joining, saving,
|
|
1039
|
+
// asking to be let into a private category. A reader without one used to see
|
|
1040
|
+
// no button at all for some of these and a bare refusal for others, and the
|
|
1041
|
+
// way in was hidden inside the Reply box. Now the button is there, pressing it
|
|
1042
|
+
// asks who you are, and the thing you pressed happens when you come back.
|
|
1043
|
+
//
|
|
1044
|
+
// Signing in leaves the page — it is somebody else's login — so what you were
|
|
1045
|
+
// doing has to outlive the trip. It goes in sessionStorage beside `bb:return`,
|
|
1046
|
+
// which is how the hash already survives it.
|
|
1047
|
+
const GATED = {
|
|
1048
|
+
'vote-up': 'vote on a post', 'vote-down': 'vote on a post', 'vote-none': 'take back your vote',
|
|
1049
|
+
join: 'join a category', leave: 'leave a category', 'ask-join': 'ask to join a category',
|
|
1050
|
+
save: 'save a post', unsave: 'remove a saved post',
|
|
1051
|
+
};
|
|
1052
|
+
|
|
1053
|
+
function rememberIntent(b) {
|
|
1054
|
+
const d = b.dataset;
|
|
1055
|
+
sessionStorage.setItem('bb:intent', JSON.stringify({
|
|
1056
|
+
// The SAME places the dispatcher reads them from, or the replay acts on a
|
|
1057
|
+
// different post from the one that was pressed: the id is on the enclosing
|
|
1058
|
+
// `data-post`, never on the button.
|
|
1059
|
+
act: d.act, id: b.closest('[data-post]')?.dataset.post || null,
|
|
1060
|
+
cat: d.cat || b.closest('[data-cat]')?.dataset.cat || null,
|
|
1061
|
+
was: d.was || null,
|
|
1062
|
+
}));
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
// Open the sign-in dialog, saying what it is for. `why` is the plain-English
|
|
1066
|
+
// name of the action from GATED, so the reader is told what signing in buys
|
|
1067
|
+
// them rather than being asked for a handle out of nowhere.
|
|
1068
|
+
function askToSignIn(why) {
|
|
1069
|
+
$('signin-why').textContent = why ? `Sign in to ${why}.` : '';
|
|
1070
|
+
$('signin-note').textContent = '';
|
|
1071
|
+
$('signin-dlg').showModal();
|
|
1072
|
+
$('signin-handle').focus();
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
// Back from the login with something to finish. Runs the same handler the
|
|
1076
|
+
// click would have run, so there is one path through each action and not two.
|
|
1077
|
+
async function replayIntent() {
|
|
1078
|
+
let want = null;
|
|
1079
|
+
try { want = JSON.parse(sessionStorage.getItem('bb:intent') || 'null'); } catch { /* unreadable */ }
|
|
1080
|
+
sessionStorage.removeItem('bb:intent');
|
|
1081
|
+
if (!want || !account()) return;
|
|
1082
|
+
if (String(want.act).startsWith('vote-')) return voteOn(want.id, want.act.slice(5), want.was || 'none');
|
|
1083
|
+
if (want.act === 'join' || want.act === 'leave') return joinOrLeave(want.cat, want.act === 'join');
|
|
1084
|
+
if (want.act === 'ask-join') return askToJoin(want.cat);
|
|
1085
|
+
if (want.act === 'save' || want.act === 'unsave') return saveOrNot(want.id, want.act === 'save');
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
// A vote goes to the category as a Like or a Dislike, and the Undo of
|
|
1089
|
+
// whichever was cast takes it back. The forum counts them; this browser only
|
|
1090
|
+
// remembers which way this reader went, so the buttons can say so.
|
|
1091
|
+
async function voteOn(postId, way, was) {
|
|
1092
|
+
// A vote is signed by the pod that casts it, so a Fediverse-only sign-in
|
|
1093
|
+
// cannot cast one. Said plainly: the reader has just signed in and is being
|
|
1094
|
+
// refused, and "needs your pod account" on its own does not say what to do.
|
|
1095
|
+
if (!podAcct) {
|
|
1096
|
+
alert(account()
|
|
1097
|
+
? 'A vote is sent from your own pod, so it needs a pod account — sign out and sign in with your @you@your-pod handle.'
|
|
1098
|
+
: 'Voting needs an account.');
|
|
1099
|
+
return;
|
|
1100
|
+
}
|
|
1101
|
+
const cat = replyCtx?.cat || cats().find(c => c.slug === feedFilter) || cats()[0];
|
|
1102
|
+
if (!cat) return;
|
|
1103
|
+
let step = 'finding where the forum takes mail';
|
|
1104
|
+
try {
|
|
1105
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
1106
|
+
if (!inbox) throw new Error('the forum did not say where to send it');
|
|
1107
|
+
step = `sending the vote to ${new URL(inbox).host}`;
|
|
1108
|
+
await pod.vote({ actor: podAcct.actor, post: postId, category: cat.id, inbox, way, was });
|
|
1109
|
+
own().vote(postId, way);
|
|
1110
|
+
forgetIndex();
|
|
1111
|
+
paintVote(postId, way, was);
|
|
1112
|
+
say(way === 'none' ? 'Vote taken back.' : 'Voted. The count follows once the forum has taken it.');
|
|
1113
|
+
} catch (e) {
|
|
1114
|
+
// Which step failed, not only that one did: "failed to fetch" on its own
|
|
1115
|
+
// says nothing about which address would not answer.
|
|
1116
|
+
alert(`${e.message} — while ${step}`);
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
// A post on somebody's timeline: their inbox is asked for, the post is written
|
|
1121
|
+
// in the sender's own public container, and handed over. Each way it can fail
|
|
1122
|
+
// says which address would not answer, since a bare "failed to fetch" names
|
|
1123
|
+
// none of them.
|
|
1124
|
+
async function postToTimeline(to, handle) {
|
|
1125
|
+
const box = $('dm-text');
|
|
1126
|
+
const err = $('dm-err');
|
|
1127
|
+
const text = box?.value.trim();
|
|
1128
|
+
if (!err) return;
|
|
1129
|
+
if (!text) { err.className = 'err'; err.textContent = 'Write something first.'; return; }
|
|
1130
|
+
if (!podAcct) { err.className = 'err'; err.textContent = 'Posting to someone is done from your own pod account.'; return; }
|
|
1131
|
+
err.className = '';
|
|
1132
|
+
err.textContent = 'Posting…';
|
|
1133
|
+
try {
|
|
1134
|
+
// Their handle, for the mention the post carries. Nothing else about them
|
|
1135
|
+
// is needed: the sender's own agent works out where it goes and signs it.
|
|
1136
|
+
const card = await read.actorCard(to).catch(() => null);
|
|
1137
|
+
await pod.postTo({
|
|
1138
|
+
actor: podAcct.actor, podHome: podAcct.podHome, handle: podAcct.handle,
|
|
1139
|
+
to, toHandle: card?.handle || handle || '', front, text,
|
|
1140
|
+
});
|
|
1141
|
+
box.value = '';
|
|
1142
|
+
err.className = 'said';
|
|
1143
|
+
err.textContent = 'Handed to your own account. It goes out signed when your agent next reads its inbox.';
|
|
1144
|
+
say('Posted.');
|
|
1145
|
+
} catch (e) {
|
|
1146
|
+
err.className = 'err';
|
|
1147
|
+
err.textContent = e.message;
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
// The reader's own vote, on the buttons they just pressed. The forum's count
|
|
1152
|
+
// is the truth and follows when it has taken the vote; until then the page
|
|
1153
|
+
// showed the row exactly as it was, so a vote looked like nothing happening.
|
|
1154
|
+
function paintVote(postId, way, was) {
|
|
1155
|
+
const acts = document.querySelector(`.acts[data-post="${CSS.escape(postId)}"]`);
|
|
1156
|
+
const [upBtn, downBtn] = acts ? acts.querySelectorAll('button[data-act^="vote-"]') : [];
|
|
1157
|
+
if (!upBtn || !downBtn) return;
|
|
1158
|
+
const count = (b) => Number(String(b.textContent).replace(/[^0-9]/gu, '')) || 0;
|
|
1159
|
+
let up = count(upBtn);
|
|
1160
|
+
let down = count(downBtn);
|
|
1161
|
+
if (was === 'up') up -= 1;
|
|
1162
|
+
if (was === 'down') down -= 1;
|
|
1163
|
+
if (way === 'up') up += 1;
|
|
1164
|
+
if (way === 'down') down += 1;
|
|
1165
|
+
const set = (b, its, mark, n, label) => {
|
|
1166
|
+
b.dataset.act = `vote-${way === its ? 'none' : its}`;
|
|
1167
|
+
b.dataset.was = way;
|
|
1168
|
+
b.textContent = `${mark} ${Math.max(0, n)}`;
|
|
1169
|
+
b.classList.toggle('voted', way === its);
|
|
1170
|
+
if (way === its) b.setAttribute('aria-pressed', 'true'); else b.removeAttribute('aria-pressed');
|
|
1171
|
+
b.setAttribute('aria-label', way === its ? `Take back your vote ${label}` : `Vote ${label} this post`);
|
|
1172
|
+
};
|
|
1173
|
+
set(upBtn, 'up', '\u25B2', up, 'for');
|
|
1174
|
+
set(downBtn, 'down', '\u25BC', down, 'against');
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
// Asking to be let into a private category: the same Follow that joining
|
|
1178
|
+
// sends, which a category approving its members holds for a moderator.
|
|
1179
|
+
async function askToJoin(categoryId) {
|
|
1180
|
+
const cat = cats().find(c => c.id === categoryId);
|
|
1181
|
+
if (!cat || !podAcct) return;
|
|
1182
|
+
try {
|
|
1183
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
1184
|
+
await pod.join({ actor: podAcct.actor, category: cat.id, inbox });
|
|
1185
|
+
say('Asked. A moderator sees it in the forum\'s queue.');
|
|
1186
|
+
alert('Your request is with the moderators.');
|
|
1187
|
+
} catch (e) { alert(e.message); }
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
// Admitting somebody who asked: their follow is accepted, and in a private
|
|
1191
|
+
// category their pod is granted the reading that membership means.
|
|
1192
|
+
async function modAdmit(who, slug) {
|
|
1193
|
+
forgetIndex(); // whatever this does, the index behind it is now out of date
|
|
1194
|
+
const cat = cats().find(c => c.slug === slug) || replyCtx?.cat;
|
|
1195
|
+
if (!cat || !who) return;
|
|
1196
|
+
try {
|
|
1197
|
+
await asksTo({ type: 'Join', object: who }, cat);
|
|
1198
|
+
await asksTo({ type: 'Add', object: who, target: cat.base + 'ap/members' }, cat);
|
|
1199
|
+
say('Admitted. It takes effect once the forum has checked who asked.');
|
|
1200
|
+
} catch (e) { alert(e.message); }
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
// A bookmark is this reader's own note to come back to, in this browser.
|
|
1204
|
+
function saveOrNot(postId, on) {
|
|
1205
|
+
const m = own();
|
|
1206
|
+
if (on) {
|
|
1207
|
+
const card = document.querySelector(`[data-post="${CSS.escape(postId)}"]`)?.closest('article');
|
|
1208
|
+
m.save({ id: postId, at: new Date().toISOString(), topic: replyCtx?.topicId || null,
|
|
1209
|
+
cat: replyCtx?.cat?.slug || null, text: (card?.querySelector('.body')?.textContent || '').trim().slice(0, 140) });
|
|
1210
|
+
} else m.unsave(postId);
|
|
1211
|
+
route();
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
// A held post: let through, or turned away. Both are asks like any other,
|
|
1215
|
+
// published at the moderator's own pod and checked there.
|
|
1216
|
+
async function modHeld(postId, slug, through) {
|
|
1217
|
+
forgetIndex(); // whatever this does, the index behind it is now out of date
|
|
1218
|
+
const cat = cats().find(c => c.slug === slug) || replyCtx?.cat;
|
|
1219
|
+
if (!cat) { alert('which category is that in?'); return; }
|
|
1220
|
+
try {
|
|
1221
|
+
await asksTo({ type: through ? 'Accept' : 'Reject', object: postId }, cat);
|
|
1222
|
+
say(through ? 'Let through. It is carried once the forum has checked who asked.' : 'Turned away.');
|
|
1223
|
+
} catch (e) { alert(e.message); }
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
// A reported post taken out of its topic, from the queue rather than from
|
|
1227
|
+
// the thread: the topic it is in is the one the forum has it in.
|
|
1228
|
+
async function modRemoveFromQueue(postId, slug) {
|
|
1229
|
+
forgetIndex(); // whatever this does, the index behind it is now out of date
|
|
1230
|
+
const cat = cats().find(c => c.slug === slug);
|
|
1231
|
+
if (!cat || !postId) return;
|
|
1232
|
+
if (!confirm('Remove this post from its topic?')) return;
|
|
1233
|
+
try {
|
|
1234
|
+
const copy = await read.post(cat.base, postId);
|
|
1235
|
+
if (!copy?.topic) throw new Error('the forum does not say which topic holds it');
|
|
1236
|
+
await asksTo({ type: 'Delete', object: postId, origin: copy.topic }, cat);
|
|
1237
|
+
say('Asked. It takes effect once the forum has checked who asked.');
|
|
1238
|
+
} catch (e) { alert(e.message); }
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
// Banning: the category blocks them, which is the whole of what a group can
|
|
1242
|
+
// enforce — it stops carrying them and ends the following.
|
|
1243
|
+
async function modBan(who, slug) {
|
|
1244
|
+
const cat = cats().find(c => c.slug === slug) || replyCtx?.cat;
|
|
1245
|
+
if (!cat || !who) return;
|
|
1246
|
+
if (!confirm(`Ban ${authorLabel(who)} from ${cat.name}? Their posts stop being carried.`)) return;
|
|
1247
|
+
try {
|
|
1248
|
+
await asksTo({ type: 'Block', object: who }, cat);
|
|
1249
|
+
say('Asked. It takes effect once the forum has checked who asked.');
|
|
1250
|
+
} catch (e) { alert(e.message); }
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
// The line naming who moderates, from actor ids: each one's own handle where
|
|
1254
|
+
// something says it, and the address it was read from otherwise.
|
|
1255
|
+
async function paintMods(ids) {
|
|
1256
|
+
if (!ids.length) return;
|
|
1257
|
+
const cat = cats()[0];
|
|
1258
|
+
const named = await Promise.all(ids.map(async (id) => {
|
|
1259
|
+
const card = cat ? await authorOnce(cat.base, id).catch(() => null) : null;
|
|
1260
|
+
const handle = card?.handle || await modLabel(id);
|
|
1261
|
+
return `<a href="#/who/${encodeURIComponent(id)}">${esc(handle)}</a>`;
|
|
1262
|
+
}));
|
|
1263
|
+
$('mods-who').innerHTML = `<span class="lead">moderators:</span> ${named.join(', ')}`;
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
// What to call a moderator: the card the forum kept of them, then the actor's
|
|
1267
|
+
// own word for it, and a name read off the address only when neither answers.
|
|
1268
|
+
async function modLabel(actorId) {
|
|
1269
|
+
const cat = cats()[0];
|
|
1270
|
+
const card = cat ? await authorOnce(cat.base, actorId) : null;
|
|
1271
|
+
if (card?.handle) return card.handle;
|
|
1272
|
+
return (await read.actorHandle(actorId).catch(() => null)) || authorLabel(actorId);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
// What a moderator types is a handle; what the wire names is the actor behind
|
|
1276
|
+
// it. A server that will not say who that is stops the ask here, where the
|
|
1277
|
+
// person who typed it is looking, rather than on the forum an hour later.
|
|
1278
|
+
async function actorFor(typed) {
|
|
1279
|
+
if (!typed) return null;
|
|
1280
|
+
try { return await actorOfHandle(typed); } catch (e) { settingsSaid(e.message, true); return null; }
|
|
1281
|
+
}
|
|
1282
|
+
|
|
1283
|
+
// Every settings change is an ordinary activity naming what it changes: a
|
|
1284
|
+
// Create of a Group for a new category, an Update for a name, an Add or a
|
|
1285
|
+
// Remove for who moderates and who may read.
|
|
1286
|
+
// What came of a settings change, where the reader can see it: the line that
|
|
1287
|
+
// reads aloud is invisible on the screen, so a change that worked looked
|
|
1288
|
+
// exactly like a button that did nothing.
|
|
1289
|
+
function settingsSaid(text, bad = false) {
|
|
1290
|
+
say(text);
|
|
1291
|
+
if ($('panel').open) {
|
|
1292
|
+
const box = $('panel-err');
|
|
1293
|
+
box.textContent = text;
|
|
1294
|
+
box.className = bad ? 'err' : 'said';
|
|
1295
|
+
return;
|
|
1296
|
+
}
|
|
1297
|
+
alert(text);
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
async function settingsAsk(...activities) {
|
|
1301
|
+
try {
|
|
1302
|
+
const inbox = await pod.podInboxOf(cats()[0]?.id || forum.id, { front, handle: cats()[0]?.slug || forum.handle });
|
|
1303
|
+
for (const activity of activities) {
|
|
1304
|
+
await pod.moderate({ actor: podAcct.actor, podHome: podAcct.podHome, inbox, activity });
|
|
1305
|
+
}
|
|
1306
|
+
settingsSaid('Sent. It takes effect once the forum has checked who asked.');
|
|
1307
|
+
} catch (e) { settingsSaid(e.message, true); }
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
async function onSettings(b) {
|
|
1311
|
+
const act = b.dataset.act;
|
|
1312
|
+
const catId = b.dataset.cat;
|
|
1313
|
+
const val = (sel) => document.querySelector(sel)?.value.trim() || '';
|
|
1314
|
+
if (act === 'set-forum-name') {
|
|
1315
|
+
const name = val('#set-forum-name');
|
|
1316
|
+
if (name) await settingsAsk({ type: 'Update', object: { id: forum.id, name } });
|
|
1317
|
+
} else if (act === 'set-cat-name') {
|
|
1318
|
+
const name = document.querySelector(`.cat-name[data-cat="${CSS.escape(catId)}"]`)?.value.trim();
|
|
1319
|
+
if (name) await settingsAsk({ type: 'Update', object: { id: catId, name } });
|
|
1320
|
+
} else if (act === 'add-cat') {
|
|
1321
|
+
const slug = val('#set-new-slug').toLowerCase();
|
|
1322
|
+
const name = val('#set-new-name') || slug;
|
|
1323
|
+
if (!/^[a-z0-9][a-z0-9-]{0,62}$/u.test(slug)) { alert('a Fediverse username is lower-case letters, digits and hyphens'); return; }
|
|
1324
|
+
const priv = document.querySelector('input[name="set-new-private"]:checked')?.value === 'private';
|
|
1325
|
+
await settingsAsk({ type: 'Create', target: forum.id,
|
|
1326
|
+
object: { type: 'Group', preferredUsername: slug, name, ...(priv ? { manuallyApprovesFollowers: true } : {}) } });
|
|
1327
|
+
} else if (act === 'add-member' || act === 'drop-member') {
|
|
1328
|
+
const webid = document.querySelector(`.cat-member[data-cat="${CSS.escape(catId)}"]`)?.value.trim();
|
|
1329
|
+
const cat = cats().find(c => c.id === catId);
|
|
1330
|
+
if (webid && cat) await settingsAsk({ type: act === 'add-member' ? 'Add' : 'Remove', object: webid, target: cat.base + 'ap/members' });
|
|
1331
|
+
} else if (act === 'add-mod' || act === 'drop-mod') {
|
|
1332
|
+
const typed = val('#set-mod');
|
|
1333
|
+
if (!typed) { settingsSaid('Type a handle first, like @mei@their.server.', true); return; }
|
|
1334
|
+
const who = await actorFor(typed);
|
|
1335
|
+
const cat = cats()[0];
|
|
1336
|
+
if (!who) return; // actorFor has already said why
|
|
1337
|
+
if (!cat) { settingsSaid('This forum has no category to moderate yet.', true); return; }
|
|
1338
|
+
// One handle says two things: who may ask for moderation, and whose pod
|
|
1339
|
+
// the rule on the queue names. The forum finds the pod behind the actor.
|
|
1340
|
+
const type = act === 'add-mod' ? 'Add' : 'Remove';
|
|
1341
|
+
await settingsAsk({ type, object: who, target: cat.base + 'ap/moderators' },
|
|
1342
|
+
{ type, object: who, target: `${base}mod/` });
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
async function modLock(topicId, on) {
|
|
1347
|
+
// AS2 types `closed` as a TIME, so closing carries the moment it closed and
|
|
1348
|
+
// reopening REMOVES it — which ActivityPub spells as `null` (§6.3.1, partial
|
|
1349
|
+
// updates). It used to send `closed: false`, which is neither a time nor a
|
|
1350
|
+
// removal: it arrived as the text "false" typed as a date, and `!!"false"` is
|
|
1351
|
+
// true, so every reopen closed the topic again.
|
|
1352
|
+
//
|
|
1353
|
+
// The type is named because the reading is built from a graph, and a node
|
|
1354
|
+
// with nothing on it but an id collapses to a bare id — taking the removal
|
|
1355
|
+
// with it. A topic IS an OrderedCollection, which is what the forum publishes.
|
|
1356
|
+
try {
|
|
1357
|
+
await asksTo({ type: 'Update',
|
|
1358
|
+
object: { id: topicId, type: 'OrderedCollection', closed: on ? new Date().toISOString() : null } });
|
|
1359
|
+
} catch (e) { alert(e.message); }
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
async function modPin(topicId, on, wholeSite = false) {
|
|
1363
|
+
// Which featured collection it goes into says how far the pin reaches: the
|
|
1364
|
+
// category's, or the forum's own.
|
|
1365
|
+
const target = wholeSite ? base + 'ap/featured' : replyCtx.cat.base + 'ap/featured';
|
|
1366
|
+
try { await asksTo({ type: on ? 'Add' : 'Remove', object: topicId, target }); } catch (e) { alert(e.message); }
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
// A topic removed from the category is a topic gone (FEP-f15d).
|
|
1370
|
+
async function modDropTopic(topicId) {
|
|
1371
|
+
if (!confirm('Delete this topic and every post in it?')) return;
|
|
1372
|
+
try { await asksTo({ type: 'Remove', object: topicId, target: replyCtx.cat.id }); } catch (e) { alert(e.message); }
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
async function removePost(id) {
|
|
1376
|
+
if (!confirm('Delete this post? Everywhere it has reached is told to remove it.')) return;
|
|
1377
|
+
try {
|
|
1378
|
+
const cat = replyCtx.cat;
|
|
1379
|
+
if (podAcct) {
|
|
1380
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
1381
|
+
await pod.remove({ actor: podAcct.actor, podHome: podAcct.podHome, id, category: cat.id,
|
|
1382
|
+
categoryBase: cat.base, isPrivate: !!cat.private, inbox });
|
|
1383
|
+
} else {
|
|
1384
|
+
const p = await read.post(cat.base, id);
|
|
1385
|
+
await login.remove({ url: p?.page || id });
|
|
1386
|
+
}
|
|
1387
|
+
forgetIndex();
|
|
1388
|
+
await route();
|
|
1389
|
+
} catch (e) { alert(e.message); }
|
|
1390
|
+
}
|
|
1391
|
+
$('reply-cancel').addEventListener('click', () => $('reply-dlg').close());
|
|
1392
|
+
// Open or private is the forum's setting, changed here and nowhere else:
|
|
1393
|
+
// nobody joining, and nobody being named a member, ever moves a category
|
|
1394
|
+
// between the two.
|
|
1395
|
+
$('main').addEventListener('change', async (e) => {
|
|
1396
|
+
const r = e.target;
|
|
1397
|
+
if (r?.dataset?.act !== 'set-cat-private' || !r.checked) return;
|
|
1398
|
+
const cat = cats().find(c => c.id === r.dataset.cat);
|
|
1399
|
+
if (!cat) return;
|
|
1400
|
+
const priv = r.value === 'private';
|
|
1401
|
+
if (priv === !!cat.private) return;
|
|
1402
|
+
await settingsAsk({ type: 'Update', object: { id: cat.id, manuallyApprovesFollowers: priv } });
|
|
1403
|
+
cat.private = priv;
|
|
1404
|
+
});
|
|
1405
|
+
|
|
1406
|
+
let findTimer = null;
|
|
1407
|
+
function onFind(e) {
|
|
1408
|
+
if (e.target?.id !== 'find') return;
|
|
1409
|
+
finding = e.target.value;
|
|
1410
|
+
clearTimeout(findTimer);
|
|
1411
|
+
findTimer = setTimeout(async () => {
|
|
1412
|
+
const where = e.target.selectionStart;
|
|
1413
|
+
await showForum();
|
|
1414
|
+
const box = document.getElementById('find');
|
|
1415
|
+
if (box) { box.focus(); box.setSelectionRange(where, where); }
|
|
1416
|
+
}, 250);
|
|
1417
|
+
}
|
|
1418
|
+
$('main').addEventListener('input', onFind);
|
|
1419
|
+
|
|
1420
|
+
// The moderators row is above <main>, so the page's own handlers never see the
|
|
1421
|
+
// controls at its end: they are the same acts, listened for here.
|
|
1422
|
+
$('mods-line').addEventListener('click', (e) => {
|
|
1423
|
+
const b = e.target.closest('button[data-act]');
|
|
1424
|
+
if (!b) return;
|
|
1425
|
+
if (b.dataset.act === 'search') {
|
|
1426
|
+
const box = $('find');
|
|
1427
|
+
if (!box) return;
|
|
1428
|
+
b.hidden = true;
|
|
1429
|
+
box.hidden = false;
|
|
1430
|
+
box.focus();
|
|
1431
|
+
return;
|
|
1432
|
+
}
|
|
1433
|
+
if (b.dataset.act === 'newtopic') {
|
|
1434
|
+
const cat = catBySlug(b.dataset.slug);
|
|
1435
|
+
if (!cat) return;
|
|
1436
|
+
replyBox({ cat, title: 'Start a topic', inReplyToUrl: null, topicId: null });
|
|
1437
|
+
$('reply-row').hidden = true;
|
|
1438
|
+
openReply({ inReplyToUrl: null });
|
|
1439
|
+
}
|
|
1440
|
+
});
|
|
1441
|
+
$('mods-line').addEventListener('input', onFind);
|
|
1442
|
+
$('mods-line').addEventListener('focusout', onFindOut);
|
|
1443
|
+
|
|
1444
|
+
// Nothing typed and the reader has gone elsewhere: the row takes its width
|
|
1445
|
+
// back. Something typed stays open, so what is being searched for is visible.
|
|
1446
|
+
function onFindOut(e) {
|
|
1447
|
+
if (e.target?.id !== 'find' || e.target.value.trim()) return;
|
|
1448
|
+
const button = document.querySelector('button[data-act="search"]');
|
|
1449
|
+
if (!button) return;
|
|
1450
|
+
e.target.hidden = true;
|
|
1451
|
+
button.hidden = false;
|
|
1452
|
+
}
|
|
1453
|
+
$('main').addEventListener('focusout', onFindOut);
|
|
1454
|
+
|
|
1455
|
+
$('reply-image').addEventListener('change', async (e) => {
|
|
1456
|
+
const file = e.target.files?.[0];
|
|
1457
|
+
const said = $('reply-image-said');
|
|
1458
|
+
if (!file) return;
|
|
1459
|
+
if (!podAcct) { said.textContent = 'adding an image needs your pod account'; e.target.value = ''; return; }
|
|
1460
|
+
said.textContent = 'putting it in your pod…';
|
|
1461
|
+
try {
|
|
1462
|
+
const url = await pod.upload({ actor: podAcct.actor, podHome: podAcct.podHome, file });
|
|
1463
|
+
const box = $('reply-text');
|
|
1464
|
+
const alt = file.name.replace(/\.[^.]+$/u, '').replace(/[-_]+/gu, ' ');
|
|
1465
|
+
box.value = `${box.value}${box.value && !box.value.endsWith('\n') ? '\n\n' : ''}\n`;
|
|
1466
|
+
said.textContent = 'added';
|
|
1467
|
+
box.focus();
|
|
1468
|
+
} catch (err) { said.textContent = err.message; }
|
|
1469
|
+
e.target.value = '';
|
|
1470
|
+
});
|
|
1471
|
+
|
|
1472
|
+
$('fedi-login').addEventListener('click', async () => {
|
|
1473
|
+
$('reply-err').textContent = '';
|
|
1474
|
+
$('fedi-login').disabled = true;
|
|
1475
|
+
try { await signIn($('fedi-handle').value); } catch (e) { $('reply-err').textContent = e.message; }
|
|
1476
|
+
$('fedi-login').disabled = false;
|
|
1477
|
+
});
|
|
1478
|
+
$('fedi-handle').addEventListener('keydown', (e) => { if (e.key === 'Enter') $('fedi-login').click(); });
|
|
1479
|
+
|
|
1480
|
+
// The stand-alone sign-in. Same signIn() as the Reply box's, reporting into
|
|
1481
|
+
// this dialog's own line rather than the other one's.
|
|
1482
|
+
$('signin-go').addEventListener('click', async () => {
|
|
1483
|
+
$('signin-note').textContent = '';
|
|
1484
|
+
$('signin-go').disabled = true;
|
|
1485
|
+
try { await signIn($('signin-handle').value, 'signin-note'); } catch (e) { $('signin-note').textContent = e.message; }
|
|
1486
|
+
$('signin-go').disabled = false;
|
|
1487
|
+
});
|
|
1488
|
+
$('signin-handle').addEventListener('keydown', (e) => { if (e.key === 'Enter') $('signin-go').click(); });
|
|
1489
|
+
// Cancelling drops what was remembered: the reader said no, and it should not
|
|
1490
|
+
// happen to them the next time they sign in for something else.
|
|
1491
|
+
$('signin-cancel').addEventListener('click', () => { sessionStorage.removeItem('bb:intent'); $('signin-dlg').close(); });
|
|
1492
|
+
$('signin-dlg').addEventListener('cancel', () => sessionStorage.removeItem('bb:intent'));
|
|
1493
|
+
async function signOutOfEverything() {
|
|
1494
|
+
if (podAcct) { await pod.signOut(); podAcct = null; localStorage.removeItem('bb:acct'); sessionStorage.removeItem('bb:pod'); } else login.signOut();
|
|
1495
|
+
if (replyCtx) replyBox(replyCtx);
|
|
1496
|
+
paintWho();
|
|
1497
|
+
}
|
|
1498
|
+
$('masto-logout').addEventListener('click', signOutOfEverything);
|
|
1499
|
+
|
|
1500
|
+
$('who-act').addEventListener('click', async () => {
|
|
1501
|
+
if (!account()) return askToSignIn('take part, and to moderate if you are a moderator');
|
|
1502
|
+
await signOutOfEverything();
|
|
1503
|
+
say('Signed out.');
|
|
1504
|
+
route();
|
|
1505
|
+
});
|
|
1506
|
+
|
|
1507
|
+
async function saveEdit({ body }) {
|
|
1508
|
+
const cat = replyCtx.cat;
|
|
1509
|
+
if (podAcct) {
|
|
1510
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
1511
|
+
return pod.edit({ actor: podAcct.actor, podHome: podAcct.podHome, id: editing.id, text: body, category: cat.id,
|
|
1512
|
+
categoryBase: cat.base, isPrivate: !!cat.private, inbox });
|
|
1513
|
+
}
|
|
1514
|
+
return login.edit({ url: editing.page || editing.id, text: body });
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
// A post written into the reader's own pod and announced to the forum. The
|
|
1518
|
+
// category is named on its own pod, which is where a delivery is taken.
|
|
1519
|
+
async function postFromPod({ topic, body }) {
|
|
1520
|
+
const cat = replyCtx.cat;
|
|
1521
|
+
const inbox = await pod.podInboxOf(cat.id, { front, handle: cat.slug || null });
|
|
1522
|
+
if (!inbox) throw new Error('the forum did not say where to send it');
|
|
1523
|
+
// Posting in an open category joins it on the way past, which is what makes
|
|
1524
|
+
// the post carry. A private one is joined by asking and being admitted, so
|
|
1525
|
+
// the post is refused here instead, and says so.
|
|
1526
|
+
if (!cat.private) await pod.join({ actor: podAcct.actor, category: cat.id, inbox });
|
|
1527
|
+
return pod.post({
|
|
1528
|
+
actor: podAcct.actor, podHome: podAcct.podHome, category: cat.id, categoryBase: cat.base,
|
|
1529
|
+
categoryHandle: handleOf(cat), isPrivate: !!cat.private, inbox,
|
|
1530
|
+
topic, text: body, inReplyTo: replyCtx.inReplyToUrl,
|
|
1531
|
+
context: replyCtx.topicId ? replyCtx.topicId : null,
|
|
1532
|
+
});
|
|
1533
|
+
}
|
|
1534
|
+
$('reply-send').addEventListener('click', async () => {
|
|
1535
|
+
if (!replyCtx) return;
|
|
1536
|
+
const body = $('reply-text').value.trim();
|
|
1537
|
+
if (!body) return;
|
|
1538
|
+
// A Mastodon post has no topic name to give: its first line stands in for
|
|
1539
|
+
// one, which is all that server can say. A pod post names the topic on the
|
|
1540
|
+
// activity that opens it, and its words are only its words.
|
|
1541
|
+
// The topic's name, asked for only when a topic is being opened; the
|
|
1542
|
+
// post's own title, which any post may have and any edit may change.
|
|
1543
|
+
const topic = !editing && !replyCtx.topicId ? $('topic-title').value.trim() : '';
|
|
1544
|
+
|
|
1545
|
+
const text = topic ? `${topic}\n\n${body}` : body;
|
|
1546
|
+
$('reply-err').textContent = '';
|
|
1547
|
+
$('reply-send').disabled = true;
|
|
1548
|
+
try {
|
|
1549
|
+
const made = editing
|
|
1550
|
+
? await saveEdit({ body })
|
|
1551
|
+
: podAcct
|
|
1552
|
+
? await postFromPod({ topic, body })
|
|
1553
|
+
: await login.post({ text, mention: handleOf(replyCtx.cat), inReplyToUrl: replyCtx.inReplyToUrl });
|
|
1554
|
+
const acct = account();
|
|
1555
|
+
if (!editing && replyCtx.topicId) remember(replyCtx.topicId, { id: made.uri || made.url, author: acct.url || acct.handle, text, at: new Date().toISOString() });
|
|
1556
|
+
$('reply-text').value = '';
|
|
1557
|
+
$('topic-title').value = '';
|
|
1558
|
+
$('reply-dlg').close();
|
|
1559
|
+
forgetIndex();
|
|
1560
|
+
await route();
|
|
1561
|
+
} catch (e) { $('reply-err').textContent = e.message; }
|
|
1562
|
+
$('reply-send').disabled = false;
|
|
1563
|
+
});
|
|
1564
|
+
|
|
1565
|
+
// Back from the reader's server with a code: finish the sign-in, then clean
|
|
1566
|
+
// the address so a reload does not replay it.
|
|
1567
|
+
(async () => {
|
|
1568
|
+
// Back from a pod's sign-in: the session is this browser's, and the handle
|
|
1569
|
+
// it belongs to was put aside before leaving.
|
|
1570
|
+
// A reader who signed in stays signed in: the pod session lives in this
|
|
1571
|
+
// browser, and the handle it belongs to is kept beside it.
|
|
1572
|
+
const kept = localStorage.getItem('bb:acct');
|
|
1573
|
+
if (kept && !sessionStorage.getItem('bb:pod')) {
|
|
1574
|
+
try {
|
|
1575
|
+
const s = await pod.session();
|
|
1576
|
+
if (s) { podAcct = { ...JSON.parse(kept), webId: s.webId }; read = reader({ session: s }); }
|
|
1577
|
+
else localStorage.removeItem('bb:acct');
|
|
1578
|
+
} catch { localStorage.removeItem('bb:acct'); }
|
|
1579
|
+
}
|
|
1580
|
+
const waiting = sessionStorage.getItem('bb:pod');
|
|
1581
|
+
if (waiting) {
|
|
1582
|
+
try {
|
|
1583
|
+
const who = JSON.parse(waiting);
|
|
1584
|
+
const s = params.get('code') ? await pod.complete(location.href) : await pod.session();
|
|
1585
|
+
if (s) {
|
|
1586
|
+
podAcct = { ...who, webId: s.webId };
|
|
1587
|
+
read = reader({ session: s });
|
|
1588
|
+
try { localStorage.setItem('bb:acct', JSON.stringify(who)); } catch { /* blocked storage */ }
|
|
1589
|
+
sessionStorage.removeItem('bb:pod');
|
|
1590
|
+
params.delete('code'); params.delete('state'); params.delete('iss');
|
|
1591
|
+
const q = String(params);
|
|
1592
|
+
const back = sessionStorage.getItem('bb:return') || '';
|
|
1593
|
+
sessionStorage.removeItem('bb:return');
|
|
1594
|
+
history.replaceState(null, '', `${location.pathname}${q ? '?' + q : ''}${back}`);
|
|
1595
|
+
}
|
|
1596
|
+
} catch (e) { $('reply-err').textContent = e.message; }
|
|
1597
|
+
}
|
|
1598
|
+
const code = params.get('code');
|
|
1599
|
+
const state = params.get('state');
|
|
1600
|
+
if (code && state) {
|
|
1601
|
+
try {
|
|
1602
|
+
await login.complete({ state, code });
|
|
1603
|
+
params.delete('code'); params.delete('state');
|
|
1604
|
+
const back = sessionStorage.getItem('bb:return') || '';
|
|
1605
|
+
sessionStorage.removeItem('bb:return');
|
|
1606
|
+
const q = String(params);
|
|
1607
|
+
history.replaceState(null, '', `${location.pathname}${q ? '?' + q : ''}${back}`);
|
|
1608
|
+
} catch (e) { $('reply-err').textContent = e.message; }
|
|
1609
|
+
}
|
|
1610
|
+
// Sign-up lives at the Gateway, which is this page's own site or the one it is a face of.
|
|
1611
|
+
$('fedipod-signup').href = front + '/new-account';
|
|
1612
|
+
window.addEventListener('hashchange', () => route());
|
|
1613
|
+
await load();
|
|
1614
|
+
// Whatever the reader pressed before being asked to sign in. After `load`,
|
|
1615
|
+
// because voting and joining both need the categories to be known.
|
|
1616
|
+
await replayIntent();
|
|
1617
|
+
})();
|