From 88b63078a83be5be2c955dd92a33a32e41834145 Mon Sep 17 00:00:00 2001 From: Ares <75481906+ice-ares@users.noreply.github.com> Date: Thu, 23 Mar 2023 07:55:52 +0200 Subject: [PATCH] repo made publicly available --- .github/CODEOWNERS | 1 + .github/workflows/CICD.yaml | 573 ++++++++++++ .gitignore | 27 + .golangci.yml | 550 +++++++++++ LICENSE.header | 1 + LICENSE.txt | 50 + Makefile | 256 +++++ README.md | 43 + analytics/.testdata/application.yaml | 42 + analytics/DDL.lua | 8 + analytics/analytics.go | 177 ++++ analytics/contract.go | 70 ++ application.yaml | 175 ++++ cmd/husky-pack/.testdata/application.yaml | 2 + .../.testdata/expected_swagger.json | 0 cmd/husky-pack/.testdata/localhost.crt | 21 + cmd/husky-pack/.testdata/localhost.key | 28 + cmd/husky-pack/Dockerfile | 28 + cmd/husky-pack/api/docs.go | 743 +++++++++++++++ cmd/husky-pack/api/swagger.json | 722 +++++++++++++++ cmd/husky-pack/api/swagger.yaml | 496 ++++++++++ cmd/husky-pack/contract.go | 283 ++++++ cmd/husky-pack/husky_pack.go | 79 ++ cmd/husky-pack/news.go | 381 ++++++++ cmd/husky-pack/notifications.go | 142 +++ cmd/husky/.testdata/application.yaml | 2 + cmd/husky/.testdata/expected_swagger.json | 0 cmd/husky/.testdata/localhost.crt | 21 + cmd/husky/.testdata/localhost.key | 28 + cmd/husky/Dockerfile | 28 + cmd/husky/api/docs.go | 428 +++++++++ cmd/husky/api/swagger.json | 407 ++++++++ cmd/husky/api/swagger.yaml | 287 ++++++ cmd/husky/contract.go | 245 +++++ cmd/husky/husky.go | 70 ++ cmd/husky/news.go | 113 +++ cmd/husky/notifications.go | 49 + go.mod | 146 +++ go.sum | 871 ++++++++++++++++++ local.go | 45 + news/.testdata/application.yaml | 52 ++ news/.testdata/profilePic1.jpg | Bin 0 -> 415939 bytes news/.testdata/profilePic2.png | Bin 0 -> 182744 bytes news/DDL.lua | 42 + news/contract.go | 130 +++ news/fixture/contract.go | 25 + news/fixture/fixture.go | 74 ++ news/news.go | 210 +++++ news/news_create.go | 71 ++ news/news_delete.go | 36 + news/news_get.go | 101 ++ news/news_modify.go | 196 ++++ news/seeding/seeding.go | 349 +++++++ news/tags.go | 109 +++ notifications/.testdata/application.yaml | 90 ++ notifications/.testdata/profilePic1.jpg | Bin 0 -> 415939 bytes notifications/.testdata/profilePic2.png | Bin 0 -> 182744 bytes notifications/DDL.lua | 51 + notifications/analytics.go | 49 + notifications/contract.go | 251 +++++ notifications/email_notifications.go | 108 +++ notifications/fixture/contract.go | 25 + notifications/fixture/fixture.go | 74 ++ notifications/inapp_notifications.go | 66 ++ .../notification_type_adoption_changed.go | 138 +++ .../notification_type_badge_unlocked.go | 169 ++++ .../notification_type_daily_bonus.go | 148 +++ notifications/notification_type_day_off.go | 71 ++ .../notification_type_level_changed.go | 136 +++ .../notification_type_new_contact.go | 148 +++ .../notification_type_new_referral.go | 104 +++ notifications/notification_type_news_added.go | 142 +++ notifications/notification_type_ping.go | 114 +++ .../notification_type_role_changed.go | 135 +++ notifications/notifications.go | 245 +++++ notifications/push_notifications.go | 225 +++++ notifications/seeding/seeding.go | 41 + .../translations/push/adoption_changed/af.txt | 4 + .../translations/push/adoption_changed/am.txt | 4 + .../translations/push/adoption_changed/ar.txt | 4 + .../translations/push/adoption_changed/az.txt | 4 + .../translations/push/adoption_changed/bg.txt | 4 + .../translations/push/adoption_changed/bn.txt | 4 + .../translations/push/adoption_changed/cs.txt | 4 + .../translations/push/adoption_changed/de.txt | 4 + .../translations/push/adoption_changed/en.txt | 4 + .../translations/push/adoption_changed/es.txt | 4 + .../translations/push/adoption_changed/fa.txt | 4 + .../push/adoption_changed/fil.txt | 4 + .../translations/push/adoption_changed/fr.txt | 4 + .../translations/push/adoption_changed/ge.txt | 4 + .../translations/push/adoption_changed/gu.txt | 4 + .../translations/push/adoption_changed/he.txt | 4 + .../translations/push/adoption_changed/hi.txt | 4 + .../translations/push/adoption_changed/hu.txt | 4 + .../translations/push/adoption_changed/id.txt | 4 + .../translations/push/adoption_changed/it.txt | 4 + .../translations/push/adoption_changed/ja.txt | 4 + .../translations/push/adoption_changed/jv.txt | 4 + .../translations/push/adoption_changed/kn.txt | 4 + .../translations/push/adoption_changed/ko.txt | 4 + .../translations/push/adoption_changed/mr.txt | 4 + .../translations/push/adoption_changed/ms.txt | 4 + .../translations/push/adoption_changed/no.txt | 4 + .../translations/push/adoption_changed/pa.txt | 4 + .../translations/push/adoption_changed/pl.txt | 4 + .../translations/push/adoption_changed/ps.txt | 4 + .../translations/push/adoption_changed/pt.txt | 4 + .../translations/push/adoption_changed/ro.txt | 4 + .../translations/push/adoption_changed/ru.txt | 4 + .../translations/push/adoption_changed/sd.txt | 4 + .../translations/push/adoption_changed/sk.txt | 4 + .../translations/push/adoption_changed/sl.txt | 4 + .../translations/push/adoption_changed/sq.txt | 4 + .../translations/push/adoption_changed/su.txt | 4 + .../translations/push/adoption_changed/sv.txt | 4 + .../translations/push/adoption_changed/ta.txt | 4 + .../translations/push/adoption_changed/te.txt | 4 + .../translations/push/adoption_changed/th.txt | 4 + .../translations/push/adoption_changed/tr.txt | 4 + .../translations/push/adoption_changed/uk.txt | 4 + .../translations/push/adoption_changed/ur.txt | 4 + .../translations/push/adoption_changed/vi.txt | 4 + .../translations/push/adoption_changed/yo.txt | 4 + .../push/adoption_changed/zh-hans.txt | 4 + .../push/adoption_changed/zh-hant.txt | 4 + .../translations/push/adoption_changed/zu.txt | 4 + .../push/coin_badge_unlocked/af.txt | 4 + .../push/coin_badge_unlocked/am.txt | 4 + .../push/coin_badge_unlocked/ar.txt | 4 + .../push/coin_badge_unlocked/az.txt | 4 + .../push/coin_badge_unlocked/bg.txt | 4 + .../push/coin_badge_unlocked/bn.txt | 4 + .../push/coin_badge_unlocked/cs.txt | 4 + .../push/coin_badge_unlocked/de.txt | 4 + .../push/coin_badge_unlocked/en.txt | 4 + .../push/coin_badge_unlocked/es.txt | 4 + .../push/coin_badge_unlocked/fa.txt | 4 + .../push/coin_badge_unlocked/fil.txt | 4 + .../push/coin_badge_unlocked/fr.txt | 4 + .../push/coin_badge_unlocked/ge.txt | 4 + .../push/coin_badge_unlocked/gu.txt | 4 + .../push/coin_badge_unlocked/he.txt | 4 + .../push/coin_badge_unlocked/hi.txt | 4 + .../push/coin_badge_unlocked/hu.txt | 4 + .../push/coin_badge_unlocked/id.txt | 4 + .../push/coin_badge_unlocked/it.txt | 4 + .../push/coin_badge_unlocked/ja.txt | 4 + .../push/coin_badge_unlocked/jv.txt | 4 + .../push/coin_badge_unlocked/kn.txt | 4 + .../push/coin_badge_unlocked/ko.txt | 4 + .../push/coin_badge_unlocked/mr.txt | 4 + .../push/coin_badge_unlocked/ms.txt | 4 + .../push/coin_badge_unlocked/no.txt | 4 + .../push/coin_badge_unlocked/pa.txt | 4 + .../push/coin_badge_unlocked/pl.txt | 4 + .../push/coin_badge_unlocked/ps.txt | 4 + .../push/coin_badge_unlocked/pt.txt | 4 + .../push/coin_badge_unlocked/ro.txt | 4 + .../push/coin_badge_unlocked/ru.txt | 4 + .../push/coin_badge_unlocked/sd.txt | 4 + .../push/coin_badge_unlocked/sk.txt | 4 + .../push/coin_badge_unlocked/sl.txt | 4 + .../push/coin_badge_unlocked/sq.txt | 4 + .../push/coin_badge_unlocked/su.txt | 4 + .../push/coin_badge_unlocked/sv.txt | 4 + .../push/coin_badge_unlocked/ta.txt | 4 + .../push/coin_badge_unlocked/te.txt | 4 + .../push/coin_badge_unlocked/th.txt | 4 + .../push/coin_badge_unlocked/tr.txt | 4 + .../push/coin_badge_unlocked/uk.txt | 4 + .../push/coin_badge_unlocked/ur.txt | 4 + .../push/coin_badge_unlocked/vi.txt | 4 + .../push/coin_badge_unlocked/yo.txt | 4 + .../push/coin_badge_unlocked/zh-hans.txt | 4 + .../push/coin_badge_unlocked/zh-hant.txt | 4 + .../push/coin_badge_unlocked/zu.txt | 4 + .../translations/push/daily_bonus/af.txt | 4 + .../translations/push/daily_bonus/am.txt | 4 + .../translations/push/daily_bonus/ar.txt | 4 + .../translations/push/daily_bonus/az.txt | 4 + .../translations/push/daily_bonus/bg.txt | 4 + .../translations/push/daily_bonus/bn.txt | 4 + .../translations/push/daily_bonus/cs.txt | 4 + .../translations/push/daily_bonus/de.txt | 4 + .../translations/push/daily_bonus/en.txt | 4 + .../translations/push/daily_bonus/es.txt | 4 + .../translations/push/daily_bonus/fa.txt | 4 + .../translations/push/daily_bonus/fil.txt | 4 + .../translations/push/daily_bonus/fr.txt | 4 + .../translations/push/daily_bonus/ge.txt | 4 + .../translations/push/daily_bonus/gu.txt | 4 + .../translations/push/daily_bonus/he.txt | 4 + .../translations/push/daily_bonus/hi.txt | 4 + .../translations/push/daily_bonus/hu.txt | 4 + .../translations/push/daily_bonus/id.txt | 4 + .../translations/push/daily_bonus/it.txt | 4 + .../translations/push/daily_bonus/ja.txt | 4 + .../translations/push/daily_bonus/jv.txt | 4 + .../translations/push/daily_bonus/kn.txt | 4 + .../translations/push/daily_bonus/ko.txt | 4 + .../translations/push/daily_bonus/mr.txt | 4 + .../translations/push/daily_bonus/ms.txt | 4 + .../translations/push/daily_bonus/no.txt | 4 + .../translations/push/daily_bonus/pa.txt | 4 + .../translations/push/daily_bonus/pl.txt | 4 + .../translations/push/daily_bonus/ps.txt | 4 + .../translations/push/daily_bonus/pt.txt | 4 + .../translations/push/daily_bonus/ro.txt | 4 + .../translations/push/daily_bonus/ru.txt | 4 + .../translations/push/daily_bonus/sd.txt | 4 + .../translations/push/daily_bonus/sk.txt | 4 + .../translations/push/daily_bonus/sl.txt | 4 + .../translations/push/daily_bonus/sq.txt | 4 + .../translations/push/daily_bonus/su.txt | 4 + .../translations/push/daily_bonus/sv.txt | 4 + .../translations/push/daily_bonus/ta.txt | 4 + .../translations/push/daily_bonus/te.txt | 4 + .../translations/push/daily_bonus/th.txt | 4 + .../translations/push/daily_bonus/tr.txt | 4 + .../translations/push/daily_bonus/uk.txt | 4 + .../translations/push/daily_bonus/ur.txt | 4 + .../translations/push/daily_bonus/vi.txt | 4 + .../translations/push/daily_bonus/yo.txt | 4 + .../translations/push/daily_bonus/zh-hans.txt | 4 + .../translations/push/daily_bonus/zh-hant.txt | 4 + .../translations/push/daily_bonus/zu.txt | 4 + .../push/level_badge_unlocked/af.txt | 4 + .../push/level_badge_unlocked/am.txt | 4 + .../push/level_badge_unlocked/ar.txt | 4 + .../push/level_badge_unlocked/az.txt | 4 + .../push/level_badge_unlocked/bg.txt | 4 + .../push/level_badge_unlocked/bn.txt | 4 + .../push/level_badge_unlocked/cs.txt | 4 + .../push/level_badge_unlocked/de.txt | 4 + .../push/level_badge_unlocked/en.txt | 4 + .../push/level_badge_unlocked/es.txt | 4 + .../push/level_badge_unlocked/fa.txt | 4 + .../push/level_badge_unlocked/fil.txt | 4 + .../push/level_badge_unlocked/fr.txt | 4 + .../push/level_badge_unlocked/ge.txt | 4 + .../push/level_badge_unlocked/gu.txt | 4 + .../push/level_badge_unlocked/he.txt | 4 + .../push/level_badge_unlocked/hi.txt | 4 + .../push/level_badge_unlocked/hu.txt | 4 + .../push/level_badge_unlocked/id.txt | 4 + .../push/level_badge_unlocked/it.txt | 4 + .../push/level_badge_unlocked/ja.txt | 4 + .../push/level_badge_unlocked/jv.txt | 4 + .../push/level_badge_unlocked/kn.txt | 4 + .../push/level_badge_unlocked/ko.txt | 4 + .../push/level_badge_unlocked/mr.txt | 4 + .../push/level_badge_unlocked/ms.txt | 4 + .../push/level_badge_unlocked/no.txt | 4 + .../push/level_badge_unlocked/pa.txt | 4 + .../push/level_badge_unlocked/pl.txt | 4 + .../push/level_badge_unlocked/ps.txt | 4 + .../push/level_badge_unlocked/pt.txt | 4 + .../push/level_badge_unlocked/ro.txt | 4 + .../push/level_badge_unlocked/ru.txt | 4 + .../push/level_badge_unlocked/sd.txt | 4 + .../push/level_badge_unlocked/sk.txt | 4 + .../push/level_badge_unlocked/sl.txt | 4 + .../push/level_badge_unlocked/sq.txt | 4 + .../push/level_badge_unlocked/su.txt | 4 + .../push/level_badge_unlocked/sv.txt | 4 + .../push/level_badge_unlocked/ta.txt | 4 + .../push/level_badge_unlocked/te.txt | 4 + .../push/level_badge_unlocked/th.txt | 4 + .../push/level_badge_unlocked/tr.txt | 4 + .../push/level_badge_unlocked/uk.txt | 4 + .../push/level_badge_unlocked/ur.txt | 4 + .../push/level_badge_unlocked/vi.txt | 4 + .../push/level_badge_unlocked/yo.txt | 4 + .../push/level_badge_unlocked/zh-hans.txt | 4 + .../push/level_badge_unlocked/zh-hant.txt | 4 + .../push/level_badge_unlocked/zu.txt | 4 + .../translations/push/level_changed/af.txt | 4 + .../translations/push/level_changed/am.txt | 4 + .../translations/push/level_changed/ar.txt | 4 + .../translations/push/level_changed/az.txt | 4 + .../translations/push/level_changed/bg.txt | 4 + .../translations/push/level_changed/bn.txt | 4 + .../translations/push/level_changed/cs.txt | 4 + .../translations/push/level_changed/de.txt | 4 + .../translations/push/level_changed/en.txt | 4 + .../translations/push/level_changed/es.txt | 4 + .../translations/push/level_changed/fa.txt | 4 + .../translations/push/level_changed/fil.txt | 4 + .../translations/push/level_changed/fr.txt | 4 + .../translations/push/level_changed/ge.txt | 4 + .../translations/push/level_changed/gu.txt | 4 + .../translations/push/level_changed/he.txt | 4 + .../translations/push/level_changed/hi.txt | 4 + .../translations/push/level_changed/hu.txt | 4 + .../translations/push/level_changed/id.txt | 4 + .../translations/push/level_changed/it.txt | 4 + .../translations/push/level_changed/ja.txt | 4 + .../translations/push/level_changed/jv.txt | 4 + .../translations/push/level_changed/kn.txt | 4 + .../translations/push/level_changed/ko.txt | 4 + .../translations/push/level_changed/mr.txt | 4 + .../translations/push/level_changed/ms.txt | 4 + .../translations/push/level_changed/no.txt | 4 + .../translations/push/level_changed/pa.txt | 4 + .../translations/push/level_changed/pl.txt | 4 + .../translations/push/level_changed/ps.txt | 4 + .../translations/push/level_changed/pt.txt | 4 + .../translations/push/level_changed/ro.txt | 4 + .../translations/push/level_changed/ru.txt | 4 + .../translations/push/level_changed/sd.txt | 4 + .../translations/push/level_changed/sk.txt | 4 + .../translations/push/level_changed/sl.txt | 4 + .../translations/push/level_changed/sq.txt | 4 + .../translations/push/level_changed/su.txt | 4 + .../translations/push/level_changed/sv.txt | 4 + .../translations/push/level_changed/ta.txt | 4 + .../translations/push/level_changed/te.txt | 4 + .../translations/push/level_changed/th.txt | 4 + .../translations/push/level_changed/tr.txt | 4 + .../translations/push/level_changed/uk.txt | 4 + .../translations/push/level_changed/ur.txt | 4 + .../translations/push/level_changed/vi.txt | 4 + .../translations/push/level_changed/yo.txt | 4 + .../push/level_changed/zh-hans.txt | 4 + .../push/level_changed/zh-hant.txt | 4 + .../translations/push/level_changed/zu.txt | 4 + .../translations/push/new_contact/af.txt | 4 + .../translations/push/new_contact/am.txt | 4 + .../translations/push/new_contact/ar.txt | 4 + .../translations/push/new_contact/az.txt | 4 + .../translations/push/new_contact/bg.txt | 4 + .../translations/push/new_contact/bn.txt | 4 + .../translations/push/new_contact/cs.txt | 4 + .../translations/push/new_contact/de.txt | 4 + .../translations/push/new_contact/en.txt | 4 + .../translations/push/new_contact/es.txt | 4 + .../translations/push/new_contact/fa.txt | 4 + .../translations/push/new_contact/fil.txt | 4 + .../translations/push/new_contact/fr.txt | 4 + .../translations/push/new_contact/ge.txt | 4 + .../translations/push/new_contact/gu.txt | 4 + .../translations/push/new_contact/he.txt | 4 + .../translations/push/new_contact/hi.txt | 4 + .../translations/push/new_contact/hu.txt | 4 + .../translations/push/new_contact/id.txt | 4 + .../translations/push/new_contact/it.txt | 4 + .../translations/push/new_contact/ja.txt | 4 + .../translations/push/new_contact/jv.txt | 4 + .../translations/push/new_contact/kn.txt | 4 + .../translations/push/new_contact/ko.txt | 4 + .../translations/push/new_contact/mr.txt | 4 + .../translations/push/new_contact/ms.txt | 4 + .../translations/push/new_contact/no.txt | 4 + .../translations/push/new_contact/pa.txt | 4 + .../translations/push/new_contact/pl.txt | 4 + .../translations/push/new_contact/ps.txt | 4 + .../translations/push/new_contact/pt.txt | 4 + .../translations/push/new_contact/ro.txt | 4 + .../translations/push/new_contact/ru.txt | 4 + .../translations/push/new_contact/sd.txt | 4 + .../translations/push/new_contact/sk.txt | 4 + .../translations/push/new_contact/sl.txt | 4 + .../translations/push/new_contact/sq.txt | 4 + .../translations/push/new_contact/su.txt | 4 + .../translations/push/new_contact/sv.txt | 4 + .../translations/push/new_contact/ta.txt | 4 + .../translations/push/new_contact/te.txt | 4 + .../translations/push/new_contact/th.txt | 4 + .../translations/push/new_contact/tr.txt | 4 + .../translations/push/new_contact/uk.txt | 4 + .../translations/push/new_contact/ur.txt | 4 + .../translations/push/new_contact/vi.txt | 4 + .../translations/push/new_contact/yo.txt | 4 + .../translations/push/new_contact/zh-hans.txt | 4 + .../translations/push/new_contact/zh-hant.txt | 4 + .../translations/push/new_contact/zu.txt | 4 + .../translations/push/new_referral/af.txt | 4 + .../translations/push/new_referral/am.txt | 4 + .../translations/push/new_referral/ar.txt | 4 + .../translations/push/new_referral/az.txt | 4 + .../translations/push/new_referral/bg.txt | 4 + .../translations/push/new_referral/bn.txt | 4 + .../translations/push/new_referral/cs.txt | 4 + .../translations/push/new_referral/de.txt | 4 + .../translations/push/new_referral/en.txt | 4 + .../translations/push/new_referral/es.txt | 4 + .../translations/push/new_referral/fa.txt | 4 + .../translations/push/new_referral/fil.txt | 4 + .../translations/push/new_referral/fr.txt | 4 + .../translations/push/new_referral/ge.txt | 4 + .../translations/push/new_referral/gu.txt | 4 + .../translations/push/new_referral/he.txt | 4 + .../translations/push/new_referral/hi.txt | 4 + .../translations/push/new_referral/hu.txt | 4 + .../translations/push/new_referral/id.txt | 4 + .../translations/push/new_referral/it.txt | 4 + .../translations/push/new_referral/ja.txt | 4 + .../translations/push/new_referral/jv.txt | 4 + .../translations/push/new_referral/kn.txt | 4 + .../translations/push/new_referral/ko.txt | 4 + .../translations/push/new_referral/mr.txt | 4 + .../translations/push/new_referral/ms.txt | 4 + .../translations/push/new_referral/no.txt | 4 + .../translations/push/new_referral/pa.txt | 4 + .../translations/push/new_referral/pl.txt | 4 + .../translations/push/new_referral/ps.txt | 4 + .../translations/push/new_referral/pt.txt | 4 + .../translations/push/new_referral/ro.txt | 4 + .../translations/push/new_referral/ru.txt | 4 + .../translations/push/new_referral/sd.txt | 4 + .../translations/push/new_referral/sk.txt | 4 + .../translations/push/new_referral/sl.txt | 4 + .../translations/push/new_referral/sq.txt | 4 + .../translations/push/new_referral/su.txt | 4 + .../translations/push/new_referral/sv.txt | 4 + .../translations/push/new_referral/ta.txt | 4 + .../translations/push/new_referral/te.txt | 4 + .../translations/push/new_referral/th.txt | 4 + .../translations/push/new_referral/tr.txt | 4 + .../translations/push/new_referral/uk.txt | 4 + .../translations/push/new_referral/ur.txt | 4 + .../translations/push/new_referral/vi.txt | 4 + .../translations/push/new_referral/yo.txt | 4 + .../push/new_referral/zh-hans.txt | 4 + .../push/new_referral/zh-hant.txt | 4 + .../translations/push/new_referral/zu.txt | 4 + .../translations/push/news_added/af.txt | 4 + .../translations/push/news_added/am.txt | 4 + .../translations/push/news_added/ar.txt | 4 + .../translations/push/news_added/az.txt | 4 + .../translations/push/news_added/bg.txt | 4 + .../translations/push/news_added/bn.txt | 4 + .../translations/push/news_added/cs.txt | 4 + .../translations/push/news_added/de.txt | 4 + .../translations/push/news_added/en.txt | 4 + .../translations/push/news_added/es.txt | 4 + .../translations/push/news_added/fa.txt | 4 + .../translations/push/news_added/fil.txt | 4 + .../translations/push/news_added/fr.txt | 4 + .../translations/push/news_added/ge.txt | 4 + .../translations/push/news_added/gu.txt | 4 + .../translations/push/news_added/he.txt | 4 + .../translations/push/news_added/hi.txt | 4 + .../translations/push/news_added/hu.txt | 4 + .../translations/push/news_added/id.txt | 4 + .../translations/push/news_added/it.txt | 4 + .../translations/push/news_added/ja.txt | 4 + .../translations/push/news_added/jv.txt | 4 + .../translations/push/news_added/kn.txt | 4 + .../translations/push/news_added/ko.txt | 4 + .../translations/push/news_added/mr.txt | 4 + .../translations/push/news_added/ms.txt | 4 + .../translations/push/news_added/no.txt | 4 + .../translations/push/news_added/pa.txt | 4 + .../translations/push/news_added/pl.txt | 4 + .../translations/push/news_added/ps.txt | 4 + .../translations/push/news_added/pt.txt | 4 + .../translations/push/news_added/ro.txt | 4 + .../translations/push/news_added/ru.txt | 4 + .../translations/push/news_added/sd.txt | 4 + .../translations/push/news_added/sk.txt | 4 + .../translations/push/news_added/sl.txt | 4 + .../translations/push/news_added/sq.txt | 4 + .../translations/push/news_added/su.txt | 4 + .../translations/push/news_added/sv.txt | 4 + .../translations/push/news_added/ta.txt | 4 + .../translations/push/news_added/te.txt | 4 + .../translations/push/news_added/th.txt | 4 + .../translations/push/news_added/tr.txt | 4 + .../translations/push/news_added/uk.txt | 4 + .../translations/push/news_added/ur.txt | 4 + .../translations/push/news_added/vi.txt | 4 + .../translations/push/news_added/yo.txt | 4 + .../translations/push/news_added/zh-hans.txt | 4 + .../translations/push/news_added/zh-hant.txt | 4 + .../translations/push/news_added/zu.txt | 4 + notifications/translations/push/ping/af.txt | 4 + notifications/translations/push/ping/am.txt | 4 + notifications/translations/push/ping/ar.txt | 4 + notifications/translations/push/ping/az.txt | 4 + notifications/translations/push/ping/bg.txt | 4 + notifications/translations/push/ping/bn.txt | 4 + notifications/translations/push/ping/cs.txt | 4 + notifications/translations/push/ping/de.txt | 4 + notifications/translations/push/ping/en.txt | 4 + notifications/translations/push/ping/es.txt | 4 + notifications/translations/push/ping/fa.txt | 4 + notifications/translations/push/ping/fil.txt | 4 + notifications/translations/push/ping/fr.txt | 4 + notifications/translations/push/ping/ge.txt | 4 + notifications/translations/push/ping/gu.txt | 4 + notifications/translations/push/ping/he.txt | 4 + notifications/translations/push/ping/hi.txt | 4 + notifications/translations/push/ping/hu.txt | 4 + notifications/translations/push/ping/id.txt | 4 + notifications/translations/push/ping/it.txt | 4 + notifications/translations/push/ping/ja.txt | 4 + notifications/translations/push/ping/jv.txt | 4 + notifications/translations/push/ping/kn.txt | 4 + notifications/translations/push/ping/ko.txt | 4 + notifications/translations/push/ping/mr.txt | 4 + notifications/translations/push/ping/ms.txt | 4 + notifications/translations/push/ping/no.txt | 4 + notifications/translations/push/ping/pa.txt | 4 + notifications/translations/push/ping/pl.txt | 4 + notifications/translations/push/ping/ps.txt | 4 + notifications/translations/push/ping/pt.txt | 4 + notifications/translations/push/ping/ro.txt | 4 + notifications/translations/push/ping/ru.txt | 4 + notifications/translations/push/ping/sd.txt | 4 + notifications/translations/push/ping/sk.txt | 4 + notifications/translations/push/ping/sl.txt | 4 + notifications/translations/push/ping/sq.txt | 4 + notifications/translations/push/ping/su.txt | 4 + notifications/translations/push/ping/sv.txt | 4 + notifications/translations/push/ping/ta.txt | 4 + notifications/translations/push/ping/te.txt | 4 + notifications/translations/push/ping/th.txt | 4 + notifications/translations/push/ping/tr.txt | 4 + notifications/translations/push/ping/uk.txt | 4 + notifications/translations/push/ping/ur.txt | 4 + notifications/translations/push/ping/vi.txt | 4 + notifications/translations/push/ping/yo.txt | 4 + .../translations/push/ping/zh-hans.txt | 4 + .../translations/push/ping/zh-hant.txt | 4 + notifications/translations/push/ping/zu.txt | 4 + .../translations/push/role_changed/af.txt | 4 + .../translations/push/role_changed/am.txt | 4 + .../translations/push/role_changed/ar.txt | 4 + .../translations/push/role_changed/az.txt | 4 + .../translations/push/role_changed/bg.txt | 4 + .../translations/push/role_changed/bn.txt | 4 + .../translations/push/role_changed/cs.txt | 4 + .../translations/push/role_changed/de.txt | 4 + .../translations/push/role_changed/en.txt | 4 + .../translations/push/role_changed/es.txt | 4 + .../translations/push/role_changed/fa.txt | 4 + .../translations/push/role_changed/fil.txt | 4 + .../translations/push/role_changed/fr.txt | 4 + .../translations/push/role_changed/ge.txt | 4 + .../translations/push/role_changed/gu.txt | 4 + .../translations/push/role_changed/he.txt | 4 + .../translations/push/role_changed/hi.txt | 4 + .../translations/push/role_changed/hu.txt | 4 + .../translations/push/role_changed/id.txt | 4 + .../translations/push/role_changed/it.txt | 4 + .../translations/push/role_changed/ja.txt | 4 + .../translations/push/role_changed/jv.txt | 4 + .../translations/push/role_changed/kn.txt | 4 + .../translations/push/role_changed/ko.txt | 4 + .../translations/push/role_changed/mr.txt | 4 + .../translations/push/role_changed/ms.txt | 4 + .../translations/push/role_changed/no.txt | 4 + .../translations/push/role_changed/pa.txt | 4 + .../translations/push/role_changed/pl.txt | 4 + .../translations/push/role_changed/ps.txt | 4 + .../translations/push/role_changed/pt.txt | 4 + .../translations/push/role_changed/ro.txt | 4 + .../translations/push/role_changed/ru.txt | 4 + .../translations/push/role_changed/sd.txt | 4 + .../translations/push/role_changed/sk.txt | 4 + .../translations/push/role_changed/sl.txt | 4 + .../translations/push/role_changed/sq.txt | 4 + .../translations/push/role_changed/su.txt | 4 + .../translations/push/role_changed/sv.txt | 4 + .../translations/push/role_changed/ta.txt | 4 + .../translations/push/role_changed/te.txt | 4 + .../translations/push/role_changed/th.txt | 4 + .../translations/push/role_changed/tr.txt | 4 + .../translations/push/role_changed/uk.txt | 4 + .../translations/push/role_changed/ur.txt | 4 + .../translations/push/role_changed/vi.txt | 4 + .../translations/push/role_changed/yo.txt | 4 + .../push/role_changed/zh-hans.txt | 4 + .../push/role_changed/zh-hant.txt | 4 + .../translations/push/role_changed/zu.txt | 4 + .../push/social_badge_unlocked/af.txt | 4 + .../push/social_badge_unlocked/am.txt | 4 + .../push/social_badge_unlocked/ar.txt | 4 + .../push/social_badge_unlocked/az.txt | 4 + .../push/social_badge_unlocked/bg.txt | 4 + .../push/social_badge_unlocked/bn.txt | 4 + .../push/social_badge_unlocked/cs.txt | 4 + .../push/social_badge_unlocked/de.txt | 4 + .../push/social_badge_unlocked/en.txt | 4 + .../push/social_badge_unlocked/es.txt | 4 + .../push/social_badge_unlocked/fa.txt | 4 + .../push/social_badge_unlocked/fil.txt | 4 + .../push/social_badge_unlocked/fr.txt | 4 + .../push/social_badge_unlocked/ge.txt | 4 + .../push/social_badge_unlocked/gu.txt | 4 + .../push/social_badge_unlocked/he.txt | 4 + .../push/social_badge_unlocked/hi.txt | 4 + .../push/social_badge_unlocked/hu.txt | 4 + .../push/social_badge_unlocked/id.txt | 4 + .../push/social_badge_unlocked/it.txt | 4 + .../push/social_badge_unlocked/ja.txt | 4 + .../push/social_badge_unlocked/jv.txt | 4 + .../push/social_badge_unlocked/kn.txt | 4 + .../push/social_badge_unlocked/ko.txt | 4 + .../push/social_badge_unlocked/mr.txt | 4 + .../push/social_badge_unlocked/ms.txt | 4 + .../push/social_badge_unlocked/no.txt | 4 + .../push/social_badge_unlocked/pa.txt | 4 + .../push/social_badge_unlocked/pl.txt | 4 + .../push/social_badge_unlocked/ps.txt | 4 + .../push/social_badge_unlocked/pt.txt | 4 + .../push/social_badge_unlocked/ro.txt | 4 + .../push/social_badge_unlocked/ru.txt | 4 + .../push/social_badge_unlocked/sd.txt | 4 + .../push/social_badge_unlocked/sk.txt | 4 + .../push/social_badge_unlocked/sl.txt | 4 + .../push/social_badge_unlocked/sq.txt | 4 + .../push/social_badge_unlocked/su.txt | 4 + .../push/social_badge_unlocked/sv.txt | 4 + .../push/social_badge_unlocked/ta.txt | 4 + .../push/social_badge_unlocked/te.txt | 4 + .../push/social_badge_unlocked/th.txt | 4 + .../push/social_badge_unlocked/tr.txt | 4 + .../push/social_badge_unlocked/uk.txt | 4 + .../push/social_badge_unlocked/ur.txt | 4 + .../push/social_badge_unlocked/vi.txt | 4 + .../push/social_badge_unlocked/yo.txt | 4 + .../push/social_badge_unlocked/zh-hans.txt | 4 + .../push/social_badge_unlocked/zh-hant.txt | 4 + .../push/social_badge_unlocked/zu.txt | 4 + notifications/users.go | 419 +++++++++ 628 files changed, 14182 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/workflows/CICD.yaml create mode 100644 .gitignore create mode 100644 .golangci.yml create mode 100644 LICENSE.header create mode 100644 LICENSE.txt create mode 100644 Makefile create mode 100644 README.md create mode 100644 analytics/.testdata/application.yaml create mode 100644 analytics/DDL.lua create mode 100644 analytics/analytics.go create mode 100644 analytics/contract.go create mode 100644 application.yaml create mode 100644 cmd/husky-pack/.testdata/application.yaml create mode 100644 cmd/husky-pack/.testdata/expected_swagger.json create mode 100644 cmd/husky-pack/.testdata/localhost.crt create mode 100644 cmd/husky-pack/.testdata/localhost.key create mode 100644 cmd/husky-pack/Dockerfile create mode 100644 cmd/husky-pack/api/docs.go create mode 100644 cmd/husky-pack/api/swagger.json create mode 100644 cmd/husky-pack/api/swagger.yaml create mode 100644 cmd/husky-pack/contract.go create mode 100644 cmd/husky-pack/husky_pack.go create mode 100644 cmd/husky-pack/news.go create mode 100644 cmd/husky-pack/notifications.go create mode 100644 cmd/husky/.testdata/application.yaml create mode 100644 cmd/husky/.testdata/expected_swagger.json create mode 100644 cmd/husky/.testdata/localhost.crt create mode 100644 cmd/husky/.testdata/localhost.key create mode 100644 cmd/husky/Dockerfile create mode 100644 cmd/husky/api/docs.go create mode 100644 cmd/husky/api/swagger.json create mode 100644 cmd/husky/api/swagger.yaml create mode 100644 cmd/husky/contract.go create mode 100644 cmd/husky/husky.go create mode 100644 cmd/husky/news.go create mode 100644 cmd/husky/notifications.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 local.go create mode 100644 news/.testdata/application.yaml create mode 100644 news/.testdata/profilePic1.jpg create mode 100644 news/.testdata/profilePic2.png create mode 100644 news/DDL.lua create mode 100644 news/contract.go create mode 100644 news/fixture/contract.go create mode 100644 news/fixture/fixture.go create mode 100644 news/news.go create mode 100644 news/news_create.go create mode 100644 news/news_delete.go create mode 100644 news/news_get.go create mode 100644 news/news_modify.go create mode 100644 news/seeding/seeding.go create mode 100644 news/tags.go create mode 100644 notifications/.testdata/application.yaml create mode 100644 notifications/.testdata/profilePic1.jpg create mode 100644 notifications/.testdata/profilePic2.png create mode 100644 notifications/DDL.lua create mode 100644 notifications/analytics.go create mode 100644 notifications/contract.go create mode 100644 notifications/email_notifications.go create mode 100644 notifications/fixture/contract.go create mode 100644 notifications/fixture/fixture.go create mode 100644 notifications/inapp_notifications.go create mode 100644 notifications/notification_type_adoption_changed.go create mode 100644 notifications/notification_type_badge_unlocked.go create mode 100644 notifications/notification_type_daily_bonus.go create mode 100644 notifications/notification_type_day_off.go create mode 100644 notifications/notification_type_level_changed.go create mode 100644 notifications/notification_type_new_contact.go create mode 100644 notifications/notification_type_new_referral.go create mode 100644 notifications/notification_type_news_added.go create mode 100644 notifications/notification_type_ping.go create mode 100644 notifications/notification_type_role_changed.go create mode 100644 notifications/notifications.go create mode 100644 notifications/push_notifications.go create mode 100644 notifications/seeding/seeding.go create mode 100644 notifications/translations/push/adoption_changed/af.txt create mode 100644 notifications/translations/push/adoption_changed/am.txt create mode 100644 notifications/translations/push/adoption_changed/ar.txt create mode 100644 notifications/translations/push/adoption_changed/az.txt create mode 100644 notifications/translations/push/adoption_changed/bg.txt create mode 100644 notifications/translations/push/adoption_changed/bn.txt create mode 100644 notifications/translations/push/adoption_changed/cs.txt create mode 100644 notifications/translations/push/adoption_changed/de.txt create mode 100644 notifications/translations/push/adoption_changed/en.txt create mode 100644 notifications/translations/push/adoption_changed/es.txt create mode 100644 notifications/translations/push/adoption_changed/fa.txt create mode 100644 notifications/translations/push/adoption_changed/fil.txt create mode 100644 notifications/translations/push/adoption_changed/fr.txt create mode 100644 notifications/translations/push/adoption_changed/ge.txt create mode 100644 notifications/translations/push/adoption_changed/gu.txt create mode 100644 notifications/translations/push/adoption_changed/he.txt create mode 100644 notifications/translations/push/adoption_changed/hi.txt create mode 100644 notifications/translations/push/adoption_changed/hu.txt create mode 100644 notifications/translations/push/adoption_changed/id.txt create mode 100644 notifications/translations/push/adoption_changed/it.txt create mode 100644 notifications/translations/push/adoption_changed/ja.txt create mode 100644 notifications/translations/push/adoption_changed/jv.txt create mode 100644 notifications/translations/push/adoption_changed/kn.txt create mode 100644 notifications/translations/push/adoption_changed/ko.txt create mode 100644 notifications/translations/push/adoption_changed/mr.txt create mode 100644 notifications/translations/push/adoption_changed/ms.txt create mode 100644 notifications/translations/push/adoption_changed/no.txt create mode 100644 notifications/translations/push/adoption_changed/pa.txt create mode 100644 notifications/translations/push/adoption_changed/pl.txt create mode 100644 notifications/translations/push/adoption_changed/ps.txt create mode 100644 notifications/translations/push/adoption_changed/pt.txt create mode 100644 notifications/translations/push/adoption_changed/ro.txt create mode 100644 notifications/translations/push/adoption_changed/ru.txt create mode 100644 notifications/translations/push/adoption_changed/sd.txt create mode 100644 notifications/translations/push/adoption_changed/sk.txt create mode 100644 notifications/translations/push/adoption_changed/sl.txt create mode 100644 notifications/translations/push/adoption_changed/sq.txt create mode 100644 notifications/translations/push/adoption_changed/su.txt create mode 100644 notifications/translations/push/adoption_changed/sv.txt create mode 100644 notifications/translations/push/adoption_changed/ta.txt create mode 100644 notifications/translations/push/adoption_changed/te.txt create mode 100644 notifications/translations/push/adoption_changed/th.txt create mode 100644 notifications/translations/push/adoption_changed/tr.txt create mode 100644 notifications/translations/push/adoption_changed/uk.txt create mode 100644 notifications/translations/push/adoption_changed/ur.txt create mode 100644 notifications/translations/push/adoption_changed/vi.txt create mode 100644 notifications/translations/push/adoption_changed/yo.txt create mode 100644 notifications/translations/push/adoption_changed/zh-hans.txt create mode 100644 notifications/translations/push/adoption_changed/zh-hant.txt create mode 100644 notifications/translations/push/adoption_changed/zu.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/af.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/am.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ar.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/az.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/bg.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/bn.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/cs.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/de.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/en.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/es.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/fa.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/fil.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/fr.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ge.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/gu.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/he.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/hi.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/hu.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/id.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/it.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ja.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/jv.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/kn.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ko.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/mr.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ms.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/no.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/pa.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/pl.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ps.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/pt.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ro.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ru.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/sd.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/sk.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/sl.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/sq.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/su.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/sv.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ta.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/te.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/th.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/tr.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/uk.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/ur.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/vi.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/yo.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/zh-hans.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/zh-hant.txt create mode 100644 notifications/translations/push/coin_badge_unlocked/zu.txt create mode 100644 notifications/translations/push/daily_bonus/af.txt create mode 100644 notifications/translations/push/daily_bonus/am.txt create mode 100644 notifications/translations/push/daily_bonus/ar.txt create mode 100644 notifications/translations/push/daily_bonus/az.txt create mode 100644 notifications/translations/push/daily_bonus/bg.txt create mode 100644 notifications/translations/push/daily_bonus/bn.txt create mode 100644 notifications/translations/push/daily_bonus/cs.txt create mode 100644 notifications/translations/push/daily_bonus/de.txt create mode 100644 notifications/translations/push/daily_bonus/en.txt create mode 100644 notifications/translations/push/daily_bonus/es.txt create mode 100644 notifications/translations/push/daily_bonus/fa.txt create mode 100644 notifications/translations/push/daily_bonus/fil.txt create mode 100644 notifications/translations/push/daily_bonus/fr.txt create mode 100644 notifications/translations/push/daily_bonus/ge.txt create mode 100644 notifications/translations/push/daily_bonus/gu.txt create mode 100644 notifications/translations/push/daily_bonus/he.txt create mode 100644 notifications/translations/push/daily_bonus/hi.txt create mode 100644 notifications/translations/push/daily_bonus/hu.txt create mode 100644 notifications/translations/push/daily_bonus/id.txt create mode 100644 notifications/translations/push/daily_bonus/it.txt create mode 100644 notifications/translations/push/daily_bonus/ja.txt create mode 100644 notifications/translations/push/daily_bonus/jv.txt create mode 100644 notifications/translations/push/daily_bonus/kn.txt create mode 100644 notifications/translations/push/daily_bonus/ko.txt create mode 100644 notifications/translations/push/daily_bonus/mr.txt create mode 100644 notifications/translations/push/daily_bonus/ms.txt create mode 100644 notifications/translations/push/daily_bonus/no.txt create mode 100644 notifications/translations/push/daily_bonus/pa.txt create mode 100644 notifications/translations/push/daily_bonus/pl.txt create mode 100644 notifications/translations/push/daily_bonus/ps.txt create mode 100644 notifications/translations/push/daily_bonus/pt.txt create mode 100644 notifications/translations/push/daily_bonus/ro.txt create mode 100644 notifications/translations/push/daily_bonus/ru.txt create mode 100644 notifications/translations/push/daily_bonus/sd.txt create mode 100644 notifications/translations/push/daily_bonus/sk.txt create mode 100644 notifications/translations/push/daily_bonus/sl.txt create mode 100644 notifications/translations/push/daily_bonus/sq.txt create mode 100644 notifications/translations/push/daily_bonus/su.txt create mode 100644 notifications/translations/push/daily_bonus/sv.txt create mode 100644 notifications/translations/push/daily_bonus/ta.txt create mode 100644 notifications/translations/push/daily_bonus/te.txt create mode 100644 notifications/translations/push/daily_bonus/th.txt create mode 100644 notifications/translations/push/daily_bonus/tr.txt create mode 100644 notifications/translations/push/daily_bonus/uk.txt create mode 100644 notifications/translations/push/daily_bonus/ur.txt create mode 100644 notifications/translations/push/daily_bonus/vi.txt create mode 100644 notifications/translations/push/daily_bonus/yo.txt create mode 100644 notifications/translations/push/daily_bonus/zh-hans.txt create mode 100644 notifications/translations/push/daily_bonus/zh-hant.txt create mode 100644 notifications/translations/push/daily_bonus/zu.txt create mode 100644 notifications/translations/push/level_badge_unlocked/af.txt create mode 100644 notifications/translations/push/level_badge_unlocked/am.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ar.txt create mode 100644 notifications/translations/push/level_badge_unlocked/az.txt create mode 100644 notifications/translations/push/level_badge_unlocked/bg.txt create mode 100644 notifications/translations/push/level_badge_unlocked/bn.txt create mode 100644 notifications/translations/push/level_badge_unlocked/cs.txt create mode 100644 notifications/translations/push/level_badge_unlocked/de.txt create mode 100644 notifications/translations/push/level_badge_unlocked/en.txt create mode 100644 notifications/translations/push/level_badge_unlocked/es.txt create mode 100644 notifications/translations/push/level_badge_unlocked/fa.txt create mode 100644 notifications/translations/push/level_badge_unlocked/fil.txt create mode 100644 notifications/translations/push/level_badge_unlocked/fr.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ge.txt create mode 100644 notifications/translations/push/level_badge_unlocked/gu.txt create mode 100644 notifications/translations/push/level_badge_unlocked/he.txt create mode 100644 notifications/translations/push/level_badge_unlocked/hi.txt create mode 100644 notifications/translations/push/level_badge_unlocked/hu.txt create mode 100644 notifications/translations/push/level_badge_unlocked/id.txt create mode 100644 notifications/translations/push/level_badge_unlocked/it.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ja.txt create mode 100644 notifications/translations/push/level_badge_unlocked/jv.txt create mode 100644 notifications/translations/push/level_badge_unlocked/kn.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ko.txt create mode 100644 notifications/translations/push/level_badge_unlocked/mr.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ms.txt create mode 100644 notifications/translations/push/level_badge_unlocked/no.txt create mode 100644 notifications/translations/push/level_badge_unlocked/pa.txt create mode 100644 notifications/translations/push/level_badge_unlocked/pl.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ps.txt create mode 100644 notifications/translations/push/level_badge_unlocked/pt.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ro.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ru.txt create mode 100644 notifications/translations/push/level_badge_unlocked/sd.txt create mode 100644 notifications/translations/push/level_badge_unlocked/sk.txt create mode 100644 notifications/translations/push/level_badge_unlocked/sl.txt create mode 100644 notifications/translations/push/level_badge_unlocked/sq.txt create mode 100644 notifications/translations/push/level_badge_unlocked/su.txt create mode 100644 notifications/translations/push/level_badge_unlocked/sv.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ta.txt create mode 100644 notifications/translations/push/level_badge_unlocked/te.txt create mode 100644 notifications/translations/push/level_badge_unlocked/th.txt create mode 100644 notifications/translations/push/level_badge_unlocked/tr.txt create mode 100644 notifications/translations/push/level_badge_unlocked/uk.txt create mode 100644 notifications/translations/push/level_badge_unlocked/ur.txt create mode 100644 notifications/translations/push/level_badge_unlocked/vi.txt create mode 100644 notifications/translations/push/level_badge_unlocked/yo.txt create mode 100644 notifications/translations/push/level_badge_unlocked/zh-hans.txt create mode 100644 notifications/translations/push/level_badge_unlocked/zh-hant.txt create mode 100644 notifications/translations/push/level_badge_unlocked/zu.txt create mode 100644 notifications/translations/push/level_changed/af.txt create mode 100644 notifications/translations/push/level_changed/am.txt create mode 100644 notifications/translations/push/level_changed/ar.txt create mode 100644 notifications/translations/push/level_changed/az.txt create mode 100644 notifications/translations/push/level_changed/bg.txt create mode 100644 notifications/translations/push/level_changed/bn.txt create mode 100644 notifications/translations/push/level_changed/cs.txt create mode 100644 notifications/translations/push/level_changed/de.txt create mode 100644 notifications/translations/push/level_changed/en.txt create mode 100644 notifications/translations/push/level_changed/es.txt create mode 100644 notifications/translations/push/level_changed/fa.txt create mode 100644 notifications/translations/push/level_changed/fil.txt create mode 100644 notifications/translations/push/level_changed/fr.txt create mode 100644 notifications/translations/push/level_changed/ge.txt create mode 100644 notifications/translations/push/level_changed/gu.txt create mode 100644 notifications/translations/push/level_changed/he.txt create mode 100644 notifications/translations/push/level_changed/hi.txt create mode 100644 notifications/translations/push/level_changed/hu.txt create mode 100644 notifications/translations/push/level_changed/id.txt create mode 100644 notifications/translations/push/level_changed/it.txt create mode 100644 notifications/translations/push/level_changed/ja.txt create mode 100644 notifications/translations/push/level_changed/jv.txt create mode 100644 notifications/translations/push/level_changed/kn.txt create mode 100644 notifications/translations/push/level_changed/ko.txt create mode 100644 notifications/translations/push/level_changed/mr.txt create mode 100644 notifications/translations/push/level_changed/ms.txt create mode 100644 notifications/translations/push/level_changed/no.txt create mode 100644 notifications/translations/push/level_changed/pa.txt create mode 100644 notifications/translations/push/level_changed/pl.txt create mode 100644 notifications/translations/push/level_changed/ps.txt create mode 100644 notifications/translations/push/level_changed/pt.txt create mode 100644 notifications/translations/push/level_changed/ro.txt create mode 100644 notifications/translations/push/level_changed/ru.txt create mode 100644 notifications/translations/push/level_changed/sd.txt create mode 100644 notifications/translations/push/level_changed/sk.txt create mode 100644 notifications/translations/push/level_changed/sl.txt create mode 100644 notifications/translations/push/level_changed/sq.txt create mode 100644 notifications/translations/push/level_changed/su.txt create mode 100644 notifications/translations/push/level_changed/sv.txt create mode 100644 notifications/translations/push/level_changed/ta.txt create mode 100644 notifications/translations/push/level_changed/te.txt create mode 100644 notifications/translations/push/level_changed/th.txt create mode 100644 notifications/translations/push/level_changed/tr.txt create mode 100644 notifications/translations/push/level_changed/uk.txt create mode 100644 notifications/translations/push/level_changed/ur.txt create mode 100644 notifications/translations/push/level_changed/vi.txt create mode 100644 notifications/translations/push/level_changed/yo.txt create mode 100644 notifications/translations/push/level_changed/zh-hans.txt create mode 100644 notifications/translations/push/level_changed/zh-hant.txt create mode 100644 notifications/translations/push/level_changed/zu.txt create mode 100644 notifications/translations/push/new_contact/af.txt create mode 100644 notifications/translations/push/new_contact/am.txt create mode 100644 notifications/translations/push/new_contact/ar.txt create mode 100644 notifications/translations/push/new_contact/az.txt create mode 100644 notifications/translations/push/new_contact/bg.txt create mode 100644 notifications/translations/push/new_contact/bn.txt create mode 100644 notifications/translations/push/new_contact/cs.txt create mode 100644 notifications/translations/push/new_contact/de.txt create mode 100644 notifications/translations/push/new_contact/en.txt create mode 100644 notifications/translations/push/new_contact/es.txt create mode 100644 notifications/translations/push/new_contact/fa.txt create mode 100644 notifications/translations/push/new_contact/fil.txt create mode 100644 notifications/translations/push/new_contact/fr.txt create mode 100644 notifications/translations/push/new_contact/ge.txt create mode 100644 notifications/translations/push/new_contact/gu.txt create mode 100644 notifications/translations/push/new_contact/he.txt create mode 100644 notifications/translations/push/new_contact/hi.txt create mode 100644 notifications/translations/push/new_contact/hu.txt create mode 100644 notifications/translations/push/new_contact/id.txt create mode 100644 notifications/translations/push/new_contact/it.txt create mode 100644 notifications/translations/push/new_contact/ja.txt create mode 100644 notifications/translations/push/new_contact/jv.txt create mode 100644 notifications/translations/push/new_contact/kn.txt create mode 100644 notifications/translations/push/new_contact/ko.txt create mode 100644 notifications/translations/push/new_contact/mr.txt create mode 100644 notifications/translations/push/new_contact/ms.txt create mode 100644 notifications/translations/push/new_contact/no.txt create mode 100644 notifications/translations/push/new_contact/pa.txt create mode 100644 notifications/translations/push/new_contact/pl.txt create mode 100644 notifications/translations/push/new_contact/ps.txt create mode 100644 notifications/translations/push/new_contact/pt.txt create mode 100644 notifications/translations/push/new_contact/ro.txt create mode 100644 notifications/translations/push/new_contact/ru.txt create mode 100644 notifications/translations/push/new_contact/sd.txt create mode 100644 notifications/translations/push/new_contact/sk.txt create mode 100644 notifications/translations/push/new_contact/sl.txt create mode 100644 notifications/translations/push/new_contact/sq.txt create mode 100644 notifications/translations/push/new_contact/su.txt create mode 100644 notifications/translations/push/new_contact/sv.txt create mode 100644 notifications/translations/push/new_contact/ta.txt create mode 100644 notifications/translations/push/new_contact/te.txt create mode 100644 notifications/translations/push/new_contact/th.txt create mode 100644 notifications/translations/push/new_contact/tr.txt create mode 100644 notifications/translations/push/new_contact/uk.txt create mode 100644 notifications/translations/push/new_contact/ur.txt create mode 100644 notifications/translations/push/new_contact/vi.txt create mode 100644 notifications/translations/push/new_contact/yo.txt create mode 100644 notifications/translations/push/new_contact/zh-hans.txt create mode 100644 notifications/translations/push/new_contact/zh-hant.txt create mode 100644 notifications/translations/push/new_contact/zu.txt create mode 100644 notifications/translations/push/new_referral/af.txt create mode 100644 notifications/translations/push/new_referral/am.txt create mode 100644 notifications/translations/push/new_referral/ar.txt create mode 100644 notifications/translations/push/new_referral/az.txt create mode 100644 notifications/translations/push/new_referral/bg.txt create mode 100644 notifications/translations/push/new_referral/bn.txt create mode 100644 notifications/translations/push/new_referral/cs.txt create mode 100644 notifications/translations/push/new_referral/de.txt create mode 100644 notifications/translations/push/new_referral/en.txt create mode 100644 notifications/translations/push/new_referral/es.txt create mode 100644 notifications/translations/push/new_referral/fa.txt create mode 100644 notifications/translations/push/new_referral/fil.txt create mode 100644 notifications/translations/push/new_referral/fr.txt create mode 100644 notifications/translations/push/new_referral/ge.txt create mode 100644 notifications/translations/push/new_referral/gu.txt create mode 100644 notifications/translations/push/new_referral/he.txt create mode 100644 notifications/translations/push/new_referral/hi.txt create mode 100644 notifications/translations/push/new_referral/hu.txt create mode 100644 notifications/translations/push/new_referral/id.txt create mode 100644 notifications/translations/push/new_referral/it.txt create mode 100644 notifications/translations/push/new_referral/ja.txt create mode 100644 notifications/translations/push/new_referral/jv.txt create mode 100644 notifications/translations/push/new_referral/kn.txt create mode 100644 notifications/translations/push/new_referral/ko.txt create mode 100644 notifications/translations/push/new_referral/mr.txt create mode 100644 notifications/translations/push/new_referral/ms.txt create mode 100644 notifications/translations/push/new_referral/no.txt create mode 100644 notifications/translations/push/new_referral/pa.txt create mode 100644 notifications/translations/push/new_referral/pl.txt create mode 100644 notifications/translations/push/new_referral/ps.txt create mode 100644 notifications/translations/push/new_referral/pt.txt create mode 100644 notifications/translations/push/new_referral/ro.txt create mode 100644 notifications/translations/push/new_referral/ru.txt create mode 100644 notifications/translations/push/new_referral/sd.txt create mode 100644 notifications/translations/push/new_referral/sk.txt create mode 100644 notifications/translations/push/new_referral/sl.txt create mode 100644 notifications/translations/push/new_referral/sq.txt create mode 100644 notifications/translations/push/new_referral/su.txt create mode 100644 notifications/translations/push/new_referral/sv.txt create mode 100644 notifications/translations/push/new_referral/ta.txt create mode 100644 notifications/translations/push/new_referral/te.txt create mode 100644 notifications/translations/push/new_referral/th.txt create mode 100644 notifications/translations/push/new_referral/tr.txt create mode 100644 notifications/translations/push/new_referral/uk.txt create mode 100644 notifications/translations/push/new_referral/ur.txt create mode 100644 notifications/translations/push/new_referral/vi.txt create mode 100644 notifications/translations/push/new_referral/yo.txt create mode 100644 notifications/translations/push/new_referral/zh-hans.txt create mode 100644 notifications/translations/push/new_referral/zh-hant.txt create mode 100644 notifications/translations/push/new_referral/zu.txt create mode 100644 notifications/translations/push/news_added/af.txt create mode 100644 notifications/translations/push/news_added/am.txt create mode 100644 notifications/translations/push/news_added/ar.txt create mode 100644 notifications/translations/push/news_added/az.txt create mode 100644 notifications/translations/push/news_added/bg.txt create mode 100644 notifications/translations/push/news_added/bn.txt create mode 100644 notifications/translations/push/news_added/cs.txt create mode 100644 notifications/translations/push/news_added/de.txt create mode 100644 notifications/translations/push/news_added/en.txt create mode 100644 notifications/translations/push/news_added/es.txt create mode 100644 notifications/translations/push/news_added/fa.txt create mode 100644 notifications/translations/push/news_added/fil.txt create mode 100644 notifications/translations/push/news_added/fr.txt create mode 100644 notifications/translations/push/news_added/ge.txt create mode 100644 notifications/translations/push/news_added/gu.txt create mode 100644 notifications/translations/push/news_added/he.txt create mode 100644 notifications/translations/push/news_added/hi.txt create mode 100644 notifications/translations/push/news_added/hu.txt create mode 100644 notifications/translations/push/news_added/id.txt create mode 100644 notifications/translations/push/news_added/it.txt create mode 100644 notifications/translations/push/news_added/ja.txt create mode 100644 notifications/translations/push/news_added/jv.txt create mode 100644 notifications/translations/push/news_added/kn.txt create mode 100644 notifications/translations/push/news_added/ko.txt create mode 100644 notifications/translations/push/news_added/mr.txt create mode 100644 notifications/translations/push/news_added/ms.txt create mode 100644 notifications/translations/push/news_added/no.txt create mode 100644 notifications/translations/push/news_added/pa.txt create mode 100644 notifications/translations/push/news_added/pl.txt create mode 100644 notifications/translations/push/news_added/ps.txt create mode 100644 notifications/translations/push/news_added/pt.txt create mode 100644 notifications/translations/push/news_added/ro.txt create mode 100644 notifications/translations/push/news_added/ru.txt create mode 100644 notifications/translations/push/news_added/sd.txt create mode 100644 notifications/translations/push/news_added/sk.txt create mode 100644 notifications/translations/push/news_added/sl.txt create mode 100644 notifications/translations/push/news_added/sq.txt create mode 100644 notifications/translations/push/news_added/su.txt create mode 100644 notifications/translations/push/news_added/sv.txt create mode 100644 notifications/translations/push/news_added/ta.txt create mode 100644 notifications/translations/push/news_added/te.txt create mode 100644 notifications/translations/push/news_added/th.txt create mode 100644 notifications/translations/push/news_added/tr.txt create mode 100644 notifications/translations/push/news_added/uk.txt create mode 100644 notifications/translations/push/news_added/ur.txt create mode 100644 notifications/translations/push/news_added/vi.txt create mode 100644 notifications/translations/push/news_added/yo.txt create mode 100644 notifications/translations/push/news_added/zh-hans.txt create mode 100644 notifications/translations/push/news_added/zh-hant.txt create mode 100644 notifications/translations/push/news_added/zu.txt create mode 100644 notifications/translations/push/ping/af.txt create mode 100644 notifications/translations/push/ping/am.txt create mode 100644 notifications/translations/push/ping/ar.txt create mode 100644 notifications/translations/push/ping/az.txt create mode 100644 notifications/translations/push/ping/bg.txt create mode 100644 notifications/translations/push/ping/bn.txt create mode 100644 notifications/translations/push/ping/cs.txt create mode 100644 notifications/translations/push/ping/de.txt create mode 100644 notifications/translations/push/ping/en.txt create mode 100644 notifications/translations/push/ping/es.txt create mode 100644 notifications/translations/push/ping/fa.txt create mode 100644 notifications/translations/push/ping/fil.txt create mode 100644 notifications/translations/push/ping/fr.txt create mode 100644 notifications/translations/push/ping/ge.txt create mode 100644 notifications/translations/push/ping/gu.txt create mode 100644 notifications/translations/push/ping/he.txt create mode 100644 notifications/translations/push/ping/hi.txt create mode 100644 notifications/translations/push/ping/hu.txt create mode 100644 notifications/translations/push/ping/id.txt create mode 100644 notifications/translations/push/ping/it.txt create mode 100644 notifications/translations/push/ping/ja.txt create mode 100644 notifications/translations/push/ping/jv.txt create mode 100644 notifications/translations/push/ping/kn.txt create mode 100644 notifications/translations/push/ping/ko.txt create mode 100644 notifications/translations/push/ping/mr.txt create mode 100644 notifications/translations/push/ping/ms.txt create mode 100644 notifications/translations/push/ping/no.txt create mode 100644 notifications/translations/push/ping/pa.txt create mode 100644 notifications/translations/push/ping/pl.txt create mode 100644 notifications/translations/push/ping/ps.txt create mode 100644 notifications/translations/push/ping/pt.txt create mode 100644 notifications/translations/push/ping/ro.txt create mode 100644 notifications/translations/push/ping/ru.txt create mode 100644 notifications/translations/push/ping/sd.txt create mode 100644 notifications/translations/push/ping/sk.txt create mode 100644 notifications/translations/push/ping/sl.txt create mode 100644 notifications/translations/push/ping/sq.txt create mode 100644 notifications/translations/push/ping/su.txt create mode 100644 notifications/translations/push/ping/sv.txt create mode 100644 notifications/translations/push/ping/ta.txt create mode 100644 notifications/translations/push/ping/te.txt create mode 100644 notifications/translations/push/ping/th.txt create mode 100644 notifications/translations/push/ping/tr.txt create mode 100644 notifications/translations/push/ping/uk.txt create mode 100644 notifications/translations/push/ping/ur.txt create mode 100644 notifications/translations/push/ping/vi.txt create mode 100644 notifications/translations/push/ping/yo.txt create mode 100644 notifications/translations/push/ping/zh-hans.txt create mode 100644 notifications/translations/push/ping/zh-hant.txt create mode 100644 notifications/translations/push/ping/zu.txt create mode 100644 notifications/translations/push/role_changed/af.txt create mode 100644 notifications/translations/push/role_changed/am.txt create mode 100644 notifications/translations/push/role_changed/ar.txt create mode 100644 notifications/translations/push/role_changed/az.txt create mode 100644 notifications/translations/push/role_changed/bg.txt create mode 100644 notifications/translations/push/role_changed/bn.txt create mode 100644 notifications/translations/push/role_changed/cs.txt create mode 100644 notifications/translations/push/role_changed/de.txt create mode 100644 notifications/translations/push/role_changed/en.txt create mode 100644 notifications/translations/push/role_changed/es.txt create mode 100644 notifications/translations/push/role_changed/fa.txt create mode 100644 notifications/translations/push/role_changed/fil.txt create mode 100644 notifications/translations/push/role_changed/fr.txt create mode 100644 notifications/translations/push/role_changed/ge.txt create mode 100644 notifications/translations/push/role_changed/gu.txt create mode 100644 notifications/translations/push/role_changed/he.txt create mode 100644 notifications/translations/push/role_changed/hi.txt create mode 100644 notifications/translations/push/role_changed/hu.txt create mode 100644 notifications/translations/push/role_changed/id.txt create mode 100644 notifications/translations/push/role_changed/it.txt create mode 100644 notifications/translations/push/role_changed/ja.txt create mode 100644 notifications/translations/push/role_changed/jv.txt create mode 100644 notifications/translations/push/role_changed/kn.txt create mode 100644 notifications/translations/push/role_changed/ko.txt create mode 100644 notifications/translations/push/role_changed/mr.txt create mode 100644 notifications/translations/push/role_changed/ms.txt create mode 100644 notifications/translations/push/role_changed/no.txt create mode 100644 notifications/translations/push/role_changed/pa.txt create mode 100644 notifications/translations/push/role_changed/pl.txt create mode 100644 notifications/translations/push/role_changed/ps.txt create mode 100644 notifications/translations/push/role_changed/pt.txt create mode 100644 notifications/translations/push/role_changed/ro.txt create mode 100644 notifications/translations/push/role_changed/ru.txt create mode 100644 notifications/translations/push/role_changed/sd.txt create mode 100644 notifications/translations/push/role_changed/sk.txt create mode 100644 notifications/translations/push/role_changed/sl.txt create mode 100644 notifications/translations/push/role_changed/sq.txt create mode 100644 notifications/translations/push/role_changed/su.txt create mode 100644 notifications/translations/push/role_changed/sv.txt create mode 100644 notifications/translations/push/role_changed/ta.txt create mode 100644 notifications/translations/push/role_changed/te.txt create mode 100644 notifications/translations/push/role_changed/th.txt create mode 100644 notifications/translations/push/role_changed/tr.txt create mode 100644 notifications/translations/push/role_changed/uk.txt create mode 100644 notifications/translations/push/role_changed/ur.txt create mode 100644 notifications/translations/push/role_changed/vi.txt create mode 100644 notifications/translations/push/role_changed/yo.txt create mode 100644 notifications/translations/push/role_changed/zh-hans.txt create mode 100644 notifications/translations/push/role_changed/zh-hant.txt create mode 100644 notifications/translations/push/role_changed/zu.txt create mode 100644 notifications/translations/push/social_badge_unlocked/af.txt create mode 100644 notifications/translations/push/social_badge_unlocked/am.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ar.txt create mode 100644 notifications/translations/push/social_badge_unlocked/az.txt create mode 100644 notifications/translations/push/social_badge_unlocked/bg.txt create mode 100644 notifications/translations/push/social_badge_unlocked/bn.txt create mode 100644 notifications/translations/push/social_badge_unlocked/cs.txt create mode 100644 notifications/translations/push/social_badge_unlocked/de.txt create mode 100644 notifications/translations/push/social_badge_unlocked/en.txt create mode 100644 notifications/translations/push/social_badge_unlocked/es.txt create mode 100644 notifications/translations/push/social_badge_unlocked/fa.txt create mode 100644 notifications/translations/push/social_badge_unlocked/fil.txt create mode 100644 notifications/translations/push/social_badge_unlocked/fr.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ge.txt create mode 100644 notifications/translations/push/social_badge_unlocked/gu.txt create mode 100644 notifications/translations/push/social_badge_unlocked/he.txt create mode 100644 notifications/translations/push/social_badge_unlocked/hi.txt create mode 100644 notifications/translations/push/social_badge_unlocked/hu.txt create mode 100644 notifications/translations/push/social_badge_unlocked/id.txt create mode 100644 notifications/translations/push/social_badge_unlocked/it.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ja.txt create mode 100644 notifications/translations/push/social_badge_unlocked/jv.txt create mode 100644 notifications/translations/push/social_badge_unlocked/kn.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ko.txt create mode 100644 notifications/translations/push/social_badge_unlocked/mr.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ms.txt create mode 100644 notifications/translations/push/social_badge_unlocked/no.txt create mode 100644 notifications/translations/push/social_badge_unlocked/pa.txt create mode 100644 notifications/translations/push/social_badge_unlocked/pl.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ps.txt create mode 100644 notifications/translations/push/social_badge_unlocked/pt.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ro.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ru.txt create mode 100644 notifications/translations/push/social_badge_unlocked/sd.txt create mode 100644 notifications/translations/push/social_badge_unlocked/sk.txt create mode 100644 notifications/translations/push/social_badge_unlocked/sl.txt create mode 100644 notifications/translations/push/social_badge_unlocked/sq.txt create mode 100644 notifications/translations/push/social_badge_unlocked/su.txt create mode 100644 notifications/translations/push/social_badge_unlocked/sv.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ta.txt create mode 100644 notifications/translations/push/social_badge_unlocked/te.txt create mode 100644 notifications/translations/push/social_badge_unlocked/th.txt create mode 100644 notifications/translations/push/social_badge_unlocked/tr.txt create mode 100644 notifications/translations/push/social_badge_unlocked/uk.txt create mode 100644 notifications/translations/push/social_badge_unlocked/ur.txt create mode 100644 notifications/translations/push/social_badge_unlocked/vi.txt create mode 100644 notifications/translations/push/social_badge_unlocked/yo.txt create mode 100644 notifications/translations/push/social_badge_unlocked/zh-hans.txt create mode 100644 notifications/translations/push/social_badge_unlocked/zh-hant.txt create mode 100644 notifications/translations/push/social_badge_unlocked/zu.txt create mode 100644 notifications/users.go diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..95ba11d --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @ice-blockchain/golang diff --git a/.github/workflows/CICD.yaml b/.github/workflows/CICD.yaml new file mode 100644 index 0000000..c931a27 --- /dev/null +++ b/.github/workflows/CICD.yaml @@ -0,0 +1,573 @@ +# SPDX-License-Identifier: ice License 1.0 + +name: CI/CD +on: + push: + branches: + - master + pull_request: + branches: + - master +jobs: + verify-licensing: + name: Verify Licensing + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Check License + run: make checkLicense + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + verify-latest-versions-used: + name: Verify Latest Versions + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Check If We're Up to Date with Everything + run: make checkModVersion checkIfAllDependenciesAreUpToDate + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + verify-auto-generated: + name: Verify Auto Generated + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Check Auto Generated Files + run: make checkGenerated + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + lint: + name: Lint + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: latest + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + build: + name: Build + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Build all + run: make build-all@ci/cd + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + test: + name: Test + strategy: + matrix: + package: [ "notifications", "news", "cmd/husky-pack", "cmd/husky" ] + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + # runs-on: self-hosted-ubuntu-latest-x64 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Test ${{ matrix.package }} + env: + SMS_CLIENT_USER: ${{ secrets.SMS_CLIENT_USER }} + SMS_CLIENT_PASSWORD: ${{ secrets.SMS_CLIENT_PASSWORD }} + EMAIL_CLIENT_APIKEY: ${{ secrets.EMAIL_CLIENT_APIKEY }} + PICTURE_STORAGE_ACCESS_KEY: ${{ secrets.PICTURE_STORAGE_ACCESS_KEY }} + INAPP_NOTIFICATIONS_CLIENT_KEY: ${{ secrets.INAPP_NOTIFICATIONS_CLIENT_KEY }} + INAPP_NOTIFICATIONS_CLIENT_SECRET: ${{ secrets.INAPP_NOTIFICATIONS_CLIENT_SECRET }} + INAPP_NOTIFICATIONS_CLIENT_APP_ID: ${{ secrets.INAPP_NOTIFICATIONS_CLIENT_APP_ID }} + TRANSLATIONS_CLIENT_APIKEY: ${{ secrets.TRANSLATIONS_CLIENT_APIKEY }} + GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} + GCP_FIREBASE_AUTH_API_KEY: ${{ secrets.GCP_FIREBASE_AUTH_API_KEY }} + run: | + cd ${{ matrix.package }} + make -f ${{ github.workspace }}/Makefile test@ci/cd + make -f ${{ github.workspace }}/Makefile coverage + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + husky/${{ matrix.package }} + https://github.com/ice-blockchain/${{ github.event.repository.name }} + benchmark: + name: Benchmark + strategy: + matrix: + package: [ "notifications", "news", "cmd/husky-pack", "cmd/husky" ] + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + # runs-on: self-hosted-ubuntu-latest-x64 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Benchmark ${{ matrix.package }} + env: + SMS_CLIENT_USER: ${{ secrets.SMS_CLIENT_USER }} + SMS_CLIENT_PASSWORD: ${{ secrets.SMS_CLIENT_PASSWORD }} + EMAIL_CLIENT_APIKEY: ${{ secrets.EMAIL_CLIENT_APIKEY }} + PICTURE_STORAGE_ACCESS_KEY: ${{ secrets.PICTURE_STORAGE_ACCESS_KEY }} + INAPP_NOTIFICATIONS_CLIENT_KEY: ${{ secrets.INAPP_NOTIFICATIONS_CLIENT_KEY }} + INAPP_NOTIFICATIONS_CLIENT_SECRET: ${{ secrets.INAPP_NOTIFICATIONS_CLIENT_SECRET }} + INAPP_NOTIFICATIONS_CLIENT_APP_ID: ${{ secrets.INAPP_NOTIFICATIONS_CLIENT_APP_ID }} + TRANSLATIONS_CLIENT_APIKEY: ${{ secrets.TRANSLATIONS_CLIENT_APIKEY }} + GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} + GCP_FIREBASE_AUTH_API_KEY: ${{ secrets.GCP_FIREBASE_AUTH_API_KEY }} + run: | + cd ${{ matrix.package }} + make -f ${{ github.workspace }}/Makefile benchmark@ci/cd + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + husky/${{ matrix.package }} + https://github.com/ice-blockchain/${{ github.event.repository.name }} + dockerfile: + name: Verify Dockerfile + strategy: + matrix: + service: ["husky-pack","husky"] + #those are not supported by golang docker image: linux/riscv64 + #platforms: linux/s390x,linux/arm64,linux/amd64,linux/ppc64le + #commented because build takes too damn much with the other 3 platforms (~10 mins for each!!!) and we don`t need them atm + platform: ["linux/amd64"] + if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + # runs-on: self-hosted-ubuntu-latest-x64 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - id: buildx + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + version: latest + install: true + - name: Build Image Information + id: build-image-info + env: + PR_NUMBER: ${{ github.event.number }} + SERVICE_NAME: ${{ matrix.service }} + run: | + echo "::set-output name=tags::registry.digitalocean.com/ice-io/$SERVICE_NAME:pr$PR_NUMBER" + echo "::set-output name=dockerFileLocation::./cmd/$SERVICE_NAME/Dockerfile" + - name: Build ${{ matrix.platform }} ${{ matrix.service }} docker image + uses: docker/build-push-action@v3 + with: + context: . + file: ${{ steps.build-image-info.outputs.dockerFileLocation }} + platforms: ${{ matrix.platform }} + push: false + build-args: | + SERVICE_NAME=${{ matrix.service }} + tags: ${{ steps.build-image-info.outputs.tags }} + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + ${{ matrix.service }} + PR: + needs: [verify-licensing, verify-latest-versions-used, verify-auto-generated, lint, build, test, benchmark, dockerfile] + name: PR + if: ${{ always() && (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checking if all previous jobs were successful + env: + ALL_SUCCESSFUL: ${{ contains(join(needs.*.result, ','), 'failure') == false && contains(join(needs.*.result, ','), 'cancelled') == false && contains(join(needs.*.result, ','), 'skipped') == false }} + run: | + if [ $ALL_SUCCESSFUL == 'true' ] + then + exit 0 + else + exit 1 + fi + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + release: + needs: [PR] + name: Release + outputs: + nextTag: ${{ steps.check_tag.outputs.next_tag }} + if: ${{ github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Compute new Tag version + id: compute_tag + uses: craig-day/compute-tag@v14 + with: + github_token: ${{ github.token }} + version_type: minor + - id: check_tag + name: Check new computed Tag version + run: | + NEW_TAG_VERSION=$(echo "$NEW_TAG_VERSION" | sed 's/.\{2\}$//') + if [ $NEW_TAG_VERSION == 'v1.0.0' ] + then + echo "::set-output name=next_tag::$NEW_TAG_VERSION" + else + echo "::set-output name=next_tag::${NEW_TAG_VERSION}.0" + fi + env: + NEW_TAG_VERSION: ${{ steps.compute_tag.outputs.next_tag }} + - name: Create Release + id: create_release + #TODO This needs to be replaced ASAP! https://github.com/actions/create-release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.check_tag.outputs.next_tag }} + release_name: ${{ steps.check_tag.outputs.next_tag }} + draft: false + prerelease: false + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://github.com/ice-blockchain/${{ github.event.repository.name }} + push_docker: + needs: [ release ] + name: Push Docker + strategy: + matrix: + service: ["husky-pack","husky"] + #those are not supported by golang docker image: linux/riscv64 + #platforms: linux/s390x,linux/arm64,linux/amd64,linux/ppc64le + #commented because build takes too damn much with the other 3 platforms (~10 mins for each!!!) and we don`t need them atm + platform: ["linux/amd64"] + outputs: + nextTag: ${{ steps.build-image-info.outputs.nextTag }} + if: ${{ github.event_name == 'push' }} + runs-on: ubuntu-latest + # runs-on: self-hosted-ubuntu-latest-x64 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Find latest Go Version + id: findLatestGoVersion + run: | + LATEST_GO_VERSION=$(make latestGoVersion) + echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION" + - name: Setup GO + uses: actions/setup-go@v3 + with: + go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - id: buildx + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + version: latest + install: true + - name: Login to Digital Ocean Container Registry + uses: docker/login-action@v2 + with: + registry: registry.digitalocean.com + username: ${{ secrets.DO_CONTAINER_REGISTRY_TOKEN }} + password: ${{ secrets.DO_CONTAINER_REGISTRY_TOKEN }} + - name: Build Image Information + id: build-image-info + env: + VERSION: ${{needs.release.outputs.nextTag}} + SERVICE_NAME: ${{ matrix.service }} + run: | + LATEST_TAG=registry.digitalocean.com/ice-io/$SERVICE_NAME:latest + NEXT_VERSION_TAG=registry.digitalocean.com/ice-io/$SERVICE_NAME:$VERSION + echo "::set-output name=nextTag::$VERSION" + echo "::set-output name=tags::${LATEST_TAG},${NEXT_VERSION_TAG}" + echo "::set-output name=dockerFileLocation::./cmd/$SERVICE_NAME/Dockerfile" + - name: Build ${{ matrix.platform }} ${{ matrix.service }} docker image + uses: docker/build-push-action@v3 + with: + context: . + file: ${{ steps.build-image-info.outputs.dockerFileLocation }} + platforms: ${{ matrix.platform }} + push: true + build-args: | + SERVICE_NAME=${{ matrix.service }} + tags: ${{ steps.build-image-info.outputs.tags }} + - name: Slack Notification For Failure/Cancellation + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + ${{ matrix.platform }} ${{ matrix.service }} + trigger_deployment: + needs: [ push_docker ] + name: Trigger Deployment + if: ${{ github.event_name == 'push' }} + runs-on: ubuntu-latest + steps: + - name: Setting ENV variables for deployment + run: | + echo "APP_TAG=${{needs.push_docker.outputs.nextTag}}" >> $GITHUB_ENV + - name: Checkout the target `master` branch of `secret-infrastructure` + uses: actions/checkout@v3 + with: + repository: ice-blockchain/secret-infrastructure + ref: master + token: ${{ secrets.ICE_CI_CD_BOT_GH_PAT }} + path: secret-infrastructure + fetch-depth: 0 + - name: Update [staging] application tag version in helm/husky-pack/staging/common-values.yaml + uses: mikefarah/yq@master + with: + cmd: | + cd secret-infrastructure + yq e -i '.generic-service-chart.applicationImage.tag = strenv(APP_TAG)' helm/husky-pack/staging/common-values.yaml + - name: Update [production] application tag version in helm/husky-pack/production/common-values.yaml + uses: mikefarah/yq@master + with: + cmd: | + cd secret-infrastructure + yq e -i '.generic-service-chart.applicationImage.tag = strenv(APP_TAG)' helm/husky-pack/production/common-values.yaml + - name: Update [staging] application tag version in helm/husky/staging/common-values.yaml + uses: mikefarah/yq@master + with: + cmd: | + cd secret-infrastructure + yq e -i '.generic-service-chart.applicationImage.tag = strenv(APP_TAG)' helm/husky/staging/common-values.yaml + - name: Update [production] application tag version in helm/husky/production/common-values.yaml + uses: mikefarah/yq@master + with: + cmd: | + cd secret-infrastructure + yq e -i '.generic-service-chart.applicationImage.tag = strenv(APP_TAG)' helm/husky/production/common-values.yaml + - name: Commit and Push Changes to Application Tag Version + run: | + cd secret-infrastructure + git config user.name "ice CI/CD Bot" + git config user.email ice-cicd-bot@ice.vip + git add helm/husky/staging/common-values.yaml + git add helm/husky-pack/staging/common-values.yaml + git add helm/husky/production/common-values.yaml + git add helm/husky-pack/production/common-values.yaml + git commit -m "Updated 'husky' & 'husky-pack' tag version (${{env.APP_TAG}}) in application helm chart deployment manifests" + git push --set-upstream origin master + - name: Slack Notification For Success + if: ${{ success() }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Succeeded, Waiting for Deployment Status Notification... + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':rocket:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://staging.r.api.ice.io/notifications/r + https://staging.w.api.ice.io/notifications/w + - name: Slack Notification For Failure + if: ${{ github.event_name == 'push' && (failure() || cancelled()) }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }} + SLACK_TITLE: CI Failed> ${{ job.status }} + SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot + SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4 + SLACK_ICON_EMOJI: ':sob:' + SLACK_COLOR: ${{ job.status }} + SLACK_FOOTER: | + https://staging.r.api.ice.io/notifications/r + https://staging.w.api.ice.io/notifications/w \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3568ffa --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +*.exe +*.BIN +*.exe~ +*.dll +*.so +*.dylib +*.test +*.out +*.app +*.bat +*.cgi +*.com +*.gadget +*.jar +*.pif +*.vb +*.wsf +/out +vendor/ +/Godeps +*.iml +*.ipr +/.idea +*.iws +/.vscode +.tmp-* +.env \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..6c798b2 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,550 @@ +# See https://raw.githubusercontent.com/golangci/golangci-lint/master/.golangci.reference.yml +run: + timeout: 5m + allow-parallel-runners: true + skip-dirs: + - src/external_libs + - autogenerated_by_my_lib + skip-files: + - ".*\\.my\\.go$" + - lib/bad.go + +output: + sort-results: true + +linters-settings: + cyclop: + max-complexity: 15 + package-average: 10.0 + + errcheck: + check-type-assertions: true + check-blank: true + exclude-functions: + #- io/ioutil.ReadFile + #- io.Copy(*bytes.Buffer) + #- io.Copy(os.Stdout) + - encoding/json.Marshal + - encoding/json.MarshalIndent + + errchkjson: + check-error-free-encoding: true + report-no-exported: true + + funlen: + lines: 30 + statements: 30 + + gci: + sections: + - Standard + - Default + - prefix(github.com/ice-blockchain) + + gocognit: + min-complexity: 15 + + goconst: + min-occurrences: 2 + numbers: true + min: 2 + max: 2 + + gocritic: + enabled-tags: + - diagnostic + - style + - performance + - experimental + - opinionated + + settings: + captLocal: + paramsOnly: false + elseif: + skipBalanced: false + hugeParam: + sizeThreshold: 32 + nestingReduce: + bodyWidth: 4 + rangeExprCopy: + sizeThreshold: 32 + skipTestFuncs: false + rangeValCopy: + sizeThreshold: 32 + skipTestFuncs: false + tooManyResultsChecker: + maxResults: 3 + truncateCmp: + skipArchDependent: false + underef: + skipRecvDeref: false + unnamedResult: + checkExported: true + + gocyclo: + min-complexity: 15 + + godot: + scope: all + exclude: + - "/v1r" + - "/v1w" + - "^fixme:" + - "^todo:" + - "^TODO:" + - "SPDX-License-Identifier: ice License 1.0" + capital: true + + gofumpt: + extra-rules: true + + goheader: + template: |- + SPDX-License-Identifier: ice License 1.0 + + + goimports: + local-prefixes: github.com/ice-blockchain + + gosec: + exclude-generated: true + config: + global: + nosec: true + show-ignored: true + audit: true + G101: + ignore_entropy: true + entropy_threshold: "80.0" + per_char_threshold: "3.0" + truncate: "32" + + govet: + check-shadowing: true + settings: + printf: + funcs: + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf + shadow: + strict: true + enable-all: true + + grouper: + const-require-grouping: true + import-require-single-import: true + import-require-grouping: true + type-require-grouping: true + var-require-grouping: true + + lll: + line-length: 160 + + makezero: + always: true + + nolintlint: + require-explanation: true + require-specific: true + + predeclared: + q: true + + revive: + ignore-generated-header: true + severity: error + enable-all-rules: true + confidence: 0.1 + rules: + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#add-constant + - name: add-constant + severity: error + disabled: true + arguments: + - maxLitCount: "3" + allowStrs: '""' + allowInts: "0,1,2" + allowFloats: "0.0,0.,1.0,1.,2.0,2." + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#datarace + - name: datarace + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#use-any + - name: use-any + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#comment-spacings + - name: comment-spacings + severity: error + disabled: false + arguments: ["nolint"] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#atomic + - name: argument-limit + severity: error + disabled: false + arguments: [ 5 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#atomic + - name: atomic + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#banned-characters + - name: banned-characters + severity: error + disabled: true + arguments: ["Ω","Σ","σ", "7"] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bare-return + - name: bare-return + severity: error + disabled: true + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#blank-imports + - name: blank-imports + severity: error + disabled: true + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bool-literal-in-expr + - name: bool-literal-in-expr + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#call-to-gc + - name: call-to-gc + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cognitive-complexity + - name: cognitive-complexity + severity: error + disabled: false + arguments: [ 15 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#confusing-naming + - name: confusing-naming + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#confusing-results + - name: confusing-results + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#constant-logical-expr + - name: constant-logical-expr + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument + - name: context-as-argument + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-keys-type + - name: context-keys-type + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cyclomatic + - name: cyclomatic + severity: error + disabled: false + arguments: [ 15 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#deep-exit + - name: deep-exit + severity: error + disabled: true + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#defer + - name: defer + severity: error + disabled: false + arguments: + - [ "call-chain", "loop", "method-call", "recover", "return" ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#dot-imports + - name: dot-imports + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#duplicated-imports + - name: duplicated-imports + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#early-return + - name: early-return + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block + - name: empty-block + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines + - name: empty-lines + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-naming + - name: error-naming + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-return + - name: error-return + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-strings + - name: error-strings + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#errorf + - name: errorf + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#exported + - name: exported + severity: error + disabled: false + arguments: + - "checkPrivateReceivers" + - "sayRepetitiveInsteadOfStutters" + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#file-header + - name: file-header + severity: error + disabled: false + arguments: + - "SPDX-License-Identifier: ice License 1.0" + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#flag-parameter + - name: flag-parameter + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#function-result-limit + - name: function-result-limit + severity: error + disabled: false + arguments: [ 3 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#function-length + - name: function-length + severity: error + disabled: true + arguments: [ 30, 30 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#get-return + - name: get-return + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#identical-branches + - name: identical-branches + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#if-return + - name: if-return + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#increment-decrement + - name: increment-decrement + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#indent-error-flow + - name: indent-error-flow + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#imports-blacklist + - name: imports-blacklist + severity: error + disabled: true + arguments: + - "crypto/md5" + - "crypto/sha1" + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing + - name: import-shadowing + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#line-length-limit + - name: line-length-limit + severity: error + disabled: true + arguments: [ 160 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#max-public-structs + - name: max-public-structs + severity: error + disabled: true + arguments: [ 3 ] + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#modifies-parameter + - name: modifies-parameter + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#modifies-value-receiver + - name: modifies-value-receiver + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#nested-structs + - name: nested-structs + severity: error + disabled: true + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#optimize-operands-order + - name: optimize-operands-order + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#package-comments + - name: package-comments + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range + - name: range + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-in-closure + - name: range-val-in-closure + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-address + - name: range-val-address + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#receiver-naming + - name: receiver-naming + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redefines-builtin-id + - name: redefines-builtin-id + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-of-int + - name: string-of-int + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-format + - name: string-format + severity: error + disabled: true + arguments: + - - 'core.WriteError[1].Message' + - '/^([^A-Z]|$)/' + - must not start with a capital letter + - - 'fmt.Errorf[0]' + - '/(^|[^\.!?])$/' + - must not end in punctuation + - - panic + - '/^[^\n]*$/' + - must not contain line breaks + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#struct-tag + - name: struct-tag + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#superfluous-else + - name: superfluous-else + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-equal + - name: time-equal + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-naming + - name: time-naming + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-naming + - name: var-naming + severity: error + disabled: false + arguments: + - [ "ID", "URL" ] # AllowList + - [ "VM" ] # DenyList + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-declaration + - name: var-declaration + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unconditional-recursion + - name: unconditional-recursion + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-naming + - name: unexported-naming + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-return + - name: unexported-return + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unhandled-error + - name: unhandled-error + severity: error + disabled: false + arguments: + - "fmt.Printf" + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unnecessary-stmt + - name: unnecessary-stmt + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unreachable-code + - name: unreachable-code + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter + - name: unused-parameter + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-receiver + - name: unused-receiver + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#useless-break + - name: useless-break + severity: error + disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#waitgroup-by-value + - name: waitgroup-by-value + severity: error + disabled: false + + rowserrcheck: + packages: + - github.com/jmoiron/sqlx + + tagliatelle: + case: + use-field-name: true + rules: + json: camel + yaml: camel + xml: camel + bson: camel + avro: camel + mapstructure: camel + msgpack: camel + + tenv: + all: true + + varnamelen: + min-name-length: 2 + check-return: true + check-type-param: true + ignore-type-assert-ok: true + ignore-map-index-ok: true + ignore-chan-recv-ok: true + +linters: + disable: + # TODO remove asap! + - gomoddirectives + # The following we don't need at all, ever, in any scenario. + - importas + - durationcheck + - exhaustruct + - promlinter + - nonamedreturns + - ireturn + - gomodguard + - depguard + # The following might be usable in some scenarios. + - wsl + - testpackage + - decorder + # The following are deprecated. + - exhaustivestruct + - golint + - scopelint + - maligned + - interfacer + enable-all: true + disable-all: false + fast: false + +issues: + exclude-rules: + - linters: + - lll + source: "@Param" + new: false + max-issues-per-linter: 0 + max-same-issues: 0 + +severity: + default-severity: error diff --git a/LICENSE.header b/LICENSE.header new file mode 100644 index 0000000..79d1d0d --- /dev/null +++ b/LICENSE.header @@ -0,0 +1 @@ +SPDX-License-Identifier: ice License 1.0 \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..a7a43fd --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,50 @@ +ice License + +Version 1.0, January 2023 + +----------------------------------------------------------------------------- + + +Licensor: ice Labs Limited + +Licensed Work: ice Network + The Licensed Work is (c) 2023 ice Labs Limited + +----------------------------------------------------------------------------- + + +Permission is hereby granted by the application Software Developer, ice Labs +Limited, free of charge, to any person obtaining a copy of this application, +software, and associated documentation files (the Software), which was +developed by the Software Developer (ice Labs Limited) for use on ice Network +whereby the purpose of this license is to permit the development of +derivative works based on the Software, including the right to use, copy, +modify, merge, publish, distribute, sub-license, and/or sell copies of such +derivative works and any Software components incorporated therein, and to +permit persons to whom such derivative works are furnished to do so, in each +case, solely to develop, use, and market applications for the official ice +Network. + +All Derivative Works developed under this License for use on the ice Network +may only be released after the official launch of the ice Network’s Mainnet. + +For purposes of this license, ice Network shall mean any application, +software, or another present or future platform developed, owned, or managed +by ice Labs Limited, and its parents, affiliates, or subsidiaries. + +Disclaimer of Warranty. Unless required by applicable law or agreed to in +writing, Licensor provides the Software on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, +without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely +responsible for determining the appropriateness of using or redistributing +the Software and assume any risks associated with Your exercise of +permissions under this License. + +Limitation of Liability. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH +THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cb43b45 --- /dev/null +++ b/Makefile @@ -0,0 +1,256 @@ +.DEFAULT_GOAL := all + +DOCKER_REGISTRY ?= registry.digitalocean.com/ice-io +DOCKER_TAG ?= latest-locally +GO_VERSION_MANIFEST := https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json +REQUIRED_COVERAGE_PERCENT := 0 +COVERAGE_FILE := cover.out +REPOSITORY := $(shell basename `pwd`) + +CGO_ENABLED := 1 +GOOS ?= +GOARCH ?= +SERVICE_NAME ?= +SERVICES := $(wildcard ./cmd/*) + +export CGO_ENABLED GOOS GOARCH SERVICE_NAME + +define getLatestGoPatchVersion + $(shell curl -s $(GO_VERSION_MANIFEST) | jq -r '.[0].version') +endef + +define getLatestGoMinorVersion + $(shell echo $(call getLatestGoPatchVersion) | cut -f1,2 -d'.') +endef + +latestGoVersion: + @echo $(call getLatestGoPatchVersion) + +latestGoMinorVersion: + @echo $(call getLatestGoMinorVersion) + +updateGoModVersion: + go mod edit -go $(call getLatestGoMinorVersion) + +checkModVersion: updateGoModVersion + @if git status --porcelain | grep -q go.mod; then \ + echo "Outdated go version in go.mod. Please update it using 'make updateGoModVersion' and make sure everything works correctly and tests pass then commit the changes."; \ + exit 1; \ + fi; \ + true; + +updateAllDependencies: + go get -t -u ./... + go mod tidy + +checkIfAllDependenciesAreUpToDate: updateAllDependencies + @if git status --porcelain | grep -q go.sum; then \ + echo "Some dependencies are outdated. Please update all dependencies using 'make updateAllDependencies' and make sure everything works correctly and tests pass then commit the changes."; \ + exit 1; \ + fi; \ + true; + +generate-swagger: + swag init --parseDependency --parseInternal -d ${SERVICE} -g $(shell echo "$${SERVICE##*/}" | sed 's/-/_/g').go -o ${SERVICE}/api; + +generate-swaggers: + go install github.com/swaggo/swag/cmd/swag@latest + set -xe; \ + [ -d cmd ] && find ./cmd -mindepth 1 -maxdepth 1 -type d -print | grep -v 'fixture' | sed 's/\.\///g' | while read service; do \ + env SERVICE=$${service} $(MAKE) generate-swagger; \ + done; + +format-swagger: + swag fmt -d ${SERVICE} -g $(shell echo "$${SERVICE##*/}" | sed 's/-/_/g').go + +format-swaggers: + set -xe; \ + [ -d cmd ] && find ./cmd -mindepth 1 -maxdepth 1 -type d -print | grep -v 'fixture' | sed 's/\.\///g' | while read service; do \ + env SERVICE=$${service} $(MAKE) format-swagger; \ + done; + +generate-mocks: +# go install github.com/golang/mock/mockgen@latest +# mockgen -source=CHANGE_ME.go -destination=CHANGE_ME.go -package=CHANGE_ME + +generate: + $(MAKE) generate-swaggers + $(MAKE) format-swaggers + $(MAKE) generate-mocks + $(MAKE) addLicense + $(MAKE) format-imports + +checkGenerated: generate + @if git status --porcelain | grep -e [.]go -e [.]json -e [.]yaml; then \ + echo "Please commit generated files, using 'make generate'."; \ + git --no-pager diff; \ + exit 1; \ + fi; \ + true; + +build-all@ci/cd: + go build -tags=go_json -a -v -race ./... + +build: build-all@ci/cd + +binary-specific-service: + set -xe; \ + echo "$@: $(SERVICE_NAME) / $(GOARCH)" ; \ + go build -tags=go_json -a -v -o ./cmd/$${SERVICE_NAME}/bin ./cmd/$${SERVICE_NAME}; \ + +test: + set -xe; \ + mf="$$(pwd)/Makefile"; \ + find . -mindepth 1 -maxdepth 4 -type d -print | grep -v '\./\.' | grep -v '/\.' | sed 's/\.\///g' | while read service; do \ + cd $${service} ; \ + if [[ $$(find . -mindepth 1 -maxdepth 1 -type f -print | grep -E '_test.go' | wc -l | sed "s/ //g") -gt 0 ]]; then \ + make -f $$mf test@ci/cd; \ + fi ; \ + for ((i=0;i<$$(echo "$${service}" | grep -o "/" | wc -l | sed "s/ //g");i++)); do \ + cd .. ; \ + done; \ + cd .. ; \ + done; + +# TODO should be improved to a per file check and maybe against a previous value +#(maybe we should use something like SonarQube for this?) +coverage: $(COVERAGE_FILE) + @t=`go tool cover -func=$(COVERAGE_FILE) | grep total | grep -Eo '[0-9]+\.[0-9]+'`;\ + echo "Total coverage: $${t}%"; \ + if [ "$${t%.*}" -lt $(REQUIRED_COVERAGE_PERCENT) ]; then \ + echo "ERROR: It has to be at least $(REQUIRED_COVERAGE_PERCENT)%"; \ + exit 1; \ + fi; + +test@ci/cd: + # TODO make -race work + go test -timeout 20m -tags=go_json,test -v -cover -coverprofile=$(COVERAGE_FILE) -covermode atomic + +benchmark@ci/cd: + # TODO make -race work + go test -timeout 20m -tags=go_json,test -run=^$ -v -bench=. -benchmem -benchtime 10s + +benchmark: + set -xe; \ + mf="$$(pwd)/Makefile"; \ + find . -mindepth 1 -maxdepth 4 -type d -print | grep -v '\./\.' | grep -v '/\.' | sed 's/\.\///g' | while read service; do \ + cd $${service} ; \ + if [[ $$(find . -mindepth 1 -maxdepth 1 -type f -print | grep -E '_test.go' | wc -l | sed "s/ //g") -gt 0 ]]; then \ + make -f $$mf benchmark@ci/cd; \ + fi ; \ + for ((i=0;i<$$(echo "$${service}" | grep -o "/" | wc -l | sed "s/ //g");i++)); do \ + cd .. ; \ + done; \ + cd .. ; \ + done; + +print-all-packages-with-tests: + set -xe; \ + find . -mindepth 1 -maxdepth 4 -type d -print | grep -v '\./\.' | grep -v '/\.' | sed 's/\.\///g' | while read service; do \ + cd $${service} ; \ + if [[ $$(find . -mindepth 1 -maxdepth 1 -type f -print | grep -E '_test.go' | wc -l | sed "s/ //g") -gt 0 ]]; then \ + echo "$${service}"; \ + fi ; \ + for ((i=0;i<$$(echo "$${service}" | grep -o "/" | wc -l | sed "s/ //g");i++)); do \ + cd .. ; \ + done; \ + cd .. ; \ + done; + +clean: + @go clean + @rm -f tmp$(COVERAGE_FILE) $(COVERAGE_FILE) 2>/dev/null || true + @test -d cmd && find ./cmd -mindepth 2 -maxdepth 2 -type f -name bin -exec rm -f {} \; || true; + @test -d cmd && find ./cmd -mindepth 2 -maxdepth 2 -type d -name bins -exec rm -Rf {} \; || true; + @find . -name ".tmp-*" -exec rm -Rf {} \; || true; + @find . -mindepth 1 -maxdepth 3 -type f -name $(COVERAGE_FILE) -exec rm -Rf {} \; || true; + @find . -mindepth 1 -maxdepth 3 -type f -name tmp$(COVERAGE_FILE) -exec rm -Rf {} \; || true; + +lint: + golangci-lint run + +# run specific service by its name +run-%: + go run -tags=go_json -v ./cmd/$* + +run: +ifeq ($(words $(SERVICES)),1) + $(MAKE) $(subst ./cmd/,run-,$(SERVICES)) +else + @echo "Do not know what to run" + @echo "Targets:" + @for target in $(subst ./cmd/,run-,$(SERVICES)); do \ + echo " $${target}"; \ + done; false; +endif + +# run specific service by its name +binary-run-%: + ./cmd/$*/bin + +binary-run: +ifeq ($(words $(SERVICES)),1) + $(MAKE) $(subst ./cmd/,binary-run-,$(SERVICES)) +else + @echo "Do not know what to run" + @echo "Targets:" + @for target in $(subst ./cmd/,binary-run-,$(SERVICES)); do \ + echo " $${target}"; \ + done; false; +endif + +# note: it requires make-4.3+ to run that +buildMultiPlatformDockerImage: + set -xe; \ + find ./cmd -mindepth 1 -maxdepth 1 -type d -print | grep -v 'fixture' | while read service; do \ + for arch in amd64 arm64 s390x ppc64le; do \ + docker buildx build \ + --platform linux/$${arch} \ + -f $${service}/Dockerfile \ + --label os=linux \ + --label arch=$${arch} \ + --force-rm \ + --pull -t $(DOCKER_REGISTRY)/$(REPOSITORY)/$${service##*/}:$(DOCKER_TAG) \ + --build-arg SERVICE_NAME=$${service##*/} \ + --build-arg TARGETARCH=$${arch} \ + --build-arg TARGETOS=linux \ + .; \ + done; \ + done; + +start-test-environment: + #go run -race -v local.go + go run -v local.go --type all + +start-test-environment-%: + #go run -race -v local.go + go run -v local.go --type $* + +getAddLicense: + GO111MODULE=off go get -v -u github.com/google/addlicense + +addLicense: getAddLicense + `go env GOPATH`/bin/addlicense -f LICENSE.header * .github/* + +checkLicense: getAddLicense + `go env GOPATH`/bin/addlicense -f LICENSE.header -check * .github/* + +fix-field-alignment: + go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@latest + fieldalignment -fix ./... + +format-imports: + go install golang.org/x/tools/cmd/goimports@latest + go install github.com/daixiang0/gci@latest + gci write -s standard -s default -s "prefix(github.com/ice-blockchain)" ./.. + goimports -w -local github.com/ice-blockchain ./.. + +print-token-%: + go run -v local.go --generateAuth $* + +start-seeding: + go run -v local.go --startSeeding true + +all: checkLicense checkModVersion checkIfAllDependenciesAreUpToDate checkGenerated build test coverage benchmark clean +local: addLicense updateGoModVersion updateAllDependencies generate build buildMultiPlatformDockerImage test coverage benchmark lint clean +dockerfile: binary-specific-service diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ed3ede --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Husky Service + +``Husky is handling everything related to notifications & news (informing the user about anything, via direct notifications, via news, via pings, etc.)`` + +### Development + +These are the crucial/critical operations you will need when developing `Husky`: + +1. If you need to generate a new Authorization Token & UserID for testing locally: + 1. run `make print-token-XXX`, where `XXX` is the role you want for the user. +2. If you need to seed your local database, or even a remote one: + 1. run `make start-seeding` + 2. it requires an .env entry: `MASTER_DB_INSTANCE_ADDRESS=admin:pass@127.0.0.1:3301` +3. `make run-husky` + 1. This runs the actual read service. + 2. It will feed off of the properties in `./application.yaml` + 3. By default, https://localhost:4443/notifications/r runs the Open API (Swagger) entrypoint. +4. `make run-husky-pack` + 1. This runs the actual write service. + 2. It will feed off of the properties in `./application.yaml` + 3. By default, https://localhost:5443/notifications/w runs the Open API (Swagger) entrypoint. +5. `make start-test-environment` + 1. This bootstraps a local test environment with **Husky**'s dependencies using your `docker` and `docker-compose` daemons. + 2. It is a blocking operation, SIGTERM or SIGINT will kill it. + 3. It will feed off of the properties in `./application.yaml` + 1. MessageBroker GUIs + 1. https://www.conduktor.io + 2. https://www.kafkatool.com + 3. (CLI) https://vectorized.io/redpanda + 2. DB GUIs + 1. https://github.com/tarantool/awesome-tarantool#gui-clients + 2. (CLI) `docker exec -t -i mytarantool console` where `mytarantool` is the container name +6. `make all` + 1. This runs the CI pipeline, locally -- the same pipeline that PR checks run. + 2. Run it before you commit to save time & not wait for PR check to fail remotely. +7. `make local` + 1. This runs the CI pipeline, in a descriptive/debug mode. Run it before you run the "real" one. +8. `make lint` + 1. This runs the linters. It is a part of the other pipelines, so you can run this separately to fix lint issues. +9. `make test` + 1. This runs all tests. +10. `make benchmark` + 1. This runs all benchmarks. diff --git a/analytics/.testdata/application.yaml b/analytics/.testdata/application.yaml new file mode 100644 index 0000000..ec9a2e8 --- /dev/null +++ b/analytics/.testdata/application.yaml @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: ice License 1.0 + +development: true +logger: + encoder: console + level: info +analytics: &analytics + wintr/analytics/tracking: + baseUrl: https://api-02.moengage.com + db: &analyticsDatabase + urls: + - localhost:3507 + user: admin + password: pass + messageBroker: &analyticsMessageBroker + consumerGroup: husky-local-analytics-testing + createTopics: true + urls: + - localhost:9097 + topics: &analyticsTopics + - name: analytics-set-attributes + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: analytics-track-action + partitions: 10 + replicationFactor: 1 + retention: 1000h + consumingTopics: + - name: analytics-set-attributes + oneGoroutinePerPartition: true + - name: analytics-track-action + oneGoroutinePerPartition: true +analytics_test: + <<: *analytics + messageBroker: + <<: *analyticsMessageBroker + consumingTopics: *analyticsTopics + consumerGroup: husky-analytics-testing-runner + db: + <<: *analyticsDatabase + schemaPath: analytics/DDL.lua \ No newline at end of file diff --git a/analytics/DDL.lua b/analytics/DDL.lua new file mode 100644 index 0000000..f135aba --- /dev/null +++ b/analytics/DDL.lua @@ -0,0 +1,8 @@ +-- SPDX-License-Identifier: ice License 1.0 +--************************************************************************************************************************************ +-- tracked_actions +box.execute([[CREATE TABLE IF NOT EXISTS tracked_actions ( + sent_at UNSIGNED NOT NULL, + action_id STRING NOT NULL PRIMARY KEY + ) WITH ENGINE = 'memtx';]]) +box.execute([[CREATE INDEX IF NOT EXISTS tracked_actions_sent_at_ix ON tracked_actions (sent_at);]]) \ No newline at end of file diff --git a/analytics/analytics.go b/analytics/analytics.go new file mode 100644 index 0000000..d0fc875 --- /dev/null +++ b/analytics/analytics.go @@ -0,0 +1,177 @@ +// SPDX-License-Identifier: ice License 1.0 + +package analytics + +import ( + "context" + "math/rand" + stdlibtime "time" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/go-tarantool-client" + "github.com/ice-blockchain/wintr/analytics/tracking" + appCfg "github.com/ice-blockchain/wintr/config" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/time" +) + +func StartProcessor(ctx context.Context, cancel context.CancelFunc) Processor { + var cfg config + appCfg.MustLoadFromKey(applicationYamlKey, &cfg) + + var ( + db tarantool.Connector + mbConsumer messagebroker.Client + prc = &processor{} + ) + db = storage.MustConnect(context.Background(), func() { //nolint:contextcheck // It's intended. Cuz we want to close everything gracefully. + if mbConsumer != nil { + log.Error(errors.Wrap(mbConsumer.Close(), "failed to close mbConsumer due to db premature cancellation")) + } + cancel() + }, ddl, applicationYamlKey) + prc.repository = &repository{ + cfg: &cfg, + db: db, + trackingClient: tracking.New(applicationYamlKey), + } + //nolint:contextcheck // It's intended. Cuz we want to close everything gracefully. + mbConsumer = messagebroker.MustConnectAndStartConsuming(context.Background(), cancel, applicationYamlKey, + &setUserAttributesSource{processor: prc}, + &trackActionSource{processor: prc}, + ) + prc.shutdown = closeAll(mbConsumer, db) + go prc.startOldTrackedActionsCleaner(ctx) + + return prc +} + +func (r *repository) Close() error { + return errors.Wrap(r.shutdown(), "closing repository failed") +} + +func closeAll(mbConsumer messagebroker.Client, db tarantool.Connector, otherClosers ...func() error) func() error { + return func() error { + err1 := errors.Wrap(mbConsumer.Close(), "closing message broker consumer connection failed") + err2 := errors.Wrap(db.Close(), "closing db connection failed") + errs := make([]error, 0, 1+1+len(otherClosers)) + errs = append(errs, err1, err2) + for _, closeOther := range otherClosers { + if err := closeOther(); err != nil { + errs = append(errs, err) + } + } + + return errors.Wrap(multierror.Append(nil, errs...).ErrorOrNil(), "failed to close resources") + } +} + +func (p *processor) CheckHealth(ctx context.Context) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if _, err := p.db.Ping(); err != nil { + return errors.Wrap(err, "[health-check] failed to ping DB") + } + + return nil +} + +func (s *setUserAttributesSource) Process(ctx context.Context, msg *messagebroker.Message) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if len(msg.Value) == 0 { + return nil + } + cmd := new(SetUserAttributesCommand) + if err := json.UnmarshalContext(ctx, msg.Value, cmd); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), cmd) + } + if cmd.UserID == "" || len(cmd.Attributes) == 0 { + return nil + } + + const deadline = 62 * stdlibtime.Second + trackingCtx, cancel := context.WithTimeout(context.Background(), deadline) + defer cancel() + for trackingCtx.Err() == nil { + //nolint:contextcheck // We need more time. + err := errors.Wrapf(s.trackingClient.SetUserAttributes(trackingCtx, cmd.UserID, cmd.Attributes), "failed to SetUserAttributes for %#v", cmd) + log.Error(err) + if err == nil { + return nil + } + } + + return errors.Wrapf(trackingCtx.Err(), "deadline expired and couldn't set attributes %#v", cmd) +} + +func (s *trackActionSource) Process(ctx context.Context, msg *messagebroker.Message) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if len(msg.Value) == 0 { + return nil + } + cmd := new(TrackActionCommand) + if err := json.UnmarshalContext(ctx, msg.Value, cmd); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), cmd) + } + if cmd.UserID == "" || cmd.Action == nil { + return nil + } + tuple := &trackedAction{SentAt: time.New(msg.Timestamp), ID: cmd.ID} + if err := storage.CheckNoSQLDMLErr(s.db.InsertTyped("TRACKED_ACTIONS", tuple, &[]*trackedAction{})); err != nil { + return errors.Wrapf(err, "failed to insert TRACKED_ACTIONS %#v", tuple) + } + const deadline = 62 * stdlibtime.Second + trackingCtx, cancel := context.WithTimeout(context.Background(), deadline) + defer cancel() + for trackingCtx.Err() == nil { + //nolint:contextcheck // We need more time. + err := errors.Wrapf(s.trackingClient.TrackAction(trackingCtx, cmd.UserID, cmd.Action), "failed to TrackAction for %#v", cmd) + log.Error(err) + if err == nil { + return nil + } + } + + return errors.Wrapf(trackingCtx.Err(), "deadline expired and couldn't track action %#v", cmd) +} + +func (p *processor) startOldTrackedActionsCleaner(ctx context.Context) { + ticker := stdlibtime.NewTicker(stdlibtime.Duration(1+rand.Intn(24)) * stdlibtime.Minute) //nolint:gosec,gomnd // Not an issue. + defer ticker.Stop() + + for { + select { + case <-ticker.C: + const deadline = 30 * stdlibtime.Second + reqCtx, cancel := context.WithTimeout(ctx, deadline) + log.Error(errors.Wrap(p.deleteOldTrackedActions(reqCtx), "failed to deleteOldTrackedActions")) + cancel() + case <-ctx.Done(): + return + } + } +} + +func (p *processor) deleteOldTrackedActions(ctx context.Context) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + sql := `DELETE FROM tracked_actions WHERE sent_at < :reference_date` + params := make(map[string]any, 1) + params["reference_date"] = time.New(time.Now().Add(-24 * stdlibtime.Hour)) + if _, err := storage.CheckSQLDMLResponse(p.db.PrepareExecute(sql, params)); err != nil { + return errors.Wrap(err, "failed to delete old data from tracked_actions") + } + + return nil +} diff --git a/analytics/contract.go b/analytics/contract.go new file mode 100644 index 0000000..ef711c4 --- /dev/null +++ b/analytics/contract.go @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: ice License 1.0 + +package analytics + +import ( + "context" + _ "embed" + "io" + + "github.com/ice-blockchain/go-tarantool-client" + "github.com/ice-blockchain/wintr/analytics/tracking" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/time" +) + +// Public API. + +type ( + TrackActionCommand struct { + Action *tracking.Action `json:"action,omitempty"` + ID string `json:"id,omitempty" example:"edfd8c02-75e0-4687-9ac2-1ce4723865c4"` + UserID string `json:"userId,omitempty" example:"edfd8c02-75e0-4687-9ac2-1ce4723865c4"` + } + SetUserAttributesCommand struct { + Attributes map[string]any `json:"attributes,omitempty"` + UserID string `json:"userId,omitempty" example:"edfd8c02-75e0-4687-9ac2-1ce4723865c4"` + } + Processor interface { + io.Closer + CheckHealth(context.Context) error + } +) + +// Private API. + +const ( + applicationYamlKey = "analytics" +) + +// . +var ( + //go:embed DDL.lua + ddl string +) + +type ( + trackedAction struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // . + SentAt *time.Time `json:"sentAt,omitempty"` + ID string `json:"id,omitempty"` + } + setUserAttributesSource struct { + *processor + } + trackActionSource struct { + *processor + } + processor struct { + *repository + } + repository struct { + cfg *config + shutdown func() error + db tarantool.Connector + trackingClient tracking.Client + } + config struct { + messagebroker.Config `mapstructure:",squash"` //nolint:tagliatelle // Nope. + } +) diff --git a/application.yaml b/application.yaml new file mode 100644 index 0000000..e291881 --- /dev/null +++ b/application.yaml @@ -0,0 +1,175 @@ +# SPDX-License-Identifier: ice License 1.0 + +development: true +logger: + encoder: console + level: info +cmd/husky: + host: localhost:4443 + version: local + defaultEndpointTimeout: 30s + httpServer: + port: 4443 + certPath: cmd/husky/.testdata/localhost.crt + keyPath: cmd/husky/.testdata/localhost.key +cmd/husky-pack: + host: localhost:5443 + version: local + defaultEndpointTimeout: 30s + httpServer: + port: 5443 + certPath: cmd/husky-pack/.testdata/localhost.crt + keyPath: cmd/husky-pack/.testdata/localhost.key +news: &news + db: &newsDatabase + urls: + - localhost:3501 + user: admin + password: pass + messageBroker: &newsMessageBroker + consumerGroup: husky-local-news-testing + createTopics: true + urls: + - localhost:9092 + topics: &newsTopics + - name: husky-news-health-check + partitions: 1 + replicationFactor: 1 + retention: 1000h + - name: news-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: viewed-news + partitions: 10 + replicationFactor: 1 + retention: 1000h + wintr/multimedia/picture: + urlUpload: https://storage.bunnycdn.com/ice-staging/news + urlDownload: https://ice-staging.b-cdn.net/news +analytics: &analytics + wintr/analytics/tracking: + baseUrl: https://api-02.moengage.com + db: &analyticsDatabase + urls: + - localhost:3501 + user: admin + password: pass + messageBroker: &analyticsMessageBroker + consumerGroup: husky-local-analytics-testing + createTopics: true + urls: + - localhost:9092 + topics: &analyticsTopics + - name: analytics-set-attributes + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: analytics-track-action + partitions: 10 + replicationFactor: 1 + retention: 1000h + consumingTopics: + - name: analytics-set-attributes + oneGoroutinePerPartition: true + - name: analytics-track-action + oneGoroutinePerPartition: true +notifications: ¬ifications + deeplinkScheme: staging.ice.app + pingCooldown: 1m + wintr/multimedia/picture: + urlDownload: https://ice-staging.b-cdn.net + db: ¬ificationsDatabase + urls: + - localhost:3501 + user: admin + password: pass + messageBroker: ¬ificationsMessageBroker + consumerGroup: husky-local-notifications-testing + createTopics: true + urls: + - localhost:9092 + topics: ¬ificationsMessageBrokerTopics + - name: husky-notifications-health-check + partitions: 1 + replicationFactor: 1 + retention: 1000h + - name: user-pings + partitions: 10 + replicationFactor: 1 + retention: 1000h + ### The next topics are not owned by this service, but are needed to be created for the local/test environment. + - name: users-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: user-device-metadata-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: adoption-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: news-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: available-daily-bonuses + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: started-days-off + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: achieved-badges + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: completed-levels + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: enabled-roles + partitions: 10 + replicationFactor: 1 + retention: 1000h + consumingTopics: + - name: users-table + - name: user-device-metadata-table + - name: adoption-table + - name: news-table + - name: available-daily-bonuses + - name: user-pings + - name: started-days-off + - name: achieved-badges + - name: completed-levels + - name: enabled-roles + producingTopics: + - name: analytics-set-attributes + - name: analytics-track-action +notifications_test: + <<: *notifications + messageBroker: + <<: *notificationsMessageBroker + consumingTopics: *notificationsMessageBrokerTopics + consumerGroup: husky-local-notifications-test + db: + <<: *notificationsDatabase +news_test: + <<: *news + messageBroker: + <<: *newsMessageBroker + consumingTopics: *newsTopics + consumerGroup: husky-local-news-test + db: + <<: *newsDatabase +analytics_test: + <<: *analytics + messageBroker: + <<: *analyticsMessageBroker + consumingTopics: *analyticsTopics + consumerGroup: husky-local-analytics-test + db: + <<: *analyticsDatabase diff --git a/cmd/husky-pack/.testdata/application.yaml b/cmd/husky-pack/.testdata/application.yaml new file mode 100644 index 0000000..c3d0de6 --- /dev/null +++ b/cmd/husky-pack/.testdata/application.yaml @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: ice License 1.0 +#TODO \ No newline at end of file diff --git a/cmd/husky-pack/.testdata/expected_swagger.json b/cmd/husky-pack/.testdata/expected_swagger.json new file mode 100644 index 0000000..e69de29 diff --git a/cmd/husky-pack/.testdata/localhost.crt b/cmd/husky-pack/.testdata/localhost.crt new file mode 100644 index 0000000..84c6603 --- /dev/null +++ b/cmd/husky-pack/.testdata/localhost.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDijCCAnKgAwIBAgIJAMeawIdSd6+8MA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV +BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwHhcNMjIwMTA0MjEwNDE3 +WhcNMjQxMDI0MjEwNDE3WjBtMQswCQYDVQQGEwJVUzESMBAGA1UECAwJWW91clN0 +YXRlMREwDwYDVQQHDAhZb3VyQ2l0eTEdMBsGA1UECgwURXhhbXBsZS1DZXJ0aWZp +Y2F0ZXMxGDAWBgNVBAMMD2xvY2FsaG9zdC5sb2NhbDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAONuA1zntIXbNaEvt/n+/Jisib/8Bjvfm2I9ENMq0TBH +OGlbZgJ9ywiKsrxBYH/O2q6Dsxy9fL5cSfcMmAS0FXPrcXQx/pVNCgNWLEXZyPDk +SzSR+tlPXzuryN2/jbWtgOZc73kfxQVBqUWbLyMiXaxMxVGHgpYMg0w68Ee62d2H +AnA7c0YBllvggDRSaoDRJJZTc8DDGAHm9x5583zdxpCQh/EeV+zIjd2lAGF0ioYu +PV69lwyrTnY/s7WG59nRYwYR50JvbI4G+5bbpf4q2W7Q0BVLqwSdMJfAfG43N5U/ +4Q1dfyJeXavFfQaZWJtEiVOU9TBiV3QQto0tI28R6J0CAwEAAaNzMHEwQQYDVR0j +BDowOKErpCkwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1D +QYIJANxKhfP/dJTMMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMBQGA1UdEQQNMAuC +CWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAjrUp0epptzaaTULvhrFdNJ6e +2WAeJpYCxMXjms7P+B/ldyIirDqG/WEzpN64Z1gXJhtxnw7IGTsQ8eXqLmBDk045 +vHhVbRhjVGADc+EVwX6OzQ+WQEGZzNDPX7DBObLC1ZV5LcfUwQXyACmlARlYgXJN +GZFDkijDcvY3/Hyq9NkV6VGYPKnzxaal3v3cYO8FXQHaOLnu+SLWknT56y2vTa5/ +H4CoX8nrts5Fa0NuOdoyNA1c7IdHjR/dy4g5IUZW+Sbhr1nNgkECBJvJ5QOWZ3M4 +4a8NroD0ikzQDaeS4Tpk54WnJLEjDgQe5fX9RMu9F2sbr+wP+gUTmHuhLg/Ptw== +-----END CERTIFICATE----- diff --git a/cmd/husky-pack/.testdata/localhost.key b/cmd/husky-pack/.testdata/localhost.key new file mode 100644 index 0000000..f2fa28b --- /dev/null +++ b/cmd/husky-pack/.testdata/localhost.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDjbgNc57SF2zWh +L7f5/vyYrIm//AY735tiPRDTKtEwRzhpW2YCfcsIirK8QWB/ztqug7McvXy+XEn3 +DJgEtBVz63F0Mf6VTQoDVixF2cjw5Es0kfrZT187q8jdv421rYDmXO95H8UFQalF +my8jIl2sTMVRh4KWDINMOvBHutndhwJwO3NGAZZb4IA0UmqA0SSWU3PAwxgB5vce +efN83caQkIfxHlfsyI3dpQBhdIqGLj1evZcMq052P7O1hufZ0WMGEedCb2yOBvuW +26X+Ktlu0NAVS6sEnTCXwHxuNzeVP+ENXX8iXl2rxX0GmVibRIlTlPUwYld0ELaN +LSNvEeidAgMBAAECggEBALHtN6RPgePXA7X+5ygmXOf01C/ms9nTrnTE4YzTSqVC +kteaMcxxLY6ZNAwj+aMD6gHt9wrdE+K5wQQOTkAfw0jVQgVtt4aGpvbFTA25vIL5 +l/yg2Gd6uT6tvo/9dJhWDSosOw2/1RuvqwZRyibqk+5ggV6vbXKGh5Hz6lezzw6H +P8xazcT634Tj5YhNhd00XIcr1V+kqEHZGiJP0XzrdXzjAS5NciEdW529gv4Dp4Ni +zpSroznCcP6psLXS99snDg1UdQPFu90IW51i7VOBkF+RhRIMWOywO9FeFHoQ7j0u +SqACHFz8HQnR0uSZ8AwnWrRhWVoBfQ6bwDjJKi/vtQECgYEA8ZxQtliNEd2ojF0s +PbU7YE9vTDEY5AXk6bRPf1rJk/RTDZZwguC4MWjTBpcqawppzur8RLRJAp3WtyP4 +zXh7qvgeOFIaVmGUefEfg8OkXAtvwT+ogvl9HHyY3lPWQyF+WV3dN4ILWguDYiCB +myL/4EqBZjSHmqfzKS6sT9x+TYkCgYEA8Pl9uH6wDSReKqmO1kNnyF+dWfP0I7wX +UpSTkRvSrYQIH2VFYH+LSN5OZaku0FHQkIbgjunAT29N8p//E2ZA3L2xNIKDV+hI +M+NV52YwguUROh2mIypGlPT1f7R+tiYzz27jZgctYIF3mzTMQ1TC2TqgXzG5eA2y +/Ojcmj9ncXUCgYEA4y5fOkYjR3RMAsetTMy3awTmGxdjVy0vpIx138NHHYaz/WfC +nV2d9F+jZWQIb6PX/8c2s4dtyzcM6SG61cD/T7CEAeM5fpW8XbjbMDNqvV3HlEc+ +NQFQodOKjir4oiDBRFidJI90CxQeUstL8srDHGwSJj8obsSTQNrxDRq/7DkCgYBR +cLBpmv9a4bClkHqCtXMsyAvA6+7V6Oqk8SvSPen81IN+QNaqn1BuhxtNxljY9N2d +Csh35E4nSoG4fxRQ9Rz0vXNXQMis/Aby6mEM/H9mrY4d6wlMFyyViRgzWcf9PXoD +IAHgaIqQdBD9NmHWW54ilmq+4WpCRbb5PKXZx5XpRQKBgQCCMpaANqren/4aeDdz +F2lkEJweRsTaS13LJKkk/fGWeXo3N/sXuBPocViSzkCNoHGx1yHrG9TyC7Cz7UXj +4Dpy7gI3cg0i7gaHgC1JfYoPzCSmvnJT62TyL/5SGwF4Xkg8efmF+sVKZqsqgiiT +ATGyCMbfg4XaTw84ubV2rGxvRQ== +-----END PRIVATE KEY----- diff --git a/cmd/husky-pack/Dockerfile b/cmd/husky-pack/Dockerfile new file mode 100644 index 0000000..f913afd --- /dev/null +++ b/cmd/husky-pack/Dockerfile @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: ice License 1.0 + +FROM golang:latest AS build +ARG SERVICE_NAME +ARG TARGETOS +ARG TARGETARCH + +WORKDIR /app/ +COPY . /app/ + +ENV CGO_ENABLED=1 +ENV GOOS=$TARGETOS +ENV GOARCH=$TARGETARCH + +RUN env SERVICE_NAME=$SERVICE_NAME make dockerfile +RUN cp cmd/$SERVICE_NAME/bin bin + +FROM gcr.io/distroless/base-debian11:latest +ARG TARGETOS +ARG TARGETARCH +ARG PORT=443 +LABEL os=$TARGETOS +LABEL arch=$TARGETARCH +COPY --from=build /app/bin app +#You might need to expose more ports. Just add more separated by space +#I.E. EXPOSE 8080 8081 8082 8083 +EXPOSE $PORT +ENTRYPOINT ["/app"] diff --git a/cmd/husky-pack/api/docs.go b/cmd/husky-pack/api/docs.go new file mode 100644 index 0000000..cfecbf6 --- /dev/null +++ b/cmd/husky-pack/api/docs.go @@ -0,0 +1,743 @@ +// Code generated by swaggo/swag. DO NOT EDIT. + +package api + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": { + "name": "ice.io", + "url": "https://ice.io" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/inapp-notifications-user-auth-token": { + "put": { + "description": "Generates a new token for the user to be used to connect to the inApp notifications stream on behalf of the user.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/notifications.InAppNotificationsUserAuthToken" + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "if not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/news": { + "post": { + "description": "Creates a news article, for each specified language.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "Required, if ` + "`" + `newsImportFile` + "`" + ` param is not specified.", + "name": "news", + "in": "formData" + }, + { + "type": "file", + "description": "The image for the news article", + "name": "image", + "in": "formData", + "required": true + }, + { + "type": "file", + "description": "A json file with an array of all language variants for 1 news article", + "name": "newsImportFile", + "in": "formData" + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/main.News" + } + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "409": { + "description": "if it conflicts with existing news articles", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/news/{language}/{newsId}": { + "delete": { + "description": "Deletes a language variant of a news article", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "ID of the news article", + "name": "newsId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the language code", + "name": "language", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK - found and deleted" + }, + "204": { + "description": "No Content - already deleted" + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "if not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + }, + "patch": { + "description": "Modifies a language variant of a news article", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "ID of the news article", + "name": "newsId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The language of the news article", + "name": "language", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Optional. Setting this will save you from race conditions. Example:` + "`" + `1232412415326543647657` + "`" + `.", + "name": "checksum", + "in": "formData" + }, + { + "type": "boolean", + "name": "markViewed", + "in": "formData" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Optional. Example: ` + "`" + `financial` + "`" + `.", + "name": "tags", + "in": "formData" + }, + { + "type": "string", + "description": "Optional.", + "name": "title", + "in": "formData" + }, + { + "enum": [ + "regular", + "featured" + ], + "type": "string", + "description": "Optional. Example: any of ` + "`" + `regular` + "`" + `, ` + "`" + `featured` + "`" + `.", + "name": "type", + "in": "formData" + }, + { + "type": "string", + "description": "Optional. Example: ` + "`" + `https://somewebsite.com/blockchain` + "`" + `.", + "name": "url", + "in": "formData" + }, + { + "type": "file", + "description": "The image for the news article", + "name": "image", + "in": "formData" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/main.News" + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "if not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "404": { + "description": "if news or user not found", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "409": { + "description": "if conflict occurs", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/notification-channels/{notificationChannel}/toggles/{type}": { + "put": { + "description": "Toggles the specific notification channel toggle type on/off.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "description": "Request params", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/main.ToggleNotificationChannelDomainRequestBody" + } + }, + { + "enum": [ + "push", + "email" + ], + "type": "string", + "description": "name of the channel", + "name": "notificationChannel", + "in": "path", + "required": true + }, + { + "enum": [ + "disable_all", + "weekly_report", + "weekly_stats", + "achievements", + "promotions", + "news", + "micro_community", + "mining", + "daily_bonus", + "system" + ], + "type": "string", + "description": "the type of the toggle", + "name": "type", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "404": { + "description": "if user not found", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/user-pings/{userId}": { + "post": { + "description": "Pings the user.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "ID of the user to ping", + "name": "userId", + "in": "path", + "required": true + } + ], + "responses": { + "202": { + "description": "accepted" + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "404": { + "description": "if user not found", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "409": { + "description": "if already pinged and need to try later", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "main.News": { + "type": "object", + "properties": { + "checksum": { + "type": "string", + "example": "1232412415326543647657" + }, + "createdAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "id": { + "type": "string", + "example": "did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2" + }, + "imageUrl": { + "type": "string", + "example": "https://somewebsite.com/blockchain.jpg" + }, + "language": { + "type": "string", + "example": "en" + }, + "notificationChannels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "inapp", + "sms", + "email", + "push", + "analytics", + "push||analytics", + "push||email", + "push||email||analytics" + ] + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "cats", + "dogs", + "frogs" + ] + }, + "title": { + "type": "string", + "example": "The importance of the blockchain technology" + }, + "type": { + "allOf": [ + { + "$ref": "#/definitions/news.Type" + } + ], + "example": "regular" + }, + "updatedAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "url": { + "type": "string", + "example": "https://somewebsite.com/blockchain" + }, + "views": { + "type": "integer", + "example": 123 + } + } + }, + "main.ToggleNotificationChannelDomainRequestBody": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "example": true + } + } + }, + "news.Type": { + "type": "string", + "enum": [ + "regular", + "featured" + ], + "x-enum-varnames": [ + "RegularNewsType", + "FeaturedNewsType" + ] + }, + "notifications.InAppNotificationsUserAuthToken": { + "type": "object", + "properties": { + "apiKey": { + "type": "string" + }, + "apiSecret": { + "type": "string" + }, + "appId": { + "type": "string" + } + } + }, + "server.ErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "SOMETHING_NOT_FOUND" + }, + "data": { + "type": "object", + "additionalProperties": {} + }, + "error": { + "type": "string", + "example": "something is missing" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "latest", + Host: "", + BasePath: "/v1w", + Schemes: []string{"https"}, + Title: "Notifications API", + Description: "API that handles everything related to write-only operations for notifying users about anything worthwhile.", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/cmd/husky-pack/api/swagger.json b/cmd/husky-pack/api/swagger.json new file mode 100644 index 0000000..2524c76 --- /dev/null +++ b/cmd/husky-pack/api/swagger.json @@ -0,0 +1,722 @@ +{ + "schemes": [ + "https" + ], + "swagger": "2.0", + "info": { + "description": "API that handles everything related to write-only operations for notifying users about anything worthwhile.", + "title": "Notifications API", + "contact": { + "name": "ice.io", + "url": "https://ice.io" + }, + "version": "latest" + }, + "basePath": "/v1w", + "paths": { + "/inapp-notifications-user-auth-token": { + "put": { + "description": "Generates a new token for the user to be used to connect to the inApp notifications stream on behalf of the user.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/notifications.InAppNotificationsUserAuthToken" + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "if not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/news": { + "post": { + "description": "Creates a news article, for each specified language.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "Required, if `newsImportFile` param is not specified.", + "name": "news", + "in": "formData" + }, + { + "type": "file", + "description": "The image for the news article", + "name": "image", + "in": "formData", + "required": true + }, + { + "type": "file", + "description": "A json file with an array of all language variants for 1 news article", + "name": "newsImportFile", + "in": "formData" + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/main.News" + } + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "409": { + "description": "if it conflicts with existing news articles", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/news/{language}/{newsId}": { + "delete": { + "description": "Deletes a language variant of a news article", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "ID of the news article", + "name": "newsId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the language code", + "name": "language", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK - found and deleted" + }, + "204": { + "description": "No Content - already deleted" + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "if not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + }, + "patch": { + "description": "Modifies a language variant of a news article", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "ID of the news article", + "name": "newsId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The language of the news article", + "name": "language", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Optional. Setting this will save you from race conditions. Example:`1232412415326543647657`.", + "name": "checksum", + "in": "formData" + }, + { + "type": "boolean", + "name": "markViewed", + "in": "formData" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Optional. Example: `financial`.", + "name": "tags", + "in": "formData" + }, + { + "type": "string", + "description": "Optional.", + "name": "title", + "in": "formData" + }, + { + "enum": [ + "regular", + "featured" + ], + "type": "string", + "description": "Optional. Example: any of `regular`, `featured`.", + "name": "type", + "in": "formData" + }, + { + "type": "string", + "description": "Optional. Example: `https://somewebsite.com/blockchain`.", + "name": "url", + "in": "formData" + }, + { + "type": "file", + "description": "The image for the news article", + "name": "image", + "in": "formData" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/main.News" + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "if not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "404": { + "description": "if news or user not found", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "409": { + "description": "if conflict occurs", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/notification-channels/{notificationChannel}/toggles/{type}": { + "put": { + "description": "Toggles the specific notification channel toggle type on/off.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "description": "Request params", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/main.ToggleNotificationChannelDomainRequestBody" + } + }, + { + "enum": [ + "push", + "email" + ], + "type": "string", + "description": "name of the channel", + "name": "notificationChannel", + "in": "path", + "required": true + }, + { + "enum": [ + "disable_all", + "weekly_report", + "weekly_stats", + "achievements", + "promotions", + "news", + "micro_community", + "mining", + "daily_bonus", + "system" + ], + "type": "string", + "description": "the type of the toggle", + "name": "type", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "404": { + "description": "if user not found", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/user-pings/{userId}": { + "post": { + "description": "Pings the user.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "ID of the user to ping", + "name": "userId", + "in": "path", + "required": true + } + ], + "responses": { + "202": { + "description": "accepted" + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "403": { + "description": "not allowed", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "404": { + "description": "if user not found", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "409": { + "description": "if already pinged and need to try later", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "main.News": { + "type": "object", + "properties": { + "checksum": { + "type": "string", + "example": "1232412415326543647657" + }, + "createdAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "id": { + "type": "string", + "example": "did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2" + }, + "imageUrl": { + "type": "string", + "example": "https://somewebsite.com/blockchain.jpg" + }, + "language": { + "type": "string", + "example": "en" + }, + "notificationChannels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "inapp", + "sms", + "email", + "push", + "analytics", + "push||analytics", + "push||email", + "push||email||analytics" + ] + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "cats", + "dogs", + "frogs" + ] + }, + "title": { + "type": "string", + "example": "The importance of the blockchain technology" + }, + "type": { + "allOf": [ + { + "$ref": "#/definitions/news.Type" + } + ], + "example": "regular" + }, + "updatedAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "url": { + "type": "string", + "example": "https://somewebsite.com/blockchain" + }, + "views": { + "type": "integer", + "example": 123 + } + } + }, + "main.ToggleNotificationChannelDomainRequestBody": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "example": true + } + } + }, + "news.Type": { + "type": "string", + "enum": [ + "regular", + "featured" + ], + "x-enum-varnames": [ + "RegularNewsType", + "FeaturedNewsType" + ] + }, + "notifications.InAppNotificationsUserAuthToken": { + "type": "object", + "properties": { + "apiKey": { + "type": "string" + }, + "apiSecret": { + "type": "string" + }, + "appId": { + "type": "string" + } + } + }, + "server.ErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "SOMETHING_NOT_FOUND" + }, + "data": { + "type": "object", + "additionalProperties": {} + }, + "error": { + "type": "string", + "example": "something is missing" + } + } + } + } +} \ No newline at end of file diff --git a/cmd/husky-pack/api/swagger.yaml b/cmd/husky-pack/api/swagger.yaml new file mode 100644 index 0000000..2ff187f --- /dev/null +++ b/cmd/husky-pack/api/swagger.yaml @@ -0,0 +1,496 @@ +# SPDX-License-Identifier: ice License 1.0 + +basePath: /v1w +definitions: + main.News: + properties: + checksum: + example: "1232412415326543647657" + type: string + createdAt: + example: "2022-01-03T16:20:52.156534Z" + type: string + id: + example: did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2 + type: string + imageUrl: + example: https://somewebsite.com/blockchain.jpg + type: string + language: + example: en + type: string + notificationChannels: + items: + enum: + - inapp + - sms + - email + - push + - analytics + - push||analytics + - push||email + - push||email||analytics + type: string + type: array + tags: + example: + - cats + - dogs + - frogs + items: + type: string + type: array + title: + example: The importance of the blockchain technology + type: string + type: + allOf: + - $ref: '#/definitions/news.Type' + example: regular + updatedAt: + example: "2022-01-03T16:20:52.156534Z" + type: string + url: + example: https://somewebsite.com/blockchain + type: string + views: + example: 123 + type: integer + type: object + main.ToggleNotificationChannelDomainRequestBody: + properties: + enabled: + example: true + type: boolean + type: object + news.Type: + enum: + - regular + - featured + type: string + x-enum-varnames: + - RegularNewsType + - FeaturedNewsType + notifications.InAppNotificationsUserAuthToken: + properties: + apiKey: + type: string + apiSecret: + type: string + appId: + type: string + type: object + server.ErrorResponse: + properties: + code: + example: SOMETHING_NOT_FOUND + type: string + data: + additionalProperties: {} + type: object + error: + example: something is missing + type: string + type: object +info: + contact: + name: ice.io + url: https://ice.io + description: API that handles everything related to write-only operations for notifying + users about anything worthwhile. + title: Notifications API + version: latest +paths: + /inapp-notifications-user-auth-token: + put: + consumes: + - application/json + description: Generates a new token for the user to be used to connect to the + inApp notifications stream on behalf of the user. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/notifications.InAppNotificationsUserAuthToken' + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "403": + description: if not allowed + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - Notifications + /news: + post: + consumes: + - multipart/form-data + description: Creates a news article, for each specified language. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: Required, if `newsImportFile` param is not specified. + in: formData + name: news + type: string + - description: The image for the news article + in: formData + name: image + required: true + type: file + - description: A json file with an array of all language variants for 1 news + article + in: formData + name: newsImportFile + type: file + produces: + - application/json + responses: + "201": + description: Created + schema: + items: + $ref: '#/definitions/main.News' + type: array + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "403": + description: not allowed + schema: + $ref: '#/definitions/server.ErrorResponse' + "409": + description: if it conflicts with existing news articles + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - News + /news/{language}/{newsId}: + delete: + consumes: + - application/json + description: Deletes a language variant of a news article + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: ID of the news article + in: path + name: newsId + required: true + type: string + - description: the language code + in: path + name: language + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK - found and deleted + "204": + description: No Content - already deleted + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "403": + description: if not allowed + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - News + patch: + consumes: + - multipart/form-data + description: Modifies a language variant of a news article + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: ID of the news article + in: path + name: newsId + required: true + type: string + - description: The language of the news article + in: path + name: language + required: true + type: string + - description: Optional. Setting this will save you from race conditions. Example:`1232412415326543647657`. + in: formData + name: checksum + type: string + - in: formData + name: markViewed + type: boolean + - collectionFormat: multi + description: 'Optional. Example: `financial`.' + in: formData + items: + type: string + name: tags + type: array + - description: Optional. + in: formData + name: title + type: string + - description: 'Optional. Example: any of `regular`, `featured`.' + enum: + - regular + - featured + in: formData + name: type + type: string + - description: 'Optional. Example: `https://somewebsite.com/blockchain`.' + in: formData + name: url + type: string + - description: The image for the news article + in: formData + name: image + type: file + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/main.News' + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "403": + description: if not allowed + schema: + $ref: '#/definitions/server.ErrorResponse' + "404": + description: if news or user not found + schema: + $ref: '#/definitions/server.ErrorResponse' + "409": + description: if conflict occurs + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - News + /notification-channels/{notificationChannel}/toggles/{type}: + put: + consumes: + - application/json + description: Toggles the specific notification channel toggle type on/off. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: Request params + in: body + name: request + required: true + schema: + $ref: '#/definitions/main.ToggleNotificationChannelDomainRequestBody' + - description: name of the channel + enum: + - push + - email + in: path + name: notificationChannel + required: true + type: string + - description: the type of the toggle + enum: + - disable_all + - weekly_report + - weekly_stats + - achievements + - promotions + - news + - micro_community + - mining + - daily_bonus + - system + in: path + name: type + required: true + type: string + produces: + - application/json + responses: + "200": + description: ok + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "404": + description: if user not found + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - Notifications + /user-pings/{userId}: + post: + consumes: + - application/json + description: Pings the user. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: ID of the user to ping + in: path + name: userId + required: true + type: string + produces: + - application/json + responses: + "202": + description: accepted + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "403": + description: not allowed + schema: + $ref: '#/definitions/server.ErrorResponse' + "404": + description: if user not found + schema: + $ref: '#/definitions/server.ErrorResponse' + "409": + description: if already pinged and need to try later + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - Notifications +schemes: +- https +swagger: "2.0" diff --git a/cmd/husky-pack/contract.go b/cmd/husky-pack/contract.go new file mode 100644 index 0000000..e9466aa --- /dev/null +++ b/cmd/husky-pack/contract.go @@ -0,0 +1,283 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "mime/multipart" + + "github.com/ice-blockchain/husky/analytics" + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/husky/notifications" +) + +// Public API. + +type ( + CreateNewsRequestBody struct { + // Required. + Image *multipart.FileHeader `form:"image" formMultipart:"image" swaggerignore:"true" required:"true"` + // Required, if `news` param is not specified. + NewsImportFile *multipart.FileHeader `form:"newsImportFile" formMultipart:"newsImportFile" swaggerignore:"true"` + // Required, if `newsImportFile` param is not specified. + News string `form:"news" formMultipart:"news"` + } + ModifyNewsRequestBody struct { + MarkViewed *bool `form:"markViewed" formMultipart:"markViewed"` + // Optional. + Image *multipart.FileHeader `form:"image" formMultipart:"image" swaggerignore:"true"` + // Optional. Example: `financial`. + Tags *news.Tags `form:"tags" formMultipart:"tags"` + // Optional. Example: any of `regular`, `featured`. + Type news.Type `form:"type" formMultipart:"type" swaggertype:"string" enums:"regular,featured"` + // Optional. + Title string `form:"title" formMultipart:"title"` + // Optional. Example: `https://somewebsite.com/blockchain`. + URL string `form:"url" formMultipart:"url"` + NewsID string `uri:"newsId" swaggerignore:"true" required:"true" example:"0x4B73C58370AEfcEf86A6021afCDe5673511376B2"` + Language string `uri:"language" swaggerignore:"true" required:"true" example:"en"` + // Optional. Setting this will save you from race conditions. Example:`1232412415326543647657`. + Checksum string `form:"checksum" formMultipart:"checksum"` + } + DeleteNewsArg struct { + NewsID string `uri:"newsId" swaggerignore:"true" required:"true" example:"0x4B73C58370AEfcEf86A6021afCDe5673511376B2"` + Language string `uri:"language" swaggerignore:"true" required:"true" example:"en"` + } + PingUserArg struct { + UserID string `uri:"userId" allowForbiddenWriteOperation:"true" required:"true" swaggerignore:"true" example:"edfd8c02-75e0-4687-9ac2-1ce4723865c4"` + } + ToggleNotificationChannelDomainRequestBody struct { + Enabled *bool `json:"enabled" required:"true" example:"true"` + Type notifications.NotificationDomain `uri:"type" example:"system" swaggerignore:"true" required:"true" enums:"disable_all,weekly_report,weekly_stats,achievements,promotions,news,micro_community,mining,daily_bonus,system"` //nolint:lll // . + NotificationChannel notifications.NotificationChannel `uri:"notificationChannel" example:"push" swaggerignore:"true" enums:"push,email" required:"true"` + } + News struct { + *news.TaggedNews + Checksum string `json:"checksum,omitempty" example:"1232412415326543647657"` + } + GenerateInAppNotificationsUserAuthTokenArg struct{} +) + +// Private API. + +const ( + applicationYamlKey = "cmd/husky-pack" + swaggerRoot = "/notifications/w" +) + +// . +var ( + //nolint:gochecknoglobals // It's only read from during runtime. + languages = map[string]struct{}{ + "aa": {}, + "ab": {}, + "ae": {}, + "af": {}, + "ak": {}, + "am": {}, + "an": {}, + "ar": {}, + "as": {}, + "av": {}, + "ay": {}, + "az": {}, + "ba": {}, + "be": {}, + "bg": {}, + "bh": {}, + "bi": {}, + "bm": {}, + "bn": {}, + "bo": {}, + "br": {}, + "bs": {}, + "ca": {}, + "ce": {}, + "ch": {}, + "co": {}, + "cr": {}, + "cs": {}, + "cu": {}, + "cv": {}, + "cy": {}, + "da": {}, + "de": {}, + "dv": {}, + "dz": {}, + "ee": {}, + "el": {}, + "en": {}, + "eo": {}, + "es": {}, + "et": {}, + "eu": {}, + "fa": {}, + "ff": {}, + "fi": {}, + "fil": {}, + "fj": {}, + "fo": {}, + "fr": {}, + "fy": {}, + "ga": {}, + "gd": {}, + "gl": {}, + "gn": {}, + "gu": {}, + "gv": {}, + "ha": {}, + "he": {}, + "hi": {}, + "ho": {}, + "hr": {}, + "ht": {}, + "hu": {}, + "hy": {}, + "hz": {}, + "ia": {}, + "id": {}, + "ie": {}, + "ig": {}, + "ii": {}, + "ik": {}, + "io": {}, + "is": {}, + "it": {}, + "iu": {}, + "ja": {}, + "jv": {}, + "ka": {}, + "kg": {}, + "ki": {}, + "kj": {}, + "kk": {}, + "kl": {}, + "km": {}, + "kn": {}, + "ko": {}, + "kr": {}, + "ks": {}, + "ku": {}, + "kv": {}, + "kw": {}, + "ky": {}, + "la": {}, + "lb": {}, + "lg": {}, + "li": {}, + "ln": {}, + "lo": {}, + "lt": {}, + "lu": {}, + "lv": {}, + "mg": {}, + "mh": {}, + "mi": {}, + "mk": {}, + "ml": {}, + "mn": {}, + "mr": {}, + "ms": {}, + "mt": {}, + "my": {}, + "na": {}, + "nb": {}, + "nd": {}, + "ne": {}, + "ng": {}, + "nl": {}, + "nn": {}, + "no": {}, + "nr": {}, + "nv": {}, + "ny": {}, + "oc": {}, + "oj": {}, + "om": {}, + "or": {}, + "os": {}, + "pa": {}, + "pi": {}, + "pl": {}, + "ps": {}, + "pt": {}, + "qu": {}, + "rm": {}, + "rn": {}, + "ro": {}, + "ru": {}, + "rw": {}, + "sa": {}, + "sc": {}, + "sd": {}, + "se": {}, + "sg": {}, + "si": {}, + "sk": {}, + "sl": {}, + "sm": {}, + "sn": {}, + "so": {}, + "sq": {}, + "sr": {}, + "ss": {}, + "st": {}, + "su": {}, + "sv": {}, + "sw": {}, + "ta": {}, + "te": {}, + "tg": {}, + "th": {}, + "ti": {}, + "tk": {}, + "tl": {}, + "tn": {}, + "to": {}, + "tr": {}, + "ts": {}, + "tt": {}, + "tw": {}, + "ty": {}, + "ug": {}, + "uk": {}, + "ur": {}, + "uz": {}, + "ve": {}, + "vi": {}, + "vo": {}, + "wa": {}, + "wo": {}, + "xh": {}, + "yi": {}, + "yo": {}, + "za": {}, + "zh": {}, + "zh-hans": {}, + "zh-hant": {}, + "zu": {}, + } +) + +// Values for server.ErrorResponse#Code. +const ( + duplicateNewsErrorCode = "CONFLICT_WITH_ANOTHER_NEWS" + alreadyViewedNewsErrorCode = "ALREADY_VIEWED_NEWS" + raceConditionErrorCode = "RACE_CONDITION" + newsNotFoundErrorCode = "NEWS_NOT_FOUND" + userNotFoundErrorCode = "USER_NOT_FOUND" + userAlreadyPingedErrorCode = "USER_ALREADY_PINGED" + invalidPropertiesErrorCode = "INVALID_PROPERTIES" +) + +type ( + // | service implements server.State and is responsible for managing the state and lifecycle of the package. + service struct { + notificationsProcessor notifications.Processor + newsProcessor news.Processor + analyticsProcessor analytics.Processor + } + config struct { + Host string `yaml:"host"` + Version string `yaml:"version"` + } +) diff --git a/cmd/husky-pack/husky_pack.go b/cmd/husky-pack/husky_pack.go new file mode 100644 index 0000000..ba3e853 --- /dev/null +++ b/cmd/husky-pack/husky_pack.go @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "context" + + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/analytics" + "github.com/ice-blockchain/husky/cmd/husky-pack/api" + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/husky/notifications" + appCfg "github.com/ice-blockchain/wintr/config" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/server" +) + +// @title Notifications API +// @version latest +// @description API that handles everything related to write-only operations for notifying users about anything worthwhile. +// @query.collection.format multi +// @schemes https +// @contact.name ice.io +// @contact.url https://ice.io +// @BasePath /v1w +func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var cfg config + appCfg.MustLoadFromKey(applicationYamlKey, &cfg) + api.SwaggerInfo.Host = cfg.Host + api.SwaggerInfo.Version = cfg.Version + server.New(new(service), applicationYamlKey, swaggerRoot).ListenAndServe(ctx, cancel) +} + +func (s *service) RegisterRoutes(router *server.Router) { + s.setupNotificationsRoutes(router) + s.setupNewsRoutes(router) +} + +func (s *service) Init(ctx context.Context, cancel context.CancelFunc) { + s.analyticsProcessor = analytics.StartProcessor(ctx, cancel) + s.newsProcessor = news.StartProcessor(ctx, cancel) + s.notificationsProcessor = notifications.StartProcessor(ctx, cancel) +} + +func (s *service) Close(ctx context.Context) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "could not close processors because context ended") + } + + return errors.Wrap(multierror.Append( + errors.Wrap(s.newsProcessor.Close(), "could not close news processor"), + errors.Wrap(s.notificationsProcessor.Close(), "could not close notifications processor"), + errors.Wrap(s.analyticsProcessor.Close(), "could not close analytics processor"), + ).ErrorOrNil(), "could not close processors") +} + +func (s *service) CheckHealth(ctx context.Context) error { + log.Debug("checking health...", "package", "news") + + if err := s.newsProcessor.CheckHealth(ctx); err != nil { + return errors.Wrapf(err, "news processor health check failed") + } + + log.Debug("checking health...", "package", "notifications") + if err := s.notificationsProcessor.CheckHealth(ctx); err != nil { + return errors.Wrapf(err, "notifications processor health check failed") + } + log.Debug("checking health...", "package", "analytics") + if err := s.analyticsProcessor.CheckHealth(ctx); err != nil { + return errors.Wrapf(err, "analytics processor health check failed") + } + + return nil +} diff --git a/cmd/husky-pack/news.go b/cmd/husky-pack/news.go new file mode 100644 index 0000000..9c7dc01 --- /dev/null +++ b/cmd/husky-pack/news.go @@ -0,0 +1,381 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "context" + "fmt" + "io" + "strings" + "sync" + + "github.com/goccy/go-json" + httpclient "github.com/imroc/req/v3" + "github.com/pkg/errors" + "golang.org/x/net/html" + + "github.com/ice-blockchain/eskimo/users" + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/husky/notifications" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/server" + "github.com/ice-blockchain/wintr/terror" +) + +func (s *service) setupNewsRoutes(router *server.Router) { + router. + Group("v1w"). + POST("news", server.RootHandler(s.CreateNews)). + DELETE("news/:language/:newsId", server.RootHandler(s.DeleteNews)). + PATCH("news/:language/:newsId", server.RootHandler(s.ModifyNews)) +} + +// CreateNews godoc +// +// @Schemes +// @Description Creates a news article, for each specified language. +// @Tags News +// @Accept multipart/form-data +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param multiPartFormData formData CreateNewsRequestBody true "Request params" +// @Param image formData file true "The image for the news article" +// @Param newsImportFile formData file false "A json file with an array of all language variants for 1 news article" +// @Success 201 {array} News +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 403 {object} server.ErrorResponse "not allowed" +// @Failure 409 {object} server.ErrorResponse "if it conflicts with existing news articles" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /news [POST]. +func (s *service) CreateNews( //nolint:gocritic,funlen // . + ctx context.Context, + req *server.Request[CreateNewsRequestBody, []*News], +) (*server.Response[[]*News], *server.Response[server.ErrorResponse]) { + if err := verifyIfAuthorizedToAlterNews(&req.AuthenticatedUser); err != nil { + return nil, server.Forbidden(err) + } + inputNews, err := req.Data.parseNews() + if err != nil { + return nil, server.UnprocessableEntity(errors.Wrapf(err, "failed to parse news"), invalidPropertiesErrorCode) + } + if err = req.Data.validateNews(inputNews); err != nil { + return nil, server.BadRequest(errors.Wrapf(err, "invalid news records"), invalidPropertiesErrorCode) + } + if err = s.newsProcessor.CreateNews(ctx, inputNews, req.Data.Image); err != nil { + err = errors.Wrapf(err, "failed to create news for %#v", inputNews) + switch { + case errors.Is(err, news.ErrDuplicate): + if tErr := terror.As(err); tErr != nil { + return nil, server.Conflict(err, duplicateNewsErrorCode, tErr.Data) + } + default: + return nil, server.Unexpected(err) + } + } + resp := make([]*News, 0, len(inputNews)) + for _, nws := range inputNews { + resp = append(resp, &News{ + TaggedNews: nws, + Checksum: nws.Checksum(), + }) + } + + return server.Created(&resp), nil +} + +func (req *CreateNewsRequestBody) parseNews() (resp []*news.TaggedNews, err error) { + var rawBytes []byte + if req.NewsImportFile != nil { + newsImportFile, oErr := req.NewsImportFile.Open() + if oErr != nil { + return nil, errors.Wrap(oErr, "failed to open newsImportFile") + } + if rawBytes, err = io.ReadAll(newsImportFile); err != nil { + return nil, errors.Wrap(err, "failed to read from newsImportFile") + } + if err = newsImportFile.Close(); err != nil { + return nil, errors.Wrap(err, "failed to close newsImportFile") + } + } + if req.News != "" { + rawBytes = []byte(req.News) + } + if len(rawBytes) == 0 { + return nil, errors.Errorf("please provide a value for either `news` or `newsImportFile` parameters") + } + err = errors.Wrapf(json.Unmarshal(rawBytes, &resp), "failed to json unmarshal `%v` into %#v", string(rawBytes), resp) + + return +} + +//nolint:funlen,gocognit,gocyclo,revive,cyclop // Better to be grouped together. +func (*CreateNewsRequestBody) validateNews(nws []*news.TaggedNews) error { + if len(nws) == 0 { + return errors.New("at least 1 news element is required") + } + const conditions = 20 + allAllowedNewsNotificationChannels := users.Enum[notifications.NotificationChannel]{ + notifications.PushOrFallbackToEmailNotificationChannel, + notifications.InAppNotificationChannel, + notifications.EmailNotificationChannel, + notifications.PushNotificationChannel, + } + errChan := make(chan string, (conditions+len(allAllowedNewsNotificationChannels))*len(nws)) + wg := new(sync.WaitGroup) + wg.Add(len(nws)) + featured := 0 //nolint:ifshort // Wrong. + allLanguages := make(map[string]int, len(nws)) + allURLs := make(map[string]int, len(nws)) + for idx, nw := range nws { + if nw.Type != news.FeaturedNewsType && nw.Type != news.RegularNewsType { + errChan <- fmt.Sprintf("invalid `[%v].type=%q`", idx, nw.Type) + } else if nw.Type == news.FeaturedNewsType { + featured++ + } + if nw.NotificationChannels == nil || nw.NotificationChannels.NotificationChannels == nil { + nw.NotificationChannels = ¬ifications.NotificationChannels{ + NotificationChannels: &users.Enum[notifications.NotificationChannel]{notifications.PushOrFallbackToEmailNotificationChannel}, + } + } else { + channels := make(map[notifications.NotificationChannel]int, len(allAllowedNewsNotificationChannels)) + for jj, channel := range *nw.NotificationChannels.NotificationChannels { + channels[channel]++ + var matched bool + for _, notificationChannel := range allAllowedNewsNotificationChannels { + if notificationChannel == channel { + matched = true + + break + } + } + if !matched { + errChan <- fmt.Sprintf("invalid `[%v].notificationChannels[%v]=%q`. Allowed: empty array or %#v", idx, jj, channel, allAllowedNewsNotificationChannels) //nolint:lll // . + } + } + for _, val := range channels { + if val > 1 { + errChan <- fmt.Sprintf("invalid `[%v].notificationChannels`. list contains duplicates", idx) + + break + } + } + } + nw.Language = strings.ToLower(nw.Language) + if _, found := languages[nw.Language]; !found { + errChan <- fmt.Sprintf("invalid `[%v].language=%q`", idx, nw.Language) + } else { + allLanguages[nw.Language]++ + } + if nw.Tags == nil || len(*nw.Tags) == 0 { + errChan <- fmt.Sprintf("missing `[%v].tags`", idx) + } else { + tags := *nw.Tags + for i := range tags { + tags[i] = strings.ToLower(tags[i]) + if tags[i] == "" { + errChan <- fmt.Sprintf("empty `[%v].tags[%v]`", idx, i) + } + } + } + if nw.Title == "" { + errChan <- fmt.Sprintf("missing `[%v].title`", idx) + } + go func(ix int) { + defer wg.Done() + if nws[ix].URL == "" { + errChan <- fmt.Sprintf("missing `[%v].url`", ix) + } else if err := validateURL(nws[ix].URL); err != nil { + errChan <- fmt.Sprintf("invalid `[%v].url=%q`, %v", ix, nws[ix].URL, err) + } else { + allURLs[nws[ix].URL]++ + } + }(idx) + } + wg.Wait() + if featured > 1 { + errChan <- "only 1 item can be of type='featured'" + } + for k, v := range allLanguages { + if v > 1 { + errChan <- fmt.Sprintf("language `%v` is present in multiple items", k) + + break + } + } + for k, v := range allURLs { + if v > 1 { + errChan <- fmt.Sprintf("url `%v` is present in multiple items", k) + + break + } + } + close(errChan) + errs := make([]string, 0, len(errChan)) + for err := range errChan { + errs = append(errs, err) + } + if len(errs) != 0 { + return errors.New(strings.Join(errs, "------")) + } + + return nil +} + +// DeleteNews godoc +// +// @Schemes +// @Description Deletes a language variant of a news article +// @Tags News +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param newsId path string true "ID of the news article" +// @Param language path string true "the language code" +// @Success 200 "OK - found and deleted" +// @Success 204 "No Content - already deleted" +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 403 {object} server.ErrorResponse "if not allowed" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /news/{language}/{newsId} [DELETE]. +func (s *service) DeleteNews( //nolint:gocritic // . + ctx context.Context, + req *server.Request[DeleteNewsArg, any], +) (*server.Response[any], *server.Response[server.ErrorResponse]) { + if err := verifyIfAuthorizedToAlterNews(&req.AuthenticatedUser); err != nil { + return nil, server.Forbidden(err) + } + if err := s.newsProcessor.DeleteNews(ctx, req.Data.NewsID, req.Data.Language); err != nil { + err = errors.Wrapf(err, "failed to delete news for %#v", req.Data) + switch { + case errors.Is(err, news.ErrNotFound): + return server.NoContent(), nil + default: + return nil, server.Unexpected(err) + } + } + + return server.OK[any](), nil +} + +// ModifyNews godoc +// +// @Schemes +// @Description Modifies a language variant of a news article +// @Tags News +// @Accept multipart/form-data +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param newsId path string true "ID of the news article" +// @Param language path string true "The language of the news article" +// @Param multiPartFormData formData ModifyNewsRequestBody false "Request params" +// @Param image formData file false "The image for the news article" +// @Success 200 {object} News +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 403 {object} server.ErrorResponse "if not allowed" +// @Failure 404 {object} server.ErrorResponse "if news or user not found" +// @Failure 409 {object} server.ErrorResponse "if conflict occurs" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /news/{language}/{newsId} [PATCH]. +func (s *service) ModifyNews( //nolint:gocritic,funlen // . + ctx context.Context, + req *server.Request[ModifyNewsRequestBody, News], +) (*server.Response[News], *server.Response[server.ErrorResponse]) { + if req.Data.MarkViewed != nil && *req.Data.MarkViewed { + if err := s.newsProcessor.IncrementViews(ctx, req.Data.NewsID, req.Data.Language); err != nil { + err = errors.Wrapf(err, "failed to increment views for %#v", req.Data) + switch { + case errors.Is(err, storage.ErrNotFound): + return nil, server.NotFound(err, newsNotFoundErrorCode) + case errors.Is(err, storage.ErrDuplicate): + return nil, server.Conflict(err, alreadyViewedNewsErrorCode) + default: + return nil, server.Unexpected(err) + } + } + + return server.OK[News](), nil + } + if err := verifyIfAuthorizedToAlterNews(&req.AuthenticatedUser); err != nil { + return nil, server.Forbidden(err) + } + if err := req.Data.validate(); err != nil { + return nil, server.BadRequest(errors.Wrapf(err, "invalid request properties"), invalidPropertiesErrorCode) + } + nws := &news.TaggedNews{ + News: &news.News{ + ID: req.Data.NewsID, + Language: req.Data.Language, + Type: req.Data.Type, + Title: req.Data.Title, + URL: req.Data.URL, + }, + Tags: req.Data.Tags, + } + if err := s.newsProcessor.ModifyNews(news.ContextWithChecksum(ctx, req.Data.Checksum), nws, req.Data.Image); err != nil { + err = errors.Wrapf(err, "failed to modify news for %#v", req.Data) + switch { + case errors.Is(err, news.ErrInvalidImageExtension): + return nil, server.BadRequest(errors.Wrapf(err, "invalid image extension"), invalidPropertiesErrorCode) + case errors.Is(err, news.ErrRaceCondition): + return nil, server.BadRequest(err, raceConditionErrorCode) + case errors.Is(err, news.ErrNotFound): + return nil, server.NotFound(err, newsNotFoundErrorCode) + case errors.Is(err, news.ErrDuplicate): + return nil, server.Conflict(err, duplicateNewsErrorCode) + default: + return nil, server.Unexpected(err) + } + } + + return server.OK(&News{TaggedNews: nws, Checksum: nws.Checksum()}), nil +} + +func (req *ModifyNewsRequestBody) validate() error { //nolint:gocognit // Beg to differ. + var errs []string + if req.Type != "" && req.Type != news.FeaturedNewsType && req.Type != news.RegularNewsType { + errs = append(errs, fmt.Sprintf("invalid `type=%q`", req.Type)) + } + if err := validateURL(req.URL); err != nil { + errs = append(errs, fmt.Sprintf("invalid `url=%q`, %v", req.URL, err)) + } + if req.Type == "" && req.Image == nil && req.Title == "" && req.Tags == nil && req.URL == "" { + errs = append(errs, "at least one property has to be specified") + } + if len(errs) != 0 { + return errors.New(strings.Join(errs, "------")) + } + + return nil +} + +func verifyIfAuthorizedToAlterNews(usr *server.AuthenticatedUser) error { + if !strings.EqualFold(usr.Role, "admin") && !strings.EqualFold(usr.Role, "author") { + return errors.Errorf("access denied, invalid role `%v`", usr.Role) + } + + return nil +} + +func validateURL(url string) error { + if url == "" { + return nil + } + if resp, err := httpclient.Get(url); err != nil { + return errors.Wrapf(err, "unable to execute get request for url:%v", url) + } else if resp.Err != nil { + return errors.Wrapf(err, "verifying url request returns some underlying error for url:%v", url) + } else if _, err = html.Parse(resp.Body); err != nil { + return errors.Wrapf(err, "html invalid in the response from url:%v", url) + } + + return nil +} diff --git a/cmd/husky-pack/notifications.go b/cmd/husky-pack/notifications.go new file mode 100644 index 0000000..5205e8e --- /dev/null +++ b/cmd/husky-pack/notifications.go @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "context" + "net/http" + + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/notifications" + "github.com/ice-blockchain/wintr/server" +) + +func (s *service) setupNotificationsRoutes(router *server.Router) { + router. + Group("v1w"). + POST("user-pings/:userId", server.RootHandler(s.PingUser)). + PUT("notification-channels/:notificationChannel/toggles/:type", server.RootHandler(s.ToggleNotificationChannelDomain)). + PUT("inapp-notifications-user-auth-token", server.RootHandler(s.GenerateInAppNotificationsUserAuthToken)) +} + +// PingUser godoc +// +// @Schemes +// @Description Pings the user. +// @Tags Notifications +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param userId path string true "ID of the user to ping" +// @Success 202 "accepted" +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 403 {object} server.ErrorResponse "not allowed" +// @Failure 404 {object} server.ErrorResponse "if user not found" +// @Failure 409 {object} server.ErrorResponse "if already pinged and need to try later" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /user-pings/{userId} [POST]. +func (s *service) PingUser( //nolint:gocritic // . + ctx context.Context, + req *server.Request[PingUserArg, any], +) (*server.Response[any], *server.Response[server.ErrorResponse]) { + if err := s.notificationsProcessor.PingUser(ctx, req.Data.UserID); err != nil { + err = errors.Wrapf(err, "failed to ping user for %#v", req.Data) + switch { + case errors.Is(err, notifications.ErrNotFound): + return nil, server.NotFound(err, userNotFoundErrorCode) + case errors.Is(err, notifications.ErrDuplicate): + return nil, server.Conflict(err, userAlreadyPingedErrorCode) + case errors.Is(err, notifications.ErrPingingUserNotAllowed): + return nil, server.Forbidden(err) + default: + return nil, server.Unexpected(err) + } + } + + return &server.Response[any]{Code: http.StatusAccepted}, nil +} + +// ToggleNotificationChannelDomain godoc +// +// @Schemes +// @Description Toggles the specific notification channel toggle type on/off. +// @Tags Notifications +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param request body ToggleNotificationChannelDomainRequestBody true "Request params" +// @Param notificationChannel path string true "name of the channel" enums(push,email) +// @Param type path string true "the type of the toggle" enums(disable_all,weekly_report,weekly_stats,achievements,promotions,news,micro_community,mining,daily_bonus,system) +// @Success 200 "ok" +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 404 {object} server.ErrorResponse "if user not found" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /notification-channels/{notificationChannel}/toggles/{type} [PUT]. +func (s *service) ToggleNotificationChannelDomain( //nolint:gocritic // False negative. + ctx context.Context, + req *server.Request[ToggleNotificationChannelDomainRequestBody, any], +) (*server.Response[any], *server.Response[server.ErrorResponse]) { + if err := req.Data.validate(); err != nil { + return nil, server.UnprocessableEntity(errors.Wrap(err, "validations failed"), invalidPropertiesErrorCode) + } + if err := s.notificationsProcessor.ToggleNotificationChannelDomain(ctx, req.Data.NotificationChannel, req.Data.Type, *req.Data.Enabled, req.AuthenticatedUser.UserID); err != nil { //nolint:lll // . + err = errors.Wrapf(err, "failed to ToggleNotificationChannelDomain for %#v, userID:%v", req.Data, req.AuthenticatedUser.UserID) + switch { + case errors.Is(err, notifications.ErrRelationNotFound): + return nil, server.NotFound(err, userNotFoundErrorCode) + default: + return nil, server.Unexpected(err) + } + } + + return server.OK[any](), nil +} + +func (arg *ToggleNotificationChannelDomainRequestBody) validate() error { + all := notifications.AllNotificationDomains[arg.NotificationChannel] + if len(all) == 0 { + return errors.Errorf("invalid notificationChannel `%v`", arg.NotificationChannel) + } + for _, domain := range all { + if domain == arg.Type { + return nil + } + } + + return errors.Errorf("invalid type `%v`", arg.Type) +} + +// GenerateInAppNotificationsUserAuthToken godoc +// +// @Schemes +// @Description Generates a new token for the user to be used to connect to the inApp notifications stream on behalf of the user. +// @Tags Notifications +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Success 200 {object} notifications.InAppNotificationsUserAuthToken +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 403 {object} server.ErrorResponse "if not allowed" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /inapp-notifications-user-auth-token [PUT]. +func (s *service) GenerateInAppNotificationsUserAuthToken( //nolint:gocritic // False negative. + ctx context.Context, + req *server.Request[GenerateInAppNotificationsUserAuthTokenArg, notifications.InAppNotificationsUserAuthToken], +) (*server.Response[notifications.InAppNotificationsUserAuthToken], *server.Response[server.ErrorResponse]) { + token, err := s.notificationsProcessor.GenerateInAppNotificationsUserAuthToken(ctx, req.AuthenticatedUser.UserID) + if err != nil { + return nil, server.Forbidden(errors.Wrapf(err, "not allowed")) + } + + return server.OK(token), nil +} diff --git a/cmd/husky/.testdata/application.yaml b/cmd/husky/.testdata/application.yaml new file mode 100644 index 0000000..c3d0de6 --- /dev/null +++ b/cmd/husky/.testdata/application.yaml @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: ice License 1.0 +#TODO \ No newline at end of file diff --git a/cmd/husky/.testdata/expected_swagger.json b/cmd/husky/.testdata/expected_swagger.json new file mode 100644 index 0000000..e69de29 diff --git a/cmd/husky/.testdata/localhost.crt b/cmd/husky/.testdata/localhost.crt new file mode 100644 index 0000000..84c6603 --- /dev/null +++ b/cmd/husky/.testdata/localhost.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDijCCAnKgAwIBAgIJAMeawIdSd6+8MA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV +BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwHhcNMjIwMTA0MjEwNDE3 +WhcNMjQxMDI0MjEwNDE3WjBtMQswCQYDVQQGEwJVUzESMBAGA1UECAwJWW91clN0 +YXRlMREwDwYDVQQHDAhZb3VyQ2l0eTEdMBsGA1UECgwURXhhbXBsZS1DZXJ0aWZp +Y2F0ZXMxGDAWBgNVBAMMD2xvY2FsaG9zdC5sb2NhbDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAONuA1zntIXbNaEvt/n+/Jisib/8Bjvfm2I9ENMq0TBH +OGlbZgJ9ywiKsrxBYH/O2q6Dsxy9fL5cSfcMmAS0FXPrcXQx/pVNCgNWLEXZyPDk +SzSR+tlPXzuryN2/jbWtgOZc73kfxQVBqUWbLyMiXaxMxVGHgpYMg0w68Ee62d2H +AnA7c0YBllvggDRSaoDRJJZTc8DDGAHm9x5583zdxpCQh/EeV+zIjd2lAGF0ioYu +PV69lwyrTnY/s7WG59nRYwYR50JvbI4G+5bbpf4q2W7Q0BVLqwSdMJfAfG43N5U/ +4Q1dfyJeXavFfQaZWJtEiVOU9TBiV3QQto0tI28R6J0CAwEAAaNzMHEwQQYDVR0j +BDowOKErpCkwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1D +QYIJANxKhfP/dJTMMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMBQGA1UdEQQNMAuC +CWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAjrUp0epptzaaTULvhrFdNJ6e +2WAeJpYCxMXjms7P+B/ldyIirDqG/WEzpN64Z1gXJhtxnw7IGTsQ8eXqLmBDk045 +vHhVbRhjVGADc+EVwX6OzQ+WQEGZzNDPX7DBObLC1ZV5LcfUwQXyACmlARlYgXJN +GZFDkijDcvY3/Hyq9NkV6VGYPKnzxaal3v3cYO8FXQHaOLnu+SLWknT56y2vTa5/ +H4CoX8nrts5Fa0NuOdoyNA1c7IdHjR/dy4g5IUZW+Sbhr1nNgkECBJvJ5QOWZ3M4 +4a8NroD0ikzQDaeS4Tpk54WnJLEjDgQe5fX9RMu9F2sbr+wP+gUTmHuhLg/Ptw== +-----END CERTIFICATE----- diff --git a/cmd/husky/.testdata/localhost.key b/cmd/husky/.testdata/localhost.key new file mode 100644 index 0000000..f2fa28b --- /dev/null +++ b/cmd/husky/.testdata/localhost.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDjbgNc57SF2zWh +L7f5/vyYrIm//AY735tiPRDTKtEwRzhpW2YCfcsIirK8QWB/ztqug7McvXy+XEn3 +DJgEtBVz63F0Mf6VTQoDVixF2cjw5Es0kfrZT187q8jdv421rYDmXO95H8UFQalF +my8jIl2sTMVRh4KWDINMOvBHutndhwJwO3NGAZZb4IA0UmqA0SSWU3PAwxgB5vce +efN83caQkIfxHlfsyI3dpQBhdIqGLj1evZcMq052P7O1hufZ0WMGEedCb2yOBvuW +26X+Ktlu0NAVS6sEnTCXwHxuNzeVP+ENXX8iXl2rxX0GmVibRIlTlPUwYld0ELaN +LSNvEeidAgMBAAECggEBALHtN6RPgePXA7X+5ygmXOf01C/ms9nTrnTE4YzTSqVC +kteaMcxxLY6ZNAwj+aMD6gHt9wrdE+K5wQQOTkAfw0jVQgVtt4aGpvbFTA25vIL5 +l/yg2Gd6uT6tvo/9dJhWDSosOw2/1RuvqwZRyibqk+5ggV6vbXKGh5Hz6lezzw6H +P8xazcT634Tj5YhNhd00XIcr1V+kqEHZGiJP0XzrdXzjAS5NciEdW529gv4Dp4Ni +zpSroznCcP6psLXS99snDg1UdQPFu90IW51i7VOBkF+RhRIMWOywO9FeFHoQ7j0u +SqACHFz8HQnR0uSZ8AwnWrRhWVoBfQ6bwDjJKi/vtQECgYEA8ZxQtliNEd2ojF0s +PbU7YE9vTDEY5AXk6bRPf1rJk/RTDZZwguC4MWjTBpcqawppzur8RLRJAp3WtyP4 +zXh7qvgeOFIaVmGUefEfg8OkXAtvwT+ogvl9HHyY3lPWQyF+WV3dN4ILWguDYiCB +myL/4EqBZjSHmqfzKS6sT9x+TYkCgYEA8Pl9uH6wDSReKqmO1kNnyF+dWfP0I7wX +UpSTkRvSrYQIH2VFYH+LSN5OZaku0FHQkIbgjunAT29N8p//E2ZA3L2xNIKDV+hI +M+NV52YwguUROh2mIypGlPT1f7R+tiYzz27jZgctYIF3mzTMQ1TC2TqgXzG5eA2y +/Ojcmj9ncXUCgYEA4y5fOkYjR3RMAsetTMy3awTmGxdjVy0vpIx138NHHYaz/WfC +nV2d9F+jZWQIb6PX/8c2s4dtyzcM6SG61cD/T7CEAeM5fpW8XbjbMDNqvV3HlEc+ +NQFQodOKjir4oiDBRFidJI90CxQeUstL8srDHGwSJj8obsSTQNrxDRq/7DkCgYBR +cLBpmv9a4bClkHqCtXMsyAvA6+7V6Oqk8SvSPen81IN+QNaqn1BuhxtNxljY9N2d +Csh35E4nSoG4fxRQ9Rz0vXNXQMis/Aby6mEM/H9mrY4d6wlMFyyViRgzWcf9PXoD +IAHgaIqQdBD9NmHWW54ilmq+4WpCRbb5PKXZx5XpRQKBgQCCMpaANqren/4aeDdz +F2lkEJweRsTaS13LJKkk/fGWeXo3N/sXuBPocViSzkCNoHGx1yHrG9TyC7Cz7UXj +4Dpy7gI3cg0i7gaHgC1JfYoPzCSmvnJT62TyL/5SGwF4Xkg8efmF+sVKZqsqgiiT +ATGyCMbfg4XaTw84ubV2rGxvRQ== +-----END PRIVATE KEY----- diff --git a/cmd/husky/Dockerfile b/cmd/husky/Dockerfile new file mode 100644 index 0000000..f913afd --- /dev/null +++ b/cmd/husky/Dockerfile @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: ice License 1.0 + +FROM golang:latest AS build +ARG SERVICE_NAME +ARG TARGETOS +ARG TARGETARCH + +WORKDIR /app/ +COPY . /app/ + +ENV CGO_ENABLED=1 +ENV GOOS=$TARGETOS +ENV GOARCH=$TARGETARCH + +RUN env SERVICE_NAME=$SERVICE_NAME make dockerfile +RUN cp cmd/$SERVICE_NAME/bin bin + +FROM gcr.io/distroless/base-debian11:latest +ARG TARGETOS +ARG TARGETARCH +ARG PORT=443 +LABEL os=$TARGETOS +LABEL arch=$TARGETARCH +COPY --from=build /app/bin app +#You might need to expose more ports. Just add more separated by space +#I.E. EXPOSE 8080 8081 8082 8083 +EXPOSE $PORT +ENTRYPOINT ["/app"] diff --git a/cmd/husky/api/docs.go b/cmd/husky/api/docs.go new file mode 100644 index 0000000..2f4c617 --- /dev/null +++ b/cmd/husky/api/docs.go @@ -0,0 +1,428 @@ +// Code generated by swaggo/swag. DO NOT EDIT. + +package api + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": { + "name": "ice.io", + "url": "https://ice.io" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/news/{language}": { + "get": { + "description": "Returns a list of news.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "enum": [ + "regular", + "featured" + ], + "type": "string", + "description": "type of news to look for. Default is ` + "`" + `regular` + "`" + `.", + "name": "type", + "in": "query" + }, + { + "type": "string", + "description": "the language of the news article", + "name": "language", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit of elements to return. Defaults to 10", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Elements to skip before starting to look for", + "name": "offset", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/news.PersonalNews" + } + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/notification-channels/{notificationChannel}/toggles": { + "get": { + "description": "Returns the user's list of notification channel toggles for the provided notificationChannel.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "enum": [ + "push", + "email" + ], + "type": "string", + "description": "email/push", + "name": "notificationChannel", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/notifications.NotificationChannelToggle" + } + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/unread-news-count/{language}": { + "get": { + "description": "Returns the number of unread news the authorized user has.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "The language of the news to be counted", + "name": "language", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Example ` + "`" + `2022-01-03T16:20:52.156534Z` + "`" + `. If unspecified, the creation date of the news articles will be ignored.", + "name": "createdAfter", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/news.UnreadNewsCount" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "news.PersonalNews": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "id": { + "type": "string", + "example": "did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2" + }, + "imageUrl": { + "type": "string", + "example": "https://somewebsite.com/blockchain.jpg" + }, + "language": { + "type": "string", + "example": "en" + }, + "notificationChannels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "inapp", + "sms", + "email", + "push", + "analytics", + "push||analytics", + "push||email", + "push||email||analytics" + ] + } + }, + "title": { + "type": "string", + "example": "The importance of the blockchain technology" + }, + "type": { + "allOf": [ + { + "$ref": "#/definitions/news.Type" + } + ], + "example": "regular" + }, + "updatedAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "url": { + "type": "string", + "example": "https://somewebsite.com/blockchain" + }, + "viewed": { + "type": "boolean", + "example": true + }, + "views": { + "type": "integer", + "example": 123 + } + } + }, + "news.Type": { + "type": "string", + "enum": [ + "regular", + "featured" + ], + "x-enum-varnames": [ + "RegularNewsType", + "FeaturedNewsType" + ] + }, + "news.UnreadNewsCount": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "example": 1 + } + } + }, + "notifications.NotificationChannelToggle": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "example": true + }, + "type": { + "allOf": [ + { + "$ref": "#/definitions/notifications.NotificationDomain" + } + ], + "example": "system" + } + } + }, + "notifications.NotificationDomain": { + "type": "string", + "enum": [ + "disable_all", + "all", + "weekly_report", + "weekly_stats", + "achievements", + "promotions", + "news", + "micro_community", + "mining", + "daily_bonus", + "system" + ], + "x-enum-varnames": [ + "DisableAllNotificationDomain", + "AllNotificationDomain", + "WeeklyReportNotificationDomain", + "WeeklyStatsNotificationDomain", + "AchievementsNotificationDomain", + "PromotionsNotificationDomain", + "NewsNotificationDomain", + "MicroCommunityNotificationDomain", + "MiningNotificationDomain", + "DailyBonusNotificationDomain", + "SystemNotificationDomain" + ] + }, + "server.ErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "SOMETHING_NOT_FOUND" + }, + "data": { + "type": "object", + "additionalProperties": {} + }, + "error": { + "type": "string", + "example": "something is missing" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "latest", + Host: "", + BasePath: "/v1r", + Schemes: []string{"https"}, + Title: "Notifications API", + Description: "API that handles everything related to read-only operations for notifying users about anything worthwhile.", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/cmd/husky/api/swagger.json b/cmd/husky/api/swagger.json new file mode 100644 index 0000000..a57e1b3 --- /dev/null +++ b/cmd/husky/api/swagger.json @@ -0,0 +1,407 @@ +{ + "schemes": [ + "https" + ], + "swagger": "2.0", + "info": { + "description": "API that handles everything related to read-only operations for notifying users about anything worthwhile.", + "title": "Notifications API", + "contact": { + "name": "ice.io", + "url": "https://ice.io" + }, + "version": "latest" + }, + "basePath": "/v1r", + "paths": { + "/news/{language}": { + "get": { + "description": "Returns a list of news.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "enum": [ + "regular", + "featured" + ], + "type": "string", + "description": "type of news to look for. Default is `regular`.", + "name": "type", + "in": "query" + }, + { + "type": "string", + "description": "the language of the news article", + "name": "language", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit of elements to return. Defaults to 10", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Elements to skip before starting to look for", + "name": "offset", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/news.PersonalNews" + } + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/notification-channels/{notificationChannel}/toggles": { + "get": { + "description": "Returns the user's list of notification channel toggles for the provided notificationChannel.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Notifications" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "enum": [ + "push", + "email" + ], + "type": "string", + "description": "email/push", + "name": "notificationChannel", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/notifications.NotificationChannelToggle" + } + } + }, + "400": { + "description": "if validations fail", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + }, + "/unread-news-count/{language}": { + "get": { + "description": "Returns the number of unread news the authorized user has.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "News" + ], + "parameters": [ + { + "type": "string", + "default": "Bearer \u003cAdd access token here\u003e", + "description": "Insert your access token", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "The language of the news to be counted", + "name": "language", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Example `2022-01-03T16:20:52.156534Z`. If unspecified, the creation date of the news articles will be ignored.", + "name": "createdAfter", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/news.UnreadNewsCount" + } + }, + "401": { + "description": "if not authorized", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "422": { + "description": "if syntax fails", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + }, + "504": { + "description": "if request times out", + "schema": { + "$ref": "#/definitions/server.ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "news.PersonalNews": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "id": { + "type": "string", + "example": "did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2" + }, + "imageUrl": { + "type": "string", + "example": "https://somewebsite.com/blockchain.jpg" + }, + "language": { + "type": "string", + "example": "en" + }, + "notificationChannels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "inapp", + "sms", + "email", + "push", + "analytics", + "push||analytics", + "push||email", + "push||email||analytics" + ] + } + }, + "title": { + "type": "string", + "example": "The importance of the blockchain technology" + }, + "type": { + "allOf": [ + { + "$ref": "#/definitions/news.Type" + } + ], + "example": "regular" + }, + "updatedAt": { + "type": "string", + "example": "2022-01-03T16:20:52.156534Z" + }, + "url": { + "type": "string", + "example": "https://somewebsite.com/blockchain" + }, + "viewed": { + "type": "boolean", + "example": true + }, + "views": { + "type": "integer", + "example": 123 + } + } + }, + "news.Type": { + "type": "string", + "enum": [ + "regular", + "featured" + ], + "x-enum-varnames": [ + "RegularNewsType", + "FeaturedNewsType" + ] + }, + "news.UnreadNewsCount": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "example": 1 + } + } + }, + "notifications.NotificationChannelToggle": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "example": true + }, + "type": { + "allOf": [ + { + "$ref": "#/definitions/notifications.NotificationDomain" + } + ], + "example": "system" + } + } + }, + "notifications.NotificationDomain": { + "type": "string", + "enum": [ + "disable_all", + "all", + "weekly_report", + "weekly_stats", + "achievements", + "promotions", + "news", + "micro_community", + "mining", + "daily_bonus", + "system" + ], + "x-enum-varnames": [ + "DisableAllNotificationDomain", + "AllNotificationDomain", + "WeeklyReportNotificationDomain", + "WeeklyStatsNotificationDomain", + "AchievementsNotificationDomain", + "PromotionsNotificationDomain", + "NewsNotificationDomain", + "MicroCommunityNotificationDomain", + "MiningNotificationDomain", + "DailyBonusNotificationDomain", + "SystemNotificationDomain" + ] + }, + "server.ErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "string", + "example": "SOMETHING_NOT_FOUND" + }, + "data": { + "type": "object", + "additionalProperties": {} + }, + "error": { + "type": "string", + "example": "something is missing" + } + } + } + } +} \ No newline at end of file diff --git a/cmd/husky/api/swagger.yaml b/cmd/husky/api/swagger.yaml new file mode 100644 index 0000000..d9a8419 --- /dev/null +++ b/cmd/husky/api/swagger.yaml @@ -0,0 +1,287 @@ +# SPDX-License-Identifier: ice License 1.0 + +basePath: /v1r +definitions: + news.PersonalNews: + properties: + createdAt: + example: "2022-01-03T16:20:52.156534Z" + type: string + id: + example: did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2 + type: string + imageUrl: + example: https://somewebsite.com/blockchain.jpg + type: string + language: + example: en + type: string + notificationChannels: + items: + enum: + - inapp + - sms + - email + - push + - analytics + - push||analytics + - push||email + - push||email||analytics + type: string + type: array + title: + example: The importance of the blockchain technology + type: string + type: + allOf: + - $ref: '#/definitions/news.Type' + example: regular + updatedAt: + example: "2022-01-03T16:20:52.156534Z" + type: string + url: + example: https://somewebsite.com/blockchain + type: string + viewed: + example: true + type: boolean + views: + example: 123 + type: integer + type: object + news.Type: + enum: + - regular + - featured + type: string + x-enum-varnames: + - RegularNewsType + - FeaturedNewsType + news.UnreadNewsCount: + properties: + count: + example: 1 + type: integer + type: object + notifications.NotificationChannelToggle: + properties: + enabled: + example: true + type: boolean + type: + allOf: + - $ref: '#/definitions/notifications.NotificationDomain' + example: system + type: object + notifications.NotificationDomain: + enum: + - disable_all + - all + - weekly_report + - weekly_stats + - achievements + - promotions + - news + - micro_community + - mining + - daily_bonus + - system + type: string + x-enum-varnames: + - DisableAllNotificationDomain + - AllNotificationDomain + - WeeklyReportNotificationDomain + - WeeklyStatsNotificationDomain + - AchievementsNotificationDomain + - PromotionsNotificationDomain + - NewsNotificationDomain + - MicroCommunityNotificationDomain + - MiningNotificationDomain + - DailyBonusNotificationDomain + - SystemNotificationDomain + server.ErrorResponse: + properties: + code: + example: SOMETHING_NOT_FOUND + type: string + data: + additionalProperties: {} + type: object + error: + example: something is missing + type: string + type: object +info: + contact: + name: ice.io + url: https://ice.io + description: API that handles everything related to read-only operations for notifying + users about anything worthwhile. + title: Notifications API + version: latest +paths: + /news/{language}: + get: + consumes: + - application/json + description: Returns a list of news. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: type of news to look for. Default is `regular`. + enum: + - regular + - featured + in: query + name: type + type: string + - description: the language of the news article + in: path + name: language + required: true + type: string + - description: Limit of elements to return. Defaults to 10 + in: query + name: limit + type: integer + - description: Elements to skip before starting to look for + in: query + name: offset + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/news.PersonalNews' + type: array + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - News + /notification-channels/{notificationChannel}/toggles: + get: + consumes: + - application/json + description: Returns the user's list of notification channel toggles for the + provided notificationChannel. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: email/push + enum: + - push + - email + in: path + name: notificationChannel + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/notifications.NotificationChannelToggle' + type: array + "400": + description: if validations fail + schema: + $ref: '#/definitions/server.ErrorResponse' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - Notifications + /unread-news-count/{language}: + get: + consumes: + - application/json + description: Returns the number of unread news the authorized user has. + parameters: + - default: Bearer + description: Insert your access token + in: header + name: Authorization + required: true + type: string + - description: The language of the news to be counted + in: path + name: language + required: true + type: string + - description: Example `2022-01-03T16:20:52.156534Z`. If unspecified, the creation + date of the news articles will be ignored. + in: query + name: createdAfter + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/news.UnreadNewsCount' + "401": + description: if not authorized + schema: + $ref: '#/definitions/server.ErrorResponse' + "422": + description: if syntax fails + schema: + $ref: '#/definitions/server.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/server.ErrorResponse' + "504": + description: if request times out + schema: + $ref: '#/definitions/server.ErrorResponse' + tags: + - News +schemes: +- https +swagger: "2.0" diff --git a/cmd/husky/contract.go b/cmd/husky/contract.go new file mode 100644 index 0000000..2aa7189 --- /dev/null +++ b/cmd/husky/contract.go @@ -0,0 +1,245 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/husky/notifications" +) + +// Public API. + +type ( + GetNotificationChannelTogglesArg struct { + NotificationChannel notifications.NotificationChannel `uri:"notificationChannel" example:"push" enums:"push,email" required:"true"` + } + GetNewsArg struct { + // Default is `regular`. + Type news.Type `form:"type" example:"regular" enums:"regular,featured"` + Language string `uri:"language" example:"en" required:"true"` + Limit uint64 `form:"limit" maximum:"1000" example:"10"` // 10 by default. + Offset uint64 `form:"offset" example:"5"` + } + GetUnreadNewsCountArg struct { + CreatedAfter string `form:"createdAfter" example:"2022-01-03T16:20:52.156534Z"` + Language string `uri:"language" example:"en" required:"true"` + } +) + +// Private API. + +const ( + applicationYamlKey = "cmd/husky" + swaggerRoot = "/notifications/r" +) + +// . +var ( + //nolint:gochecknoglobals // It's only read from during runtime. + languages = map[string]struct{}{ + "aa": {}, + "ab": {}, + "ae": {}, + "af": {}, + "ak": {}, + "am": {}, + "an": {}, + "ar": {}, + "as": {}, + "av": {}, + "ay": {}, + "az": {}, + "ba": {}, + "be": {}, + "bg": {}, + "bh": {}, + "bi": {}, + "bm": {}, + "bn": {}, + "bo": {}, + "br": {}, + "bs": {}, + "ca": {}, + "ce": {}, + "ch": {}, + "co": {}, + "cr": {}, + "cs": {}, + "cu": {}, + "cv": {}, + "cy": {}, + "da": {}, + "de": {}, + "dv": {}, + "dz": {}, + "ee": {}, + "el": {}, + "en": {}, + "eo": {}, + "es": {}, + "et": {}, + "eu": {}, + "fa": {}, + "ff": {}, + "fi": {}, + "fil": {}, + "fj": {}, + "fo": {}, + "fr": {}, + "fy": {}, + "ga": {}, + "gd": {}, + "gl": {}, + "gn": {}, + "gu": {}, + "gv": {}, + "ha": {}, + "he": {}, + "hi": {}, + "ho": {}, + "hr": {}, + "ht": {}, + "hu": {}, + "hy": {}, + "hz": {}, + "ia": {}, + "id": {}, + "ie": {}, + "ig": {}, + "ii": {}, + "ik": {}, + "io": {}, + "is": {}, + "it": {}, + "iu": {}, + "ja": {}, + "jv": {}, + "ka": {}, + "kg": {}, + "ki": {}, + "kj": {}, + "kk": {}, + "kl": {}, + "km": {}, + "kn": {}, + "ko": {}, + "kr": {}, + "ks": {}, + "ku": {}, + "kv": {}, + "kw": {}, + "ky": {}, + "la": {}, + "lb": {}, + "lg": {}, + "li": {}, + "ln": {}, + "lo": {}, + "lt": {}, + "lu": {}, + "lv": {}, + "mg": {}, + "mh": {}, + "mi": {}, + "mk": {}, + "ml": {}, + "mn": {}, + "mr": {}, + "ms": {}, + "mt": {}, + "my": {}, + "na": {}, + "nb": {}, + "nd": {}, + "ne": {}, + "ng": {}, + "nl": {}, + "nn": {}, + "no": {}, + "nr": {}, + "nv": {}, + "ny": {}, + "oc": {}, + "oj": {}, + "om": {}, + "or": {}, + "os": {}, + "pa": {}, + "pi": {}, + "pl": {}, + "ps": {}, + "pt": {}, + "qu": {}, + "rm": {}, + "rn": {}, + "ro": {}, + "ru": {}, + "rw": {}, + "sa": {}, + "sc": {}, + "sd": {}, + "se": {}, + "sg": {}, + "si": {}, + "sk": {}, + "sl": {}, + "sm": {}, + "sn": {}, + "so": {}, + "sq": {}, + "sr": {}, + "ss": {}, + "st": {}, + "su": {}, + "sv": {}, + "sw": {}, + "ta": {}, + "te": {}, + "tg": {}, + "th": {}, + "ti": {}, + "tk": {}, + "tl": {}, + "tn": {}, + "to": {}, + "tr": {}, + "ts": {}, + "tt": {}, + "tw": {}, + "ty": {}, + "ug": {}, + "uk": {}, + "ur": {}, + "uz": {}, + "ve": {}, + "vi": {}, + "vo": {}, + "wa": {}, + "wo": {}, + "xh": {}, + "yi": {}, + "yo": {}, + "za": {}, + "zh": {}, + "zh-hans": {}, + "zh-hant": {}, + "zu": {}, + } +) + +// Values for server.ErrorResponse#Code. +const ( + invalidPropertiesErrorCode = "INVALID_PROPERTIES" +) + +type ( + // | service implements server.State and is responsible for managing the state and lifecycle of the package. + service struct { + newsRepository news.Repository + notificationsRepository notifications.Repository + } + config struct { + Host string `yaml:"host"` + Version string `yaml:"version"` + } +) diff --git a/cmd/husky/husky.go b/cmd/husky/husky.go new file mode 100644 index 0000000..3d6cb10 --- /dev/null +++ b/cmd/husky/husky.go @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "context" + + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/cmd/husky/api" + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/husky/notifications" + appCfg "github.com/ice-blockchain/wintr/config" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/server" +) + +// @title Notifications API +// @version latest +// @description API that handles everything related to read-only operations for notifying users about anything worthwhile. +// @query.collection.format multi +// @schemes https +// @contact.name ice.io +// @contact.url https://ice.io +// @BasePath /v1r +func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var cfg config + appCfg.MustLoadFromKey(applicationYamlKey, &cfg) + api.SwaggerInfo.Host = cfg.Host + api.SwaggerInfo.Version = cfg.Version + server.New(new(service), applicationYamlKey, swaggerRoot).ListenAndServe(ctx, cancel) +} + +func (s *service) RegisterRoutes(router *server.Router) { + s.setupNewsRoutes(router) + s.setupNotificationsRoutes(router) +} + +func (s *service) Init(ctx context.Context, cancel context.CancelFunc) { + s.newsRepository = news.New(ctx, cancel) + s.notificationsRepository = notifications.New(ctx, cancel) +} + +func (s *service) Close(ctx context.Context) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "could not close service because context ended") + } + + return multierror.Append( //nolint:wrapcheck // . + errors.Wrap(s.newsRepository.Close(), "could not close news repository"), + errors.Wrap(s.notificationsRepository.Close(), "could not close notifications repository"), + ).ErrorOrNil() +} + +func (s *service) CheckHealth(ctx context.Context) error { + log.Debug("checking health...", "package", "news") + if _, err := s.newsRepository.GetNews(ctx, news.FeaturedNewsType, "en", 1, 0); err != nil { + return errors.Wrap(err, "failed to get featured news") + } + log.Debug("checking health...", "package", "notifications") + if _, err := s.notificationsRepository.GetNotificationChannelToggles(ctx, notifications.PushNotificationChannel, "bogus"); err != nil { + return errors.Wrap(err, "failed to GetNotificationChannelToggles") + } + + return nil +} diff --git a/cmd/husky/news.go b/cmd/husky/news.go new file mode 100644 index 0000000..93f83ec --- /dev/null +++ b/cmd/husky/news.go @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "context" + "strings" + stdlibtime "time" + + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/wintr/server" + "github.com/ice-blockchain/wintr/time" +) + +func (s *service) setupNewsRoutes(router *server.Router) { + router. + Group("v1r"). + GET("news/:language", server.RootHandler(s.GetNews)). + GET("unread-news-count/:language", server.RootHandler(s.GetUnreadNewsCount)) +} + +// GetNews godoc +// +// @Schemes +// @Description Returns a list of news. +// @Tags News +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param type query string false "type of news to look for. Default is `regular`." enums(regular,featured) +// @Param language path string true "the language of the news article" +// @Param limit query uint64 false "Limit of elements to return. Defaults to 10" +// @Param offset query uint64 false "Elements to skip before starting to look for" +// @Success 200 {array} news.PersonalNews +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /news/{language} [GET]. +func (s *service) GetNews( //nolint:gocritic // False negative. + ctx context.Context, + req *server.Request[GetNewsArg, []*news.PersonalNews], +) (*server.Response[[]*news.PersonalNews], *server.Response[server.ErrorResponse]) { + if req.Data.Type == "" { + req.Data.Type = news.RegularNewsType + } + if req.Data.Type == news.FeaturedNewsType { + req.Data.Limit, req.Data.Offset = 1, 0 + } + if req.Data.Limit == 0 { + req.Data.Limit = 10 + } + if req.Data.Limit > 1000 { //nolint:gomnd //. + req.Data.Limit = 1000 + } + req.Data.Language = strings.ToLower(req.Data.Language) + if _, validLanguage := languages[req.Data.Language]; !validLanguage { + return nil, server.BadRequest(errors.Errorf("invalid language `%v`", req.Data.Language), invalidPropertiesErrorCode) + } + if req.Data.Type != news.RegularNewsType && req.Data.Type != news.FeaturedNewsType { + return nil, server.BadRequest(errors.Errorf("invalid type %v", req.Data.Type), invalidPropertiesErrorCode) + } + resp, err := s.newsRepository.GetNews(ctx, req.Data.Type, req.Data.Language, req.Data.Limit, req.Data.Offset) + if err != nil { + return nil, server.Unexpected(errors.Wrapf(err, "failed to get news by %#v", req.Data)) + } + + return server.OK(&resp), nil +} + +// GetUnreadNewsCount godoc +// +// @Schemes +// @Description Returns the number of unread news the authorized user has. +// @Tags News +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param language path string true "The language of the news to be counted" +// @Param createdAfter query string false "Example `2022-01-03T16:20:52.156534Z`. If unspecified, the creation date of the news articles will be ignored." +// @Success 200 {object} news.UnreadNewsCount +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /unread-news-count/{language} [GET]. +func (s *service) GetUnreadNewsCount( //nolint:gocritic // False negative. + ctx context.Context, + req *server.Request[GetUnreadNewsCountArg, news.UnreadNewsCount], +) (*server.Response[news.UnreadNewsCount], *server.Response[server.ErrorResponse]) { + var createdAfter *time.Time + if req.Data.CreatedAfter == "" { + createdAfter = time.New(stdlibtime.Unix(0, 0).UTC()) + } else { + createdAfter = new(time.Time) + if err := createdAfter.UnmarshalJSON(ctx, []byte(`"`+req.Data.CreatedAfter+`"`)); err != nil { + return nil, server.UnprocessableEntity(errors.Errorf("invalid createdAfter `%v`", req.Data.CreatedAfter), invalidPropertiesErrorCode) + } + } + req.Data.Language = strings.ToLower(req.Data.Language) + if _, validLanguage := languages[req.Data.Language]; !validLanguage { + return nil, server.BadRequest(errors.Errorf("invalid language `%v`", req.Data.Language), invalidPropertiesErrorCode) + } + resp, err := s.newsRepository.GetUnreadNewsCount(ctx, req.Data.Language, createdAfter) + if err != nil { + return nil, server.Unexpected(errors.Wrapf(err, "failed to get unread news count for userID:%v", req.AuthenticatedUser.UserID)) + } + + return server.OK(resp), nil +} diff --git a/cmd/husky/notifications.go b/cmd/husky/notifications.go new file mode 100644 index 0000000..47d905d --- /dev/null +++ b/cmd/husky/notifications.go @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "context" + + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/notifications" + "github.com/ice-blockchain/wintr/server" +) + +func (s *service) setupNotificationsRoutes(router *server.Router) { + router. + Group("v1r"). + GET("notification-channels/:notificationChannel/toggles", server.RootHandler(s.GetNotificationChannelToggles)) +} + +// GetNotificationChannelToggles godoc +// +// @Schemes +// @Description Returns the user's list of notification channel toggles for the provided notificationChannel. +// @Tags Notifications +// @Accept json +// @Produce json +// @Param Authorization header string true "Insert your access token" default(Bearer ) +// @Param notificationChannel path string true "email/push" enums(push,email) +// @Success 200 {array} notifications.NotificationChannelToggle +// @Failure 400 {object} server.ErrorResponse "if validations fail" +// @Failure 401 {object} server.ErrorResponse "if not authorized" +// @Failure 422 {object} server.ErrorResponse "if syntax fails" +// @Failure 500 {object} server.ErrorResponse +// @Failure 504 {object} server.ErrorResponse "if request times out" +// @Router /notification-channels/{notificationChannel}/toggles [GET]. +func (s *service) GetNotificationChannelToggles( //nolint:gocritic // False negative. + ctx context.Context, + req *server.Request[GetNotificationChannelTogglesArg, []*notifications.NotificationChannelToggle], +) (*server.Response[[]*notifications.NotificationChannelToggle], *server.Response[server.ErrorResponse]) { + if req.Data.NotificationChannel != notifications.PushNotificationChannel && req.Data.NotificationChannel != notifications.EmailNotificationChannel { + return nil, server.UnprocessableEntity(errors.Errorf("invalid notificationChannel `%v`", req.Data.NotificationChannel), invalidPropertiesErrorCode) + } + resp, err := s.notificationsRepository.GetNotificationChannelToggles(ctx, req.Data.NotificationChannel, req.AuthenticatedUser.UserID) + if err != nil { + return nil, server.Unexpected(errors.Wrapf(err, "failed to GetNotificationChannelToggles for %#v, userID:%v", req.Data, req.AuthenticatedUser.UserID)) + } + + return server.OK(&resp), nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..8458d5a --- /dev/null +++ b/go.mod @@ -0,0 +1,146 @@ +module github.com/ice-blockchain/husky + +go 1.20 + +require ( + github.com/goccy/go-json v0.10.2 + github.com/google/uuid v1.3.0 + github.com/hashicorp/go-multierror v1.1.1 + github.com/ice-blockchain/eskimo v1.101.0 + github.com/ice-blockchain/go-tarantool-client v0.0.0-20230322193140-81ac2079df0c + github.com/ice-blockchain/wintr v1.101.0 + github.com/imroc/req/v3 v3.33.1 + github.com/pkg/errors v0.9.1 + github.com/swaggo/swag v1.8.11 + github.com/testcontainers/testcontainers-go v0.19.0 + golang.org/x/net v0.8.0 +) + +require ( + cloud.google.com/go v0.110.0 // indirect + cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/firestore v1.9.0 // indirect + cloud.google.com/go/iam v0.13.0 // indirect + cloud.google.com/go/longrunning v0.4.1 // indirect + cloud.google.com/go/storage v1.30.1 // indirect + cosmossdk.io/math v1.0.0-rc.0 // indirect + firebase.google.com/go/v4 v4.10.0 // indirect + github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect + github.com/GetStream/stream-go2/v7 v7.1.0 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/MicahParks/keyfunc v1.9.0 // indirect + github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/Microsoft/hcsshim v0.10.0-rc.7 // indirect + github.com/bytedance/sonic v1.8.5 // indirect + github.com/cenkalti/backoff/v4 v4.2.0 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/containerd/cgroups v1.1.0 // indirect + github.com/containerd/containerd v1.7.0 // indirect + github.com/containerd/continuity v0.3.0 // indirect + github.com/docker/distribution v2.8.1+incompatible // indirect + github.com/docker/docker v23.0.1+incompatible // indirect + github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/gin-gonic/gin v1.9.0 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/spec v0.20.8 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.12.0 // indirect + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/goccy/go-reflect v1.2.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/pprof v0.0.0-20230309165930-d61513b1440d // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/gorilla/mux v1.8.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/imdario/mergo v0.3.14 // indirect + github.com/ip2location/ip2location-go/v9 v9.5.0 // indirect + github.com/joho/godotenv v1.5.1 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/leodido/go-urn v1.2.2 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/sys/mount v0.3.3 // indirect + github.com/moby/sys/mountinfo v0.6.2 // indirect + github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/morikuni/aec v1.0.0 // indirect + github.com/onsi/ginkgo/v2 v2.9.1 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b // indirect + github.com/opencontainers/runc v1.1.4 // indirect + github.com/pelletier/go-toml/v2 v2.0.7 // indirect + github.com/pierrec/lz4/v4 v4.1.17 // indirect + github.com/quic-go/qpack v0.4.0 // indirect + github.com/quic-go/qtls-go1-19 v0.3.0 // indirect + github.com/quic-go/qtls-go1-20 v0.2.0 // indirect + github.com/quic-go/quic-go v0.33.0 // indirect + github.com/rs/zerolog v1.29.0 // indirect + github.com/sendgrid/rest v2.6.9+incompatible // indirect + github.com/sendgrid/sendgrid-go v3.12.0+incompatible // indirect + github.com/sirupsen/logrus v1.9.0 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/swaggo/files v1.0.1 // indirect + github.com/swaggo/gin-swagger v1.5.3 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/twmb/franz-go v1.13.1 // indirect + github.com/twmb/franz-go/pkg/kadm v1.8.0 // indirect + github.com/twmb/franz-go/pkg/kmsg v1.4.0 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/zeebo/assert v1.3.1 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + go.opencensus.io v0.24.0 // indirect + golang.org/x/arch v0.3.0 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/oauth2 v0.6.0 // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect + golang.org/x/time v0.3.0 // indirect + golang.org/x/tools v0.7.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.114.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/appengine/v2 v2.0.2 // indirect + google.golang.org/genproto v0.0.0-20230322174352-cde4c949918d // indirect + google.golang.org/grpc v1.54.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) + +replace ( + github.com/containerd/containerd => github.com/containerd/containerd v1.6.19 + github.com/docker/docker => github.com/docker/docker v20.10.3+incompatible + github.com/testcontainers/testcontainers-go => github.com/testcontainers/testcontainers-go v0.15.0 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..6e80945 --- /dev/null +++ b/go.sum @@ -0,0 +1,871 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.9.0 h1:IBlRyxgGySXu5VuW0RgGFlTtLukSnNkpDiEOMkQkmpA= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cosmossdk.io/math v1.0.0-rc.0 h1:ml46ukocrAAoBpYKMidF0R2tQJ1Uxfns0yH8wqgMAFc= +cosmossdk.io/math v1.0.0-rc.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +firebase.google.com/go/v4 v4.10.0 h1:dgK/8uwfJbzc5LZK/GyRRfIkZEDObN9q0kgEXsjlXN4= +firebase.google.com/go/v4 v4.10.0/go.mod h1:m0gLwPY9fxKggizzglgCNWOGnFnVPifLpqZzo5u3e/A= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GetStream/stream-go2/v7 v7.1.0 h1:05o+xBJmVRZ/O1rEjK+enTzmH69RQuKZJkh5EbYDBmQ= +github.com/GetStream/stream-go2/v7 v7.1.0/go.mod h1:U4y2mXYeWVAnQ8qDPPbePROInTS61QBUJcnMJIvMoIA= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/MicahParks/keyfunc v1.9.0 h1:lhKd5xrFHLNOWrDc4Tyb/Q1AJ4LCzQ48GVJyVIID3+o= +github.com/MicahParks/keyfunc v1.9.0/go.mod h1:IdnCilugA0O/99dW+/MkvlyrsX8+L8+x95xuVNtM5jw= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/hcsshim v0.10.0-rc.7 h1:HBytQPxcv8Oy4244zbQbe6hnOnx544eL5QPUqhJldz8= +github.com/Microsoft/hcsshim v0.10.0-rc.7/go.mod h1:ILuwjA+kNW+MrN/w5un7n3mTqkwsFu4Bp05/okFUZlE= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.8.5 h1:kjX0/vo5acEQ/sinD/18SkA/lDDUk23F0RcaHvI7omc= +github.com/bytedance/sonic v1.8.5/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= +github.com/containerd/containerd v1.6.19/go.mod h1:HZCDMn4v/Xl2579/MvtOC2M206i+JJ6VxFWU/NetrGY= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= +github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v20.10.3+incompatible h1:+HS4XO73J41FpA260ztGujJ+0WibrA2TPJEnWNSyGNE= +github.com/docker/docker v20.10.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8= +github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU= +github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.12.0 h1:E4gtWgxWxp8YSxExrQFv5BpCahla0PVF2oTTEYaWQGI= +github.com/go-playground/validator/v10 v10.12.0/go.mod h1:hCAPuzYvKdP33pxWa+2+6AIKXEKqjIUyqsNCtbsSJrA= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-reflect v1.2.0 h1:O0T8rZCuNmGXewnATuKYnkL0xm6o8UNOJZd/gOkb9ms= +github.com/goccy/go-reflect v1.2.0/go.mod h1:n0oYZn8VcV2CkWTxi8B9QjkCoq6GTtCEdfmR66YhFtE= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230309165930-d61513b1440d h1:um9/pc7tKMINFfP1eE7Wv6PRGXlcCSJkVajF7KJw3uQ= +github.com/google/pprof v0.0.0-20230309165930-d61513b1440d/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ice-blockchain/eskimo v1.101.0 h1:ONIieQZCJcRdxEuNFS9DXYbp2Gs0bqX6YutACtLErjo= +github.com/ice-blockchain/eskimo v1.101.0/go.mod h1:OXEZa2wIbWWofnH0FFa2Za/oEBS9h48QWj6nVJF/JL0= +github.com/ice-blockchain/go-tarantool-client v0.0.0-20230322193140-81ac2079df0c h1:c0fZ+DTu1zlEggEGckFzdGx0tuWQDPf4PjfAbQkHFAU= +github.com/ice-blockchain/go-tarantool-client v0.0.0-20230322193140-81ac2079df0c/go.mod h1:ZsQU7i3mxhgBBu43Oev7WPFbIjP4TniN/b1UPNGbrq8= +github.com/ice-blockchain/wintr v1.101.0 h1:84dJ+1TnlU4jLPnGO/om2BgigvOXhQhxDDNX1lGh/MY= +github.com/ice-blockchain/wintr v1.101.0/go.mod h1:YElO+8IEByLZPSr5/zSmI9H49Dg5GnjcouAgUv2zEC4= +github.com/imdario/mergo v0.3.14 h1:fOqeC1+nCuuk6PKQdg9YmosXX7Y7mHX6R/0ZldI9iHo= +github.com/imdario/mergo v0.3.14/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/imroc/req/v3 v3.33.1 h1:BZnyl+K0hXcJlZBHY2CqbPgmVc1pPJDzjn6aJfB6shI= +github.com/imroc/req/v3 v3.33.1/go.mod h1:cZ+7C3L/AYOr4tLGG16hZF90F1WzAdAdzt1xFSlizXY= +github.com/ip2location/ip2location-go/v9 v9.5.0 h1:7gqKncm4MhBrpJIK0PmV8o6Bf8YbbSAPjORzyjAv1iM= +github.com/ip2location/ip2location-go/v9 v9.5.0/go.mod h1:s5SV6YZL10TpfPpXw//7fEJC65G/yH7Oh+Tjq9JcQEQ= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.2.2 h1:7z68G0FCGvDk646jz1AelTYNYWrTNm0bEcFAo147wt4= +github.com/leodido/go-urn v1.2.2/go.mod h1:kUaIbLZWttglzwNuG0pgsh5vuV6u2YcGBYz1hIPjtOQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= +github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/gomega v1.27.3 h1:5VwIwnBY3vbBDOJrNtA4rVdiTZCsq9B5F12pvy1Drmk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v1.1.4 h1:nRCz/8sKg6K6jgYAFLDlXzPeITBZJyX28DBVhWD+5dg= +github.com/opencontainers/runc v1.1.4/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us= +github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= +github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-19 v0.3.0 h1:aUBoQdpHzUWtPw5tQZbsD2GnrWCNu7/RIX1PtqGeLYY= +github.com/quic-go/qtls-go1-19 v0.3.0/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= +github.com/quic-go/qtls-go1-20 v0.2.0 h1:jUHn+obJ6WI5JudqBO0Iy1ra5Vh5vsitQ1gXQvkmN+E= +github.com/quic-go/qtls-go1-20 v0.2.0/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/quic-go v0.33.0 h1:ItNoTDN/Fm/zBlq769lLJc8ECe9gYaW40veHCCco7y0= +github.com/quic-go/quic-go v0.33.0/go.mod h1:YMuhaAV9/jIu0XclDXwZPAsP/2Kgr5yMYhe9oxhhOFA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rwtodd/Go.Sed v0.0.0-20210816025313-55464686f9ef/go.mod h1:8AEUvGVi2uQ5b24BIhcr0GCcpd/RNAFWaN2CJFrWIIQ= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/sendgrid/rest v2.6.9+incompatible h1:1EyIcsNdn9KIisLW50MKwmSRSK+ekueiEMJ7NEoxJo0= +github.com/sendgrid/rest v2.6.9+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= +github.com/sendgrid/sendgrid-go v3.12.0+incompatible h1:/N2vx18Fg1KmQOh6zESc5FJB8pYwt5QFBDflYPh1KVg= +github.com/sendgrid/sendgrid-go v3.12.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.5.3 h1:8mWmHLolIbrhJJTflsaFoZzRBYVmEE7JZGIq08EiC0Q= +github.com/swaggo/gin-swagger v1.5.3/go.mod h1:3XJKSfHjDMB5dBo/0rrTXidPmgLeqsX89Yp4uA50HpI= +github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ= +github.com/swaggo/swag v1.8.11 h1:Fp1dNNtDvbCf+8kvehZbHQnlF6AxHGjmw6H/xAMrZfY= +github.com/swaggo/swag v1.8.11/go.mod h1:2GXgpNI9iy5OdsYWu8zXfRAGnOAPxYxTWTyM0XOTYZQ= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/testcontainers/testcontainers-go v0.15.0 h1:3Ex7PUGFv0b2bBsdOv6R42+SK2qoZnWBd21LvZYhUtQ= +github.com/testcontainers/testcontainers-go v0.15.0/go.mod h1:PkohMRH2X8Hib0IWtifVexDfLPVT+tb5E9hsf7cW12w= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/twmb/franz-go v1.13.1 h1:7dDuAjJItbZRjgmMzYzCfJtRMpVKfQ57yIG8SkZz24M= +github.com/twmb/franz-go v1.13.1/go.mod h1:jm/FtYxmhxDTN0gNSb26XaJY0irdSVcsckLiR5tQNMk= +github.com/twmb/franz-go/pkg/kadm v1.8.0 h1:vvKwZpxYn+VmM32v4mKkecHLKavZW+HcYLRKKxly5ZY= +github.com/twmb/franz-go/pkg/kadm v1.8.0/go.mod h1:qUSM7pxoMCU1UNu5H4USE64ODcVmeG9LS96mysv1nu8= +github.com/twmb/franz-go/pkg/kmsg v1.4.0 h1:tbp9hxU6m8qZhQTlpGiaIJOm4BXix5lsuEZ7K00dF0s= +github.com/twmb/franz-go/pkg/kmsg v1.4.0/go.mod h1:SxG/xJKhgPu25SamAq0rrucfp7lbzCpEXOC+vH/ELrY= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.1 h1:vukIABvugfNMZMQO1ABsyQDJDTVQbn+LWSMy1ol1h6A= +github.com/zeebo/assert v1.3.1/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= +golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.114.0 h1:1xQPji6cO2E2vLiI+C/XiFAnsn1WV3mjaEwGLhi3grE= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine/v2 v2.0.2 h1:MSqyWy2shDLwG7chbwBJ5uMyw6SNqJzhJHNDwYB0Akk= +google.golang.org/appengine/v2 v2.0.2/go.mod h1:PkgRUWz4o1XOvbqtWTkBtCitEJ5Tp4HoVEdMMYQR/8E= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20230322174352-cde4c949918d h1:OE8TncEeAei3Tehf/P/Jdt/K+8GnTUrRY6wzYpbCes4= +google.golang.org/genproto v0.0.0-20230322174352-cde4c949918d/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/local.go b/local.go new file mode 100644 index 0000000..6b7f8cd --- /dev/null +++ b/local.go @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: ice License 1.0 + +package main + +import ( + "flag" + + newsfixture "github.com/ice-blockchain/husky/news/fixture" + newsseeding "github.com/ice-blockchain/husky/news/seeding" + serverauthfixture "github.com/ice-blockchain/wintr/auth/fixture" + "github.com/ice-blockchain/wintr/log" +) + +//nolint:gochecknoglobals // Because those are flags +var ( + generateAuth = flag.String("generateAuth", "", "generate a new auth for a random user, with the specified role") + startSeeding = flag.Bool("startSeeding", false, "whether to start seeding a remote database or not") + startLocalType = flag.String("type", "all", "the strategy to use to spin up the local environment") +) + +func main() { + flag.Parse() + if generateAuth != nil && *generateAuth != "" { + userID, token := testingAuthorization(*generateAuth) + log.Info("UserID") + log.Info("=================================================================================") + log.Info(userID) + log.Info("Authorization Bearer Token") + log.Info("=================================================================================") + log.Info(token) + + return + } + if *startSeeding { + newsseeding.StartSeeding() + + return + } + + newsfixture.StartLocalTestEnvironment(newsfixture.StartLocalTestEnvironmentType(*startLocalType)) +} + +func testingAuthorization(role string) (userID, token string) { + return serverauthfixture.CreateUser(role) +} diff --git a/news/.testdata/application.yaml b/news/.testdata/application.yaml new file mode 100644 index 0000000..ee2334f --- /dev/null +++ b/news/.testdata/application.yaml @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: ice License 1.0 + +development: true +logger: + encoder: console + level: info +news: &news + deeplinkApp: staging.ice.app + db: &newsDatabase + urls: + - localhost:3305 + user: admin + password: pass + messageBroker: &newsMessageBroker + consumerGroup: husky-news-testing + createTopics: true + urls: + - localhost:9096 + topics: &newsMessageBrokerTopics + - name: husky-news-health-check + partitions: 1 + replicationFactor: 1 + retention: 1000h + - name: news-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: viewed-news + partitions: 10 + replicationFactor: 1 + retention: 1000h + ### The next topics are not owned by this service, but are needed to be created for the local/test environment. + - name: announcements + partitions: 10 + replicationFactor: 1 + retention: 1000h + consumingTopics: + - name: news-table + producingTopics: + - name: announcements + wintr/multimedia/picture: + urlUpload: https://storage.bunnycdn.com/ice-staging/news + urlDownload: https://ice-staging.b-cdn.net/news +news_test: + <<: *news + messageBroker: + <<: *newsMessageBroker + consumingTopics: *newsMessageBrokerTopics + consumerGroup: husky-news-testing-runner + db: + <<: *newsDatabase + schemaPath: news/DDL.lua \ No newline at end of file diff --git a/news/.testdata/profilePic1.jpg b/news/.testdata/profilePic1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75dff0b052d77f5d592a08ef7110d9c843341c78 GIT binary patch literal 415939 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

G3RT}T~OfV+^rfJ3n&EUP- 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

Cx5;xUR& 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ɍM-Z>|Ke9vyXcs076C#dv6 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 z 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 literal 0 HcmV?d00001 diff --git a/news/.testdata/profilePic2.png b/news/.testdata/profilePic2.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2748457489a247e2b517364517b061b2a25254 GIT binary patch literal 182744 zcmdRV^;eYL7q4`Kw6uUogY?iyD&3tT4Bg#GONo@g(9+$~Lk`{D-QCR{^!wg*|AqUk zHNVVyo^$rzXXj_{6Q(FHg@H!ip?;th~Bc-BabNpRGZc9P@b9MC?=d6tV*CXrt!D7zAiOTAU zKF%u6{*rq8emwZubyDsS$Cdk~Ye(>@Uv4PxjZf*mtAE5jsr!n1%eK!^=ICqe|IeO9 z74;||mnjyX$Gz$krwOMcUA;$lD(I8N|7HD%XExUzoJ4E`lfB1xH>u>C77Bgx+pTn) zk|*r2B1%UEGG@BDcB=SX{GBHa#KfVGs#5fX9f})djtgvdxTaxsNKl=du>a#ZzxCzY z(EM+?>Q(la%leI7uQ@Gv(76>5Z0daO79m}<Rgm_Cw|y`36|t70_{Hyb z>yXR$cUx>CI_4AvAMI=j#nY?7`Bxn#RttadFG-t>c319wFhW)_CYS$;%BkNf*@LUX z>1uiMX4dEvG6uFk2l>3uVie-wgQ3x}aQ_^Ae!-pRUyf}?CoHBE?gTA&4+zH}4|jVM zn%=?!Nih!=5aw&ejCS$p(Y%O?*lSpPdI zk)wE*n)CZmVc&K<00&hJz9(jzu~0xwszQX8%JB4``M+kPCL+w?$a6f!&HRl@ z|2jFSI$woO9z)7r8y+=Ql+9<(VP@v`cM8|VL7Dj)F#E~oua>4%9RjVF2A&s*2Ln)Z z2lNYM->|HY;dRIjs!kor_t`2bN=EC+!ltww|%~-lI$m+fBO^~^OTlGs({ZVZD3~VTxoy! zenv?_V7DV)uQ2Lh&EG!=w}@=YwID{|QS=r5t66fBPM9`^hot4bCFl3Zg0Ao*2FmTZ zIDkw0naW+B30p4sNm4K2F@e=-&Bw>T$HsFWDrsZByVlqU;iq_e^rh$0pW_(k>fi=< zC{?npDd|~*I0Qx^pXBWeNeyhCSd5Oe>9texPnjQ$g(Xb;5Hj9wS*#31ww*rSj~s2H zlslc?D;e{ze0IkDxBeD^>iF2`F}@|za`EoDM%xb}l$|mZkk%-&;1f^7RVu3Gv|sB0 z#kCpDwVnpgKYK2HG44S!FQm!JYZm<$3pm3+PTp8h=~iq z4*#Bie1G5Q@X*+hs|_5j!NFV=t_bQ6PwXIiBk2_;X*7)`OtMG%y?O+T!DNq%t*eB; zn!BHj>B8=Kb~~2&XctH-3^j>L96+RbF4+7Nri8r<=ldbesNf?Q#HwI&xQ!w4J=4ER z*#|t{wm90TYEc_L{bP3(iVOoX6}h zt}~DExg~z{o6g~wGK^MY00;D}ZYwlfZ8)@@NW%A`TF|WjH2?LPi$47V*u?yfa!@(FQh4U}JG45%`;vzxZLApHP0#p1uu>5>+;m-|nKKN``srhI{_huvwK zkBh@1_TMXa?&HB)4L6M}#6V0k5#jXNa(k>hG2{K|Z}U1YE_qbAaQ9#~f@2`#t{5g8@05W}wmGeK?c+n;3SKkO9qD?qseac@NX=J=sp@o`OmhY5Pd2Emj zSUZt$8Imb>FTTQg$gZjlC6Inz$AX$|vx8L$!u)o=I0n-H-$pRxqnu|>(AYNrU{w|d z@Z9@>3__Vk8bViDVbTkC-1;_|PkXK6JFx96hbv6t9R81|9pHP~=LtKEnZ=xCPVqqU zMj^Yccqkjh0JOD}(X|@08ISzY;)2AGZlBKVJ%X?o*_T?(Pw9@2oX=|8d_*$1PK)fE z8K<(-ZxOOHmDI-oxmRem>>+Vl3y+!EZ13yrpHe<6@qGSkF7eGF@mm$Hje>jRZ@BGt zV9iumbZ4i=@BrCLan5op17U5!m#yID{a;_uG?sVOugI_V-v4jQv3|+%p7l)+8yNei zY~hdoEDO~on_Pk*iCLwQM3$#CvVcL7x-92w`*OR}bfEeE^Y4bwe?4c>#_#mI01qxF ztOyD=bCmC!m}0^EaKH*=P*AT?U)o+*5@CfU1XEzy6Sa8pkx*yGy`doG-Cqxv)zbe< z+cXlfg&r0-bw8eve5J@5Q4f_+PuH@Xr9FXVww=|p{)L+-V(}vEbTYqZoqF9rMkNHd zSLRHkF?{l3JTrX8K=C3b`T4cbWNfLgjnvwFn0bIcJ`rAkUbCVST?Zviz z8t0V1TA(rEgz7eMCaf=Zpo89)#X6M)3pAf;dhe9L^2BnjGTjXdJ}wVpx6>b)ac?QK ziG5Lm9n_Ruu@qIyJ&wNJ*;UQc!DuSG+@-g6$x~}gc=0KAFdvV7zY`yQtVpJ9y33#c zC(w4Nhb^7M6~avs6h>Vxo__}ml%54AQD9^r?X4YmUwn#4u2#LW%Qa6s@s=7dOHXRh zd*O>J$Yi`te)7;8Sno;{fI;Gm@6S=c0M=5iY&L1hr?SR-?|nkES4&>V<=H+gwN7eP zV3YVl<0nd2)JnUPlMGFxAYhZ$3V`yL{G> zS!8)}elhK1G$T0;Ro7D15-SgzbtLfeCc>9L51DbrS7f8XS;JG{md8-iaN5WB(@s}b z8UNeM$Y}f6bob!=*0D^kvsU=&kNryAeF1GE^azlPH7j5S`J(%(EVel2b4v`2og4oO z9u*BKJpq~tXgIk$5?>w7Gs6PE)ccQDH=Fb_J7WV{bsABa4Tw{05BKW8bF&cj{|JPJ z;&F8agyMs{DW`)*BdB-Cv!R<+&|`UeI>*u($%WjAl3as_nGXfXCJ+B6qo1RH@q0W( zBZHQmDL%mYQY^T3fa#ZsH?9&;2n}UXAhm<7+1_Pg5>tZ#Ej4!6t|~mTFBHC8!HyhX ziJG$UZ@oB8jvS{%l30=blLM~5k0x`=9Nzc>-6oxh6jrBD=l#n;{fq;fpR0m%eOjvQ zpAIOo0qgyULqFLM^H}QY(7RRz8%JuEIVY^xzE;)ih*&yz{FOrT7`Z%&M(dz$DA@h# zLJk(Ff5CNM5VAI~d_P+Cj6Pw5UET5UxfM9cjQesvC@MwfH)B?#@0hlCw63p!wuLYf*#A3qMqm^mZN>ul*fcuY01gDIAsIhyGL= zsgMCAXhMQkte5NEs!bGsnQ)Y)?IrwmRGiZnc1sQ`6VPK{xIue^$4TL=jVPfbw0mFp zzZK=oSBh83tFIGaf$G2i((F!UcNeJ{cxN4~$L>gemMl5s_7VlC8uWLWFa6-^@BmfR z@sATGta<35?DtImi;mQ5%pk9Ovp0a3J@X@Ktp~Z}1U=^e+@)WUw!F3`VkW$7M0RD~`9@r8oR#D z7$KcX0&9c@93ZRbZ_(C%CD}k;w@Ek2wY$K#j(=%5sG>zy6VM_RJiYS){}{wnD*wJ77Y+ zKRw>P%R|^SqBpWkT}C9=!ehGn|FbrAqsuDBuvWPbgI)NbijVcg;ET>HscHCwwSI@I z+T@YMirJrmg_<_`k+^MO_>0poywn#3UhG2686O3dL}mBB7fcjfzV2&mxZtoBSVbu8sa23h+Z#(6g8I=ipkydyrzn@#mlm^#2daT1u>PDpRh#ro2Q9m-kn)%i5m%EDn9dG7 zn~bhe?}fY+D_MoID4?ZBi+Y4W%=ABRk_s}Z?79;$l6jCpb2}Wr*gWyA=A-|7U0s`2 zSf3geeSH1bKH{PFF|&_BqVepwL`_JwI`%mOP-->8#A6ryk;D9>XmStGdNzXcDaR~8Inz)85C1pNu#SamGM$^&GNuw3Y%7p9z= zi~Ps8o1qplJZ~QgpUm%YtpZDIbXh42kQo=2~)vtZ&rRhm-Ig$<7Lvj64W*D5?&nZ zvK5!h^Mg!8i@a>EHcy@0Ei|lCk6`890puP^6M`lHUb7kQdU_ne97m+;UiIWQdfle# zt`{W0MnJ% z7x}#UOZ*)9C;;Qg>?IQEV1nEUjRrm-3^m=LX+AH$hXN2Ep}7~L{L7mR9e9An2kz?< z!xi1SD`535TiXAWHfKS(&gp#lCV5*nFpw0_pCi+%=j%U%`OfZoW^Q@;6`X8iD+lq1 z^MvLFOeE|?|GaS)6RDTBc0GLQ&e;~{!F=64)Y0$$&a{LD<|2b||L3yN(L%rpFA+RW z5Ojb2EVj~QN;cH~+Y)XY@IS)R4_2$O{j2tM#>;JOCE&JiNYQ|;=ISNQ>56s#{23@H z*40slww0CdA}x@N-$j+quGYuAX{o)}R{u~P>azZOFQ?==b~4qApn8vuK-hMc0T!q{ zn{hkrKW=z*@N8d_(4jYRi2F$LN|oOQeQT|Rsei{zQvyyM#ZOKd$0BrjkGMdjbu-vWVxfsR14PO>&?ovRn~{dzN<@?& z`}12e1V=XWlF3jBN1aGHEOe(W=faNfX3+7Nn?U%9$rBLUk0^&Ie@EEW)y7AIt6;jl zj)0A9Ftybo179CQ)hQS2uK?drL&ao+pFYnh zo3KWlzG`MZmC~PZlL1aad4IZ8q2oZACf@_Wr4g)}oDgP&dP1acleht-h4bzTu17cI zEl)>4sN4Qaa)TI6-A@yRRCi?|Qi(VF2}vP!Rj41N14|{SKH2oJuVmD|-tKJekN|`e zW-{x+*9^$27&7rNna0Q6tzSDXwx4r_KKs_*v|84%3lLJNdod|b@Sbw;z4H-D=^D1I zzj+vlfJOg2+@VuR$i<7K0DR?KTJJrquLMnWgf)f9PTaWok1K}ABn>BBNo<+za@p<1 zE~R0k;?V`pxa}p$55~|&^mP0TvEzh>xD8|7JVgV4_vZ*kQweMWm)?G=v?=(`VFKW~ z%-{N+ZkcOdE;RHB-{Ek; z!llJH#n}t1X!_9+3urHIzJlJ^z@&U_Ur!+4LZMl6VGp%AEDCJpfogEJ15*|3?kk*%B|sTn zLdst#bOiN;_@>q*Cx3EErp@wzA;w)i!cZVWo!jimab;sF0gHYX?mZBgN06b#ee!K8 z^rJT1`|y#o5@cqnc%5a$cVWK3(7IVFyUOXar&3E#3CB*h2~&c%T;rTaT4EJ#g;Dws)wgKn7Ih$-iU{V=8IbJA@O`DySGtcMqI3YA6Vvhg#@buMmH->I0dXSxpii1K*;%0$PbO*S02#+l)*ctwdaKod( zp_lRU_#JdlnCQ7^w~2#_wqtI4EY2a#lX!E>{%^ma^@4f}GDr&@gp~{c^KoDeeK9eGoxpR8$5T^cJ3=XU;%(*|AFMWrJ4ciY|hH2!l;eFWg zI$s%rhwm#R9L$2*pQio3o_?d1eh>-{y^{lWO4mE8M3FzLIF8nS1r|7n(verxU6)td zyElFw%xg-~aJ@SGx_hwLKQ?=ulRVUN>}RMk8G~IhX!bMqAMhHZr6?~P_}I@dq>)W_nvRPADp6<&xN#c| z#SV%2qNEAU8AJ%0X;`u&aJFFe~=d$_{uU@Ns>PjHz1itr#%JHTM;~o zt;n(?41xZfYt~r6CA*Sj7abi4F5T_AQfSmExGIRkT2rw>FN12iJ)cT#fApxf&VM1>&!qxFfUn(jgv0Lq1 z?*@lCiEL3c==h@noKu2246gbu8H`gQ*X}7P=u1Qj0=rEWEq4SZ)ISewb^pg1Yd9 zmq`wSvH_L&zjY0iys>@X%H$zcVu<)7C-Ztxv*hfYJWf&XP(1K9wDMsOu||pAYvg6s zT}!>;TV-@>xkk`#;e;6~31BmNlI+YgrBVo#pABxXo_f@B0EqinAcyU0X*TcLUXTk= zFnh{No*&_!G#o>IwK}2sJf6c}k)w8nRgD5De26k*PNjoDVclzGwd=P$raOb=*9%rl z1N-Ke%b3vioS0nlMJ1ah=S}y=oK(|GF4e*m>x~n{j;; zMCcg>`7^s;Zhp^pz~_cZJKViu_UT>AvePR)PX#ecY=OE1fuM*3ug$B57cSKtY;R%h zL1*Zaq6+&|-(Y_Ek~=p$PpV>?9t;Pzf%4VPoW9Zu31d&+7d+SK}iO&>lw^w(FK>OzVD=V#U0 zd@o}*C*Iqc3yA%NhbLxns`u#jU{YU&02wiwcjia${QmgT!S23e*DQ(aUZON(jgrYN zV$X1h+j}0u$hM$esAjSe0Z4A0O7{ueOchUHca)*fdlVxHcNzQ;GF}fji4;+9V0I0G z!dK;B!d^A2UdAsGKohe<{|cXOPwS|`-4%z3$eCuA4g9Qw5TYFI^F{F(252nqzb6s{9Hd5EldeSMdT`wyd% zUzw0hr%&U(E?T2aBf$o);$0-*=ohqia*b2ry0ObdPghHN!lz@#rm~8?j z1W}039NcX&&D0Qo^VdH=9k&gM`BAL49q!OY^LzbPBX4EX|GfNK6aFk*uK#@jMYyxA zObhbJCW-yi7pg6<7K9_#rs%6wsg?7xT56#JtK-X(A9WKDuNyMHmM0kQV*#~0fWsPS zftgYDfvmTLw{>E(LqoNWR8YH5?zQ3(4ir9At)HvqnijaSxrcV}r99jRIyZmCLJRLi zjFcRIj`d_Pk>ecTvIAd2E{(*ecdgfthch)#9a`D*)EU7IumD$u*RpORbVC#avxjRu z0>gX>3t7jo9D9j2+31rr&kp6C4!Fn$4c?T<;_woZ=PfX_s-3BO=J5d6a$L98%EU5z z7`X@4HH69cm*R1_(INmuzJvYiaqZn{KmF`IQAt0fp;(})j1l~tv%i{_5CVz)sR(!Q_>QWO>2ZKF z+Fj6ko%lp5k0Ag;-Ywv$~g!9&Ah zIJt3`l!V}>44ku2zN+k5^dMxa~?i$*HF&1Wl7 zV*MR1{4zJMKyS*JrW_xNc!4Pg?}_{y^oX=7m?+kWwiN&Ll~91ZE5myh1Tjd7U$|Sv z*=B*LyAT`WU^#D0{Nvl7aZ>JSygA(dGnYN4Sj7c}%5D}ou7#SeN4N9Jj{5EUX1 zbZF6oWbfZkx1FV7Qpo9dfK?y*)R9QP&+OB3hh=gmB@rY+yH>v)Vmva^g?&voRgC_QW+;`4Ez{Y>R5;L8f|{@(NJmMH)R9{fR02vB z*yn$@w6>8!!b^(dUptKOWgx=#HF;{MNz75e&$`jg3i&Bh6 zkQe^Xq||VPaNl5+`|A%@cdnnNHa{B7LKgiRs^B4mTXm2yY<A zzx}FXqoeIsDi)=FuscPZ0Af7?V)303#heRC2qtS(d-tJ~lB(({TT0Fbn=l?u)btYQ z+tMS@5aN&4cckiCrJ?iiv}J~7FESy;>%Nn&{0exgN*?)&X>uD1BQ>bw4(BGwFZGid zya{_mx(cmwQ|9&OAnt-T9ACORaVJ?5J+a$}H^VYDE?DRl4kTl0i&kpyT@jVL%?XTj z6UbxKtf@u@rGsJWgI4{2gzr4uA(>4(;&4CtsHW1`q<~fh+@BEtxTc5N){#njn3BV7 z3$oBy?S+>+4{JGjn4oG4@sJkzE}#XB=0lGmtG}-cq`=)?vG`#?uL1wFYqsmTBn@yr z{Dl5#=(?9MZkKl_EjA$7AyvVyi56Rl7uqzgy4IZgBlp4Op+*dTXrmI^Cb3K+gVqFQ zyOp21*nm;*uddV6tq+Oqs&g$xfX-EFTIw+RY6*Ju;-*PxYWQXCU*57&ldNw&htA0h z{c1E@CyShCicgLSOB5u`&@0=W@nx4JqUbAOKGy5i*$t+8OT~?!CPt90KmPF-rz5k& zxowNv^C7_Q9iBImmtW$YY}*rV%m+M;_L;%&@k&4ukXxhJ!(p^MvtRffNJLz9a~3*{ zGLu!X{cv{#b8~rp2<<7xQ2;ogO(*E|2ECC4Vbn9(BE&dqYL3|~x@Nx|bI+wH3mxuB z1K7!6KPuDj^{FnsDfVY`3KbGV)!2M10LRv2pgUW^t$9QJq$-;T|X~J_}=yy4z z<1Im!dP`NOpP0D9bD_b^A%+JLw)Si+65cZmOuWpvA92;`aetVyEPb2!xg@vvXwS3y zGv65+wtF|@C$>?jvKR`2o297H_|s=E7vUgu?A@pK3^FPL!%(%( z$A$hl69@EC*oyx|rtV8S*c3pTT4b%CX;J^(N@MAond63i(wD+vpO2Fu+%Uz;AC+AL zSkha*dF>e;OmC!eRaltb-^_H{&SB6LIZCjGi!H>TxL~vWj+&}4`K3v$(cG3{@0{ZH zrK6h}D&)lvc6~1%J{&sibG{~HD>ts)c=!BeonS;8N;oAj9k^S;rNT0&KO_-i!ayXt z5g2vsD~u||!+LR@7VT)1ILVtOii#HbhSQ6Fp;4i|TUddrG2=(w__0#2&YT0rfG}1_ z=DOwhNYl8P31Mc|{0!k^`nz`~h9W08f1HSb+O8_Un7<6oX6p!oz$^$s_TPlo=0W=q~wK2IFtvx$!| zUiOr(1pU~Qyu32e%VUl!Nm{Rf^}K<1USi@GCqMkF+A@r4teeZNCb2e= z82!)ZZG8t0M?95lovSj2i__lhWk89Ji}B}kD4^D(WHG^KSg)EO#8Ky^x#mir+*@d*Dj0rUKu0$av z{PH3OW~vmWsQvxp#+?_oqt%a|zbbct;BORMXK&p; zK4@4L4GW5kV+ld$F}9+cU&f4FS0OUfu-*M4t6cu)bJolArqB)e>xDp0ahWA0Z= z+=Z;bv?uXg6FY)$dJ`SX3RdUgWJuxH8P)gZn|o|p@NMr8gN-}mCgUp?CTqSbxXcqm zGOe$}Zj7I`Hr{+EPc|-zIE|BG#5c5sV%A}A1>e$>L>CN8KuIrs8Li?W-cZUe03Hnl z8Ndb0{_0&`AxJxynYLWsHN_mRu{fW_HqodQe4gA|dxn|;ohA<} z5%O17)s+p~m5X+>V(mJ#q*?bpCM6@1Ix;1XCduI^m{AlWEU)P408K5)@#K`&Bi?}8 zR7jS0bl8mdiC4~&^zevjhwA|}e0K9sERk`n7DM04R+gM2 zre2yvP+TbFj6hMHU@sgETwW{+`YHH&Q%o!TdC6WldSy4dlYljn98sMDsd-^Sw7X3;LsJc|@iCkJ`xT|A# zhvWKuN&x9;Uws2N1pVYkW4`y{IpB+G@4O|k<7LxJrDZtKbtC0#5rSiF;?hB>nS;%C zKr?tG)pRY}aMQZIGwL5wF?)RYbQ7taD~rrQ%vk1n-qTBW;p0h=hRdqW{pgHJ#CuoB z$yTh{G&49jLCvQVeaHvbO+&c0TjhrUXiN9U6o zgcavo0`sX2;D?Ni3A1}0sd1U1S<#r;T~a}cw<66e?peg94301LfLTZnt`9FE%oKB6 z(`Hgyk<|05%<7m4lg~2#wSTZ!b>Hjc&(5%A+&n_*jPw63eha(@b|PaKNKYv=idm*Umavkz6nH z5)EBQYU%_}*@GSXNs?AWoYo2jLc3Kq6&vC>^^u#kaD*#!&H{+hy5C1a`{_!5_louw z@Hy=YBV8RXcMN66P(29z=wBBYiDzv$E&T*?OngSn14=TqePDlIaTY9#tm6U_sZwuo z8^1O-smm(%8mBtm+g9!>q?18ZfOE0D{6!f+>&gc0toR{=A|DOP9nJ*DhFvj#uF0=A zfRkKDt9LxjSD+In(l?(ku2aLMbTCn>thVM=7S{sk(DGToZN0UJeO8M~W!Qc<+%WjF z!uW_#N2y5SwYpC$t~rrbAwbFA_eeNETTbxAXvMhFb!0QTuU8wBz3%9YoQ(4Lts<}E3-iuWJStmq?%i~m@92>8-XtXk!UQRD-7 zrKeBn$@9GVvrS=XPQUt2VWNs8VsyOaqwbdm5JZjsE9-9irjF9I%ZKiPCBKtjcpC%+ z%dYo1%d9!$)Z8l3gH&#q*!4}u)dbOn!;a$O*K^d#kmj^nyR*lVd7bgsxI|R)*MCPH z>k)yUS7cE-!l3iV>xV@7<6m};_T*d0CNP9PIr#+ujIam^E6?|00Yz&xc@b9pZ&0V9 zZa8sU>eJ``;_CU`%or4C@dIn!5YZ7+mH5M!$zuk{wCt+(HcIU4m-h`9sVH@r+2ziV zQ|ZISxFVuzd`O+dcEyaZ0M4AQpo3e)bNxkV54&N28}?yLX-FdhdYZVCusP|4s=(zV<{QT|@OS@b>y?`n@8dA@v8GrdQ1(woDfgPY@o!`{n7CBx6EWm{L z#2=s(63=U2#h_bBD1BujfA53~o!S4=HP`w>CoDFIz~`2PbF#sx*VQwlpLxZ4%2V+S z$l}Sf&wodEp99gASE9&8m6`}yEoJ2YstezN9>J7}u z496N0rxmm1geGDJEWGBl0w2+)ZPw$NnVyBPqZV{$x81ilN-k`D=0Yr7(sua2qGYXc z{1`s1$7immo|8Duy2C9Y_ulY1T$8dY6{5hwezYt;5Ilg6hYMRTu)L9qJ|Nuw{kzDY zgCFM(njHe+TeL5!7xYO}ZFkp%A%7?DJg+%U(~DRPPQznQvSbC<`guQB9hGlHI`TR; z1;?^_V1mK}zgp)k$R`?$T$4Av3fJ~#J9&)n>EX)A_+_-QTqU-Tnh zg_mEd*C6Jm6W!@hnB;0Wy8CWf;jIFxBl$9aDU-EO)c5nni3F~+XVj*1Ii3=KBIt$ur)7ciDzmkV)Pc2 z*5F9rzFzCxCGMBt*!&a1!(8`D4{0bsFGOj^eT6BayDtg-J>+)i$qJV#<<{t`vSfj` z@QhIhbnWsL-$)g4L=?1XnLivOF7B$<3<OpY(FQ!ul_+(zf0 zBC)Vzz&WKy%Dt)KmClk6X$6pZBKPueMDoJawa^_Q^^T?Nm`z-vY?4rLy*C7tP7u@= zm>Etd+w8%wSK5|DyM!367vWJ7OfYFn1~M2H1RGlKn^aru#oL%4JI=MY**4Z^9}`1| zIo&6%njxC=o>z75eaHAkc@G97GcEJV#>Ylw6==me)1zhbFCCp1OxGqKP3_w!6C80&)kJ%j=;+@Gz&I}k#0AZEWaCO`Hl5G!A|M3am@e7~ ze3?SS6<*5sijbjvY^3pw-K;=QzQZWwx@;#fG4!To8KE-uNn5*Uk&2wXsMPiv2;kVD4~#d(@n36af) z>*QwTE~g5$E?4~Ks~hKyNmav%1Vc-XOov{z z;N|{voqFthA8uFTPvbB;^`1WfZCi5HJZbuy)%C6C)UC|zmzoDNQ4_vl=*|6maO4TY1r z9{XC=SWC^Ft0FY%^?SGD94k%K)S(g+{RUDJ@K{3prRCI73b)N*a_q#*|2Pt6Hv_oK z==XE)Vfc`h@dvaGZm^_D{Mgqs(3P*Xe;O($T)a%BQT4~sp*Pz&kEOlE{neZ+N%#n0 zeC>1(0$jZ8BWODh8GyZroBvukoDJ2Uj;Y491M}k5o$zR(Cv~lbW=#^5N3P}+>6Hly zqvdq|(cMe>6L(u|(I^U$7#5taq!_A-zuY1I5zaTd`Q`^P zXQ3t2L3@}j_e`lxJoB9A_gSXrnd4SzsHix{*R|$H%cZ$0VB@~h&kSo}OmW*Pn*?N@ zvPasz=_R^;g729LnLXujAzq+LE+Z4BkauFeg~zU$!LeAmK9!$uf1&@`gGz~?Cb~pF z5S$-~?&N04&6JETn#`@^9LKPw>_sdouM?^5?D=Ik_^~e-MpxsKJpLhNjQV3@2;1H{ z9k$Y@9cHQZ?#iVB32^xU3s@!!&0y(pGSBChg$cl%ucXJqc z4gDaGTC;Sa{mHRlf*cvn9};6M^s%|&@$~%ekSacOdRQC#6Gv=3LsaX#mIJCW7G04) z$k}-=6zwe~p5?pu)|&MPv|b<1E#V_|BlM34M9)i&M>7uXR9(-4x~Fi7`ODUzcN5PB zK~1>K$+v0vmvxav$1c#zS2dHQ0<_Ir&33m>>)6OBGMy&YhYoQ+hVMOcOA>14Fs4s?!5w}zZPQNHah zT;7d`w=!Ks61E0hUh%`5jcvX51m@N(^L@&lZ8ogkZL#=V*jNWN3tf<=o7%1ASOi2?g`9B`gs1zXYm9{oq0YVUbze$v1yj2Z>4nK%1YP8LWgvX*}gV+&Yg2x&ersz15Cn#T;J zdMAJ#mUJtu5?x1^C6j0%>46*c#7C`MvVMDTxT`rTaMly=#Sta+L2AAHDKPI=&U zssQ?5?9-z6675MO5wgj_k2NrVE4MjR=m{0dS#TLv_+yx?`aAMZOCpD`wyqWnCHn*X z5=wHkWMs45$+aMrW;fOGmp~joTUGXmEl8*c18g1}H?c&bu^&8m&9lC2-?!)AwuXlXMG^JI==Lb)zdiuThy^)t z3`&=ayks?ops7;oPY9QREjZYk*3e|zzl}PPUPg7Xpg)Z04Yv_KaU;T)xi#hyLPAE? zor&n-hHW*vr==;=tyQh^y4cX8Uycegj#AOj6+UA;3$_!qpP~d1zUC8nDWFJQZJxj3 zHA1oAI)}XCHQy;C>xmR}rLjw>FJY1KMVX7BE55OSvzWPGsY0+cig>-sDP2usROqGT z9%Gc%9zzTJ8$DZEBIO&S~heUp{==%}hA# zPfx!))pE_-7{RFzac^KDG~ONqBWi zt74*`A!w)uG8aiePR(=nXzE&$r)m&OEz;pUb*!=4qByI4*41sXgB_97^X1orANe!# z8rnXFx8!G?u;qnM_rAiw5sOag_W1sDoj2SetF(Ak%R^^T(GCSDPbS%)*qt#hvmWDh z0RKI^L-CD={Dk{XN2&V9KgDP?YVvO)8|F9|;LJ;rvntQT-*BmY21M4sFHZ0(IlEkY zJm^9GDiO#in7vCV8sqTKB3KQ(y{^hcQ`h{1Y?V7Iap1&cm9&lZbO$zUgABK zfPOeU)bDrV>*{yP1nkuKs}42!ybj1`f5;dKwZ3P`NLDkriPBS|H-6Z7T1cs-2nfGP zY8A99aAUG@ys=e}I;dy)uriV)W9Q?;sef<}!=fjzMv*&D<;xlsES~i|LSr^>Nn9IB zXzc+Py$`1-;o!=R&9_annbD=1F#s<|m8J8cCV3K92$Nv&;n~M|1u2x*yV~mI-d;;8 z|LEr7Za!msZlvWaXj80hw)I*x-R}@;B zh?+;ar7#QS;>WW*rMhjA${+IvwsIeL-c9P9oVFi-Fh7%aL-LB?K^&BvZW$ld4&2Q> zl*+30d}}f9neDUwWcKwKW}drav|$)&holLw!_3twX$c$?FiH`xlbLQ98(!ajo3FH>mQdK z9usAj+DLd)O%4t;8+l&>76; z^!OdE*-a@Me1;CA_EHnyXGlUXw$G>Sb75yfu)bIIcQG2N$fGi_G(}(tTl?RmWq+8l zBu{oFkE|7h80~i({2=k1!h=p7Cjs6Sy+xemh2Fk&5G1Za?Y^;>$t3h2qx)t&`$H>+ zJxFPmTH7OBNLcjhdvJW!1bv&JzOR+Psss+#AqO(U~wDun0Rei$v4kU~! zrkrn{+rVy5w|57OCy6h?0tGY8(>!*0iDK_>Ww=?u1GJu8l zp7|oTSJjtn_9*A63D(mzbm!i}&MJf2O6RiV+r<0r&0`(fXAsl`?))tINUKjr-B8%XkD#TCGgf;`)sL zUddiZU0xx++jI!EZ9U=f-m*Jh#6KoB1wmt0z_tA-EckL8vPAn2;t&#+@*+52r^m%C zJ?5ko;7RrMgox;dYPk;ikM)y5YwVvLhU5G80NF8DCk&;Aiy#?^A>%)TZL6W!vU(GK z{dNm__MMJ_{&R8q@IDw)OkZnA3rBIbDsYM_&WlD$Y7_kq6h++qzGkV>v`m%Lh7?o8LMhoIZ5REehQoRVIxiXN(m~PXji0_M+ zJ)}oMaD3-M?A*K)->>``)5b4_wTmyTZ9QP$Vh9Gl_a&Bpw-b>G8OSL#-gg&h88|cY z4cL3)qOuHC-+)h*VF7pQLd0bZ9k&uKL^#>>*Xf6DqSgIe@|eoN8Iz>L_}Lp!qw!#@ zTE9zuh;B<(b{^JmJ_zTI@54{Ln2L4oQyROpZQ<9)mx?b3G^Ez|T7nz5fv2@tlheuTH?OZQI4y zo>!JgQYH>%l{1c01kP;H&L_*(!p1ECi{`Ap=YjKvrSytkxO$tuWb%?}%xFo^Xk>(` z$_b$AFj`PLi(Uj#y$GQC%c2r4p)er^Mj1xs%zD`~D%w4?bth^!4@B#(?_=1gkJ0#< z;b_riJjTrZ0e>C}MMj=!%-j7EzGOIwOV7rtjR#P_O)$pIUZ>6)w@u!9{d3xZS}dYvM4Zj{?%Mn}U+eQhBky3V8aBObMM^jp}dMG$uVu|ovJOE9KIDC0K^L{Qwn zZxkXx(irR;^lxw8#(`lfzJ$5?1~=P7yc@^Dg4Rfn8|Y zVFY@;^??#N4eGFWzgOwxrP3cKG7h&4;KA$Q3VwcZhS+f8*j{t-ihx5nWNwIk>ik ztN-){&4cjE=HF1DjY2|b2>#fz4c~6qjQ6H2g-sJrOdY=r$)`@jAj0BzU;Ko2B5;nM zyab^q4#JokjzT$cNLx76BB}GdQF6Lhxe3moW_5gseb?0l_i~&9#K`VsB(M$ z`XG8GjH;G+lDFf-4je(ZK2y-<m#R~G zh-5gpm!VVcL~|-K0lob{#WSx>#o0UP2`d#9lY}9ozd$qb0%yav-#0zFRiWh1 z`eLFMBW8RDcMIWzqsECVt#_1K)PN59lm z&R{2^8>sIxrk1sf|JXVraL$;&3g52Xh~QD5pz|A3;QHcd)NMT!wVL_itHtY(B|_H! zv-cigQC(g8H=2kgPvSp$&1dwld2A2*+CDX2*30f^(3sa=VtH*;8`1?q#a6&>8yBJ3|}lF!#6j9!7D*j)o-XzOLJ0+L<%w9OwMb+Iy`f5hNqh+aJox zyRc-H8J_t165vc?L-69V5DIZ&Qo~wU-I^$FEGO;yT`~ctztDj z|J*Eg2?BX(7&X@vbJreYttdZ5boezOl#gjk%rNzLQ^cg^zbFyK`SV*^4^x8Y@tK&q z{16tYow(NvkLf8{yf8p z6Q_T))H;3BZ}U%`hH8vc9H?rm*iQw+r|4kRuZ9>lT^DoL?89hfLwwz9J;o~=!Ozi) z)xiV-&iwEQY*=>$6O?zt{<-R#TG{X?P&F_+n0I~dTdN0+~HsF?XAby!?01bnyh~nq4Zd+2Q z<@`6cnC#=E$|mTR0)6DqIGi|f`bTNmR|-FCey=z}ZAj<-D*s={e{a<9+DV2^bOJOiw~pYz+38Ud50Zdf0dH zDhiS!AudX8z2i_ba5jk25cxb1-9~6aV~YilllqSY&Q~4BEGFPt85a$!v$vtpeKl@6 zxRTR$krX&Z89;*oqN+4pw7QKE6Sm{`)yEOSOG9;?_)i(4q@S5vQi&s%J)kt*5Et5@ z;Cps%3ABx_;FoDTaKrT}>YAjVBmdc)Kac4&jrjC@=pAyvFTd@EqkE|QE_!c8#R;IU zbrBL+W%MXKgw}rF`_BxC2w>o1m5~ z>+d|I{voEoSxdHs?`;n#e6<)B=k3U8yR;cNo3~+O7KA0qusCIdLBmv`XJ&`E)O^(b z2`6&e`Y=7a2pbKpFo*!>rxtu?+05Zdn7z~tOE(-tcw#m;oc@I^YLvj2?8lj_j$)C@ zN#qrj$?vB3Qe|}w_FFh%_*8vp@4k+-oDz2Nz$FU(qbwmVEpLKReib*o&WY3CU%l13 zb^dSl|8yO!F}aJ9s;Z)rs&$wDR(;lU?6%V3a}1!odLIn-T!8HjNBDSqffx1!NpYb_ zj1ETR^8h690^xA?F8Ykwj6c>NLF~goh*S9x6WEkwCLz){0CQ#-;P(Z)@I1($&EI76 zINy*sM2o=FXx$w0xq~L_A}uf&4P;r3N&oaHXFS^m^#s5pJ^i52aUqNkTmg%4*0lgm zy8Xm?$PmOrb;}WqnyQPl*1jmMto`EAqblNPem179Jd7c;jF3U#^HW5J)2(hj!r&>o zIC#+mrPX!ZaQYXth`?Y`xd^9hd@)>k7mSbIk>5q{t-#Pk%vpW_)0P~7PhcFmAZlU> zX7ZoO`EPGYMIDNSbU!M8ATCKp<6AP-=@7Bi4M%iVQit_92UMj};B2Qw z;J=_La5kp%kro(&PW@D{W}7)A4VlbryS>%-fg5g0kw1e!)x5H~fwN**5|i9`bbrwLfR?l^v1c?djiIQ@&7mO`o(ONY}( zlM9I1OAjDBuS9+~y;Dt15(GWtW6IL~n6u^>yr0DUDbqbTw>vkK*CR_*hq>f1`C9($ z#fcNAcCTe$DfIrmTen}-dVSqreQKwEYqYuyR=fSpaLx2ywy!qr@JG&4GFjpJ=4?Z)_pb3 z9I%EkF&5%f0-R}l)Fi~>%~ zFDU+E5kVTUDlV(Sk;|SKp=^S4);GvL{*1J|v;Q?j-Ar+yI={xF#k{2F`C}Ljt6E-(9?CE1X4e}+R>4ir=_g;Za8EDGojqwsiHOD%pjnY2|-FEI{dhf zyypbU2yD_JdU*i*r&$J^h2h~CJ<|~57Vbh>UM!jjSiT0F)Z$!(M}}hkb_+~faTpH* z;z4UDeu-gq3MiR*rO?=AjZt%q;pG?Ij2s`Q;<8F|QDcLF6SQG@=Lv(&FBPrjOs-$Z z{!Gg*hSr`Nn6hv$9PU4r-$k#9;;5+EG`3Bn)U;pv`1yOVaFYeX6EZp2)}xh z^a2N*oH(^d?ddp(KxXgWYTdg1drhy-{WtxtI6!UhR|8d^d_6!F-wfBpqy;9>)IW{m zXRP7tWU}+RHi~^?A;ZOY;WCjt)eB3-_-Wp)aJ2=1%=Pp{I`*3xv-FOUXPeK@Q zQb?3!r{J-xFBZ%*#_E;3kw89|0cRnd$C=tnX`~DWoFxRL6o+bH!OHyvV0kR_{V&(% zvW+bR&N2e@Gk@QWK{IrbnHm9cW7eyg>N3;XoaHGvZ*><#XBolV(ibJ7#xK&9hXQA^ zAfJH6NlgCL2#G1VEm`D)MA#C~d8t^q&K%Pg@5iGMa`C~z<`=VUI6Z{ygI`x1!tZO2 z;(2=hi>PI5B5y%Hc|l6EtI7Q$VI|b`Ezx(pHmvSGfv~2515VDZTa4>@wfMLEnT``D zPJf#AbnMx4?KfQqZs^;2(1u?-_ur`d^?;2oiv3i?-xAOq{p(K9h-TLz8aRB?8rf+P zNK1Uq5`UzS8Gx{m#|R1ZMWDYI{Cw}jhd`#s{kzQaVA+~IiJv^WhwIm`W8gGxC@(Vu z&&!X^;be(JxoHT07>L#6@dXQv5ccFT#3jughf0%M2hN5}R1_s*)V!UTJkJEl{=sNU zr{$48J#mPZSfa!8jj3-jE9un6ZliUlAYU01jisv&q38JRNKSZ;#s(VUYy~)*qnz$O zk1$4gC${gsiPSvdXFti)Y-5_BL<@P(Sa}5V*PBCFLE~H>Ct424_HF)K4|Z-(G31x+ zShx8s;!^Tov|g3}JkFe{%WH8cy8=JRpY=F#;`Arz`vHdC|20@+rsANDwhDbVWGnoz z7F~yG;czOHc$Vpp#*LM@tc36NP7eZh&5YK`iG01%4=gA_OGRS=3cITbZ z%$8;mP;%?z;eeZV))+fa9~0*pBgn;+$nU#w8C&5tJbPSW{?u4hSJL+=dA*LON zN|Ij(q~VWeDYXobuCsITjPg;s<>d~gL0a{#_dDSZ+E3g zgn8ufQItRTapJ`33##iNl|EgDX__exRLko;NF7ra?}5<)E4beGMq*q9YJ};iD;FR# z;u!{w*T$$h`fzf(gMdf(;p^oLF9Mb_$fUO)0-7y>)7|wp?m1iG){U!}w#X3uCu+mv zCV@%1XsV>c>KU&BXT1RR!ep!`klc5i z79Kl#qCWl8fs?k2Ob-gd0kdn^u5}vPI%i+=4(+qh)jfxOdn|EipVeD^kSyoWek+_e zw}aI=2UwoD)vC`Pzk%=vkICng@0}d~(NhDYz{y8#VjR>rTi`1tHAIF{;LLdoaAqPQ zF$}6YC$U8HEWDn?vFvUNY!oJ1`H}x*)8X{IqH>(EdyE0o4RFTF>!aHrQY9p1W3ARj z{JPd0?vJ8S{~6bv^Q*2T+q#Y%FMiMXShV&iW-T(slhj-klKqlN9C9g1d_i7OgkM_anE$$;t&aFMu-%1(A{1PXO*0<(;^8^)|{gVjwO| zMqR$NulftnltEIRfYstOGq*xlC3W1r=1h2s_Ei7)#32f6wTba?Aj|5|e-jiGmqOv| zB~a)jZ}Pa}GAMkr5(?k0dbhh1_gn{sJ{zFWyA}7{2!$WlLPgyid7)t}>PtHY$*ttV0_FGO5=9G)hp~Jm3)Nm`GjNglKs#=a2xUIg{bA`Z+~v8*PTKfl@C-w& zHn@hkvPu*{3YG$ibgm|KmP87gFJP0HzAm<`3d{AcqW1_5ID0-vMYXgEL3t~m$C=Rr=KIDG+i`OlWA-G*vDow|58Z0uZ6kez`1tON+sVvtHelfou-dU7=K zvlC%`(-qx+To1MFM+js(;i0$lYvB0dmO`uZT^k0R9`|gpbklAEoLk`75;)WO5JpGi z%&{A+7UyvbYZRyQATE{yC$+ddMGBlU=xpwsbNI9^It@^T{iVC85zq+drvYb8LL6?8 zW&JREEA$9}rKa2*)TdaIU-R^eAPP~gGO$Gy6z=bxq!B? zwgFB$9Pi{{#r(+Q2G(!hhwcMaaO<)oL^PwixfW+-d<-t1w8!WtXq#U+i?8s4Kz095({2&J%QaivJQ2k zx4V|OrYaR8VbZHEBQ9;WC=-dir=U^jg)8?%5d5@lfRk*~gL|*BZbLr4zNo2rJ8@ac3eg?=~N188ZI^<1Thw>7#uz2-BOqinw4_*q2$^Ok~0hY4)nk`|I zI*;tXxC#+|-+B%MCTYXoISA#IHQYYr{4q`{t-+)?Zaya`PG3&l`)(W9MM>@O$T^0! zm#pp}mCs|aDG!=0f%D-*Km0UA6Ur-1ans(O0H+H}6ryu5sl7bpVe;*kB@4Ma-*^F> zeqMIixOG3i@2`TJ7w$qt;7A6XqJ$VWmvO`_1ME9ui9#CTEPWZ_tfkONhu2GzrN!VW za1v0mwsV3)kF_{={Cb-K=gljQ_>lnT(bLxfNptY96T%ySr zG~L!!jS}4Pj>OpC_h9~(vj`&>4+U~y*_tyTO%`(HrQ)Xnn^=3*#ME4}%%(Ou&N%<$ z+*H{Bo3eV0ls_kO;>77Q>0iUthjv!dJTvw;<3<~M7Z%lg8*mop@(~ymi2hUcFm<6J zu3o(gulo-0V3ua3dp@9ZIbQpC#+uy6VV)(`fG{sDwsb=wACmG^21+&*IKN$mYn6#*kfio)=*9gEXbXbUc_aD3+IK`PrPKm_UooBH`6|~pm5nH?sKbsjpu7BekrO9QpFylmrIOlCrRjRrM^E1%z!~*c;4C7*84&mceJAN+ z$^rvixO4&coUGw|m)ZudPS@e)Y>)dcx8Q!yL7KJhb{8J*(#&ECzpfB@=!mz!`Q z?~#F~%>Lf?*tGos0nSaZKmRIlQoy=v<&2R8I1NlMAU83b^;4IJ%@@#Fz$dVj0VkLH zQ0TG(2X;K>8%GpMA{Nr%_vfwL?> z3BHf~&~tzqeqUt@yX#gAIHjO??KN<8zC%FN(S|{#tJ95UUuX9zq&nWVVt(~KR(SZ} z2G+7UoT|8Wu^BjN(h%*Z&X2?Oi+3<$rap}KUV0~R))PyFsknFV0RhhCFf+Zlbsdz0G*aAqNb_msirnr-F?4)KRXlm@X#06`WX z>(!57!em`UrR1|=^;Ul5-`liQk%$0AR=yBArZyNfTm?=Kp1%T-AEIZx6wFzDl$AsB z4Nc<8=zKxbNOBc9AUuN-FmuHrtkk`NfTU~`NnVFbdDF-ywf;F*{4i7lLR-U6->JMCPuw>(I zd^c1R4p*EAWWEGWI){@E0n;pXvqM*rPlwc7WU0%WMmU>_l3{nlnI*;?GP7)hA@u}^ z660ZY?lyiHwH1dfY)~i4Ky_IX8mm(wsi#1h@oqO{vhF?aWt1Ub5RGX|cVoed0|Yoj z+Xgsu(qMJg;XQ#f8zHRl`$4GbodPc+7~(Pl@4|ElG83>trR{)|0wIlXCZ^|O{gyKr zGgbpZ&y%I}_z`mUe1;LTjG$t04gBnq&t9;e^GnktvJz1P&f7i4h`FXPyy%YTvPxF| zNFFfdO^4GHYw9s{-fj$;X^7D13|8o!i*9mm3lreC3m_>E(+Q0-HGkDR^cQ2u&y8X?*Y+z8jYK0?Yolaf0m-^D%eb(|eF4{WblCASw zebL4VS8lrF+|^r9nyH5+YYsO9CvExp3BZ}k2L#DDcbp~-ErP3C>%d8)n38H@0-S*% zfta^uKeid213xO1ZTkiaoPs#4-FTP)r+%9NCyk0xPw*NIB?dDz)$^O8aOG8Q{bZ8h<=Z1vYqIBM*4SqjNH=wm|0W_gZ;NKY_>71 zJf0y(+{Ef`$^)jnX~`s8|7dg?pn}!gFS02XTpLTyZRR=@SJpwNs2V@XpBg!F;`BN6 zi(0oXN}FbVH9+l>;vlt@{*!fTlvnSE(LqZ%xq5=15XowDJ|(a*agiwoOxXd8)8`m) zQaF@{#!s=Evo&tpSz_uU0}P*`4_^ll)KlQ3tu1AR-*;PL>|7&Q5&$bn;h~`w&}
fQOGCW5&`w(As$pDZEfL7Lsi&Oe4S`qi^8Z@d%@nREOj2-@LZt-dbxkNFXG(r{ z8A9VTnbY!xthVUKe7BYWOFu{EniiHl_MywC`!X~(6Ke=C&RBf}-Vw>H9Fja-wq`ni zbA^E=z8k(7_O2n)=;jB0K4;EvGx`7JSXGN@@~1^koH%_Z{rKbNe|Mcnml*lOcHe96H)(F`fXYgPjwEX*|^C#=i!d zErC;9n1qX$Zm}*t7t9H8(g^1#04FugmZwoh+HJ`CyaO(uyonQsY+!NNmYCkY$+j>* zXw7P0?lrlBJ-goS-Nc4^7ua{!*FO(EopW%paYbcJGy~3$Zf(hL2F_GI19)lS_lMHL z?=`eL6M@b0R5XxnN9Vy(i!0LM>FI+B^LIhl_yPp6VeIj`q9h0i_^;V;u+4yz_S~jj zX)GOsF=RF!3b%x?LL|?U@1@Yl6wF?<7n^jh;AxEDFA*W5opb0qN=rl0$HXlAKQ5yX zUcrg5at_A+bN8Wh$N{RxHc&Mp$J7OP_(!C&`I7R>lQ)YXi>1>RsHNLP0%4sPrJ@ED zRn-xot$pDl;^OK$2+59NP};l=-__xVzJ~gy`*X}87Y*x8ZSX9!@V$o9X#_N)s2qcp zcVX=O-H1=gK~;l-)*iqwa}CjbgeJ6%E#T+t0)Jmu*4onRfvlIh1KeE+gu2)>2&M2T z1IgCrYqn;e`?ff7@-%)Np^jDSkAUwN3~`Edu3}SmD&hlzp|ar!X3jT;ue%4T1ktD@ zuE|Y!4K}H11dc+{;p0~L>gP?cK6{&W8e-6x82hUEaUbLc;@X5*)HGWZAM?5s-eCFH zy~Slb9ty)Fm~uk*Llj-#aH3DN#?cc$FC@%rHVsTEQm+ zC+$j8N&xHF6;BMDs*ioAozc)JmS@R#ie|Onx)*|BleDqN+!2C&A%j`@&ucHH$x^cU ztF-NANmVTp1%*qT9M zYd}pQlYV!)ZE3`^ocvK-S;MwTctRGuf)a4u^(oA+`M`vHmcfBr(BF5H+2G)9>^|*^ z%MMQv6qSK|p@^*?jf}pn7d>5%GV*11pLE8^dAqUC#s^6?^{jWgJYdShCT(ST@xe2E zGh#FLoNz=5x!`E+dvWIciEgZFz)f-(|F`@JkrO9QUqpL4Dh$;4e>xA={GTpL8V3n@ z`gao!DNT>3Ehly)AX0P244HY=0l>}V?m%G=T; zqPM~4Lyzm&WoC|UJ=elm?*j58B3Vf!I&>@{z!~iE7|Rx!V)=^Qhzbrs4S^kDDvv;C zEQ2E!acee<$`vL-L||0UZ&scXtth&B`(jv9cOn8p00;odoLlMPqs;BG;s_9y}dDhjsfPa zIf3L{p|rR9>p$%8Z3;yNrB&E-{0>G<*#RpDKY5mXFO`*7!{qo~vd)IEyc>jK0&wlM zJBs(LIZhvwJvXF^V#IDJ9U zdYxUBR2Ov}rg@~3lKSJWLp3wU%{6RXrG5ZM%+KNWOL=9*P-Sf z>F)P#vEuG7jy4P`-v*sN?l+*RcNkrItiy#P*CC9LWeGzpK_;D#yEd+v{;MI>)DI(_ z7lNAHSd^wjvY~ZRb{uN+5?=rk{kxvHoWQ7>_9^^0dMmtcJs_|Z17Tf~X)7Nn}49K6DjBC+vW+ zg)@P=Iu=2b|55)CQ$P~rmqBNj6(&#DhO1A6JWIZp5>s;VhnfXuEI$OF5I#Avh}&g{ zAzAdXvZfx%f&$n&2Vslh6%3zkgi+HCuuA<5j$OD9#|NQ^h)G9LNd+VX$eM@+ImOt2 z(g}m6=tKYLofpIKw5${@xGogcL6BR5=Wzly6mNRu7B+4@hv{US3?s`QF+~?s=b2*h zMhj@|vBl8~_i*vLFRtD8gSCS{^R-)#S>l!6K08d9X@sAKZ^phe_ZYywEn-a9BZ!xd z`I}B*)`kiB~OhtXc>##{-zAS}@ix=%NY^FXA z9<@ShY#2far0z03hcQ!kV8P161Zpx_bhGj;5b`dws2l;M*tC4C-EtPcF4&DA0xBOP zFTW_vRMv-v?jb-|)ngoL0Lm z6_!@O#=#Fm2yCv|dLBG}4(gjED61xrnO%(MQR%pPCkWdNEirG!Aq<*kfRW?3V#XW; zwrx*bc87yo2>e455W~+zevuG$^^Ni$!z3mUSVADs^Dz&T=I+9`eO4hPHVb5vzV@A7 zd^hss4YK?ROZG#>%nnbd;PLSM7s~|Fg$__7cav3?sWp04g@@DtIL<* zNln3%b{Ucue}4&`UT$>$=2`R_tcHzh=7^{BH=AosHVKlE@$?y1uGojMGxc!ymNUvT zcqmWjG2oOzCv{n>)bz0m^1L7_1VhMsXcAI-P$(MWc`TYq!Al-0|0$+XRvO_HM)5Fb z@m>s^s*6QHWL}ZQ*h6Tdj@k0YxJL_jp++bp}zSz<}5J6z_Ht~_>V(y z_T{0rv55@}zinRMyUa@c(8ySH2Ij9bXT!ZQd|Dvq!$jwN9=&)UBd6)$@EI2r3aeS< zRQ~h+OjFn_6jtHUGd{NOvPGW>Iv6`;JJhr<;;!3MWaSj2zCkSi)mU`1xU>?NZGACg z@jfhAa|}Mg@yN_8MR0futeu0g-PnpHOAVcEj9(^dVcze%VX)sGj_#odB%hZm$VY8m zgZ!f3D*CxJx~gJu6&*XzhIg>^LO}j|$y`Y`_<&fy}ndQ~k zLO@gDyOnqxoXDmFe9A=(XU^|(WdlOX>M)-i&R@x&@i=kf^k=KLTDKoYYEI~^q^{GU zuZmm8ern0R$8D>cxnw7d_L{@i+7gZqwz%(lizOCG!Bc7)@qBRaHeBvXqn*xtOLx6GR01y%i9!vR5OV6gFw(xS9ZGa(FO| z_gqA;aa!m-Mhk<-YGE`1RkfW~@Ciyl9RVX6K@_&~WBwtg(JY$K^5984CNDh*&0RLg z&MSMBeBMK)!b+^(b{T~`cBxS!|6F> zd13jbn6~aXx(!r;fb4r3+ih==Y0iH$HzHS9hwae?_(uLz$B7fCcBAQEcOA5?PZuTi z|LxF6)#dB{s>wf%-Bvk$v7tm$`yfu7ItzPyYuvx*z`&Ev@$_z<<4L2P_ndFAa!6OM zT)^15dic8M2B_~i1s_*$9Z{Q zR6zm6Z|N7`*eFIuRv|83_r;K@`smze1BT7qi4|MUW73lS7&uuEY7~nJ_?Kea&THt|Z#9lx^Ff2S>5X$@>&Vv#i_gSDwbNKgz~AXP|DC|el7-0U z*ayesNAiDtp^62{L=DmiCkLFIKcg!f&`6H46I`oHPMrP{n*O!I;H|xBNu`bhRIe%i zMX5t@a=XKB~3)!c`J$4(RQw1tQJU6#>K?M-h9fO@#ygr@F6d^>zIM$IwANM%C| zC$O+p>ok0wyb$c_i}{Q9V&Z&b+_~*cU?>X07Q^YSnF41;1`qB|_t2r|Iv5&WM0si= zgyB#B(a}w6nq<_N&IdmrnAIm;t9cw^8rjT?XVVnQQmJ2V$J+dO+_~k9$@7e`LB|q& zK@n*Djg~*6pxKrnN28F1k2HwL(QT^>|zGk#42w_xZreJovdfMr2%*FA~o&?gYRVK`kL zIBA6L@q=P*toRLqK_h$hog-sgS6xK8#C9ezzF1X_xa$(hdmi>~Y^Wf+h6O@7t5rv8V63*L02U;e5<621?zU>nE53Fmp9?*;e^E-_Cc}tCLB0?4Ha}~w;~-m ziIF%%z;o<8V|>$31wW733MgI*hz# z`vr_$V1`={!ckrS`PTPsro+J14HA@B*WyWJ8dhsv2Du2sjO7Pm=M*Hr+HX`$Vip#u zo@8?x2Tjz)%FX9ksUqnReA_~1OVOw*1>IF!&!a=Hb>#oAI+ky{h|{(Yar~+mF5COT z{$40teR=Q@_-;61(gtF=>bn3Ah3F!q=;A~~va^~FDF0V(VuofH1A=g3vWX6dTr*^C!ga7B- zPD9kzeLs3@&PFW@0+!x5b^Znxt~rPvBetM>-%Xgb&U%iO}emF!~Z--7=5WYAm0(1Y^hauDSksJ_=(x<`5 z_Vq@VuNSd5vLE@p;@n5R$bJ0Md49gg_j}mFkC5;GstX8=$-5}fuZ06%br5l|)Wt8r zw}r{~Et9uA>_$g+9MwT5yAZL@FC8jSl`>2vg=~+dXGS?WttuseZWU90)&SzTZ zH9F5HJ1tB#`Y zWPJ>rxf8l4opH@440oRK@hB}1F=U%$SJ$AZt{w%AV&oAB%_EWm`I!zC^Zo2|?SrFG`qBtcA z*Kasu>4wATIz$5s->$*nnfi#23_(L#$}2_3n@W;^#%$!~C&J9!3cdQTL%*RaxN^xJ zl>#1WbKX3(PU}V%@Wb%)ByEgSHb!k?3~~rWrrdW!s{4JUKDdt*cef8VeP2tbc|Lf> z8D7*LFD&r(guv%jXAeg}CHgR(|MHN;Q3mWuHS!FbS(_aMvdiy+&?D zF9Mspj^9N=u~2?>-zhq@P5o!6nm}h*bQ-+hOfG>ghEGUD0EqfF66>;^x}P3ZES_THr}v$#KZlV zbc7dIpa^uEiQycXg6_jKu}S+fYl}%|qsnh%&YVAs8&O7XEy96L^5-*7oH(^peK%~= z51o`$%zqfYrQXo=B7;ntltLqygld4MJP66(I>r~E&}Sp2F4+y#2++_1Hl^Ky2y|AY z0^&T>*Ji=;x)VlE)I!ezn{fQN74qW4P@5g|BEjV)Y|`5ZLsc>sNvQ`|osbd&GDYUwgwnt`v}dZiQiZD|4d?g9eC6m~_?kt{=f@v4L9 zH9-r(zCI8WxRe1Wox>@jJ?gWfasJ$O{5)6{dVB3z@pLwK^E1tYG?i&-t59 zLdDRMb;d;j=srLN{RgYF ztnt6UB&$~)p)(B8wf9;mD9nO_;yfr45Fh^g9<14A zg@ab!&>~RYy}t@;*C`WCwvyl0oH@6(%NrmnufxSSKvDjj#)%WB_Nk6thi(2tQAs0l z?yCI=3wpxpJ2tfJU_<^cEl7gOb_*!{xDLH3^aS{!mOdv3o#L_-NUA7wWNa!4hX$}=-&cT>04VMCed(edOFTMz+z#S69@5>VfG7`Ve|5`4?Hf(t zHN(@L^=nUf9E`!!^e}Fo5z=_U5D{>v(-7$Pqu@!0({EnCi}BO6F?H!d1o2W?7n{?! zg{J@jfB;EEK~&EfEtDqLh;i{&0LCxgkDUZk%E~{itPceq4I?Xz`F$@dOkPpj_{HXL z(&+%S98d&58=H68pi|E^tTUF+lNkBc{70&$ww}Rg96t-5k9at3>4`1IRv10o2nt=7 zK%wJ2bohA#o98-q{vI5^bRWTyDJZXLWNkd@@H)#_|4bJ=od4ObY(QOA9WI0Gsm_Vh zUqk7*rIm^Wi$#} z@Ms40zZu2 z20tfnRD?g30@~jYIN!%I=*)WP12I1ik)HnO_|rNp*>F%A-DKsEq_A0?8I53HU;Hvv z2R(;t;_9tOsHm=Cb2rOd`JrwrQ{XHSHQ?w~FAP^Uf%)YJADnreS0Kc+g?llDKypHA zE{n*1i5iZwvOob5X_&j}I23wq|=rigaSD>6}ta{-s5**;-Y=nsCO0CPJu|v6QW)$ zK`mXjSbEHSiT%s@?{5m6)eW#Ehvg6Q=QU28IJGlmB-R$eOgk1c|&*G&UyTR}vRRqILsYOoR%|+meq*=6@PG|cGw3`>iFC-jl^^Q1GL2r9 zi0WZ-+zI_B>EhxI-#3EFn?!3`PME(38x5`@Bm48$-=qLe*Sm^9P;j&WD>q-jk0Z8V zrN$ZX;xgXYoBXdV@|77}w#+hbS>A|coi{s+IF~qIA_db5VhW2bFC%CNBU<{Yrmg|P z@@gcd=i_N)GOTVr##*h57&z5{{8ntofT{ZALgE0n?Y_>cCGfM#P*zJT5J*^YcoxZ~ z5%^a26KBrvG6Bw7;%nrP>?VJ159eb}w=Ruo)R~)EzjFwzEeZ~$|a_tpaL{yjx35{@4=oDp;GZukPa-SC& z%%HP7Il-IkzR0rI>vH2DB=F?vavy!hYhlTn!>CJ$MuxX1Qa%0|!1>xx`UB~_QGu5S zN<)Jobn+R+Q;=?g#*y>GQ4wtZ;`>AZ1VQ`0IORc2ehwtdaDQQX|J{~P0(xPZ z0CfM}8=d?P)7Qv<)(gw6dxqx&6a@OCHa-d^1UOf$JHm!5!vh`@f=Fh=>CU%ZFlC-0 zej2k4TlQQ>WMU@kLH@ZTn=;ekQGQl2HW^r9l=3dPc!jmVkoVJ8QyYx<)dcqLVGxSy zKim9GI*+x6@MHslqkynvELeX6BW4=H%)$xD>G^1AY>7~RZ4rKB+2TTpbjX|*Xs56# z51Aio3ZHaYGy+POOQWB(iD}C%Cy`M2Y+|)l(=rQKyH1-sPq0Df3Z^YPfWfnNV)U=O zut?<;&e=akR8kI#%0+B0Elu9yz?1X)np{BEl-1!9mo&tQQ~Op2#r~?xzy9~8qy_5^ zBIH>R8mltc@Hovhe*v6D$!I9gzylW#{4`Fhu0!8V9tsM3zE&8t?Yj=W)`cle*RKf< z@<&}|279gSeT@V_C6#i(*$kbP1UiF50x)m+UW_21bky7$`GP2H*m4|S4^V}lqbDmJ zl+3zfFFa)f}jBAqF~xTJrs2bF|3DrYCtfC&(O!r z?%aeST`kNFs>3mk&zA-2w1q)Ww3mzRDI^%+@+>-Z>Y?8%* zrbJQGfp^KPPq!OU04!|=L<*X3i)?<3>9Sk<>6DN%BmU&vWpQJlL2c7 zf2itR!Gr~SF?hT-#?3LtMnfyydmM$V;&QeO8u4U3>_1bo8|S}=$!}d@WjzjoOB&+D zsr`y}6#A;?I_JTYwHvP5Izv>E#^!D^U~B=LjU_4MxpW*kZi9|LZ7l0FXp@R`341zr z8lbwlQ}2z1r!Lr|vQhwXX)23|GGHy_L(CF~(qDD+oK8`7I_^F2!l)_Q7(7%HCi^dA z{BOn>F~b1GVPUKQdw#$p6a+j*esi5lT9fi+5%wo9OpC+Q_LsuvA*cv@ipp^6P*g@f zgNXOMg~L!29f6vdNM;fFyEZNob@9B{oe+&We(bAGibGv;JnB*sQJ4C<>(hwS38ZJp zoFuiNg)<4jQ)j25A%{3CMS4H0`Efxq8i~c!nJJLa$5LY9eDyYZ{<00TSMI|R3u}xT zu?gJcyzivYrIt{8TlAC+X%|* zParWZ|FcB5WU$#pAm+Y*G#0Enf}!Jg;Gzw=K*%d)!@+M8eU?HHE!|Fsl__XZ=Mh&o zKi}R&*NM)%q|ixWPzIjK#3{{xw*`R8mLc0FH2O*BiqdUGpw ze%`pP^8nRs9g_=)Pl!NMO(q&jXmm62mErWpqGS{b;^@%1MB%$NsonltZH#Owiv2Z5 zD*UiEVgC995t)Ued5Yw~ zV1)YyAk@bnasGiw2?|CMc`WHkF!%vM#DU0gyYsjQ#NpR<$FW}LGWcol?#RP>Xd*6Hd0@%9qZm9<2gAl|;}5mduyqXvFHykWON;W;$UO(1oLjoQ0kOoI;96U9 z;?zF%&0uxqPW@GUr!U*n=pXb1bs_=8Rp~78rzLRGm`Fm$F~UB{o+-&Po) z*8RnTdjH<->wcRo{xw)#bl=?r)xuOX6ibKIX?@N{0<=cN?gN4Jt=*e9r|OGd+)^#K(7^hq>7$<`ZU@abn*UW((qz`>*2EK}&LLi6eV1 zW8bceFf+cuyw~VFxjm2lkUN)tZ}QOAg1cVX!U3+y_47s0%AQ8L;l^HC@tOI9Djgjt3# zKkteHvhCynNGAF?g&ew$vdr$*U`%$OmJ(`h7`Z)(t{*jx)Y7?~m5>gB({4fZ5`iWK z(Fmmss9XEKA7XjjA zZGS}Zvrtd=BencK=KRk!x!`>)6k%bD(;FvFoZ5@J{adY9rvYmAea34E&s*MxkV0Xd zfJGx2C^iEpi*6ElEX<0-rHePA*mq-j=YHy1WD&1iNm6+2@Ly|+v`sD`Ejbd6r76wB z>WQc?p*JhxpJ{!5YiO@5%LN_H1{5VVleJ5yPz+_$Yo21=rop*bpHu@6( zOsq7+03(%mVbC;v^ccMjJ;!Xt@R@oTJ;x9uXTRH{*sTG1k3NPGkDOzG3BMa->S7aO zQ%reZFEV+})5zl!<{P8exNYb*d^3j3Hpc8V$5@1L&e~(d$Ju>)yHM>k)@omdmdOnq zz39QZ`OpI8`9&2hY9*^_DE}k;rG52o5Ptc6FY6sH5>cdiT{MnJBV95eq0KL8)Q#3^ z>^E5tZho;St!Zr2`KNT-(2h6W!HHP9=_JO^FvPVRzQ`{SLLzC2JW|m|WS}XFXv*M8 z9;jrda7LlDL4INFTy%d>0HqO7*}PP`KT3%UAx#RR!{aUC@on4TO_sfnZYSA%PnzjY zj|KV2utXw(sJ0$C`DO5a%!AG@YfSuo4+f3ffu)*fan{xskqMbB3QqTHdpPzv|G6%& z#qIJ2ycl)k#EDb;Q3u7r>Pr=s)cK1x9hQWJ1*3^TA074870|r#O1U+Qu^z#*#bHn z>aq~Zizbj|&WcA5oM{9j3s>wu>jsn4_uk8<&E9>+4TrCI!raOmt8}iS>o85wdZ89) zZs6>BdzhcJWj=B0I~a3;Em+$-!Tyd5u`BExKGrU{5_G{g#GhuK!JNlPEeVDouG zHdbuCfZ@{&aKOTe!Hl@6CFV#)*P5a-Er2c$TJjLp()7E~xttW*{>q|Tq-7M8&P|m? zqbYpK;QM{Ii@aM#PH7}nR$_@}xzlae@~DxJ$7<^ukd&Us+KZ~|T*k0D#;o<}M#F35 z|4S(N*(GFOH?^CKF3x|7>xeB%YVd#M&r6&*ar%?>-6-|{d_7>3<7nlbB5ONm2#fjT z>>^;p-mI)q%VZ&1i<5xkLk}N}|7}-&hu#}}yZw7dFZpE>byOUzwyR^$brpxrtx=pA z$GQ~B=5n&~NN*ZeXHH|#Su4tetItymS2jg|0tXKQ69{0{p`@x7MIYok24+QNRk(C3 z0KG|v?kW-8s&Vkr!V#7u*2G25rnz0S;`^O-+v>GDve}^W8 z{h8BBIR6Q*M{Y$Ow&!t0-#Kw=XBsrObJroNI*Ll_IeU*@Luyh4Bn0#*2+}r`bojgF z{7pKXUX~q?GiU73wZCem;vlty3JS|w%>*RNo%D6@jS0W5GHc*H4Pvm`K-*pBQE-*D zxlDhH)7ZKQg;}t=>xXYgZNu^{=aG?HNB-JsLPPveyj;>LYzbBBolVG zoiTKh4z}&Oftb#`dK_{7YnWVIJ|)08 z4_t;iCr<54orZ22_tnoE9!y$fBJ%ftgqq3}DF6}R6j!96u0_HS8%{4uMn)VRPCp~* z&|^*hzXoktF2Bqd>bK+nbQ!$a;kyx=EABYlLrp<*gp@9i_GK5Qv;vv(PD4|z0L7)b zSgU&#iv2dh+{y<9rInyvVJJw*|KPmIG>L|0Zku1ck3mZ7aK+LA;?g7no6^4R@-9h^ z#Q)FUd4NY%b$cI>?yFwCa#3I5(ga@G2g0T3N0m$G6H%;iY3YTUkWT2mD+mao2uQC| zBy@vH zsIo=ut0QG9yOU-yrQ_^{OXxL#T72$gV4cT3n8N+2>!O=`6x;SWOaH*wY3p$6lD_~G zj7DBEf(dh&qlA@Z`!3_%UXIv%@-9;H3SSB+&~eO^$YJNP4{vp{!dI3XdEs$|vUJd! zfQCGG6xKEOyjE5w$fEtCB^ydD{qJvd{0a@m2ML-|V4hf2)njQop7d(+cv4amT{prB z8U}-bm)=^x^E`%6T#65R&%!s;*JJPT+q^Uwb=acf{#6+-M7@?WFyQleRX$z1h(wbMv+X$jS)kwJ^!+#^-P5854#~fThWdfP(#e`?_QVN5r7( zP&c&dVTY5KAM-?lLV}S>&RHbj%$5{j#paXf(&Z-*1k+s7+^EN8VABYkk0FT*gd(+u zfm5Bs_OFoLHD$PV>n1)QWQVC%8xfh1`Fa8;yRlO!+|qq7zOnlmmu?4h5HW`Y`kj(d z$P;LS3i_E!^w=yrgyx;Bar03u@)VjEnl3=FO6OgsP-Fe>ztH64X&5(o4ITu<@Rp0_ zM!!)mJ$dNNx2v);hfVUv8A>hvf0xm|6L3?=o#uO*vfZl_YBxW&CXXjwI|QCW(`dE0 z{U8GK7ypi41LvYmPkY#V?#ExZLy^rMHWln4wXmG)MAY9#l6)-|=H;QJYKmy0iB{|O zM)QAJO{m{;TH=JM%e7CQ+=Wh=Q0(0_6vlBNEH!_V!D41iAa?FNf+iiU)0%x^y^$@a zfpEd*_D=Wd?V5D5Jl=7Llj`!Hm-zfg4fR(yWvf$I{dvGiqOi3g8wXC`L5tSYFygxv z2z;8zJr|V$5)*i&W=Y|?{4lzApNVs){)A2v$-zD9LMi7C~ zYh?}}R0lFbuEbcIpV9VnCxpahB40~$R?DuVGNSLvwFcy~W$rz74=vhF$M8wZaQ9JU zDcEGI=74D4fv2iaWb)vV7w&&MYzmDr9#3i`uO}r1Ra8!@GNN-s^+5?=Ku`!qk8{Ro21b5QVtK8|$^dm;5``|W+>5~I=^HTFV-GGxBo!C@rcgD_ z^COR!5bUVzj&DpF`h2q-qo=MzR7xICkb2&^El)Cb%qU@m>VKZ`4M5v|bMay8$@uG5 zFw~k7*d#z9XdzHE0Zny5i0W2qihxJ7vSvEgG*8#$@f04%%F1+}$Qw=96u~TcQ+Y9Y z7|#Q(FO*$-?yLU5XT#mldxQtPH=o8G_5hSqpx|?j#e|~2kJvb&VXymTDs&RwgG3We zwA!*RlNvYvWaf`=ygNl^@3IB)3BinYl0ik+O(4YUZ<>LjhDnhcfz!v&q4yX!W#bN( zr<=B$(ptFa@~lyh>7O>~V0mZU4&u%N}+(#b6>gU;bQ=1qV)cGYU`2!B2B`qR)_dxPAFDbQ$4gK(o@oDR~LNsbt4p zD=h}j*w`3+Gi@0Lezk;W@GVsE%M5qzY&BXKdgfN>La+Dnp5mKB$)$)IYdx6 zd&ebzwCq0zvlkygN}e3~1O!!p0y@vscU{JyGAJ?y3sxP)2R$4ZY)->wpGzh51EWWb z0EIx<)Ky0aHqTRW7`>s z$Hi*__|fiXbQ5sWRX`gD<%-jR{5ZL7n{uHooqdY%dOak zG;Gwtdi@8zXXmclv>#~^0mWWU9#*Gp?=mn}fs}FlR(0yiLv-$8kMUF2@oq7)q8mp! zgAfl$?Fp=Chx)dFX#8F1>5mYRYYb2g&yghlw{!V?Bi z#%z4y{?ug=aGvsgjQ(FQh0~T(2$U37s#rQD>v-+DfaYzc z5uYi=N#8(>nZ6z^KXt@s3^F$Fz6hc$Qm_e2T{>Q_~! z@Vx1P#v~Jf=CO4s*lR?5Iy~1MNAHpD=rYI|ZmW;shJPe-WD5SkT9s=}RGpJvrpEC+ zB?b!bKB9>xT5VZxt437Hs9_t+JkRC3Ajywrz>{d^-DJR75L?vFvNUi8-o1^>whdQhE6t6Xei*KMKRrI$s1dNq@&$o3Gl~A>^J& z3bm7W(sW*4^xT+3C@q&f=o!*N96oy&Lnbc9yIpNDX4-oA`i1ivy$XXtgwEGhT1aIo zIA_aIUQKAxL=&wxtZ7Hvf%QI|mf3f#yDm7`A39A@qL3K~k;jpM)4aP7CC;2VaSmOE zI^{R+V0o-w=l}V4;j*7;A6Yf8-+IRJcAw2FICcC_9#%Ki;`3<|pDMxDCzGpiFCYd^D-PqmPaVwsa0MzA;bjTf5Y!SR zim+KXjVEuxcx{+~QFz=dD-*Pm=zLRC0V?FLH5hnFEC=^J_<*jJp)T0^`!%HG6hckc zQUwpKqUx*+3^=dIHTW;#ZAUcGM5`_9FuF;@_LirbcC^MXyAGp3MkSC+!zPK!A(=V? zktjPo`RQXUTD}W!cejsi+|hcmaM6{qM(r%^ns>AgwV$`e5E=G}ttY0Gms7YM&sH>` z&&A>M_t0&aJBI(b8Uc|h3_A7YCIXQ6le`$GuZN(^2zShN-GYpWM<`4TDg&CY4mjh= z0H;n@fM55VM(a9?*484@`UQ49B{u8NLxHXHdj?(s$Mua;obX+OlHEDV^Eh)lpq zb0D8c3efYb#ppKD1O87_*s}D`^f=LZrlQ_7hxhd5Cm8b8QnYAifp2Yp#vT6%GmJ6L z8>BgX)v2v16m2uXX8GOWMSB@W;7Kh{g>!!^D-*1m$|#X{)9B+avFzM@965Uz1I8{y zI|iOMZhH_Akp_*pM+8u^KB}cBSk;er#9o&F_!& z9O|U;z3dAOTTk&^PV#aV#8$3El1ZvqDAf|oTYd=d_MC;y`>r63LhIVH{lw`8l2@R_ z!Sj#Nvfo@RT)d;Gn^0gG(0rx9$+Of=WswMB*fyTHjJ`viFw1ohZ*NH<>N10D9TkQD z6WKN|-FgoFCN0CS7yZGmvNAv*^l*|_>tc8!n)h@K%*Vqk`cCA(Uhy+?J|{mO9jo86$CNi4cd)wq-lq<@cI^t39CqT%0FXXE2AZPc>?F!gm#2o~)X6{5X^4}u zK^u!->(!goSh#{pTK(qT>}}udW*fJ7`EQ7e2!K`^$Dx)&_?0h_WKs-+v^0c9MPtC% z%g|w%8;&r*kx~MYz{|xY*fHI)@N`aH4$u$C}Ucocf zPyTregNM(D?d32tUiVT->$$e-^XBASs5r0it2LiyAgzXZ+-{o zC2ElA~ykzBxK$*(# zi1zACV<_qT^t^LOU`h`KR8zHNGR3ovPG?YLGOS#8qrto1qu=<&`15uce~+#o5jyLx zq*Ul#1G|h2yeYidh$fn7wP5dcaD4mCf7#7$*xnLzytb9p+Z2Ki6G0!JzgYxU+T0j~ zJ-H7jk8PBl{4|{2d3F zNS%;Gd-XJ^KfJed;9r9eC3y+$={S7&G<1cr6?PeVrNF7CKI#Rg0q9I%%yY}#u*V->lX1?5lc-m35DuQc3x!%+CY(;cQ<&5DUO0Z7^()@$YKzH^ zTXCEHu2z@$v)D(tcZ=o#nqX15&Z@}teX1Era|=a#^=2p%9e;X=Fg*a6&JjT<%>yR? zHbG%|rqUT8QR|SU(j!x2K&sk+knBSI8Ipj*cS3OFY5=w#yn;Ss*jV@G_h|F^0@yA5 z9ozQ%V*4LAarnGHuKGtIIZw{#c~Z!q{x*fzsi;>Y_5gY>UxB`%p{Q=eO*GL&dztoD zXZwF|*4gTp`mJVa7p~f6Y+qTPhm-wI9zRW132;*BqJorg{Jixb+76g2srS*eHT8N- zsdnh1P=_gOoPT)ZVH7?e?v4>-TyXp9Rp=SiQWqoM%_yfDUQX(aq)W#c-~0G%qz8t7 zw-R>)6S!BC7jafHjVlkL`98cZH#GvzOSghC&SDcL&E1ZxQ7O*^PMX7+1Y=vvA6#~$ z!F%7~{LL_^wWX&;P|&Q zhW3G=*igJC(Q3=+VSL||8y28v9e)X3p8mn1Ml>3M2p^Y(3(BWb|3AH zVLz?I)cL!4r?ZRfdQ8t(@*2OUCJnF4!{KYLJgE{hQ)H-GwG`1r6Rn1<(}K5}d}8t6 zP1;+geg2gfl41kc9XYAoxtkm~^P-H|=_U`JG!6le@8P?dE77Q}#giuOW{#~_5A}ts zsf@9)zrI9+O)4GIG9?N)FFk^;gPpK;oe!kRPZ_)!y_|e5XO+F2OxgrUCCOO6@fbd0 zHw>>0ClQmJ169!tfNlh#@tJU5aTMJ?n~kfNuRyOzgf#wHNkgv+IMdno%ZhM*bmLEb?TpDz`5`UI?l8Mj*#@B`Ne}0xs%Mr8E z>z2`3FJwwH7#{@8y_!0M0eK8Elh{*cxI~3J@j2LiIS@9>j-vl}Ytd$i7vAr?0B`ql zLfgUY!FT2cSTEd&624sr*N7&XXtiKX zKAzd3N&A^Q-)d*6+u?HbjG2oO8T=4>2DheCOtc*a+Ag6N_E}Og zVAiJNj{g&knzR&yCM@QmS(#GH=M@sLJ&8<(t=I49Im`)uH?DKw%uje$9nQxLNP{?F z)+lf)(@FtnVqyY3R_?~Gg8wR zA~(++Qkf^@axWAXNh0+?R;~w9(%caf?~2F4uDEo=9qWHvj!Cvl&|~C$bR6o8{u5Wh zecc&eLpG;S#UGStDi8f#2&-m@s=lNu+{i6JS22_>nrL;z-fiddPNRR$uxb3kjJ#=% z8<3V5%0^`BmmXIZcogx_<;Ut?Rck$Z9;>OEf>~nS^aRjREaNS z8U(Qc!$1%b6rBcZS0D5oJP&{TeiHKZaOkKU6BUA|^|S3MZ=UHhrAa_Rej>K|{E1$J z=3$EMW&}m0LTdmo4t^&v0YA;%iO;`u$CG<^pqD3bpsXmYPX8}Ucoo1&-G=gufK!Xy z>@=+3dI7|@j-HS z0iPR3*~v1c1_w^v#b-lZ(c`mu_;v4PWM)fCh0#s0No8=#3!$^Ch{2@+K@ue%rpxg- zQ;y(#HG@t=na`Tb1g?DUrlELsqSZm8(0Q6%gIETeArdu?-HXO#k3;DExhL9vJ{QA& z@_@(2bvSo(2OE2KA}RA{NaP!#(5#1Aw-P%2V(9f=Ffh@pxeNxQ%>PfVVQ?y0gxG{7 zxPI3S8+Xme*y*#-m5n<+hIqqy`3d-kCbD&?_;vic{QcH-F>p_2hjctUSqu zG|^tFc{ga(-lBJtHWoKp^>M_V+t;DfrI#N{C-HE4QL%RdzKjSMq_Ob3c>|*-df|Nndl49Kxf$brT7t+xf9PciJY@cC;0&&L z;8diT0jC-Yc`keop2nwR-LYo(Wgez`UD{g`aPB;K4c&&jVa~eah)}3`=CC=)5fqv{ zki5(gyK@}#k3hXfqp|eoGmyv>e4ZY8iMH&!f?fmWVAzC3*njLMq%t|X`5THsLkOEf z&n907`%JV}k4G7DJV=!>=q$wJY&l}slL))I`1|xK{2ncfyqi>#hr;!u)jgw2Az!6K zM4l26?2p7RQG!K2?3x+05Fhk(z_*t6*mq(f0-mlwR^BqGv`ZOWE@9B<&E#1uozAOL z(vt*0s?m5ME7ubt5pMW(&wNanZjX-rW?}d@>#%D3B}64<7elA$>8!q}1d>dJ`Rug+ zLwJ7?O*GMJ$^Oya=0BQzFm-;5PS$xdW^X{gB!=BFQ_6x4hn;vB3S)|ky;BCZE;j}R z461y5j-kVVIfV`XW9sVWtsFiQuBWn=m4$z>!Qu}#XcU?T4+4{?aT%CC?>F=tu>iYw zA2oVbGb2mta#qL7sY-xKo`${0eewAyPkb|dJ#IXTf}8;d&4(QN{c8MZwF=4M0nkh0 zDgm4!H4L1w>>MPS0jG+08#;Ez7u`p=z-!YPWaKMf3*e+1DtVIEGsy2Y+7oWu|3s8Z zTgt;p07t*mEB#I|O2E1E(nHj%KLEQ9-#|g3l7~un9=(l$BRw(XOK%)M>&JjWRt7ey zCMJ0x%LC2gb+XTqhci&3#DlZ~_@@`}pUJ~XAR3|2vR55q*=NkZM*z!{g$!aiy)GI% zUC5Ga@ibR~r|jZ8ACdx_2c{k(Aft@%GbUNytUIbJ0s+Yzh zaGHRSJdu=uWBNa~=X?&Qx6dWiYxo5&-VB05sm7TbLFhBe14Ab)!qGE+$dyoa#S$Zr zBh9Nc_1qRhrcmq(LKJ(-p-_4-yK6;ibnO2Pd_E_6JcHQ(5qz3J*aVye#IzpK>XuPr zPaIyCNJwWz~@ zIqEIH9f3lgQemPHK_~$og|AI8MZl+EuY32Lz<`l%@&+GF-PW{+MO)!|s$x<-TqJ5F zvw_24K8VnS`moq^%yjlakD<=k>vN2U^9kmPp^kew%h~p4Nf8UZHUoZ-0x@>-D)b)Z zg`=0AVDG7W=sesV&Ys(fy{XRw&cdY7Qm|PJoaBLJpk8L(RTcp!J3kr;gU-StFQ*1q zZau=laqe*R+>h9FYV%lj5Uy*YE<>65O1P~#flnFOuR44k(G2WNa7i#nS;eGc4=0SW zS#=l<-unR|kx97eABkaKEk&Qvo;Y~&HnQ{bVPJq!0vjc;S>Bw@iWJYj8_T{-GW}nq zTF1SeVGLe`b2?4HDRvgBJ4TlQMJtkIY7UzZvlKXR^C|j%vl4H1wZtqB2RsOHg-TTt z@)knjs}RlkERcI4Ak+=+%N@~kkPQZnTY>{;?;}SlH$rDQe?y|mioyB$0yVk{?<=B- zCR#1p`|mG!>y5TEr!?`0cTD$lAk_- z{rt_;0y3dd8*7_-ZKgF9uB)<^3^bGKu!9X6GT}f{s0Ac)HMSkNh909lVLN{llEa@c z5G;Z_26o1|oE2<;g<_vqCn7sL9;>z9U(SUjIUcQ@88=&N*=K-fY z`5C}TFkEKcRTTked>P>Mdk}z;-z~xnr(Fn$N_#DUQ_Z$9IZK9Fiw>gSH_Nd3%w5E2 zOMsJJ$-8MPTSU;A#0Vl%qs7E|JMex_2mHalGkyMV=r+g+zwEh$)Qr5+u*pOKSW!0m z^F-@3_hM2QojjYAwO&z3UG#9)9aFROlu}@X%_li>9K7)qBW7+!^UgCdcaZ}ELfoL$ z)gEY?WJ)$ttGy5&?S@6G9nf>2CB9%_y!WIZB!x;|K1ujDB&w8DRMkqV!hZ|zE24=e zS}j|nE|xtTceFm)afp+4_x=;mk>`vGy_bQUB2luCB)S-+$h$~=)X$%}fc|6Mb#Jt> zxYVrktj~n&sfrZ<-SV~Ym1&_aXF%az&O1+H@Z+4F82FVJjvqb4q1OnUMcs~MF%?e< zs7Q)f#%)P>5D)-M*InqsptH}HOVENr&Dt%$^9*%GY8dijDh5uHJh^n2p_&8E+)}_9 z5d0M1S+B;o4%=|`p|SY8@YvNg(Y)N4o`D*B8SE!6qdLRa9rQx-th)bD1DH$6#EyXtirP zcCBQ{H3-g8FxXV!d~g!RSZ_t+_S4|J)DcOk9>uUH1i;#oXg8lo#Y2`KkCT^f;?wcoXw=3MANO*^_T5LJ zQzmln<+Fg3-g_m$DUUa{w=C{9q(MYfG_0I9W4y&CoVptPT68ZV;0%dQ!zBBy7&Lh` z4%`Xh$vPF4MIz8kF|hZQ8d!SoM}s#fp=n1e%v*8*N$EN4W^E{e4ZK{~Gy!i#+h+O< ziKYNhO-0da&$R4X$W<5 z9y(cm`$}^u;-QxnB?}dSojyAXq5gjO(RvMBk|if~XV zEd%dSJaXzf3>fEudv|U^FNrPQE}qClaQCeJsYvQXL`H|e#(fvwXlseK1LolOL#G(m zCGz>1c`?S&xezvsfm6^&y=H)uy{a?KiodIokPwe~3%6s$Kb0^NEpI47x!>dC|jn$H0R&YsM*(;I%hkABNAcWL5O~0M}~u+2?T}9 zs;bO^v!d-InZoK6#y1pik!Y{d40Qa}Iz%%93CLE$FG+$m2X5ly?hg3!CmTGCa$}!b z2nt~fVXv-;vg2v{vU68p`~Hn+-^~ew#w^15+hM!}m{_N?Sh9R29uz7u zPzkC6k^&mJ5;~=tzo#eQHweF6JEqjKhZ2bjPqO6jPnTo&#Q^jly9E7)PRI4TuBhv< zX%a8VWLOA^>{qO1<7}(W^D$)Nas4+YzyBTHSNxf!gm~@ESZFegH7^OGC_6p){vAwr*kE|On_WPY4%XxAb@6_o z)?o~v{;yPnST>Mo%NbmXMZhW38sK{`5+f(CMgP&RxbJrx26;j;5c6%MdZNO8sf-wO z#>R$Vw);-B>}-RT8}~sjiG@5htPE(D0?xQs2%Jjlr(RP0T_(-M#$W$HzX{%0vHc<> zD*bB#oY(F};Pdf|G2Uhid?S-Na0(%gME@Vf0B8Ntn`qg|8hwYkA}l(^oHMwwqfzYy zp_e6-HT`US}vpv>~kZMkR6(UtPrN)IR0~PL^8YX(@~fq zfhu3l;nQF+2p9LtjJP+WP=hC#ay(=@^Ed&M?02Abhbh>3$eF$Gjn@G-P15V#d5Aqr zat3Z|j-u&D)|fnJ2U2om#!_+R{9XO8kQP#j8h=W)7$Llmh$fn7b;RE6XVJ28`bvIiq-?$(0ylCjMOA?4Eo4(AxR7MOql?CxQe(Dl>4R^(uZx`X| zBkF7vh1?3l=>(k8_`otXIBO0#sh_%8@prWZdk&sLuQBd$TYvJk0nSUeLeS?6cYI_2 z3vMN(^O8qGfQx7U7sEj2JcFFBBi!*}n;H1y++6``7~zhx+G`UwO)^1e4qmSWB7?yI zy;jFTGe0pCSwV3~zaN2QcAgTi2O;rVknz=|tAR+q9g6gak;q~InxBvfHG!u__sTt< zv^qIkZ)Bblj~Hy;P07c~y*JRRy90i-wntX37s$IQgu1#dDmw4Zv>9Ph=P+ifH|n*R zf;}hi@os1`jiJon)!$uG4HPtIQ?9}|;XOn&(L}2&)@4%T#+_`wZPwZ%VCILj zv~@|(?#@H=APZxlrlg!AfTGOwy!a4U%-)E1dfMl{(boEZXxYNmRmEujjZ}y2Y%oy@ z2bl6iz*)cs+xsC&7(8hu290yWo$J?NkSCU!XUc0|R&_2Xd3)6fh))Q@n)Q3pwv#nh zuG@qB8OzRDG6PPD5jb^9cDF6W;ZuL1>+l7z_dbXmxvtJ< zsuOUYy!05|`_IADdB5Uuri5pun}ZucTPy>hvw<-fZM6w4d)Q;M&n1|L(aGpHf=v_b z2?4M+WP(m=bx9#mL#ZvUd!}c{ltSgwgbbuVisB%dcq0hOH-p*FAxQBHD_8Wnq#Ged z_`DN}jDQ#vq~<`&h`?Yrx3;ED%>XR5K+Ri{QYig|e;h_k+l>ChE#P~b=4~#j@g$-0 zT3J3<TaqO=DJnv>)sm?;&yO|q}i>CQe#$|L28tSgMlVDSxCE?-nkeYHg9C?w+ zP)Q4433ReUi##?Ugl5ZeKfMrFBQvq!=L=}r*8!eu=kmhtl$Bl<=BlSM&?taMh0+tU zLQhEYJ&`9VE&4xtPob>bvWz0=r1__w@cCmtnzo$^3)g*!OU{8zUH79IFG1RTHPU1n zY{-`3g>nT%6HT<5wjo0rHf}fLr^f9qp4vHWM%Ys-@}61_%#@YJtQ3+qCmIFGVVLjn zE8gjDCvEVtg>$`soAYnN)m7D`TKqSI$c%CZnhHg8n3M!00SV|cY9ZS7bHtMeclcb+ zVnC)|?~-U3s^jI)^ZVP|qVRKnRU^&3~h$j`9gL%yXCwXnnfs>h)m9_)4)mISFHiqcj68@^qCE7ue}JB6c&3p3DO8YBk~Hc=Fl~? z9lQWzrmo>hLgq#&lV_*`Z0ZRTO@PTjQmI8~p|O2sphSTH1}u-W$`>V}1mwyQBvB$H zU&Y&8MyLotjmx9uR0Yn1RK&ysS_Wb(}r9zGX>WK~7WAaKo# zNP0e`3-HGoXB;}kbh=3F=i}#{aq+qf`~zGOm*j!;Ob_Jb zd7^+ps9NpGOCr%cQ{(LXKv3s+WEW20z&sUA*J4SV=6XTW)u2s(46axDM(EZ+ZcG8V4f1x;==^hL$s z3HGQ!y@BScRuwwc3D7a<^uK=xeTFYUn_dpM>+1_uYDgI`XGLu-UnOw*-G77$Gge}f z-Bvt~Nae>yc)aS03`;fpo{=fTd+5ptyw-h=>IS($*(1cB5INFwz_ zVv0L&MS0@l0(h^Ri=SrAM!yO6X!W@rKI(6amVIpTUazuxzqj$d5Bu7o;}Clc{?-we z&U3JS$9$am%LO43ZX818a+<$cvToCM5On(9bV1Yif8f)JVv@3;Vi(ijF|;nDg6;}@e{AA7`x zKV;iZ8S7?V&b+8`a6SqM z!1uOmF~Mpx{DR`^G;k^m#&fq}k1sk6cZ1U}rx8)8W-= zM{dBp)+QO19Wr$x5&~vCj3SRFg~7w+8U*AiI3Sk5rBNn$td4}sc$_Kc-ckZv0$kb# z^UQmbCzfPNC^DFKs1{6~laI{cI6n6>g;WkWzKBfFnG>D}O`$@#`j=wVQ7ElIgGcQ6 zKgm|&%##F+wD=jFhuPx91?LxnO%w2uhm=I#%;0c0Y~SaEA01|+)n~S7)`h9FEt+() zMdJ=OXw=?@z0%L@|2mdcV-mgJ-t<`;{#{y5^RBjNKiCe|F0*m)q%%SpeC8K;7O$VS z$G9C{m^#NEO^51(kMboSNC2D*n*4PwHwAaL%b(z_>ev7Hs`;BtN zr7Ks!6NRYIdl`@^Eki+Uafp~+4ay{3yX=e4zVt+s4puiCePY?OUOn#y!u3_va@6=2 z8(5Srzb9CP1r7 z!0p>N@#!cxwEffpq4#e=nPRNTX|D3R4Al&9(i~29{?yqe?JXH_Mns0gZo$vI`1^Tw zldsGD)XBRkRqL^O$3=7+;f4j<<pt?@O~kh zXrk3w8`7}e2h&!))6-6}Y{MQ%aw56cuDD}OMJg`zUgF)Pp5@-lcj3dHY`|?b-Se%E zFYetW%ada)8)PztgHB~ts3k9_9#7*k(R;!YwENT!aS`m9SQ=XleF_Gh8n*A%N+41t zB0VDp>o)E~^AD$E`6?ge#|N^-8#C4^oL*5|%NhetYHz8cZbL=wEg5hoCB?vb@pcUP zZaI!!dR(W0Q*8ipWGXCNe-hosc){D}FGMf^q8XYA3`%}Edlw&dv&Nti3lNi#Va^xa zBS;?5NJD9WBd8-qGms5t07BvN2SxBFgu+)L0$f^uK#l_896SwW>Wq@7Gs<9uY(nZ+ z1)c^5u0JlNmEhr)Y>XrhT$hppMa zEc(~~aN5mL-!FmhjhhTmQi_1Z1TW>NsL(r=@*&{l-p#@UJiL7qorgN3aXZVPMjy}Y z`!c+nYy@p2QQ#M;8nSW*o=S_CNs_Cudgmp)*?INQq@);~t_*aN$Wu%3N&CjQw8l-DSHNp*rto>2HRs(li9D!D zw}RO^+25p`ibTB}qi}j^0XygH;Ua_$A}1fl;Fz#DRJPvZJCTtSSdEu{{F8Fe$ zBi?Ffg9Z%xnsl_mo8>^^t5AcFtl54!AUWL~C82e1M8$caOYfgB@Vm9R6P&<+)9`vH z5UJo>pv2&e47@44SBNH>Xm!|Hw6Oa}!}eCoKOQhQbEnTyWTZYV@@|^Ir2>(6)2z_D zJ|_z5tSGEnw-?RZTcYuQ&Rp8;pB5k2d%?cxWO=|l>}mEc8*J2N2A?X3LP<(?^9hbj zMVAroc&D2U!h;_`mt8Ukl_wBoM{=015^$1KiO82FV&Tf&Xx_;h3zzIDn#UPn*4EM( zx_>pm$zD|q&vZrYEg5hY=BH!Lmfz9k3sgWU4{Y8&AALsKqbbd?WWd?1v(1Z#&C5~KPF8rM^>oz# zU~)_+ zj$T<=_=h*}!p;oQL=){5T9eKeR!u&!di10H8ht?UeduZ4=CfK@lGywDf>>U^(&XJ_ zG{xIk_8H@j#%*Q>Hf(40e_yoFyUDVFjtn>p*Zq+? zF1GGIiuQw@;Jx{Doi2++z!{sIiz#z=;PW3=;kV0=cu0NC;p^xy)CCi#ufx-*lwvR; z&t@U}k&=o`8R_gw=C3qQlFAuX#S3YI%SQ}U0vV`=$~3&zW~^3^L@IH_bU$5+KSL65 zIv@_m?nh$pwIJ-f5rU)lB60e0JT8W&;$BKVg7VY|W*{1nqvWNN2z<%|Uk;sV1^hFV z$RvbLbMT}RO0>Vmy??nz{m*lrCUOXTmB7hE_jkg00+CKtx|V8nEuU(p<|z=Er^409 z3^=Ynh3+F~;rHWnq0v4oobJJ(&70`}(>12s?6bRZ@tPC9w6MpAy=>8>JprL@jeutJ zE(~PbTcF(_XH1^`D;BLkfgc=xL7UH=(1<8%cgiX(tkON+PHh?)P)0OhADw7T&9Ovzvky7A@TgMRM@-fs^Ks za^S3nXSG7HWvNn10Vg|g*ni{k=sj@- z27JE`Upo8-tHnpLbkB7h@r%OExEv0hyl!WCV_r=Tn;k6i*~BF{%C7U2^jyda6-Z{U zr`dzoxasTBw6isunL(#1gWb_<4lgQiDq>IJe~H8s6D@4fcAzUR_(h;VtEP`84;+s`~vh#=D( z0(E)ORZk!yZ)rgc9{JxvyFnCkb4B!HKb}C8pHP06p&A8F-rlmPpL!8+9y@&zgC=^x zaq&UkZK$p$4iRt$N2Ouxl(m>(y%~R84ZxCJ7trYoH_TqR54n<(P&(x`n>q;*knzMI zwg4(WM2SJq2TkK#PM*9|s6o6&hd3UBFTjPc1T5U`i}8-T&~MTzbQ|q~4#VcN^J|a( z6YTJ{l_RFinT6@|W?|Y~NB&B`PqKBys3{KUHQF8>ht6i(?ToIYz0miY)fi*519LZ? z!``c*ye1@pXE3|a>D9DN^h!nN;|*oA*G;1LG7QFyenaumcyTLC&qJzTIFepMf%mG) z)OTH;DdE8QBBp2GPhp@Ln5E!JV!JK{uyeKyU;i`%2`TOzHcbW7ON-`q-eXIkGEL^& zz#c#nGGQ@q7e4Ac#~9wODsXlwT^@-t*-bK)KzgH%CEo4ni1j2jk>GSf4R;o!M$ zTk&o$djlIRm(#pZ;rgm;G|(_WyjNy0dI1?*yy=l9QDEfM4fwE+1Mc0u1vzD`7bQV) z5Gisc*jpm7@uY}~XLy7Vv^SOmW3pkO!TiDKFBQE{$#8tICF5EoqYbH?u{oZz-{F20=M zh(6m)Eet`8p;AEhigMoFLvYM zcqx{jl*JQ;UPecus){_SY4;-_W!pgQG+)FhVTk5$(o_aIrrx`+qVoth%vorQJZVMq zH_5yCGy8TvUxvY;WuomUy586_&tD1PUPfM`ND$gCPgGO0K^q%1_|Pb-wfS}rTfG0N zEk5jLhmZR+4Y0!peeLj0FIyfm?=;KZ{Nhn{br+CN1MQZ{L7}Ba9uBA zc|dFSlq(euNG~cHXektV?5_YcXgL)Qo?DTfO>H?#rV4PNX1`at0}=bIsxX$9U24(W z5&g%zBld|Og_|D;1JZ3;gpdvgzbwLE2Po5_6 znxUVL^w&_e4lgDT+4Dr5XQ(%J zdWHuBQFq+B?}D}4=iz(%S?Kn~EVSz5iUHql!m0zea4R7fk#ZgPcA9Tvl!m$!l?6`P zZ`yx?ZlfRU#f$)l5{7u~%~}G^6u+mCM5jWhc`@KrvkN4OT?;ga_Evl@rY}5-4nt;P z`~KNHnWijo(s?D|JOZQNoJ>>nv!QsoaY>o5_t=BCy4#^Ch1JV}O#1&utr=jpu;wt> z>N7j^8}EQ`EN8)a*<7sIJ|8=Ncfud1oOyf8Bj=p4=cp4l?Vbm(S&W*iE%KO`_iuQ#|m~YzOu?vv;W5%1#sxOfMu8a3*9GV8B<)(7Kl$u3ozWwLGx| zs7+p6>a$)|FDHX{4TDFjdD-lPso4G7Arvy8)Ct1&H4mH#rQ2KT3h?mpBUn3a#(0ZO z@C%5A#!&Y7)CCbt-gz8@!4sFFX$MQZ-P0a3oOU8KGMV3W+1uPZOBvfVpOL^TRp>U2_voWMLK zq8TK_>B~YViH-w>)?d^N4A>a!69!N-~9_gOQk$57nNLjg_NJ;lVOoA)Z zV)kHji)~}+xvb>$y>XZRF4m!83roB~bw59}#^~=H*s|R~;d9}&N&Bf*d&6tp9DLZ* z5l7AkAhSSKXMj^iW4sD+GBsA^%kf_jGtfm7?e(|by{#HG?rgQF@y9b`7OmW6NKOug zL6gYm9+m}`A`t*F>GNZZbvKJ3NuL{y@JDyiVemXO>R=t*xUFrEdP9c1)Jfe^8i2|f zpk9V(uvM}9$G)@vX!!Pz_{L%-l9R)r&5thuK?a?gtVrHbsY)P7-eP?cLIdvNy>^xu z{MAB)KfcG{wWQGeD*;Y90cS3|OBHn+V!#>pGzjw-{)%Bgu7{6h=4wKV_XqD|JZI8xWc$ z!KRaU7=Uj<=YF&B^$a`w_WL|U#CSkfNbq3{PYQ41FQO9oG`1iNdg_itC+Fjy-Ha{&n$`Q18<7&E;nVW=eRTvqGYw~ZlniByiuHv&0iYP3d= z>#h6Y_}Y3CPwpuWsS{|nv%wp!Z17QETl{E8h2`h72Ns%Q;Q=XiG~%J|lI!W&B2Vj9 zrUz_WO-)V#wMGWt+rAh()d{^v+G5Q2j&NB#2akeXp;DLUwKa;u?1xUdu<_a+t9M*R zbeg1Y0H+obnHJaCGr>(Oy$~x4TvM2JcJ`95~)x>F0L~Dgu&9WTumM zlfum=@1{1LKr9L_3%8?TdkZw`WN-Vjy_;lgFuGM{fO?6daB`MJfp2Yp!Mm-eVDEtw zP_kp9%{6AND~o`z*vna27^Kf>5}=mH!)4L0X#CC(_<73#$Qh(-%kgs7C~&IT%}Q(X za26slAred1`k>F3i*WMNqdEgcEucJg-5-u0sxL>x6>sZL) z)}O(N+cF1y++_-S4EDgH-Iw8)Bw?UQa}bTi>H~7*96E&_PJ+&t<>jQ1I(ZpuBcx6u z;LHw9fKKsZrIBP*5{W|U5*7Ae3q#*Ai!tH*>4=Q=;J_(77bWM!4bgGFP^dHv;g^C<8}dI4In0g(nI;Xw7$M46ft zBs+O67@d1LV8Ya;NQe)FmhG=5Ba#Cr&&ID#QFa1HLnae0z_5vn zapK%P?qQ2WC}9)MTf!jG5l*w zY~3{*af$BGYD>IO!kczYsRTwAG8l5lmR+vsI&d!9_L>KeUoY_bk*3l~Fbk7d6*1Y(-^`0n@FT;^bd-$Br zmOW=-_S%!U8kJcDoyL6(k*PU!n!@WekJS`be^H~7L}~XTjAfDTlm)_?7KQV(g5#ks zpt3~OH!Aub#k2n9Sib)bx{h*#jf*uhvY!o{lOI(*3;SmP6HcjvLqTDC{W{@G#TC(j{TyECfe(69Y!~4*mk-{^EQ_G zD>v*#8hJN)S0N#!look6&0AP%8Eh&fG5F)qDYWQmkNO`^`}55_AnK*L%EIJKy#=2dXpwic^t|PQ9l*r_JHyp#i zS%$ISufV-W?Al|nNTKvRgAuGaa57pBmurd&yO)Jb6M)j3%{YQhrqc{Izq0-XUHf}r zj+-|g2YW)Ps(sijkte8yqFT2bCwy>V9fIT(|k6+bCzaudsup z!jecv5pX(s%|?R{W}tC9%c41&#?C(t+ghSgduzPc%N7%@X5sJ|XI{NPQVw}Df@=AeIs)d5RhO%e-6>NO(6)M)&6iu|hr#1S- zvSz=Djc+GLQ+kMmvh0&qr4Bg*YcgnNezQ8rv$b+a8sEig2Hl+RfW=}ATvE2 zKiI56yB@ZOoOs_R~K9q101 z#ar+wa2wQ`rR-*G^cV?m(zPdJQj11+AN$TcKz{}Zy~ZxY_6v{rzL`oU(KG^Tw`m?$ zH+eaYDJIo3y+()Jh-4%D)fR9D#6Xd2Ox&riQAjWU}~uTXD=mFpsW z`s#sGny-bgM1{FZCE7x)ttpyle^;B-_>Fd!+naQ>DqQ=^?~oIORHA2kagp~TC?fbu zPYA)T-;Ut@&enzX+sr&)uj}0Rgll_IV}ntHEEPUs15{`^16PfSl2jhEn`~cpWA8p> z9y^=T@4$oHUPBC#m9GPRdwECJvuCi!8*K;qaMT=sMU9gD0=SzU!d~=0)v|o=!@FqS~V-;3QF>b?U=pFp*a^tS~K? zcl@ESI?d-4LSapcfRox=7NqA2H>*k}W8fTHsD)pm1U4&9qx-12*tl~Rl*)>;xk&_& z>6z}BK7S6{53oZsK3CHQ?{>4n&`FNGR%TdaO?x$8u4oRYtZ*G>I=i9I_*Vv;+I%%) zB^vlhv>1{FytJkuqKPJ29W*vre%_$XOzEJBUWTxc2hb60R>r$YMc#`Ng($SF$cV(v zD_1e}>xJ5S?@kVB+QoLDa9uCM;(?}lDvYPOKIIHxH6}_RB2VY4ofpum&m1^7Z$er^ z5QFZbV(>+CISCZ299q|>A(<^})K5#%wf`LadE!sLOjB6BW`L8#;8B}+Qc{f6$(>ZJlk4J5Y`rPL!v~XR06rBb-Vfp5h+`CEMI;p`dl+Hw%+5y=L zp1EBfY*GSIXn`6j?3_kP3V8qX_q*7^c7YoLLK(A4kux`gW zwCHY+aW+5WN<or1Vp_Qhxe-Z4<&j>kmy>rJ z@{fQtKAk-f7=)WvX_ISph-ZJ;95|PsMz67RvBhULFU0>W;3R+~=nRc?!?yiS_-WQG zOt6>*k2P~~@tRAqSMzlMO_L}~JvDtXesG+Jq2I5@h1(G|3Y=0(3{v4XyG-ZHROloe z=S34uw7;DVY1pL0%$+m`Y2DAiLqQPoypBQ)c=QD^e4e2xD_zGRD>W(*|DV0{fQsr| z_dYgkC&?F&xh7s?1U>4peMbGPE3q!SOJg*a=(T`!5Tr;`1U2^FO+xG?Dt4n{N3bD9 zq_?3CeSl$LW*FxGz0W%{2s5atsGOU5*7~o3seAU`v-fX5)nmnerJ<2&Y2%J&8_9F3 z{b_Y!IXUJZX=v=_3Bj=W=2Am6U(9SMQAf}oO)#@w(mQRFFG!Qo5vnxl9w}EwSM0(aMF0o7r?2Mix3*}1V34O zZz|Qv(;AzWhwmqOW5DDUxPFfTze2$$T5B4-vu}kY1|bBKH5Cf+`!d9QT%|x!fpob7 z`>#Ght3FFGey%eDpLp?pg%#Yhse59se{yE9aFoG93?|K9i?+ROu=>CagyfX)zMS-( zscOAyt0YZmow_$xQ~|IzGNlsY%sdF6#Hjjleqb+WMo<*;A_Y9W|F%}fw!c843!Ja& zSE&)fq~;gsIF#bOYHc6DC5f&aOSc1zR8ZM zGbkTl`xvh`z3J_Loq08E+0&+Ha=!N3} zkqFKbBQ!_Czb{SGq2~8hp_4{lij{94T33|GP!N}a%m>lxk(0V$_`bx$>cMd+%P-bm ztXi9#U6`bns({n{4S`c5dLF@=M*nG`sS(Xn_q*zho@1=AZ0iL?r{uklV!?_+Rd3Br zg%b36{#;)eq&L0&E$ox7*8gnY)nX&f+uiH?CyHo<mOQDz=4rcFN(~H(PgknNcc_ zZx!eyFDKrlfQWKtm6=$x?GW1bUyRjjeUYE^jQ9Jj^qST=aMJq`a8?;_Ss_MRN-Uf_ zcVggVZ}?pcsTaUWDGl)%B0h4n_c%}7e;mX6Zk8xj;KaR~Oo6QwK zXf}GRxD=DDcH{F7rr7qY18=TgJMWYxud{l7XVq3TZzJ8$sjb{NFensvvGupJXw|_4 z)+>+WR(ux13sm`>+66=!k!SereS~Zm$}8e6iZ}><1TUv3HXTaZLEpmYWf`Rvym>zN zaE@1p)N7oh{{BS8MB4j8P11f{U5VbCV3~4H+YPYBZ>NHg!H#it37o}pNZD-?_14r+ z4APt4{#G`f)UUbQ|W1Q9pSj;9($SB6Tx( z^|~Ptf3sXp27eXlcp4mpku$t8V!9V19|u(y4!u9%)S9PWAwgb_0ISyQNAD4?IOrEx zFMyNgqVG6#6J18QVabZaNX^LO)2yk@kER%g=Wfa?_>6IF@1`oeuBzaUl~y1}p}^{+ zx6tU5IhbW(f$SXjTEM2JkK#(EHB7%S`KV6X>@lSp3}iA-lt?^LBwhwl(J~Z>R1z^2 z6)%IBfo*A->Ur8w@wRYLQQ^YY#x^7gu3_{K-sn8k4O>nJ^6yUHnHt+iieP7MX*|P9zDl6VEryTK2G#Q0B6UQ+7G;Fs+q>c`%8-*}w} zHjBibSnRbJ#zS3j>25Sc?Bb-ZfU{7JVv!X7?D}q6F7S!=ab0hE)7$@I`=smt{Ih9i z^L>qsOtJ5eKY{WTRUV-Zki3wp=jMw783G|mMl|kR^T+f>Yvc`#Oha0Bu^OxWS#@cd zKnt-PmPH?+|K_ViUQQ}raan&Fork%=d%Z8x(<0bHB~=ft=Q8M|2}HGp#Ij^4#0hX+ zxgYHY*yGTFGssDJ#=t)I{Q;+DyrpKIdPOOU3x(LW?Et#;v&Rli^YC6F8V)ZCu13J??dqP!n+CX-K17W+TKkSbc%TecQ)e?|Cls<@vRGbk6eH! zVXi1wyzXSK@@CTfYNhfnsIvf&%l>{2scb)r86ac|-4Ge;hD-h~*nQ9m%QrZ{#?u}P z9T#KX;>9p=w8s)}2l#Apz;DN$apV3{#3r~QE8Byg@M$v4+rtI5@}YdreK>IX1lo1B zz)ZV+_$wlfPtu_RBJSlZQ-J-_t9d!8m6W_Hq`jdjWaTIn2vwnVDj@ox(D@u0LD9TT zlT;)|d6|qak3!BQm7|>PC)BS~k|jb>Y7Pn#G9gM5qJ&+rNQ)&XVCy5C!T8c$*U@dX zGn`jiv5SLOH-4`RRo%W~2AH||9*Bx_W&5@>w*T&cHM{Kb`w0hJy5Y?BDOdiu%JZrU z+rRn#@p6%OJTTaeUFce2g2^^Ke4dVCxsw0xw110lqCy#z#pTFje{ZFBN5R2pqJ2!) zo8I*HzuKlZYSGQ)+h+f^Nceh?12U7t0A<>1i-jnZF3X_;7WKUJ>=+0lpTgB^FFxsM zm1p=b%eD00+MiaJR#1S?ie*@%ePH|0qGWn1V7VWbjIq<#qW3T-+`4s>!D3S7O!-PL za6#OgL1MW8e_g+ZZX;bV*J2|=9|rP<`tKJwbE^TTq&N$^_a222gWff}FY=Hpg|xNT z!-o>B>wwTi1_bUHHe)rS^k>|e{T{&=X17x*p{yboOLmQsIqFE+9cikaQU2k#3ohBtHCoXBp$hu0^~-e zASXNt!Y6Uaco@UO@BB4Ya!qM@3yRASBa&jxu|RYg<%ao-&De#*`v*?iw$wnL(l{>P zaDln24ZiHZ0EQh+_`dUbZ)Fw`npBtNf)~vJHn$J2e!q&aVR6RGTSm+fX z!$axnaf<{~ zkjA@7iYu?+71`RLsZnUI1S#@zT#877LF0KCJI4z7qGi0Y_|+$GO(^{=J2~t2e$37- z!ggPOH0x@`8-NpJHtVW}%Wl<0_mSv1O$kIbFv`@rk0pLsWQ*UAJ0U~p4uT4Tk~aZQ zRcQS;Y}oTFjK8&q#q#60osff&990ojSV1YDEnhXPuJLldOD-oFjhZA+W6JHY58f(? zOAVeiiG!xb^GcA)mQVO71_eS9QX~o-yd8xBW4tl>hk1xeaAfP;k*!aACR?@WZzr`D zgW#U_3GMa&I%&e^|$yi?3N$F4&UqWJ$VP~_gsR#*I^8r zvJ%a^*q}k1xtL~ViASNXJnUZ=&`I!0ZJ_2m+TxQQ);Mt`6k=&PZ$YN>TYNLcm6Ty* zGSE!>IIcIn>FsY}W=#x@OnVs`nA=wf{l_>DEK#YlY`_bgnx$wWYlD^Z-F8Nq4zw67}ZXhG)^2FvDsq`c7R7 zU;nVmA}ShrNofaFfm72aiE=sL)#N3m$cYdz=nUuHP8}$$FJb_i8OWgXSrRhyif|() z9h2s5!=RyNY`@sTzR3wDKc*{8e=(h7@>Pre-T;-?TYLS#S_F7>k@MT}CHQufDO!GI zhFLbdaO`X#%4C$4tZOoMf#7%bF=pEAM2j}2FdDEB>vr2CGs_dSU%Y<*ty%Os+W!Ne zx}kkvGc@>eA$A|Vi#&GW@YcX7&)8%_r%^Mm&M*^1W!%X;D$bZ%j52$ZCI9T^l8vQ^WT{IV3s< zxsN1Ds;8#tHy_1d@Cax08DfnKSFdv5R8XrVby&TOAiaRP0K8&dSCt|K+3C+Qbi6yd zeCLQOm#;%!l&AvMItR`K)p*M)z*#OWz%_q=eD~vWOtadJq>O@(lE*2c@j=X}aOtxy z7Vubm0%^iL6g4{6E*MgIH%s~B2XBSJz;FSkTiKypQ9JJ; zHN_@xl2mq*NvOtv7naW;_Q0QasBrF`fRofxecOaVr(r8|jGbePoA(Kfy-+*oBsg|r z&wa$b!A67Kux#%Y1PTgxNS)Tj^I{oaXUTX0oa8Bf*NSzGQEnv7I#0P3{&75=FHvS- zH1ZzDpeQr}lJI1dM+%^b5sO^G)7M-pBpMk;qpM5I^z7SWyoLxaHbq;hNQPK*aKwJvX&1cY|w-p>6HzPSd z6bf;2W$_TLJL=7;6jK3FvhKRpmW-VU+3otBhtZ|~Vz|2PLR@qxAWzeM?mLTsGlK!A zx)&z{&Wdso9+C%p?kbF$vk8$&Ssw*B$;%>TAMCpB6qH8E7Wod4?dr`?!3_9|w1w!!`z& zD}0W^-186y&RmNx`YlGMp{^JGV9QRL-_*DEn=0#pj(Y z;Jwiv@d6cezHVQxDpek+7kvM8#usg8VWIs#OqjP3Uk`ME|ASZ*%HFU_U5eb23OKN% zNS%)})|=k+_8(@=+x^df8~*pg)t`N1Qod#HF(~Ajs{BnI07k~=trM{4#;HQk6>p#ZO^7AjQluDjMKsK_+p?FCd{{nM51cct$iY{Dows! zz{91OXK#m=ofe@V1CW*5<KG5#iAS95{WCpQxL5GJR+7W=*18&&KU6(3-)g-Ew59g^_D zD%XWU(a3wkV2OREh+PE4_=n);@!L4E`y#wO|A4j4F3e=xYUm^{^cc1jZN9a|C+s4j zMf(M4_Vs);>$r%4z6F|gHb<1p%L3n%xT5N1Tb2QMc9CwotM;S1ob5F;)=0%kVr(XGED`~#yu zIB?R*j%?%aSMh0^S=hG!B8p07+`CDjMD2Yd=}f2g)KPdnys+kiApK1}@#T zyqi=cR7I7=Lp6ZqE5%-8Xk@{F*8-OA_7J4K-qTr8v4q{8!MZ(1(Q&9d95?#mL8=JU z1fF_w609e4&+rT2j903|>Pj`)yrWS=c4|i?d`#mn>(0wb-pkCOC=QsUtOu&w@GDPn ze9tAUT7C#~7H-C9c9GJ5j0ZXlT7njA8#OaBfgu4TyKrd2wwEDOvo2<6&Mp*a00zOP zY8zRw?e#*c`&FXnHEeH!KmNRqlNVOtF1r|^o~kv29(f+UP$*u5J%_x}p`SJSk64aN z{-HI7(WyADgx#M}B7=YtoS;w!A=^$8c?Gncpo)qLM8#)dw)K8|)zbz}UbYZqQ0j*& zP2^QdPW8a@4fgn~#{w7)aK_=JY}WHP>NqvrIUA)JavWXQ8;+; z47v|@u4wSh!n4i0SPc0Pp>(o%pef~VvIAUl4F|n?A$CqcXml!mvfhm^86Y|?+l{n@ zP}LaFDs$Fl*|F--dJXHos%ZO^r{Q+M9Sk4sj0sac@$hjV`=Hc1_Ht@~vugAA5(rXa zu*7i_I`^=|Id+2lkibb^WBR-&5dw5&u<*Ij0^AIIjzWb3sY=!ON(!e_E}{lFDMTD5 z(k&R`9z6z}=R*Y;JaawzOt3&ij2kFSt_uh+M6gM{Iekw!p+kQwUd*GaFsCYXl?Ye} zGznNVutJsRO*&eju`zkd)K%%~>U33$Bnw`VOt;Otr~yYCFl!RMo&o3AeXU^ap(+@8 zwWrgG0gNwBoIj4iQ&(bv>j7MkNW;?{)jEnOR*kx(b@@KR>fG4-D9Yq06l8HoeB01^ zMxe@jne{M+E0evK;O;X-Tn)yR!~WR(%L&-q@5K+Z*J053W#~BA5ubFY_5ETy88XOh zMu16T+prQOwb%3O#9q^of$OEqkMNVZ4~EaM!QR7;5Ebf%wJE=|Oy&dsyK6A!2PX_0 z?}Gy;??SBQ*;Fu^6tn#|sZffjdp^*-Ux`q42wNz zKgb+TD{b-DEoa0gx$(Z8)Hq%u@#H;XsrW45kqdVHVUHipE%8-fbM%?A3R{lfXZu4j zB1AF-3PhM@zaKrvdgA1jV2H{pUX{mLL?ea^<>(82CA!}9rZ;ZWr#CWaw_rf?&Sv3L z7W{&UXOG#5AfpEGNK(NjyQSWd8bG3HLevK7qTdyao8^P1|1t|UG%}lR&|&@uJIJsD z+CPfrFlCb0aNw&KBH(=bJO$INcA_ymA@v^V4BtbiAMb7sLUu z79Njx7NtzE^Blyo3M^T35)B)V#nc5GkR&YNQ-w5PV5+nx;7lm5Kr*{8Mpko$I^`_} zrWRuT@c^`CAY!r9nzy8>*&|gQIH?)?@=Xr-jDbdz4prcUK?jEx@``m;fn_5Gk&TQj zcV;vh&%>)k7GHoCfp9k(~A#z?&V_pJ(&9QS_~$@ z9OB6PR#N^fhs-J$1w5zrZNRcdS#S^c5cZi7H$&mO{Q~-qT87SpEUCb)8Gf2;ivdGjaqz_5YWcrpCYCT~82W5!yjDaUj z|Din2swR<0aqZ4CjGeOqZTnlG-$YA{nq`S`bImYmfl3qSo3Z=MF>s0%x{b0!#}RH= zu3m5fH3v-udTJH)sjFxZAb&0r6|Zt z$NIJV(XP`X>^*k-gEfDr^aMErp|AuYzV2_2FS?uI;HkSPkd`BbEkhDX2}H6dQWJB6 zCbl>8oWzj4>IFkIS%^-iw-a*lv+Du09bkbom#BhU8_sk^;7}r=d`(BR>R}1Ps=%pM zQwE9++YvBYqTL`XjGt$R^?Mv~(ccBnqTP@na7RiyQ-8hWeF~SC|xCrl@Q&MPANqWhKwliBV`>CN4u(SRzsx9BG54 zM%2WeATyu+jtZZ~L--&Xu{S~ya5?~cHlBu=X)xG-5fX&$C9ifs66W zHa`ZW1=ZFIc{Z~pa_-Tj{gwce7j-eXBmj-bRe3n+qA8}Jj9r8ga8`Q@Zj=l9AS50e z_g;pL=K=i0E_w$~Ta6wQmZK-z?!6~@WAKc1n7-sUEZunpf82<`jhHO{8_~4O;*o&d zGWcE#MUQdIFvWa39)~CM!o9*Ozt7@wWEGZUeVzyc%kM(EBoW zP-`FpIuuH=x4sn&X;dhq!Xe;hP!ztO;*Ea895|qN9_on2p1Y8p8HsXH0?IO8csXfm zld_~1p>;(%k`hDVy1UNk*F9c2PjuJe`mm1BoboV&V%@> zrxn()6Im&P2AXHC{oU(Ybb>38NU`JSZ8U5?9iHn>B1w=1q1qeAmYB~2f6jIWs!G>{ zg(;^qBv-dWo#u#N3QNO~*=x~txC!EuUms275I@DQfP%k?tli#+i>#to-0yTF>gzS~F}7JxH~o1e_I!Wx)BYNXm0yHNaUHP2jbSW|$YH=OXp)Go5@+@?PdVia|+e67rtJA?{`< z9{2^~z>afpcHEC2XRSq_5w2+4Z!vEhMc`L8uTmQf-}870`y7y+w}M?*cw&jCE!%f&VZZDU+t#TlSG-uO*{pl008xrDZa<@8u&hHVuy%*k2Be!GT+mILLJP zP9%=skHPs60sI+gKFTbvoIItuFngFGMg&`ym`o8SEZB@b6TNWpPB;V13KXj^G#PkC zvy1*!`7(5a9yax+H@#K0Pr6$Fv+2J~oxkj7m+#`U55>7LHRu0PRk}EVht4@{@=$s# ziqoUu_vc0QpWu$>T`X?4=xj5^pwqaf+Mn}2jUCt;vjbf}#uvA=;iNu^Je*hWhGW2J z56qmg99J(~!B6vk!Pno~;Exk$A(tdWt{!_?8CoxheLZk8u#~dbo;-UQ{YE&$#dQZ# zlBh*e4cqapR5NfΞ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 0 { + imageExtension = strings.ToLower(image.Filename[lastDotIdx:]) + } + if imageExtension != ".png" && imageExtension != ".jpg" { + return errors.Wrapf(ErrInvalidImageExtension, "extension `%v` is invalid. Allowed are .png or .jpg", imageExtension) + } + image.Filename = fmt.Sprintf("%v_%v%v", newsID, now.UnixNano(), imageExtension) + + return errors.Wrapf(r.pictureClient.UploadPicture(ctx, image, ""), "can't upload the image for newsID:%v", newsID) +} + +func (r *repository) sendTaggedNewsSnapshotMessage(ctx context.Context, ss *TaggedNewsSnapshot) error { + valueBytes, err := json.MarshalContext(ctx, ss) + if err != nil { + return errors.Wrapf(err, "failed to marshal %#v", ss) + } + var key string + if ss.TaggedNews == nil { + key = ss.Before.ID + "~~~" + ss.Before.Language + } else { + key = ss.ID + "~~~" + ss.Language + } + msg := &messagebroker.Message{ + Headers: map[string]string{"producer": "husky"}, + Key: key, + Topic: r.cfg.MessageBroker.Topics[1].Name, + Value: valueBytes, + } + responder := make(chan error, 1) + defer close(responder) + r.mb.SendMessage(ctx, msg, responder) + + return errors.Wrapf(<-responder, "failed to send news snapshot message to broker") +} diff --git a/news/news_create.go b/news/news_create.go new file mode 100644 index 0000000..3beb4fb --- /dev/null +++ b/news/news_create.go @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: ice License 1.0 + +package news + +import ( + "context" + "fmt" + "mime/multipart" + "strings" + + "github.com/google/uuid" + "github.com/pkg/errors" + + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/time" +) + +func (r *repository) CreateNews(ctx context.Context, news []*TaggedNews, image *multipart.FileHeader) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + id, now := uuid.NewString(), time.Now() + if err := r.validateAndUploadImage(ctx, image, id, now); err != nil { + return errors.Wrapf(err, "failed to validateAndUploadImage for news:%#v", news) + } + snapshots := make([]*TaggedNewsSnapshot, 0, len(news)) + for _, nws := range news { + nws.ID, nws.CreatedAt, nws.UpdatedAt, nws.ImageURL = id, now, now, image.Filename + snapshots = append(snapshots, &TaggedNewsSnapshot{TaggedNews: nws}) + } + if err := r.insertNews(ctx, news); err != nil { + return errors.Wrapf(err, "failed to call insertNews for:%#v", news) + } + if err := r.addNewsTags(ctx, news...); err != nil { + return errors.Wrapf(err, "failed to add news tags for:%#v", news) + } + if err := r.addNewsTagsPerNews(ctx, news...); err != nil { + return errors.Wrapf(err, "failed to call addNewsTagsPerNews for:%#v", news) + } + for _, nws := range news { + nws.ImageURL = r.pictureClient.DownloadURL(image.Filename) + } + + return errors.Wrapf(sendMessagesConcurrently(ctx, r.sendTaggedNewsSnapshotMessage, snapshots), "failed to sendTaggedNewsSnapshotMessages:%#v", snapshots) +} + +func (r *repository) insertNews(ctx context.Context, news []*TaggedNews) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + const fields = 8 + params := make(map[string]any, len(news)*fields) + values := make([]string, 0, len(news)) + for ix, nws := range news { + params[fmt.Sprintf(`created_at%v`, ix)] = nws.CreatedAt + params[fmt.Sprintf(`notification_channels%v`, ix)] = nws.NotificationChannels.NotificationChannels + params[fmt.Sprintf(`id%v`, ix)] = nws.ID + params[fmt.Sprintf(`type%v`, ix)] = nws.Type + params[fmt.Sprintf(`language%v`, ix)] = nws.Language + params[fmt.Sprintf(`title%v`, ix)] = nws.Title + params[fmt.Sprintf(`image_url%v`, ix)] = nws.ImageURL + params[fmt.Sprintf(`url%v`, ix)] = nws.URL + values = append(values, fmt.Sprintf(`(:created_at%[1]v, :created_at%[1]v, :notification_channels%[1]v, :id%[1]v, :type%[1]v, :language%[1]v, :title%[1]v, :image_url%[1]v, :url%[1]v)`, ix)) //nolint:lll // . + } + sql := fmt.Sprintf(`INSERT INTO news (CREATED_AT, UPDATED_AT, NOTIFICATION_CHANNELS, ID, TYPE, LANGUAGE, TITLE, IMAGE_URL, URL) VALUES %v`, strings.Join(values, ",")) //nolint:lll // . + if err := storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)); err != nil { + return errors.Wrapf(detectAndParseDuplicateDatabaseError(err), "failed to insert news %#v", news) + } + + return nil +} diff --git a/news/news_delete.go b/news/news_delete.go new file mode 100644 index 0000000..5917017 --- /dev/null +++ b/news/news_delete.go @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: ice License 1.0 + +package news + +import ( + "context" + + "github.com/pkg/errors" + + "github.com/ice-blockchain/wintr/connectors/storage" +) + +func (r *repository) DeleteNews(ctx context.Context, newsID, language string) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + gNews, err := r.getNewsByPK(ctx, newsID, language) + if err != nil { + if errors.Is(err, storage.ErrNotFound) { + err = ErrNotFound + } + + return errors.Wrapf(err, "failed to get news for pk(newID:%v,language:%v)", newsID, language) + } + sql := `DELETE FROM news WHERE language = :language AND id = :id` + args := make(map[string]any, 1+1) + args["id"] = newsID + args["language"] = language + if err = storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, args)); err != nil { + return errors.Wrapf(err, "failed to delete news by (newsID:%v,language:%v)", newsID, language) + } + gNews.ImageURL = r.pictureClient.DownloadURL(gNews.ImageURL) + ss := &TaggedNewsSnapshot{Before: gNews} + + return errors.Wrapf(r.sendTaggedNewsSnapshotMessage(ctx, ss), "failed to send deleted news message: %#v", ss) +} diff --git a/news/news_get.go b/news/news_get.go new file mode 100644 index 0000000..bacefb6 --- /dev/null +++ b/news/news_get.go @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: ice License 1.0 + +package news + +import ( + "context" + "fmt" + + "github.com/pkg/errors" + + "github.com/ice-blockchain/wintr/time" +) + +func (r *repository) GetNews(ctx context.Context, newsType Type, language string, limit, offset uint64) ([]*PersonalNews, error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "get news failed because context failed") + } + params := make(map[string]any, 1+1+1+1) + params["type"] = newsType + params["offset"] = offset + params["user_id"] = requestingUserID(ctx) + params["language"] = language + sql := fmt.Sprintf(`SELECT nvu.created_at IS NOT NULL as viewed, + n.* + FROM news n + LEFT JOIN news_viewed_by_users nvu + ON nvu.language = n.language + AND nvu.news_id = n.id + AND nvu.user_id = :user_id + WHERE n.language = :language AND n.type = :type + ORDER BY nvu.created_at IS NULL DESC, + n.created_at DESC + LIMIT %v OFFSET :offset`, limit) + result := make([]*PersonalNews, 0, limit) + if err := r.db.PrepareExecuteTyped(sql, params, &result); err != nil { + return nil, errors.Wrapf(err, "failed to get news for params:%#v", params) + } + for _, elem := range result { + elem.NotificationChannels = nil + elem.UpdatedAt = nil + elem.ImageURL = r.pictureClient.DownloadURL(elem.ImageURL) + } + + return result, nil +} + +func (r *repository) GetUnreadNewsCount(ctx context.Context, language string, createdAfter *time.Time) (*UnreadNewsCount, error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "context failed") + } + params := make(map[string]any, 1+1+1) + params["user_id"] = requestingUserID(ctx) + params["language"] = language + params["createdAfter"] = createdAfter + sql := fmt.Sprintf(`SELECT COUNT(n.id) as count + FROM news n + LEFT JOIN news_viewed_by_users nvu + ON nvu.language = n.language + AND nvu.news_id = n.id + AND nvu.user_id = :user_id + WHERE n.language = :language + AND (n.type = '%[1]v' OR n.type = '%[2]v') + AND n.created_at >= :createdAfter + AND nvu.created_at IS NULL`, RegularNewsType, FeaturedNewsType) + result := make([]*UnreadNewsCount, 0, 1) + if err := r.db.PrepareExecuteTyped(sql, params, &result); err != nil { + return nil, errors.Wrapf(err, "failed to get unread news count for params:%#v", params) + } + if len(result) == 0 { + return new(UnreadNewsCount), nil + } + + return &UnreadNewsCount{Count: result[0].Count}, nil +} + +func (r *repository) getNewsByPK(ctx context.Context, newsID, language string) (*TaggedNews, error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "context failed") + } + params := make(map[string]any, 1+1) + params["id"] = newsID + params["language"] = language + sql := `SELECT GROUP_CONCAT(t.news_tag) AS tags, + n.* + FROM news n + LEFT JOIN news_tags_per_news t + ON t.language = n.language + AND t.news_id = n.id + WHERE n.language = :language + AND n.id = :id + ORDER BY t.created_at` + rows := make([]*TaggedNews, 0, 1) + if err := r.db.PrepareExecuteTyped(sql, params, &rows); err != nil { + return nil, errors.Wrapf(err, "failed to select news article by (newsID:%v,language:%v)", newsID, language) + } + if len(rows) == 0 || rows[0].ID == "" { //nolint:revive // False negative. + return nil, errors.Wrapf(ErrNotFound, "no news article found with (newsID:%v,language:%v)", newsID, language) + } + + return rows[0], nil +} diff --git a/news/news_modify.go b/news/news_modify.go new file mode 100644 index 0000000..a07df0c --- /dev/null +++ b/news/news_modify.go @@ -0,0 +1,196 @@ +// SPDX-License-Identifier: ice License 1.0 + +package news + +import ( + "context" + "mime/multipart" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/go-tarantool-client" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/terror" + "github.com/ice-blockchain/wintr/time" +) + +//nolint:funlen,gocognit // Better to be grouped together. +func (r *repository) ModifyNews(ctx context.Context, news *TaggedNews, image *multipart.FileHeader) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + oldNews, err := r.getNewsByPK(ctx, news.ID, news.Language) + if err != nil { + return errors.Wrapf(err, "get news by pk: (%v,%v) failed", news.ID, news.Language) + } + if lu := lastUpdatedAt(ctx); lu != nil && oldNews.UpdatedAt.UnixNano() != lu.UnixNano() { + return ErrRaceCondition + } + news.UpdatedAt = time.Now() + if err = r.validateAndUploadImage(ctx, image, news.ID, news.UpdatedAt); err != nil { + return errors.Wrapf(err, "failed to validateAndUploadImage for news:%#v", news) + } + if image != nil { + news.ImageURL = image.Filename + } + if err = r.updateNews(ctx, news); err != nil { + return errors.Wrapf(err, "failed to updateNews for news:%#v", news) + } + *news = *oldNews.override(news) + if err = r.addNewsTags(ctx, news); err != nil { + return errors.Wrapf(err, "failed to add news tags for:%#v", news) + } + if news.Tags != nil && len(*news.Tags) != 0 { + if err = r.removeAllNewsTagsPerNews(ctx, news); err != nil { + return errors.Wrapf(err, "failed to call removeAllNewsTagsPerNews for:%#v", news) + } + } + if err = r.addNewsTagsPerNews(ctx, news); err != nil { + return errors.Wrapf(err, "failed to call addNewsTagsPerNews for:%#v", news) + } + news.ImageURL = r.pictureClient.DownloadURL(news.ImageURL) + if oldNews != nil { + oldNews.ImageURL = r.pictureClient.DownloadURL(oldNews.ImageURL) + } + message := &TaggedNewsSnapshot{TaggedNews: news, Before: oldNews} + + return errors.Wrapf(r.sendTaggedNewsSnapshotMessage(ctx, message), "failed to sendTaggedNewsSnapshotMessage:%#v", message) +} + +func (r *repository) updateNews(ctx context.Context, news *TaggedNews) error { //nolint:funlen // Better to be grouped together. + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + sql := "UPDATE NEWS set UPDATED_AT = :updatedAt" + params := make(map[string]any) + params["id"] = news.ID + params["language"] = news.Language + params["updatedAt"] = news.UpdatedAt + if news.Type != "" { + params["type"] = news.Type + sql += ", TYPE = :type" + } + if news.Title != "" { + params["title"] = news.Title + sql += ", TITLE = :title" + } + if news.ImageURL != "" { + params["image_url"] = news.ImageURL + sql += ", IMAGE_URL = :image_url" + } + if news.URL != "" { + params["url"] = news.URL + sql += ", URL = :url" + } + sql += " WHERE ID = :id AND LANGUAGE = :language" + if lu := lastUpdatedAt(ctx); lu != nil { + params["lastUpdatedAt"] = lu + sql += " AND UPDATED_AT = :lastUpdatedAt" + } + if err := storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)); err != nil { + if err = detectAndParseDuplicateDatabaseError(err); errors.Is(err, storage.ErrNotFound) { + err = ErrRaceCondition + } + + return errors.Wrapf(err, "failed to update news:%#v", news) + } + + return nil +} + +func (n *TaggedNews) override(news *TaggedNews) *TaggedNews { + nws := new(TaggedNews) + *nws = *n + + nws.UpdatedAt = news.UpdatedAt + nws.Type = mergeStringField(n.Type, news.Type) + nws.Title = mergeStringField(n.Title, news.Title) + nws.ImageURL = mergeStringField(n.ImageURL, news.ImageURL) + nws.URL = mergeStringField(n.URL, news.URL) + if news.Tags != nil && len(*news.Tags) != 0 { + nws.Tags = news.Tags + } + if news.Views > 0 { + nws.Views = news.Views + } + + return nws +} + +func (r *repository) IncrementViews(ctx context.Context, newsID, language string) error { //nolint:funlen // A lot of negative flow handling. + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), " context failed") + } + tuple := &ViewedNews{ + CreatedAt: time.Now(), + NewsID: newsID, + Language: language, + UserID: requestingUserID(ctx), + } + if err := storage.CheckNoSQLDMLErr(r.db.InsertTyped("NEWS_VIEWED_BY_USERS", tuple, &[]*ViewedNews{})); err != nil { + return errors.Wrapf(err, "failed to insert NEWS_VIEWED_BY_USERS %#v", tuple) + } + ops := append(make([]tarantool.Op, 0, 1), tarantool.Op{Op: "+", Field: 9, Arg: uint64(1)}) //nolint:gomnd // That's the `views` column index. + result := make([]*News, 0, 1) + if err := storage.CheckNoSQLDMLErr(r.db.UpdateTyped("NEWS", "pk_unnamed_NEWS_2", []any{language, newsID}, ops, &result)); err != nil || len(result) == 0 || result[0].ID == "" { //nolint:lll,revive // . + if err == nil { + err = ErrNotFound + } + + return errors.Wrapf(err, "failed to increment news views count for newsId:%v,language:%v", newsID, language) + } + if err := r.sendNewsViewedMessage(ctx, tuple); err != nil { + bErr := errors.Wrapf(err, "failed to sendNewsViewedMessage for %#v", tuple) + ops = append(make([]tarantool.Op, 0, 1), tarantool.Op{Op: "-", Field: 9, Arg: uint64(1)}) //nolint:gomnd // That's the `views` column index. + if err = storage.CheckNoSQLDMLErr(r.db.UpdateTyped("NEWS", "pk_unnamed_NEWS_2", []any{language, newsID}, ops, &[]*News{})); err != nil { + return multierror.Append(bErr, errors.Wrapf(err, "[rollback]failed to decrement news views count for newsId:%v,language:%v", newsID, language)).ErrorOrNil() //nolint:lll,wrapcheck // . + } + if err = storage.CheckNoSQLDMLErr(r.db.DeleteTyped("NEWS_VIEWED_BY_USERS", "pk_unnamed_NEWS_VIEWED_BY_USERS_1", []any{language, tuple.NewsID, tuple.UserID}, &[]*ViewedNews{})); err != nil { //nolint:lll // . + return multierror.Append(bErr, errors.Wrapf(err, "[rollback]failed to delete NEWS_VIEWED_BY_USERS%#v", tuple)).ErrorOrNil() //nolint:wrapcheck // . + } + + return bErr + } + + return nil +} + +func (r *repository) sendNewsViewedMessage(ctx context.Context, vn *ViewedNews) error { + valueBytes, err := json.MarshalContext(ctx, vn) + if err != nil { + return errors.Wrapf(err, "failed to marshal %#v", vn) + } + msg := &messagebroker.Message{ + Headers: map[string]string{"producer": "husky"}, + Key: vn.NewsID + "~~~" + vn.Language + "~~~" + vn.UserID, + Topic: r.cfg.MessageBroker.Topics[2].Name, + Value: valueBytes, + } + responder := make(chan error, 1) + defer close(responder) + r.mb.SendMessage(ctx, msg, responder) + + return errors.Wrapf(<-responder, "failed to send news viewed message to broker") +} + +func detectAndParseDuplicateDatabaseError(err error) error { + if tErr := terror.As(err); tErr != nil && errors.Is(err, storage.ErrDuplicate) { + field := "" + switch tErr.Data[storage.IndexName] { + case "unique_unnamed_NEWS_1": + field = "url" + case "pk_unnamed_NEWS_2": + field = "language" + default: + log.Panic("unexpected indexName `%v` for news space", tErr.Data[storage.IndexName]) + } + + return terror.New(storage.ErrDuplicate, map[string]any{"field": field}) + } + + return err +} diff --git a/news/seeding/seeding.go b/news/seeding/seeding.go new file mode 100644 index 0000000..99a4496 --- /dev/null +++ b/news/seeding/seeding.go @@ -0,0 +1,349 @@ +// SPDX-License-Identifier: ice License 1.0 + +//go:build !test + +package seeding + +import ( + "fmt" + "math/rand" + "os" + "strings" + stdlibtime "time" + + "github.com/google/uuid" + "github.com/pkg/errors" + + "github.com/ice-blockchain/go-tarantool-client" + "github.com/ice-blockchain/husky/news" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/time" +) + +// . +var ( + //nolint:gochecknoglobals // It's only read from during runtime. + languages = map[string]struct{}{ + "aa": {}, + "ab": {}, + "ae": {}, + "af": {}, + "ak": {}, + "am": {}, + "an": {}, + "ar": {}, + "as": {}, + "av": {}, + "ay": {}, + "az": {}, + "ba": {}, + "be": {}, + "bg": {}, + "bh": {}, + "bi": {}, + "bm": {}, + "bn": {}, + "bo": {}, + "br": {}, + "bs": {}, + "ca": {}, + "ce": {}, + "ch": {}, + "co": {}, + "cr": {}, + "cs": {}, + "cu": {}, + "cv": {}, + "cy": {}, + "da": {}, + "de": {}, + "dv": {}, + "dz": {}, + "ee": {}, + "el": {}, + "en": {}, + "eo": {}, + "es": {}, + "et": {}, + "eu": {}, + "fa": {}, + "ff": {}, + "fi": {}, + "fil": {}, + "fj": {}, + "fo": {}, + "fr": {}, + "fy": {}, + "ga": {}, + "gd": {}, + "gl": {}, + "gn": {}, + "gu": {}, + "gv": {}, + "ha": {}, + "he": {}, + "hi": {}, + "ho": {}, + "hr": {}, + "ht": {}, + "hu": {}, + "hy": {}, + "hz": {}, + "ia": {}, + "id": {}, + "ie": {}, + "ig": {}, + "ii": {}, + "ik": {}, + "io": {}, + "is": {}, + "it": {}, + "iu": {}, + "ja": {}, + "jv": {}, + "ka": {}, + "kg": {}, + "ki": {}, + "kj": {}, + "kk": {}, + "kl": {}, + "km": {}, + "kn": {}, + "ko": {}, + "kr": {}, + "ks": {}, + "ku": {}, + "kv": {}, + "kw": {}, + "ky": {}, + "la": {}, + "lb": {}, + "lg": {}, + "li": {}, + "ln": {}, + "lo": {}, + "lt": {}, + "lu": {}, + "lv": {}, + "mg": {}, + "mh": {}, + "mi": {}, + "mk": {}, + "ml": {}, + "mn": {}, + "mr": {}, + "ms": {}, + "mt": {}, + "my": {}, + "na": {}, + "nb": {}, + "nd": {}, + "ne": {}, + "ng": {}, + "nl": {}, + "nn": {}, + "no": {}, + "nr": {}, + "nv": {}, + "ny": {}, + "oc": {}, + "oj": {}, + "om": {}, + "or": {}, + "os": {}, + "pa": {}, + "pi": {}, + "pl": {}, + "ps": {}, + "pt": {}, + "qu": {}, + "rm": {}, + "rn": {}, + "ro": {}, + "ru": {}, + "rw": {}, + "sa": {}, + "sc": {}, + "sd": {}, + "se": {}, + "sg": {}, + "si": {}, + "sk": {}, + "sl": {}, + "sm": {}, + "sn": {}, + "so": {}, + "sq": {}, + "sr": {}, + "ss": {}, + "st": {}, + "su": {}, + "sv": {}, + "sw": {}, + "ta": {}, + "te": {}, + "tg": {}, + "th": {}, + "ti": {}, + "tk": {}, + "tl": {}, + "tn": {}, + "to": {}, + "tr": {}, + "ts": {}, + "tt": {}, + "tw": {}, + "ty": {}, + "ug": {}, + "uk": {}, + "ur": {}, + "uz": {}, + "ve": {}, + "vi": {}, + "vo": {}, + "wa": {}, + "wo": {}, + "xh": {}, + "yi": {}, + "yo": {}, + "za": {}, + "zh": {}, + "zh-hans": {}, + "zh-hant": {}, + "zu": {}, + } +) + +func StartSeeding() { + before := stdlibtime.Now() + db := dbConnector() + defer func() { + log.Panic(db.Close()) //nolint:revive // It doesnt really matter. + log.Info(fmt.Sprintf("seeding finalized in %v", stdlibtime.Since(before).String())) + }() + + generateNews(db) +} + +func dbConnector() tarantool.Connector { + parts := strings.Split(os.Getenv("MASTER_DB_INSTANCE_ADDRESS"), "@") + userAndPass := strings.Split(parts[0], ":") + opts := tarantool.Opts{ + User: userAndPass[0], + Pass: userAndPass[1], + } + db, err := tarantool.Connect(parts[1], opts) + log.Panic(err) + + return db +} + +func generateNews(db tarantool.Connector) { //nolint:funlen // . + now := time.Now() + for language := range languages { + insertTag(db, now, language, fmt.Sprintf("testing%v", now)) + } + const items = 100 + for ix := 0; ix < items; ix++ { + nws := make([]*news.TaggedNews, 0, (items+1+1)*len(languages)) + if ix%(items/(1+1)) == 0 { + id := uuid.NewString() + for language := range languages { + nws = append(nws, &news.TaggedNews{ + Tags: &news.Tags{fmt.Sprintf("testing%v", now)}, + News: &news.News{ + CreatedAt: now, + UpdatedAt: now, + ID: id, + Type: news.FeaturedNewsType, + Language: language, + Title: fmt.Sprintf("[%[1]v]%[2]v%[2]v%[2]v%[2]v%[2]v%[2]v%[2]v%[2]v", language, id), + ImageURL: fmt.Sprintf("%v.jpeg", ix+1), + URL: fmt.Sprintf("https://www.google.com/search?q=ice.io&hl=%v&oq=ice.io&rnd=%v", language, id), + Views: rand.Uint64(), //nolint:gosec // . + }, + }) + } + } + id := uuid.NewString() + for language := range languages { + nws = append(nws, &news.TaggedNews{ + Tags: &news.Tags{fmt.Sprintf("testing%v", now)}, + News: &news.News{ + CreatedAt: now, + UpdatedAt: now, + ID: id, + Type: news.RegularNewsType, + Language: language, + Title: fmt.Sprintf("[%[1]v]%[2]v%[2]v%[2]v%[2]v%[2]v%[2]v%[2]v%[2]v", language, id), + ImageURL: fmt.Sprintf("%v.jpeg", ix+1), + URL: fmt.Sprintf("https://www.google.com/search?q=ice.io&hl=%v&oq=ice.io&rnd=%v", language, id), + Views: rand.Uint64(), //nolint:gosec // . + }, + }) + } + insertNews(db, nws...) + addNewsTagsPerNews(db, nws...) + } +} + +func insertNews(db tarantool.Connector, taggedNews ...*news.TaggedNews) { + const fields = 8 + params := make(map[string]any, len(taggedNews)*fields) + values := make([]string, 0, len(taggedNews)) + for ix, nws := range taggedNews { + params[fmt.Sprintf(`created_at%v`, ix)] = nws.CreatedAt + params[fmt.Sprintf(`notification_channels%v`, ix)] = nws.NotificationChannels.NotificationChannels + params[fmt.Sprintf(`id%v`, ix)] = nws.ID + params[fmt.Sprintf(`type%v`, ix)] = nws.Type + params[fmt.Sprintf(`language%v`, ix)] = nws.Language + params[fmt.Sprintf(`title%v`, ix)] = nws.Title + params[fmt.Sprintf(`image_url%v`, ix)] = nws.ImageURL + params[fmt.Sprintf(`url%v`, ix)] = nws.URL + params[fmt.Sprintf(`views%v`, ix)] = nws.Views + values = append(values, fmt.Sprintf(`(:created_at%[1]v, :created_at%[1]v, :notification_channels%[1]v, :id%[1]v, :type%[1]v, :language%[1]v, :title%[1]v, :image_url%[1]v, :url%[1]v, :views%[1]v)`, ix)) //nolint:lll // . + } + log.Panic(storage.CheckSQLDMLErr(db.PrepareExecute(fmt.Sprintf(`INSERT INTO news (CREATED_AT, UPDATED_AT, NOTIFICATION_CHANNELS, ID, TYPE, LANGUAGE, TITLE, IMAGE_URL, URL, VIEWS) VALUES %v`, strings.Join(values, ",")), params))) //nolint:lll // . +} + +func insertTag(db tarantool.Connector, createdAt *time.Time, language string, tag news.Tag) { + type newsTag struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + CreatedAt *time.Time `json:"createdAt,omitempty" example:"2022-01-03T16:20:52.156534Z"` + Language string `json:"language" example:"en"` + Value string `json:"value" example:"cats"` + } + tuple := &newsTag{ + CreatedAt: createdAt, + Language: language, + Value: tag, + } + if err := storage.CheckNoSQLDMLErr(db.InsertTyped("NEWS_TAGS", tuple, &[]*newsTag{})); err != nil && !errors.Is(err, storage.ErrDuplicate) { + log.Panic(errors.Wrapf(err, "failed to insert tag:%#v", tuple)) + } +} + +func addNewsTagsPerNews(db tarantool.Connector, taggedNews ...*news.TaggedNews) { + const fields, estimatedTags = 4, 10 + params := make(map[string]any, len(taggedNews)*estimatedTags*fields) + values := make([]string, 0, len(taggedNews)*estimatedTags) + for ix, nws := range taggedNews { + if nws.Tags == nil { + continue + } + for j, tag := range *nws.Tags { + params[fmt.Sprintf(`created_at%v_%v`, ix, j)] = nws.CreatedAt + params[fmt.Sprintf(`news_id%v_%v`, ix, j)] = nws.ID + params[fmt.Sprintf(`language%v_%v`, ix, j)] = nws.Language + params[fmt.Sprintf(`news_tag%v_%v`, ix, j)] = tag + values = append(values, fmt.Sprintf(`(:created_at%[1]v_%[2]v, :news_id%[1]v_%[2]v, :language%[1]v_%[2]v, :news_tag%[1]v_%[2]v)`, ix, j)) + } + } + if len(values) == 0 { + return + } + sql := fmt.Sprintf(`INSERT INTO news_tags_per_news (CREATED_AT, NEWS_ID, LANGUAGE, NEWS_TAG) VALUES %v`, strings.Join(values, ",")) + + log.Panic(errors.Wrapf(storage.CheckSQLDMLErr(db.PrepareExecute(sql, params)), "failed to insert news_tags_per_news for news:%#v", taggedNews)) +} diff --git a/news/tags.go b/news/tags.go new file mode 100644 index 0000000..2afa63b --- /dev/null +++ b/news/tags.go @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: ice License 1.0 + +package news + +import ( + "context" + "fmt" + "strings" + "sync" + + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/time" +) + +func (r *repository) addNewsTags(ctx context.Context, news ...*TaggedNews) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + const estimatedTags = 10 + errChan := make(chan error, len(news)*estimatedTags) + wg := new(sync.WaitGroup) + for _, nws := range news { + if nws.Tags == nil { + continue + } + for _, tag := range *nws.Tags { + wg.Add(1) + go func(tg Tag, nw *TaggedNews) { + defer wg.Done() + errChan <- errors.Wrapf(r.insertTag(ctx, nw, tg), "failed to insertTag[%v],news:%#v", tg, nw) + }(tag, nws) + } + } + wg.Wait() + close(errChan) + errs := make([]error, 0, cap(errChan)) + for err := range errChan { + errs = append(errs, err) + } + + return errors.Wrapf(multierror.Append(nil, errs...).ErrorOrNil(), "failed to insert atleast one tag from news:%#v", news) +} + +func (r *repository) insertTag(ctx context.Context, nws *TaggedNews, tag Tag) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + type newsTag struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + CreatedAt *time.Time `json:"createdAt,omitempty" example:"2022-01-03T16:20:52.156534Z"` + Language string `json:"language" example:"en"` + Value string `json:"value" example:"cats"` + } + tuple := &newsTag{ + CreatedAt: nws.CreatedAt, + Language: nws.Language, + Value: tag, + } + if err := storage.CheckNoSQLDMLErr(r.db.InsertTyped("NEWS_TAGS", tuple, &[]*newsTag{})); err != nil && !errors.Is(err, storage.ErrDuplicate) { + return errors.Wrapf(err, "failed to insert tag:%#v", tuple) + } + + return nil +} + +func (r *repository) addNewsTagsPerNews(ctx context.Context, news ...*TaggedNews) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + const fields, estimatedTags = 4, 10 + params := make(map[string]any, len(news)*estimatedTags*fields) + values := make([]string, 0, len(news)*estimatedTags) + for ix, nws := range news { + if nws.Tags == nil { + continue + } + for j, tag := range *nws.Tags { + params[fmt.Sprintf(`created_at%v_%v`, ix, j)] = nws.CreatedAt + params[fmt.Sprintf(`news_id%v_%v`, ix, j)] = nws.ID + params[fmt.Sprintf(`language%v_%v`, ix, j)] = nws.Language + params[fmt.Sprintf(`news_tag%v_%v`, ix, j)] = tag + values = append(values, fmt.Sprintf(`(:created_at%[1]v_%[2]v, :news_id%[1]v_%[2]v, :language%[1]v_%[2]v, :news_tag%[1]v_%[2]v)`, ix, j)) + } + } + if len(values) == 0 { + return nil + } + sql := fmt.Sprintf(`INSERT INTO news_tags_per_news (CREATED_AT, NEWS_ID, LANGUAGE, NEWS_TAG) VALUES %v`, strings.Join(values, ",")) + + return errors.Wrapf(storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)), "failed to insert news_tags_per_news for news:%#v", news) +} + +func (r *repository) removeAllNewsTagsPerNews(ctx context.Context, news *TaggedNews) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + sql := `DELETE FROM news_tags_per_news + WHERE language = :language + AND news_id = :news_id` + params := make(map[string]any, 1+1) + params["language"] = news.Language + params["news_id"] = news.ID + _, err := storage.CheckSQLDMLResponse(r.db.PrepareExecute(sql, params)) + + return errors.Wrapf(err, "failed to delete from news_tags_per_news for params:%#v", params) +} diff --git a/notifications/.testdata/application.yaml b/notifications/.testdata/application.yaml new file mode 100644 index 0000000..eb0cbb9 --- /dev/null +++ b/notifications/.testdata/application.yaml @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: ice License 1.0 + +development: true +logger: + encoder: console + level: info +notifications: ¬ifications + deeplinkScheme: staging.ice.app + pingCooldown: 1m + wintr/multimedia/picture: + urlDownload: https://ice-staging.b-cdn.net + db: ¬ificationsDatabase + urls: + - localhost:3504 + user: admin + password: pass + messageBroker: ¬ificationsMessageBroker + consumerGroup: husky-notifications-testing + createTopics: true + urls: + - localhost:9095 + topics: ¬ificationsMessageBrokerTopics + - name: husky-notifications-health-check + partitions: 1 + replicationFactor: 1 + retention: 1000h + - name: user-pings + partitions: 10 + replicationFactor: 1 + retention: 1000h + ### The next topics are not owned by this service, but are needed to be created for the local/test environment. + - name: users-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: user-device-metadata-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: adoption-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: news-table + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: available-daily-bonuses + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: started-days-off + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: achieved-badges + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: completed-levels + partitions: 10 + replicationFactor: 1 + retention: 1000h + - name: enabled-roles + partitions: 10 + replicationFactor: 1 + retention: 1000h + consumingTopics: + - name: users-table + - name: user-device-metadata-table + - name: adoption-table + - name: news-table + - name: available-daily-bonuses + - name: user-pings + - name: started-days-off + - name: achieved-badges + - name: completed-levels + - name: enabled-roles + producingTopics: + - name: analytics-set-attributes + - name: analytics-track-action +notifications_test: + <<: *notifications + messageBroker: + <<: *notificationsMessageBroker + consumingTopics: *notificationsMessageBrokerTopics + consumerGroup: husky-notifications-testing-runner + db: + <<: *notificationsDatabase + schemaPath: notifications/DDL.lua \ No newline at end of file diff --git a/notifications/.testdata/profilePic1.jpg b/notifications/.testdata/profilePic1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75dff0b052d77f5d592a08ef7110d9c843341c78 GIT binary patch literal 415939 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

G3RT}T~OfV+^rfJ3n&EUP- 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

Cx5;xUR& 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ɍM-Z>|Ke9vyXcs076C#dv6 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 z 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 literal 0 HcmV?d00001 diff --git a/notifications/.testdata/profilePic2.png b/notifications/.testdata/profilePic2.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2748457489a247e2b517364517b061b2a25254 GIT binary patch literal 182744 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Ξ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 0 + OR + POSITION('%[2]v', u.disabled_push_notification_domains) > 0 + ) + ) + OR + ( SELECT * + FROM (SELECT FALSE + WHERE EXISTS (SELECT 1 + FROM device_metadata dm + WHERE dm.user_id = :user_id + LIMIT 1) + UNION ALL + SELECT TRUE + ) + LIMIT 1 + ) + ) AS is_push_disabled + FROM users u + WHERE u.user_id = :user_id`, domain, AllNotificationDomain) + params := make(map[string]any, 1) + params["user_id"] = userID + resp := make([]*emailNotificationParams, 0, 1) + if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { + return nil, errors.Wrapf(err, "failed to select for emailNotificationParams for `%v`, params:%#v", domain, params) + } + if len(resp) == 0 { + return nil, errors.Wrapf(ErrNotFound, "user not found") + } + if resp[0].Email == "" || resp[0].DisplayName == "" || (onlyIfPushDisabled && !resp[0].IsPushDisabled) { + return nil, nil //nolint:nilnil // . + } + resp[0].DisplayName = strings.ToUpper(resp[0].DisplayName[:1]) + resp[0].DisplayName[1:] + + return resp[0], nil +} diff --git a/notifications/fixture/contract.go b/notifications/fixture/contract.go new file mode 100644 index 0000000..e7a8265 --- /dev/null +++ b/notifications/fixture/contract.go @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: ice License 1.0 + +package fixture + +// Public API. + +const ( + TestConnectorsOrder = 0 +) + +const ( + All StartLocalTestEnvironmentType = "all" + DB StartLocalTestEnvironmentType = "db" + MB StartLocalTestEnvironmentType = "mb" +) + +type ( + StartLocalTestEnvironmentType string +) + +// Private API. + +const ( + applicationYAMLKey = "notifications" +) diff --git a/notifications/fixture/fixture.go b/notifications/fixture/fixture.go new file mode 100644 index 0000000..a6d421f --- /dev/null +++ b/notifications/fixture/fixture.go @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: ice License 1.0 + +package fixture + +import ( + "testing" + + "github.com/testcontainers/testcontainers-go" + + connectorsfixture "github.com/ice-blockchain/wintr/connectors/fixture" + messagebrokerfixture "github.com/ice-blockchain/wintr/connectors/message_broker/fixture" + storagefixture "github.com/ice-blockchain/wintr/connectors/storage/fixture" +) + +func StartLocalTestEnvironment(tp StartLocalTestEnvironmentType) { + var connectors []connectorsfixture.TestConnector + switch tp { + case DB: + connectors = append(connectors, newDBConnector()) + case MB: + connectors = append(connectors, newMBConnector()) + case All: + connectors = WTestConnectors() + default: + connectors = WTestConnectors() + } + connectorsfixture. + NewTestRunner(applicationYAMLKey, nil, connectors...). + StartConnectorsIndefinitely() +} + +//nolint:gocritic // Because that's exactly what we want. +func RunTests( + m *testing.M, + dbConnector *storagefixture.TestConnector, + mbConnector *messagebrokerfixture.TestConnector, + lifeCycleHooks ...*connectorsfixture.ConnectorLifecycleHooks, +) { + *dbConnector = newDBConnector() + *mbConnector = newMBConnector() + + var connectorLifecycleHooks *connectorsfixture.ConnectorLifecycleHooks + if len(lifeCycleHooks) == 1 { + connectorLifecycleHooks = lifeCycleHooks[0] + } + + connectorsfixture. + NewTestRunner(applicationYAMLKey, connectorLifecycleHooks, *dbConnector, *mbConnector). + RunTests(m) +} + +func WTestConnectors() []connectorsfixture.TestConnector { + return []connectorsfixture.TestConnector{newDBConnector(), newMBConnector()} +} + +func RTestConnectors() []connectorsfixture.TestConnector { + return []connectorsfixture.TestConnector{newDBConnector()} +} + +func newDBConnector() storagefixture.TestConnector { + return storagefixture.NewTestConnector(applicationYAMLKey, TestConnectorsOrder) +} + +func newMBConnector() messagebrokerfixture.TestConnector { + return messagebrokerfixture.NewTestConnector(applicationYAMLKey, TestConnectorsOrder) +} + +func RContainerMounts() []func(projectRoot string) testcontainers.ContainerMount { + return nil +} + +func WContainerMounts() []func(projectRoot string) testcontainers.ContainerMount { + return nil +} diff --git a/notifications/inapp_notifications.go b/notifications/inapp_notifications.go new file mode 100644 index 0000000..b9d03bf --- /dev/null +++ b/notifications/inapp_notifications.go @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/notifications/inapp" +) + +type ( + inAppNotification struct { + in *inapp.Parcel + sn *sentNotification + } + broadcastInAppNotification struct { + in *inapp.Parcel + sa *sentAnnouncement + } +) + +func (r *repository) sendInAppNotification(ctx context.Context, in *inAppNotification) error { //nolint:dupl // Wrong. + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if err := storage.CheckNoSQLDMLErr(r.db.InsertTyped("SENT_NOTIFICATIONS", in.sn, &[]*sentNotification{})); err != nil { + return errors.Wrapf(err, "failed to insert %#v", in.sn) + } + + if err := r.personalInAppFeed.Send(ctx, in.in, in.sn.UserID); err != nil { + return multierror.Append( //nolint:wrapcheck // Not needed. + errors.Wrapf(err, "failed to send inApp notification:%#v, desired to be sent:%#v", in.in, in.sn), + errors.Wrapf(storage.CheckNoSQLDMLErr(r.db.DeleteTyped("SENT_NOTIFICATIONS", "pk_unnamed_SENT_NOTIFICATIONS_1", &in.sn.sentNotificationPK, &[]*sentNotification{})), //nolint:lll // . + "failed to delete SENT_NOTIFICATIONS as a rollback for %#v", in.sn), + ).ErrorOrNil() + } + + return nil +} + +func (r *repository) broadcastInAppNotification(ctx context.Context, bin *broadcastInAppNotification) error { //nolint:dupl // Wrong. + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if err := storage.CheckNoSQLDMLErr(r.db.InsertTyped("SENT_ANNOUNCEMENTS", bin.sa, &[]*sentAnnouncement{})); err != nil { + return errors.Wrapf(err, "failed to insert %#v", bin.sa) + } + + if err := r.globalInAppFeed.Send(ctx, bin.in, bin.sa.NotificationChannelValue); err != nil { + return multierror.Append( //nolint:wrapcheck // Not needed. + errors.Wrapf(err, "failed to broadcast inApp notification:%#v, desired to be sent:%#v", bin.in, bin.sa), + errors.Wrapf(storage.CheckNoSQLDMLErr(r.db.DeleteTyped("SENT_ANNOUNCEMENTS", "pk_unnamed_SENT_ANNOUNCEMENTS_1", &bin.sa.sentAnnouncementPK, &[]*sentAnnouncement{})), //nolint:lll // . + "failed to delete SENT_ANNOUNCEMENTS as a rollback for %#v", bin.sa), + ).ErrorOrNil() + } + + return nil +} + +func (r *repository) GenerateInAppNotificationsUserAuthToken(ctx context.Context, userID string) (*InAppNotificationsUserAuthToken, error) { + return r.personalInAppFeed.CreateUserToken(ctx, userID) //nolint:wrapcheck // No need, we can just proxy it. +} diff --git a/notifications/notification_type_adoption_changed.go b/notifications/notification_type_adoption_changed.go new file mode 100644 index 0000000..eeaea36 --- /dev/null +++ b/notifications/notification_type_adoption_changed.go @@ -0,0 +1,138 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/wintr/coin" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +type ( + adoption struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + BaseMiningRate *coin.ICEFlake `json:"baseMiningRate,omitempty" example:"100000"` + Milestone uint64 `json:"milestone,omitempty" example:"1"` + } +) + +func (s *adoptionTableSource) Process(ctx context.Context, msg *messagebroker.Message) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + type ( + Adoption = adoption + adoptionSnapshot struct { + *Adoption + Before *Adoption `json:"before,omitempty"` + } + ) + message := new(adoptionSnapshot) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.Adoption == nil || + message.Adoption.Milestone == 0 || + message.Before == nil || + message.Before.Milestone == 0 || + message.Adoption.Milestone == message.Before.Milestone { + return nil + } + + return errors.Wrapf(multierror.Append( + errors.Wrapf(s.broadcastPushNotifications(ctx, message.Adoption), "failed to broadcastPushNotifications for %#v", message.Adoption), + errors.Wrapf(s.broadcastInAppNotifications(ctx, message.Adoption), "failed to broadcastInAppNotifications for %#v", message.Adoption), + errors.Wrapf(s.broadcastEmailNotifications(ctx, message.Adoption), "failed to broadcastEmailNotifications for %#v", message.Adoption), + ).ErrorOrNil(), "atleast one type of adoption change broadcast failed for %#v", message) +} + +func (s *adoptionTableSource) broadcastPushNotifications(ctx context.Context, adoption *adoption) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + now := time.Now() + languages := allPushNotificationTemplates[AdoptionChangedNotificationType] + bpn := make([]*broadcastPushNotification, 0, len(languages)) + data := struct{ BaseMiningRate string }{BaseMiningRate: adoption.BaseMiningRate.UnsafeICE().String()} + for language, tmpl := range languages { + bpn = append(bpn, &broadcastPushNotification{ + pn: &push.Notification[push.SubscriptionTopic]{ + Data: map[string]string{"deeplink": fmt.Sprintf("%v://home?section=adoption", s.cfg.DeeplinkScheme)}, + Target: push.SubscriptionTopic(fmt.Sprintf("system_%v", language)), + Title: tmpl.getTitle(nil), + Body: tmpl.getBody(data), + ImageURL: s.pictureClient.DownloadURL("assets/push-notifications/adoption-change.png"), + }, + sa: &sentAnnouncement{ + SentAt: now, + Language: language, + sentAnnouncementPK: sentAnnouncementPK{ + Uniqueness: fmt.Sprint(adoption.Milestone), + NotificationType: AdoptionChangedNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: fmt.Sprintf("system_%v", language), + }, + }, + }) + } + + return errors.Wrapf(runConcurrently(ctx, s.broadcastPushNotification, bpn), + "failed to broadcast push atleast to languages for %v, args:%#v", AdoptionChangedNotificationType, bpn) +} + +func (s *adoptionTableSource) broadcastInAppNotifications(ctx context.Context, adoption *adoption) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + now := time.Now() + bin := &broadcastInAppNotification{ + in: &inapp.Parcel{ + Time: now, + Data: map[string]any{ + "baseMiningRate": adoption.BaseMiningRate.UnsafeICE().String(), + "deeplink": fmt.Sprintf("%v://home?section=adoption", s.cfg.DeeplinkScheme), + "imageUrl": s.pictureClient.DownloadURL("assets/push-notifications/adoption-change.png"), + }, + Action: string(AdoptionChangedNotificationType), + Actor: inapp.ID{ + Type: "system", + Value: "system", + }, + Subject: inapp.ID{ + Type: "adoptionMilestone", + Value: fmt.Sprint(adoption.Milestone), + }, + }, + sa: &sentAnnouncement{ + SentAt: now, + sentAnnouncementPK: sentAnnouncementPK{ + Uniqueness: fmt.Sprint(adoption.Milestone), + NotificationType: AdoptionChangedNotificationType, + NotificationChannel: InAppNotificationChannel, + NotificationChannelValue: "system", + }, + }, + } + + return errors.Wrapf(s.broadcastInAppNotification(ctx, bin), "failed to broadcastInAppNotification for %v,notif:%#v", AdoptionChangedNotificationType, bin) +} + +func (s *adoptionTableSource) broadcastEmailNotifications(ctx context.Context, adoption *adoption) error { + if s == nil || ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + + return errors.Errorf("broadcasting adoption changes via email is not supported yet. adoption:%#v", adoption) +} diff --git a/notifications/notification_type_badge_unlocked.go b/notifications/notification_type_badge_unlocked.go new file mode 100644 index 0000000..f0bc98e --- /dev/null +++ b/notifications/notification_type_badge_unlocked.go @@ -0,0 +1,169 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + "strconv" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/analytics" + "github.com/ice-blockchain/wintr/analytics/tracking" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (s *achievedBadgesSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + type ( + GroupType string + AchievedBadge struct { + UserID string `json:"userId"` + Type string `json:"type"` + Name string `json:"name" ` + GroupType GroupType `json:"groupType"` + } + ) + //nolint:gocritic,revive // Not an issue. + const ( + LevelGroupType GroupType = "level" + CoinGroupType GroupType = "coin" + SocialGroupType GroupType = "social" + ) + message := new(AchievedBadge) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.UserID == "" { + return nil + } + var notifType NotificationType + switch message.GroupType { + case LevelGroupType: + notifType = LevelBadgeUnlockedNotificationType + case CoinGroupType: + notifType = CoinBadgeUnlockedNotificationType + case SocialGroupType: + notifType = SocialBadgeUnlockedNotificationType + } + now := time.Now() + deeplink := fmt.Sprintf("%v://profile?section=badges&userId=%v", s.cfg.DeeplinkScheme, message.UserID) + imageURL := s.pictureClient.DownloadURL(fmt.Sprintf("badges/%v.png", message.Type)) + badgeIndex, err := strconv.Atoi(message.Type[1:]) + log.Panic(err) //nolint:revive // Intended. + badgeIndex-- + in := &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + Data: map[string]any{ + "deeplink": deeplink, + "imageUrl": imageURL, + }, + Action: string(notifType), + Actor: inapp.ID{ + Type: "system", + Value: "system", + }, + Subject: inapp.ID{ + Type: "badgeIndex", + Value: fmt.Sprint(badgeIndex), + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: message.Type, + NotificationType: notifType, + NotificationChannel: InAppNotificationChannel, + }, + }, + } + tokens, err := s.getPushNotificationTokens(ctx, AchievementsNotificationDomain, message.UserID) + if err != nil || tokens == nil { + return multierror.Append( //nolint:wrapcheck // . + err, + errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", notifType, in), + errors.Wrap(executeConcurrently(func() error { + key := "" + switch message.GroupType { + case LevelGroupType: + key = "Current Social Badge" + case CoinGroupType: + key = "Current Coins Badge" + case SocialGroupType: + key = "Current Level Badge" + } + + return errors.Wrapf(s.sendAnalyticsSetUserAttributesCommandMessage(ctx, &analytics.SetUserAttributesCommand{ + Attributes: map[string]any{ + key: message.Name, + }, + UserID: message.UserID, + }), + "failed to sendAnalyticsSetUserAttributesCommandMessage %#v", message) + }, func() error { + return errors.Wrapf(s.sendAnalyticsTrackActionCommandMessage(ctx, &analytics.TrackActionCommand{ + Action: &tracking.Action{ + Attributes: map[string]any{ + "Badge Type": message.GroupType, + "Badge Name": message.Name, + }, + Name: "Badge Unlocked", + }, + ID: fmt.Sprintf("%v_badge_type_%v", message.UserID, message.Type), + UserID: message.UserID, + }), + "failed to sendAnalyticsTrackActionCommandMessage %#v", message) + }), "at least one analytics command failed to execute"), + ).ErrorOrNil() + } + tmpl, found := allPushNotificationTemplates[notifType][tokens.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", tokens.Language, notifType)) + + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", notifType, in) + } + pn := make([]*pushNotification, 0, len(*tokens.PushNotificationTokens)) + data := struct{ BadgeName string }{BadgeName: message.Name} + for _, token := range *tokens.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: token, + Title: tmpl.getTitle(nil), + Body: tmpl.getBody(data), + ImageURL: imageURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: tokens.Language, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: message.Type, + NotificationType: notifType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(token), + }, + }, + }) + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, s.sendPushNotification, pn), "failed to sendPushNotifications atleast to some devices for %v, args:%#v", notifType, pn) //nolint:lll // . + }, func() error { + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", notifType, in) + }), "failed to executeConcurrently") +} diff --git a/notifications/notification_type_daily_bonus.go b/notifications/notification_type_daily_bonus.go new file mode 100644 index 0000000..5ebc940 --- /dev/null +++ b/notifications/notification_type_daily_bonus.go @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/email" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (s *availableDailyBonusSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + type extraBonusSummary struct { + UserID string `json:"userId,omitempty" example:"did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2"` + ExtraBonusIndex uint64 `json:"extraBonusIndex,omitempty" example:"1"` + } + message := new(extraBonusSummary) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.UserID == "" { + return nil + } + now := time.Now() + deeplink := fmt.Sprintf("%v://claim-daily-bonus", s.cfg.DeeplinkScheme) + imageURL := s.pictureClient.DownloadURL("assets/push-notifications/daily-bonus.png") + in := &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + Data: map[string]any{ + "deeplink": deeplink, + "imageUrl": imageURL, + }, + Action: "daily_bonus_became_available", + Actor: inapp.ID{ + Type: "system", + Value: "system", + }, + Subject: inapp.ID{ + Type: "dailyBonus", + Value: fmt.Sprint(message.ExtraBonusIndex), + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: fmt.Sprint(message.ExtraBonusIndex), + NotificationType: DailyBonusNotificationType, + NotificationChannel: InAppNotificationChannel, + }, + }, + } + tokens, err := s.getPushNotificationTokens(ctx, DailyBonusNotificationDomain, message.UserID) + if err != nil || tokens == nil { + return multierror.Append( //nolint:wrapcheck // . + err, + errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", DailyBonusNotificationType, in), + errors.Wrapf(s.trySendEmailNotification(ctx, fmt.Sprint(message.ExtraBonusIndex), message.UserID), "failed to trySendEmailNotification for %v, message:%#v", DailyBonusNotificationType, message), //nolint:lll // . + ).ErrorOrNil() + } + tmpl, found := allPushNotificationTemplates[DailyBonusNotificationType][tokens.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", tokens.Language, DailyBonusNotificationType)) + + return multierror.Append( //nolint:wrapcheck // . + errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", DailyBonusNotificationType, in), + errors.Wrapf(s.trySendEmailNotification(ctx, fmt.Sprint(message.ExtraBonusIndex), message.UserID), "failed to trySendEmailNotification for %v, message:%#v", DailyBonusNotificationType, message), //nolint:lll // . + ).ErrorOrNil() + } + pn := make([]*pushNotification, 0, len(*tokens.PushNotificationTokens)) + for _, token := range *tokens.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: token, + Title: tmpl.getTitle(nil), + Body: tmpl.getBody(nil), + ImageURL: imageURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: tokens.Language, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: fmt.Sprint(message.ExtraBonusIndex), + NotificationType: DailyBonusNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(token), + }, + }, + }) + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, s.sendPushNotification, pn), "failed to sendPushNotifications atleast to some devices for %v, args:%#v", DailyBonusNotificationType, pn) //nolint:lll // . + }, func() error { + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", DailyBonusNotificationType, in) + }), "failed to executeConcurrently") +} + +func (s *availableDailyBonusSource) trySendEmailNotification(ctx context.Context, uniqueness, userID string) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + params, err := s.getEmailNotificationParams(ctx, DailyBonusNotificationDomain, userID, true) + if err != nil || params == nil || true { //nolint:revive // TODO:: temporarily disabled + return errors.Wrapf(err, "failed to getEmailNotificationParams for notif:%v, userID:%v", DailyBonusNotificationDomain, userID) + } + en := &emailNotification{ + displayName: params.DisplayName, + en: &email.Parcel{ + Body: &email.Body{ + Type: email.TextHTML, + Data: fmt.Sprintf("

[%v]TODO daily bonus available

", params.Language), + }, + Subject: fmt.Sprintf("[%v]TODO daily bonus available", params.Language), + }, + sn: &sentNotification{ + SentAt: time.Now(), + Language: params.Language, + sentNotificationPK: sentNotificationPK{ + UserID: userID, + Uniqueness: uniqueness, + NotificationType: DailyBonusNotificationType, + NotificationChannel: EmailNotificationChannel, + NotificationChannelValue: params.Email, + }, + }, + } + + return errors.Wrapf(s.sendEmailNotification(ctx, en), "failed to sendEmailNotification for notif:%#v", en) +} diff --git a/notifications/notification_type_day_off.go b/notifications/notification_type_day_off.go new file mode 100644 index 0000000..1088509 --- /dev/null +++ b/notifications/notification_type_day_off.go @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + stdlibtime "time" + + "github.com/goccy/go-json" + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/analytics" + "github.com/ice-blockchain/wintr/analytics/tracking" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/time" +) + +func (s *startedDaysOffSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + type dayOffStarted struct { + StartedAt *time.Time `json:"startedAt,omitempty"` + UserID string `json:"userId,omitempty" ` + ID string `json:"id,omitempty"` + RemainingFreeMiningSessions uint64 `json:"remainingFreeMiningSessions,omitempty"` + } + message := new(dayOffStarted) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.UserID == "" { + return nil + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(s.sendAnalyticsSetUserAttributesCommandMessage(ctx, &analytics.SetUserAttributesCommand{ + Attributes: map[string]any{ + "Last mining start": message.StartedAt.Format(stdlibtime.RFC3339), + "Remaining days off": message.RemainingFreeMiningSessions, + }, + UserID: message.UserID, + }), + "failed to sendAnalyticsSetUserAttributesCommandMessage %#v", message) + }, func() error { + return errors.Wrapf(s.sendAnalyticsTrackActionCommandMessage(ctx, &analytics.TrackActionCommand{ + Action: &tracking.Action{ + Name: "Day off", + }, + ID: fmt.Sprintf("day_off_%v", message.ID), + UserID: message.UserID, + }), + "failed to sendAnalyticsTrackActionCommandMessage %#v", message) + }, func() error { + return errors.Wrapf(s.sendAnalyticsTrackActionCommandMessage(ctx, &analytics.TrackActionCommand{ + Action: &tracking.Action{ + Name: "Tap To Mine", + Attributes: map[string]any{ + "Tap to Mine": "DayOff", + }, + }, + ID: fmt.Sprintf("tap_to_mine_%v", message.ID), + UserID: message.UserID, + }), + "failed to sendAnalyticsTrackActionCommandMessage %#v", message) + }), "at least one analytics command failed to execute") +} diff --git a/notifications/notification_type_level_changed.go b/notifications/notification_type_level_changed.go new file mode 100644 index 0000000..05c4add --- /dev/null +++ b/notifications/notification_type_level_changed.go @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/analytics" + "github.com/ice-blockchain/wintr/analytics/tracking" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (s *completedLevelsSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + type ( + CompletedLevel struct { + UserID string `json:"userId"` + Type string `json:"type"` + CompletedLevels uint64 `json:"completedLevels" ` + } + ) + message := new(CompletedLevel) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.UserID == "" { + return nil + } + now := time.Now() + deeplink := fmt.Sprintf("%v://profile?userId=%v", s.cfg.DeeplinkScheme, message.UserID) + imageURL := s.pictureClient.DownloadURL("assets/push-notifications/level-change.png") + in := &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + Data: map[string]any{ + "deeplink": deeplink, + "imageUrl": imageURL, + }, + Action: string(LevelChangedNotificationType), + Actor: inapp.ID{ + Type: "system", + Value: "system", + }, + Subject: inapp.ID{ + Type: "levelValue", + Value: fmt.Sprint(message.CompletedLevels), + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: message.Type, + NotificationType: LevelChangedNotificationType, + NotificationChannel: InAppNotificationChannel, + }, + }, + } + tokens, err := s.getPushNotificationTokens(ctx, AchievementsNotificationDomain, message.UserID) + if err != nil || tokens == nil { + return multierror.Append( //nolint:wrapcheck // . + err, + errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", LevelChangedNotificationType, in), + errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(s.sendAnalyticsSetUserAttributesCommandMessage(ctx, &analytics.SetUserAttributesCommand{ + Attributes: map[string]any{ + "Current Level": fmt.Sprint(message.CompletedLevels), + }, + UserID: message.UserID, + }), + "failed to sendAnalyticsSetUserAttributesCommandMessage %#v", message) + }, func() error { + return errors.Wrapf(s.sendAnalyticsTrackActionCommandMessage(ctx, &analytics.TrackActionCommand{ + Action: &tracking.Action{ + Attributes: map[string]any{ + "Current Level": fmt.Sprint(message.CompletedLevels), + }, + Name: "Level Changed", + }, + ID: fmt.Sprintf("%v_level_%v", message.UserID, message.Type), + UserID: message.UserID, + }), + "failed to sendAnalyticsTrackActionCommandMessage %#v", message) + }), "at least one analytics command failed to execute"), + ).ErrorOrNil() + } + tmpl, found := allPushNotificationTemplates[LevelChangedNotificationType][tokens.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", tokens.Language, LevelChangedNotificationType)) + + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", LevelChangedNotificationType, in) + } + pn := make([]*pushNotification, 0, len(*tokens.PushNotificationTokens)) + for _, token := range *tokens.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: token, + Title: tmpl.getTitle(nil), + Body: tmpl.getBody(nil), + ImageURL: imageURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: tokens.Language, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: message.Type, + NotificationType: LevelChangedNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(token), + }, + }, + }) + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, s.sendPushNotification, pn), "failed to sendPushNotifications atleast to some devices for %v, args:%#v", LevelChangedNotificationType, pn) //nolint:lll // . + }, func() error { + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", LevelChangedNotificationType, in) + }), "failed to executeConcurrently") +} diff --git a/notifications/notification_type_new_contact.go b/notifications/notification_type_new_contact.go new file mode 100644 index 0000000..0de3e33 --- /dev/null +++ b/notifications/notification_type_new_contact.go @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/pkg/errors" + + "github.com/ice-blockchain/eskimo/users" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (r *repository) sendNewContactNotification(ctx context.Context, us *users.UserSnapshot) error { //nolint:funlen,gocognit,gocyclo,revive,cyclop // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if us.User == nil || + us.User.PhoneNumberHash == "" || + us.User.Username == "" || + us.User.Username == us.User.ID || + us.User.ReferredBy == "" || + us.User.ReferredBy == us.User.ID || + us.User.PhoneNumberHash == us.User.ID || + (us.Before != nil && us.Before.PhoneNumberHash != "" && us.Before.PhoneNumberHash != us.User.ID && + us.Before.ReferredBy != us.User.ID && us.Before.ReferredBy != "") { + return nil + } + tokens, err := r.getPushNotificationTokensForNewContactNotification(ctx, us.User.PhoneNumberHash) + if err != nil || len(tokens) == 0 { + return err + } + const ( + actionName = "contact_joined_ice" + ) + now := time.Now() + data := struct{ Username string }{Username: fmt.Sprintf("@%v", us.User.Username)} + pn, in := make([]*pushNotification, 0, len(tokens)), make([]*inAppNotification, 0, len(tokens)) + for _, token := range tokens { + deeplink := fmt.Sprintf("%v://profile?userId=%v", r.cfg.DeeplinkScheme, us.User.ID) + in = append(in, &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + ReferenceID: fmt.Sprintf("%v:userId:%v", actionName, us.User.ID), + Data: map[string]any{ + "username": us.User.Username, + "deeplink": deeplink, + "imageUrl": us.User.ProfilePictureURL, + }, + Action: actionName, + Actor: inapp.ID{ + Type: "userId", + Value: us.User.ID, + }, + Subject: inapp.ID{ + Type: "userId", + Value: us.User.ID, + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: token.UserID, + Uniqueness: us.User.ID, + NotificationType: NewContactNotificationType, + NotificationChannel: InAppNotificationChannel, + }, + }, + }) + if token.PushNotificationTokens == nil || len(*token.PushNotificationTokens) == 0 { + continue + } + tmpl, found := allPushNotificationTemplates[NewContactNotificationType][token.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", token.Language, NewContactNotificationType)) + + continue + } + for _, deviceToken := range *token.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: deviceToken, + Title: tmpl.getTitle(data), + Body: tmpl.getBody(nil), + ImageURL: us.User.ProfilePictureURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: token.Language, + sentNotificationPK: sentNotificationPK{ + UserID: token.UserID, + Uniqueness: us.User.ID, + NotificationType: NewContactNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(deviceToken), + }, + }, + }) + } + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, r.sendPushNotification, pn), + "failed to sendPushNotifications atleast to some devices for %v, args:%#v", NewContactNotificationType, pn) + }, func() error { + return errors.Wrapf(runConcurrently(ctx, r.sendInAppNotification, in), + "failed to sendInAppNotifications atleast to some users for %v, args:%#v", NewContactNotificationType, in) + }), "failed to executeConcurrently") +} + +func (r *repository) getPushNotificationTokensForNewContactNotification( //nolint:funlen // . + ctx context.Context, phoneNumberHash string, +) ([]*pushNotificationTokens, error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "unexpected deadline") + } + sql := fmt.Sprintf(`SELECT GROUP_CONCAT(dm.push_notification_token) AS push_notification_tokens, + u.language, + u.user_id + FROM users u + LEFT JOIN device_metadata dm + ON ( u.disabled_push_notification_domains IS NULL + OR ( + POSITION('%[1]v', u.disabled_push_notification_domains) == 0 + AND + POSITION('%[2]v', u.disabled_push_notification_domains) == 0 + ) + ) + AND dm.user_id = u.user_id + AND dm.push_notification_token IS NOT NULL + AND dm.push_notification_token != '' + WHERE u.agenda_phone_number_hashes IS NOT NULL + AND POSITION(:phone_number_hash, u.agenda_phone_number_hashes) != 0 + GROUP BY u.user_id`, MicroCommunityNotificationDomain, AllNotificationDomain) + params := make(map[string]any, 1) + params["phone_number_hash"] = phoneNumberHash + resp := make([]*pushNotificationTokens, 0) + if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { + return nil, errors.Wrapf(err, "failed to select for push notification tokens for `%v`, params:%#v", NewContactNotificationType, params) + } + + return resp, nil +} diff --git a/notifications/notification_type_new_referral.go b/notifications/notification_type_new_referral.go new file mode 100644 index 0000000..b9d40dc --- /dev/null +++ b/notifications/notification_type_new_referral.go @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/eskimo/users" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (r *repository) sendNewReferralNotification(ctx context.Context, us *users.UserSnapshot) error { //nolint:funlen,gocognit // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if us.User == nil || us.User.ReferredBy == "" || us.User.ReferredBy == us.User.ID || + (us.Before != nil && us.Before.ID != "" && us.User != nil && us.User.ID != "" && us.User.ReferredBy == us.Before.ReferredBy) { + return nil + } + const ( + actionName = "referral_joined_team" + ) + now := time.Now() + deeplink := fmt.Sprintf("%v://profile?userId=%v", r.cfg.DeeplinkScheme, us.User.ID) + in := &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + ReferenceID: fmt.Sprintf("%v:userId:%v", actionName, us.User.ID), + Data: map[string]any{ + "username": us.User.Username, + "deeplink": deeplink, + "imageUrl": us.User.ProfilePictureURL, + }, + Action: actionName, + Actor: inapp.ID{ + Type: "userId", + Value: us.User.ID, + }, + Subject: inapp.ID{ + Type: "userId", + Value: us.User.ReferredBy, + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: us.User.ReferredBy, + Uniqueness: us.User.ID, + NotificationType: NewReferralNotificationType, + NotificationChannel: InAppNotificationChannel, + }, + }, + } + tokens, err := r.getPushNotificationTokens(ctx, MicroCommunityNotificationDomain, us.User.ReferredBy) + if err != nil || tokens == nil { + return multierror.Append( //nolint:wrapcheck // . + err, + errors.Wrapf(r.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", NewReferralNotificationType, in), + ).ErrorOrNil() + } + tmpl, found := allPushNotificationTemplates[NewReferralNotificationType][tokens.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", tokens.Language, NewReferralNotificationType)) + + return errors.Wrapf(r.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", NewReferralNotificationType, in) + } + pn := make([]*pushNotification, 0, len(*tokens.PushNotificationTokens)) + data := struct{ Username string }{Username: fmt.Sprintf("@%v", us.User.Username)} + for _, token := range *tokens.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: token, + Title: tmpl.getTitle(data), + Body: tmpl.getBody(nil), + ImageURL: us.User.ProfilePictureURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: tokens.Language, + sentNotificationPK: sentNotificationPK{ + UserID: us.User.ReferredBy, + Uniqueness: us.User.ID, + NotificationType: NewReferralNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(token), + }, + }, + }) + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, r.sendPushNotification, pn), "failed to sendPushNotifications atleast to some devices for %v, args:%#v", NewReferralNotificationType, pn) //nolint:lll // . + }, func() error { + return errors.Wrapf(r.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", NewReferralNotificationType, in) + }), "failed to executeConcurrently") +} diff --git a/notifications/notification_type_news_added.go b/notifications/notification_type_news_added.go new file mode 100644 index 0000000..8608080 --- /dev/null +++ b/notifications/notification_type_news_added.go @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + "net/url" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +type ( + news struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + *NotificationChannels + ID string `json:"id,omitempty" example:"did:ethr:0x4B73C58370AEfcEf86A6021afCDe5673511376B2"` + Language string `json:"language,omitempty" example:"en"` + ImageURL string `json:"imageUrl,omitempty" example:"https://somewebsite.com/blockchain.jpg"` + URL string `json:"url,omitempty" example:"https://somewebsite.com/blockchain"` + } +) + +func (s *newsTableSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen,gocognit,gocyclo,revive,cyclop // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + message := new(news) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.ID == "" || + message.NotificationChannels == nil || + message.NotificationChannels.NotificationChannels == nil || + len(*message.NotificationChannels.NotificationChannels) == 0 { + return nil + } + notificationChannels := make(map[NotificationChannel]bool, 1+1+1) + for _, channel := range *message.NotificationChannels.NotificationChannels { + notificationChannels[channel] = true + } + errs := make([]error, 0, 1+1+1) + if notificationChannels[PushNotificationChannel] || notificationChannels[PushOrFallbackToEmailNotificationChannel] { + errs = append(errs, errors.Wrapf(s.broadcastPushNotifications(ctx, message), "failed to broadcastPushNotifications for news:%#v", message)) + } + if notificationChannels[InAppNotificationChannel] || notificationChannels[PushNotificationChannel] || notificationChannels[PushOrFallbackToEmailNotificationChannel] { //nolint:lll // . + errs = append(errs, errors.Wrapf(s.broadcastInAppNotifications(ctx, message), "failed to broadcastInAppNotifications for news:%#v", message)) + } + if notificationChannels[EmailNotificationChannel] || notificationChannels[PushOrFallbackToEmailNotificationChannel] { + errs = append(errs, errors.Wrapf(s.broadcastEmailNotifications(ctx, notificationChannels[PushOrFallbackToEmailNotificationChannel], message), "failed to broadcastEmailNotifications for news:%#v", message)) //nolint:lll // . + } + + return errors.Wrapf(multierror.Append(nil, errs...).ErrorOrNil(), "atleast one type of news broadcast failed for %#v", message) +} + +func (s *newsTableSource) broadcastPushNotifications(ctx context.Context, newsArticle *news) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + tmpl, found := allPushNotificationTemplates[NewsAddedNotificationType][newsArticle.Language] + if !found { + return errors.Errorf("language `%v` was not found in the `%v` push config", newsArticle.Language, NewsAddedNotificationType) + } + now := time.Now() + target := fmt.Sprintf("news_%v", newsArticle.Language) + bpn := &broadcastPushNotification{ + pn: &push.Notification[push.SubscriptionTopic]{ + Data: map[string]string{"deeplink": fmt.Sprintf("%v://browser?url=%v", s.cfg.DeeplinkScheme, url.QueryEscape(newsArticle.URL))}, + Target: push.SubscriptionTopic(target), + Title: tmpl.getTitle(nil), + Body: tmpl.getBody(nil), + ImageURL: newsArticle.ImageURL, + }, + sa: &sentAnnouncement{ + SentAt: now, + Language: newsArticle.Language, + sentAnnouncementPK: sentAnnouncementPK{ + Uniqueness: newsArticle.ID, + NotificationType: NewsAddedNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: target, + }, + }, + } + + return errors.Wrapf(s.broadcastPushNotification(ctx, bpn), "failed to broadcastPushNotification(%v) %#v", NewsAddedNotificationType, bpn) +} + +func (s *newsTableSource) broadcastInAppNotifications(ctx context.Context, newsArticle *news) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + now := time.Now() + bin := &broadcastInAppNotification{ + in: &inapp.Parcel{ + Time: now, + Data: map[string]any{ + "deeplink": fmt.Sprintf("%v://browser?url=%v", s.cfg.DeeplinkScheme, url.QueryEscape(newsArticle.URL)), + "imageUrl": newsArticle.ImageURL, + }, + Action: string(NewsAddedNotificationType), + Actor: inapp.ID{ + Type: "system", + Value: "system", + }, + Subject: inapp.ID{ + Type: "(language,newsId)", + Value: fmt.Sprintf("(%v,%v)", newsArticle.Language, newsArticle.ID), + }, + }, + sa: &sentAnnouncement{ + SentAt: now, + Language: newsArticle.Language, + sentAnnouncementPK: sentAnnouncementPK{ + Uniqueness: newsArticle.ID, + NotificationType: NewsAddedNotificationType, + NotificationChannel: InAppNotificationChannel, + NotificationChannelValue: "system", + }, + }, + } + + return errors.Wrapf(s.broadcastInAppNotification(ctx, bin), "failed to broadcastInAppNotification(%v) %#v", NewsAddedNotificationType, bin) +} + +func (s *newsTableSource) broadcastEmailNotifications(ctx context.Context, fallbackOnly bool, newsArticle *news) error { + if s == nil || ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + + return errors.Errorf("broadcasting news via email is not supported yet. isFallback:%v, newsArticle:%#v", fallbackOnly, newsArticle) +} diff --git a/notifications/notification_type_ping.go b/notifications/notification_type_ping.go new file mode 100644 index 0000000..dc26683 --- /dev/null +++ b/notifications/notification_type_ping.go @@ -0,0 +1,114 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (s *userPingSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + message := new(UserPing) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.UserID == "" { + return nil + } + pingedBy, err := s.getUserByID(ctx, message.PingedBy) + if err != nil { + return errors.Wrapf(err, "failed to getUserByID for pingedBy:%v", pingedBy) + } + now := time.Now() + uniqueness := fmt.Sprint(message.LastPingCooldownEndedAt.UnixNano() / s.cfg.PingCooldown.Nanoseconds()) + deeplink := fmt.Sprintf("%v://home", s.cfg.DeeplinkScheme) + imageURL := s.pictureClient.DownloadURL(fmt.Sprintf("profile/%v", pingedBy.ProfilePictureName)) + in := &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + ReferenceID: fmt.Sprintf("%v:%v", PingNotificationType, uniqueness), + Data: map[string]any{ + "username": pingedBy.Username, + "deeplink": deeplink, + "imageUrl": imageURL, + }, + Action: "pinged", + Actor: inapp.ID{ + Type: "userId", + Value: message.PingedBy, + }, + Subject: inapp.ID{ + Type: "userId", + Value: message.UserID, + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: uniqueness, + NotificationType: PingNotificationType, + NotificationChannel: InAppNotificationChannel, + }, + }, + } + tokens, err := s.getPushNotificationTokens(ctx, MicroCommunityNotificationDomain, message.UserID) + if err != nil || tokens == nil { + return multierror.Append( //nolint:wrapcheck // . + err, + errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", PingNotificationType, in), + ).ErrorOrNil() + } + tmpl, found := allPushNotificationTemplates[PingNotificationType][tokens.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", tokens.Language, PingNotificationType)) + + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", PingNotificationType, in) + } + pn := make([]*pushNotification, 0, len(*tokens.PushNotificationTokens)) + data := struct{ Username string }{Username: fmt.Sprintf("@%v", pingedBy.Username)} + for _, token := range *tokens.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: token, + Title: tmpl.getTitle(data), + Body: tmpl.getBody(nil), + ImageURL: imageURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: tokens.Language, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: uniqueness, + NotificationType: PingNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(token), + }, + }, + }) + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, s.sendPushNotification, pn), "failed to sendPushNotifications atleast to some devices for %v, args:%#v", PingNotificationType, pn) //nolint:lll // . + }, func() error { + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", PingNotificationType, in) + }), "failed to executeConcurrently") +} diff --git a/notifications/notification_type_role_changed.go b/notifications/notification_type_role_changed.go new file mode 100644 index 0000000..1413912 --- /dev/null +++ b/notifications/notification_type_role_changed.go @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/husky/analytics" + "github.com/ice-blockchain/wintr/analytics/tracking" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +func (s *enabledRolesSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:funlen // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + type ( + EnabledRole struct { + UserID string `json:"userId"` + Type string `json:"type"` + } + ) + message := new(EnabledRole) + if err := json.UnmarshalContext(ctx, msg.Value, message); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), message) + } + if message.UserID == "" { + return nil + } + now := time.Now() + deeplink := fmt.Sprintf("%v://profile?section=roles&userId=%v", s.cfg.DeeplinkScheme, message.UserID) + imageURL := s.pictureClient.DownloadURL("assets/push-notifications/role-change.png") + in := &inAppNotification{ + in: &inapp.Parcel{ + Time: now, + Data: map[string]any{ + "deeplink": deeplink, + "imageUrl": imageURL, + }, + Action: string(RoleChangedNotificationType), + Actor: inapp.ID{ + Type: "system", + Value: "system", + }, + Subject: inapp.ID{ + Type: "roleValue", + Value: message.Type, + }, + }, + sn: &sentNotification{ + SentAt: now, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: message.Type, + NotificationType: RoleChangedNotificationType, + NotificationChannel: InAppNotificationChannel, + }, + }, + } + tokens, err := s.getPushNotificationTokens(ctx, AchievementsNotificationDomain, message.UserID) + if err != nil || tokens == nil { + return multierror.Append( //nolint:wrapcheck // . + err, + errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", RoleChangedNotificationType, in), + errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(s.sendAnalyticsSetUserAttributesCommandMessage(ctx, &analytics.SetUserAttributesCommand{ + Attributes: map[string]any{ + "Current Role": message.Type, + }, + UserID: message.UserID, + }), + "failed to sendAnalyticsSetUserAttributesCommandMessage %#v", message) + }, func() error { + return errors.Wrapf(s.sendAnalyticsTrackActionCommandMessage(ctx, &analytics.TrackActionCommand{ + Action: &tracking.Action{ + Attributes: map[string]any{ + "Current Role": message.Type, + }, + Name: "Role Changed", + }, + ID: fmt.Sprintf("%v_role_%v", message.UserID, message.Type), + UserID: message.UserID, + }), + "failed to sendAnalyticsTrackActionCommandMessage %#v", message) + }), "at least one analytics command failed to execute"), + ).ErrorOrNil() + } + tmpl, found := allPushNotificationTemplates[RoleChangedNotificationType][tokens.Language] + if !found { + log.Warn(fmt.Sprintf("language `%v` was not found in the `%v` push config", tokens.Language, RoleChangedNotificationType)) + + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", RoleChangedNotificationType, in) + } + pn := make([]*pushNotification, 0, len(*tokens.PushNotificationTokens)) + for _, token := range *tokens.PushNotificationTokens { + pn = append(pn, &pushNotification{ + pn: &push.Notification[push.DeviceToken]{ + Data: map[string]string{"deeplink": deeplink}, + Target: token, + Title: tmpl.getTitle(nil), + Body: tmpl.getBody(nil), + ImageURL: imageURL, + }, + sn: &sentNotification{ + SentAt: now, + Language: tokens.Language, + sentNotificationPK: sentNotificationPK{ + UserID: message.UserID, + Uniqueness: message.Type, + NotificationType: RoleChangedNotificationType, + NotificationChannel: PushNotificationChannel, + NotificationChannelValue: string(token), + }, + }, + }) + } + + return errors.Wrap(executeConcurrently(func() error { + return errors.Wrapf(runConcurrently(ctx, s.sendPushNotification, pn), "failed to sendPushNotifications atleast to some devices for %v, args:%#v", RoleChangedNotificationType, pn) //nolint:lll // . + }, func() error { + return errors.Wrapf(s.sendInAppNotification(ctx, in), "failed to sendInAppNotification for %v, notif:%#v", RoleChangedNotificationType, in) + }), "failed to executeConcurrently") +} diff --git a/notifications/notifications.go b/notifications/notifications.go new file mode 100644 index 0000000..7847923 --- /dev/null +++ b/notifications/notifications.go @@ -0,0 +1,245 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "math/rand" + "sync" + stdlibtime "time" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/go-tarantool-client" + appCfg "github.com/ice-blockchain/wintr/config" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/email" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/multimedia/picture" + "github.com/ice-blockchain/wintr/notifications/inapp" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +//nolint:gochecknoinits // We load embedded stuff at runtime. +func init() { + loadPushNotificationTranslationTemplates() +} + +func New(ctx context.Context, cancel context.CancelFunc) Repository { + var cfg config + appCfg.MustLoadFromKey(applicationYamlKey, &cfg) + + db := storage.MustConnect(ctx, cancel, ddl, applicationYamlKey) + + return &repository{ + cfg: &cfg, + shutdown: db.Close, + db: db, + pictureClient: picture.New(applicationYamlKey), + } +} + +func StartProcessor(ctx context.Context, cancel context.CancelFunc) Processor { //nolint:funlen // A lot of startup & shutdown ceremony. + var cfg config + appCfg.MustLoadFromKey(applicationYamlKey, &cfg) + + var mbConsumer messagebroker.Client + prc := &processor{repository: &repository{ + cfg: &cfg, + db: storage.MustConnect(context.Background(), func() { //nolint:contextcheck // It's intended. Cuz we want to close everything gracefully. + if mbConsumer != nil { + log.Error(errors.Wrap(mbConsumer.Close(), "failed to close mbConsumer due to db premature cancellation")) + } + cancel() + }, ddl, applicationYamlKey), + mb: messagebroker.MustConnect(ctx, applicationYamlKey), + pushNotificationsClient: push.New(applicationYamlKey), + pictureClient: picture.New(applicationYamlKey), + emailClient: email.New(applicationYamlKey), + personalInAppFeed: inapp.New(applicationYamlKey, "notifications"), + globalInAppFeed: inapp.New(applicationYamlKey, "announcements"), + }} + //nolint:contextcheck // It's intended. Cuz we want to close everything gracefully. + mbConsumer = messagebroker.MustConnectAndStartConsuming(context.Background(), cancel, applicationYamlKey, + &userTableSource{processor: prc}, + &deviceMetadataTableSource{processor: prc}, + &adoptionTableSource{processor: prc}, + &newsTableSource{processor: prc}, + &availableDailyBonusSource{processor: prc}, + &userPingSource{processor: prc}, + &startedDaysOffSource{processor: prc}, + &achievedBadgesSource{processor: prc}, + &completedLevelsSource{processor: prc}, + &enabledRolesSource{processor: prc}, + ) + prc.shutdown = closeAll(mbConsumer, prc.mb, prc.db, prc.pushNotificationsClient.Close) + go prc.startOldSentNotificationsCleaner(ctx) + go prc.startOldSentAnnouncementsCleaner(ctx) + + return prc +} + +func (r *repository) Close() error { + return errors.Wrap(r.shutdown(), "closing repository failed") +} + +func closeAll(mbConsumer, mbProducer messagebroker.Client, db tarantool.Connector, otherClosers ...func() error) func() error { + return func() error { + err1 := errors.Wrap(mbConsumer.Close(), "closing message broker consumer connection failed") + err2 := errors.Wrap(db.Close(), "closing db connection failed") + err3 := errors.Wrap(mbProducer.Close(), "closing message broker producer connection failed") + errs := make([]error, 0, 1+1+1+len(otherClosers)) + errs = append(errs, err1, err2, err3) + for _, closeOther := range otherClosers { + if err := closeOther(); err != nil { + errs = append(errs, err) + } + } + + return errors.Wrap(multierror.Append(nil, errs...).ErrorOrNil(), "failed to close resources") + } +} + +func (p *processor) CheckHealth(ctx context.Context) error { + if _, err := p.db.Ping(); err != nil { + return errors.Wrap(err, "[health-check] failed to ping DB") + } + type ts struct { + TS *time.Time `json:"ts"` + } + now := ts{TS: time.Now()} + bytes, err := json.MarshalContext(ctx, now) + if err != nil { + return errors.Wrapf(err, "[health-check] failed to marshal %#v", now) + } + responder := make(chan error, 1) + p.mb.SendMessage(ctx, &messagebroker.Message{ + Headers: map[string]string{"producer": "husky"}, + Key: p.cfg.MessageBroker.Topics[0].Name, + Topic: p.cfg.MessageBroker.Topics[0].Name, + Value: bytes, + }, responder) + + return errors.Wrapf(<-responder, "[health-check] failed to send health check message to broker") +} + +func (p *processor) startOldSentNotificationsCleaner(ctx context.Context) { + ticker := stdlibtime.NewTicker(stdlibtime.Duration(1+rand.Intn(24)) * stdlibtime.Minute) //nolint:gosec,gomnd // Not an issue. + defer ticker.Stop() + + for { + select { + case <-ticker.C: + const deadline = 30 * stdlibtime.Second + reqCtx, cancel := context.WithTimeout(ctx, deadline) + log.Error(errors.Wrap(p.deleteOldSentNotifications(reqCtx), "failed to deleteOldSentNotifications")) + cancel() + case <-ctx.Done(): + return + } + } +} + +func (p *processor) startOldSentAnnouncementsCleaner(ctx context.Context) { + ticker := stdlibtime.NewTicker(stdlibtime.Duration(1+rand.Intn(24)) * stdlibtime.Minute) //nolint:gosec,gomnd // Not an issue. + defer ticker.Stop() + + for { + select { + case <-ticker.C: + const deadline = 30 * stdlibtime.Second + reqCtx, cancel := context.WithTimeout(ctx, deadline) + log.Error(errors.Wrap(p.deleteOldSentAnnouncements(reqCtx), "failed to deleteOldSentAnnouncements")) + cancel() + case <-ctx.Done(): + return + } + } +} + +func (p *processor) deleteOldSentNotifications(ctx context.Context) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + sql := `DELETE FROM sent_notifications WHERE sent_at < :reference_date` + params := make(map[string]any, 1) + params["reference_date"] = time.New(time.Now().Add(-24 * stdlibtime.Hour)) + if _, err := storage.CheckSQLDMLResponse(p.db.PrepareExecute(sql, params)); err != nil { + return errors.Wrap(err, "failed to delete old data from sent_notifications") + } + + return nil +} + +func (p *processor) deleteOldSentAnnouncements(ctx context.Context) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + sql := `DELETE FROM sent_announcements WHERE sent_at < :reference_date` + params := make(map[string]any, 1) + params["reference_date"] = time.New(time.Now().Add(-24 * stdlibtime.Hour)) + if _, err := storage.CheckSQLDMLResponse(p.db.PrepareExecute(sql, params)); err != nil { + return errors.Wrap(err, "failed to delete old data from sent_announcements") + } + + return nil +} + +func requestingUserID(ctx context.Context) (requestingUserID string) { + requestingUserID, _ = ctx.Value(requestingUserIDCtxValueKey).(string) //nolint:errcheck // Not needed. + + return +} + +func runConcurrently[ARG any](ctx context.Context, run func(context.Context, ARG) error, args []ARG) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if len(args) == 0 { + return nil + } + wg := new(sync.WaitGroup) + wg.Add(len(args)) + errChan := make(chan error, len(args)) + for i := range args { + go func(ix int) { + defer wg.Done() + errChan <- errors.Wrapf(run(ctx, args[ix]), "failed to run:%#v", args[ix]) + }(i) + } + wg.Wait() + close(errChan) + errs := make([]error, 0, len(args)) + for err := range errChan { + errs = append(errs, err) + } + + return errors.Wrap(multierror.Append(nil, errs...).ErrorOrNil(), "at least one execution failed") +} + +func executeConcurrently(fs ...func() error) error { + if len(fs) == 0 { + return nil + } + wg := new(sync.WaitGroup) + wg.Add(len(fs)) + errChan := make(chan error, len(fs)) + for i := range fs { + go func(ix int) { + defer wg.Done() + errChan <- errors.Wrapf(fs[ix](), "failed to run func with index [%v]", ix) + }(i) + } + wg.Wait() + close(errChan) + errs := make([]error, 0, len(fs)) + for err := range errChan { + errs = append(errs, err) + } + + return errors.Wrap(multierror.Append(nil, errs...).ErrorOrNil(), "at least one execution failed") +} diff --git a/notifications/push_notifications.go b/notifications/push_notifications.go new file mode 100644 index 0000000..c319426 --- /dev/null +++ b/notifications/push_notifications.go @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "bytes" + "context" + "fmt" + "strings" + "text/template" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/eskimo/users" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/notifications/push" + "github.com/ice-blockchain/wintr/time" +) + +type ( + pushNotificationTemplate struct { + title, body *template.Template + Title string `json:"title"` //nolint:revive // That's intended. + Body string `json:"body"` //nolint:revive // That's intended. + } +) + +func (t *pushNotificationTemplate) getTitle(data any) string { + if data == nil { + return t.Title + } + bf := new(bytes.Buffer) + log.Panic(errors.Wrapf(t.title.Execute(bf, data), "failed to execute title template for data:%#v", data)) + + return bf.String() +} + +func (t *pushNotificationTemplate) getBody(data any) string { + if data == nil { + return t.Body + } + bf := new(bytes.Buffer) + log.Panic(errors.Wrapf(t.body.Execute(bf, data), "failed to execute body template for data:%#v", data)) + + return bf.String() +} + +func loadPushNotificationTranslationTemplates() { + const totalLanguages = 50 + allPushNotificationTemplates = make(map[NotificationType]map[languageCode]*pushNotificationTemplate, len(AllNotificationTypes)) + for _, notificationType := range AllNotificationTypes { + files, err := translations.ReadDir(fmt.Sprintf("translations/push/%v", notificationType)) + if err != nil { + panic(err) + } + allPushNotificationTemplates[notificationType] = make(map[languageCode]*pushNotificationTemplate, totalLanguages) + for _, file := range files { + content, fErr := translations.ReadFile(fmt.Sprintf("translations/push/%v/%v", notificationType, file.Name())) + if fErr != nil { + panic(fErr) + } + var tmpl pushNotificationTemplate + err = json.Unmarshal(content, &tmpl) + if err != nil { + panic(err) + } + language := strings.Split(file.Name(), ".")[0] + tmpl.title = template.Must(template.New(fmt.Sprintf("push_%v_%v_title", notificationType, language)).Parse(tmpl.Title)) + tmpl.body = template.Must(template.New(fmt.Sprintf("push_%v_%v_body", notificationType, language)).Parse(tmpl.Body)) + allPushNotificationTemplates[notificationType][language] = &tmpl + } + } +} + +type ( + pushNotificationTokens struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + PushNotificationTokens *users.Enum[push.DeviceToken] + Language, UserID string + } +) + +func (r *repository) getPushNotificationTokens( //nolint:funlen // . + ctx context.Context, domain NotificationDomain, userID string, +) (*pushNotificationTokens, error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "unexpected deadline") + } + sql := fmt.Sprintf(`SELECT GROUP_CONCAT(dm.push_notification_token) AS push_notification_tokens, + u.language, + u.user_id + FROM users u + LEFT JOIN device_metadata dm + ON ( u.disabled_push_notification_domains IS NULL + OR ( + POSITION('%[1]v', u.disabled_push_notification_domains) == 0 + AND + POSITION('%[2]v', u.disabled_push_notification_domains) == 0 + ) + ) + AND dm.user_id = u.user_id + AND dm.push_notification_token IS NOT NULL + AND dm.push_notification_token != '' + WHERE u.user_id = :user_id`, domain, AllNotificationDomain) + params := make(map[string]any, 1) + params["user_id"] = userID + resp := make([]*pushNotificationTokens, 0, 1) + if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { + return nil, errors.Wrapf(err, "failed to select for push notification tokens for `%v`, params:%#v", domain, params) + } + if len(resp) == 0 { + return nil, errors.Wrapf(ErrNotFound, "user not found") + } + if resp[0].PushNotificationTokens == nil || len(*resp[0].PushNotificationTokens) == 0 { + return nil, nil //nolint:nilnil // . + } + + return resp[0], nil +} + +type ( + sentNotificationPK struct { + //nolint:unused,revive,tagliatelle,nosnakecase // Because it is used by the msgpack library for marshalling/unmarshalling. + _msgpack struct{} `msgpack:",asArray"` + UserID string `json:"userId,omitempty" example:"edfd8c02-75e0-4687-9ac2-1ce4723865c4"` + Uniqueness string `json:"uniqueness,omitempty" example:"anything"` + NotificationType NotificationType `json:"notificationType,omitempty" example:"adoption_changed"` + NotificationChannel NotificationChannel `json:"notificationChannel,omitempty" example:"email"` + NotificationChannelValue string `json:"notificationChannelValue,omitempty" example:"jdoe@example.com"` + } + sentNotification struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + SentAt *time.Time `json:"sentAt,omitempty" example:"2022-01-03T16:20:52.156534Z"` + Language string `json:"language,omitempty" example:"en"` + sentNotificationPK + } + pushNotification struct { + pn *push.Notification[push.DeviceToken] + sn *sentNotification + } +) + +func (r *repository) sendPushNotification(ctx context.Context, pn *pushNotification) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if err := storage.CheckNoSQLDMLErr(r.db.InsertTyped("SENT_NOTIFICATIONS", pn.sn, &[]*sentNotification{})); err != nil { + return errors.Wrapf(err, "failed to insert %#v", pn.sn) + } + responder := make(chan error, 1) + defer close(responder) + r.pushNotificationsClient.Send(ctx, pn.pn, responder) + if err := <-responder; err != nil { + var cErr error + if errors.Is(err, push.ErrInvalidDeviceToken) { + cErr = r.clearInvalidPushNotificationToken(ctx, pn.sn.UserID, pn.pn.Target) + } + + return multierror.Append( //nolint:wrapcheck // Not needed. + errors.Wrapf(cErr, "failed to clearInvalidPushNotificationToken for userID:%#v, push token:%#v", pn.sn.UserID, pn.pn.Target), + errors.Wrapf(err, "failed to send push notification:%#v, desired to be sent:%#v", pn.pn, pn.sn), + errors.Wrapf(storage.CheckNoSQLDMLErr(r.db.DeleteTyped("SENT_NOTIFICATIONS", "pk_unnamed_SENT_NOTIFICATIONS_1", &pn.sn.sentNotificationPK, &[]*sentNotification{})), //nolint:lll // . + "failed to delete SENT_NOTIFICATIONS as a rollback for %#v", pn.sn), + ).ErrorOrNil() + } + + return nil +} + +func (r *repository) clearInvalidPushNotificationToken(ctx context.Context, userID string, token push.DeviceToken) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + sql := `UPDATE device_metadata + SET push_notification_token = null + WHERE user_id = :user_id + AND push_notification_token = :push_notification_token` + params := make(map[string]any, 1+1) + params["user_id"] = userID + params["push_notification_token"] = token + + return errors.Wrapf(storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)), "failed to update push_notification_token to empty for params:%#v", params) +} + +type ( + sentAnnouncementPK struct { + //nolint:unused,revive,tagliatelle,nosnakecase // Because it is used by the msgpack library for marshalling/unmarshalling. + _msgpack struct{} `msgpack:",asArray"` + Uniqueness string `json:"uniqueness,omitempty" example:"anything"` + NotificationType NotificationType `json:"notificationType,omitempty" example:"adoption_changed"` + NotificationChannel NotificationChannel `json:"notificationChannel,omitempty" example:"email"` + NotificationChannelValue string `json:"notificationChannelValue,omitempty" example:"jdoe@example.com"` + } + sentAnnouncement struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // To insert we need asArray + SentAt *time.Time `json:"sentAt,omitempty" example:"2022-01-03T16:20:52.156534Z"` + Language string `json:"language,omitempty" example:"en"` + sentAnnouncementPK + } + broadcastPushNotification struct { + pn *push.Notification[push.SubscriptionTopic] + sa *sentAnnouncement + } +) + +func (r *repository) broadcastPushNotification(ctx context.Context, bpn *broadcastPushNotification) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + if err := storage.CheckNoSQLDMLErr(r.db.InsertTyped("SENT_ANNOUNCEMENTS", bpn.sa, &[]*sentAnnouncement{})); err != nil { + return errors.Wrapf(err, "failed to insert %#v", bpn.sa) + } + if err := r.pushNotificationsClient.Broadcast(ctx, bpn.pn); err != nil { + return multierror.Append( //nolint:wrapcheck // Not needed. + errors.Wrapf(err, "failed to broadcast push notification:%#v, desired to be sent:%#v", bpn.pn, bpn.sa), + errors.Wrapf(storage.CheckNoSQLDMLErr(r.db.DeleteTyped("SENT_ANNOUNCEMENTS", "pk_unnamed_SENT_ANNOUNCEMENTS_1", &bpn.sa.sentAnnouncementPK, &[]*sentAnnouncement{})), //nolint:lll // . + "failed to delete SENT_ANNOUNCEMENTS as a rollback for %#v", bpn.sa), + ).ErrorOrNil() + } + + return nil +} diff --git a/notifications/seeding/seeding.go b/notifications/seeding/seeding.go new file mode 100644 index 0000000..7827b67 --- /dev/null +++ b/notifications/seeding/seeding.go @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: ice License 1.0 + +//go:build !test + +package seeding + +import ( + "fmt" + "os" + "strings" + stdlibtime "time" + + "github.com/ice-blockchain/go-tarantool-client" + "github.com/ice-blockchain/wintr/log" +) + +func StartSeeding() { + before := stdlibtime.Now() + db := dbConnector() + defer func() { + log.Panic(db.Close()) //nolint:revive // It doesnt really matter. + log.Info(fmt.Sprintf("seeding finalized in %v", stdlibtime.Since(before).String())) + }() + log.Info("TODO: implement seeding") +} + +func dbConnector() tarantool.Connector { + parts := strings.Split(os.Getenv("MASTER_DB_INSTANCE_ADDRESS"), "@") + userAndPass := strings.Split(parts[0], ":") + opts := tarantool.Opts{ + Timeout: 20 * stdlibtime.Second, //nolint:gomnd // It doesnt matter here. + Reconnect: stdlibtime.Millisecond, + MaxReconnects: 10, //nolint:gomnd // It doesnt matter here. + User: userAndPass[0], + Pass: userAndPass[1], + } + db, err := tarantool.Connect(parts[1], opts) + log.Panic(err) + + return db +} diff --git a/notifications/translations/push/adoption_changed/af.txt b/notifications/translations/push/adoption_changed/af.txt new file mode 100644 index 0000000..d332d49 --- /dev/null +++ b/notifications/translations/push/adoption_changed/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Die basis mynboukoers is gehalveer tot {{.BaseMiningRate}} ice/h!", + "title": "🚨 Mynboukoers verander 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/am.txt b/notifications/translations/push/adoption_changed/am.txt new file mode 100644 index 0000000..b2b9083 --- /dev/null +++ b/notifications/translations/push/adoption_changed/am.txt @@ -0,0 +1,4 @@ +{ + "body": "የመነሻ ገቢ መጠን በግማሽ ቀንሷል {{.BaseMiningRate}} ice/ሰ!", + "title": "🚨 የገቢ መጠን ተለውጧል 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ar.txt b/notifications/translations/push/adoption_changed/ar.txt new file mode 100644 index 0000000..8ef0ff5 --- /dev/null +++ b/notifications/translations/push/adoption_changed/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "تم تخفيض معدل الربح الأساسي إلى النصف إلى {{.BaseMiningRate}} ice / h!", + "title": "🚨 تغير معدل الربح🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/az.txt b/notifications/translations/push/adoption_changed/az.txt new file mode 100644 index 0000000..7c6cacd --- /dev/null +++ b/notifications/translations/push/adoption_changed/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Əsas qazanc dərəcəsi iki dəfə azaldılıb {{.BaseMiningRate}} ice/saat!", + "title": "🚨 Qazanc dərəcəsi dəyişdi 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/bg.txt b/notifications/translations/push/adoption_changed/bg.txt new file mode 100644 index 0000000..4637380 --- /dev/null +++ b/notifications/translations/push/adoption_changed/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Основният процент на печалба е намален наполовина до {{.BaseMiningRate}} ice/h!", + "title": "🚨 Степента на печалба е променена 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/bn.txt b/notifications/translations/push/adoption_changed/bn.txt new file mode 100644 index 0000000..b86848d --- /dev/null +++ b/notifications/translations/push/adoption_changed/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "বেস আর্নিং রেট অর্ধেক করা হয়েছে {{.BaseMiningRate}} ice/h!", + "title": "🚨 উপার্জনের হার পরিবর্তিত হয়েছে 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/cs.txt b/notifications/translations/push/adoption_changed/cs.txt new file mode 100644 index 0000000..ff63ab1 --- /dev/null +++ b/notifications/translations/push/adoption_changed/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Základní výdělková sazba byla snížena na polovinu na {{.BaseMiningRate}} ice/h!", + "title": "🚨 Míra výdělku se změnila 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/de.txt b/notifications/translations/push/adoption_changed/de.txt new file mode 100644 index 0000000..cf2151e --- /dev/null +++ b/notifications/translations/push/adoption_changed/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Der Grundverdienst wurde auf {{.BaseMiningRate}} ice/h halbiert!", + "title": "🚨 Verdienstquote geändert 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/en.txt b/notifications/translations/push/adoption_changed/en.txt new file mode 100644 index 0000000..ddcb10e --- /dev/null +++ b/notifications/translations/push/adoption_changed/en.txt @@ -0,0 +1,4 @@ +{ + "body": "The base earning rate has been halved to {{.BaseMiningRate}} ice/h!", + "title": "🚨 Earning rate changed 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/es.txt b/notifications/translations/push/adoption_changed/es.txt new file mode 100644 index 0000000..a3a8155 --- /dev/null +++ b/notifications/translations/push/adoption_changed/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡La tasa de ganancia base se ha reducido a la mitad a {{.BaseMiningRate}} ice/h!", + "title": "🚨 La tasa de ganancias cambió 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/fa.txt b/notifications/translations/push/adoption_changed/fa.txt new file mode 100644 index 0000000..fa1f2e9 --- /dev/null +++ b/notifications/translations/push/adoption_changed/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "نرخ درآمد پایه نصف شده و به {{.BaseMiningRate}} ice/h کاهش یافته است!", + "title": "🚨 نرخ درآمد تغییر کرد 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/fil.txt b/notifications/translations/push/adoption_changed/fil.txt new file mode 100644 index 0000000..bd9a6e0 --- /dev/null +++ b/notifications/translations/push/adoption_changed/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Ang batayang rate ng kita ay hinati sa {{.BaseMiningRate}} ice/h!", + "title": "🚨 Binago ang rate ng kita 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/fr.txt b/notifications/translations/push/adoption_changed/fr.txt new file mode 100644 index 0000000..7989267 --- /dev/null +++ b/notifications/translations/push/adoption_changed/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Le taux de rémunération de base a été réduit de moitié à {{.BaseMiningRate}} ice/h!", + "title": "🚨 Le taux de gain a changé 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ge.txt b/notifications/translations/push/adoption_changed/ge.txt new file mode 100644 index 0000000..3f5b5db --- /dev/null +++ b/notifications/translations/push/adoption_changed/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Ο βασικός ρυθμός εξόρυξης μειώθηκε στο μισό σε {{.BaseMiningRate}} ice/h!", + "title": "🚨 Η τιμή εξόρυξης άλλαξε 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/gu.txt b/notifications/translations/push/adoption_changed/gu.txt new file mode 100644 index 0000000..5d5506a --- /dev/null +++ b/notifications/translations/push/adoption_changed/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "બેઝ અર્નિંગ રેટ અડધો કરી દેવામાં આવ્યો છે {{.BaseMiningRate}} ice/h!", + "title": "🚨 કમાણીનો દર બદલાયો 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/he.txt b/notifications/translations/push/adoption_changed/he.txt new file mode 100644 index 0000000..2a03eb7 --- /dev/null +++ b/notifications/translations/push/adoption_changed/he.txt @@ -0,0 +1,4 @@ +{ + "body": "שיעור ההשתכרות הבסיסי הופחת ל-{{.BaseMiningRate}} ice/h!", + "title": "🚨 שיעור ההשתכרות השתנה 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/hi.txt b/notifications/translations/push/adoption_changed/hi.txt new file mode 100644 index 0000000..28c4066 --- /dev/null +++ b/notifications/translations/push/adoption_changed/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आधार अर्जन दर [nw वैल] ice/h!", + "title": "🚨 कमाई का रेट बदला 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/hu.txt b/notifications/translations/push/adoption_changed/hu.txt new file mode 100644 index 0000000..3cc54fb --- /dev/null +++ b/notifications/translations/push/adoption_changed/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Az alap kereseti ráta felére csökkent, {{.BaseMiningRate}} ice/h!", + "title": "🚨 A bevételi arány megváltozott 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/id.txt b/notifications/translations/push/adoption_changed/id.txt new file mode 100644 index 0000000..3c9c823 --- /dev/null +++ b/notifications/translations/push/adoption_changed/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Tingkat perolehan dasar telah dibelah dua menjadi {{.BaseMiningRate}} ice/h!", + "title": "🚨 Tingkat penghasilan berubah 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/it.txt b/notifications/translations/push/adoption_changed/it.txt new file mode 100644 index 0000000..f0f50f9 --- /dev/null +++ b/notifications/translations/push/adoption_changed/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Il tasso di guadagno base è stato dimezzato a {{.BaseMiningRate}} ice/h!", + "title": "🚨 Il tasso di guadagno è cambiato 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ja.txt b/notifications/translations/push/adoption_changed/ja.txt new file mode 100644 index 0000000..1c3b6f2 --- /dev/null +++ b/notifications/translations/push/adoption_changed/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "基本獲得率が {{.BaseMiningRate}} ice/h に半分になりました!", + "title": "🚨獲得率変更🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/jv.txt b/notifications/translations/push/adoption_changed/jv.txt new file mode 100644 index 0000000..7024a8b --- /dev/null +++ b/notifications/translations/push/adoption_changed/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Tingkat pangentukan dhasar wis setengah dadi {{.BaseMiningRate}} ice/h!", + "title": "🚨 Tingkat penghasilan diganti 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/kn.txt b/notifications/translations/push/adoption_changed/kn.txt new file mode 100644 index 0000000..10804d4 --- /dev/null +++ b/notifications/translations/push/adoption_changed/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ಮೂಲ ಗಳಿಕೆಯ ದರವನ್ನು {{.BaseMiningRate}} ice/h ಗೆ ಅರ್ಧಕ್ಕೆ ಇಳಿಸಲಾಗಿದೆ!", + "title": "🚨 ಗಳಿಕೆಯ ದರ ಬದಲಾಗಿದೆ 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ko.txt b/notifications/translations/push/adoption_changed/ko.txt new file mode 100644 index 0000000..f141443 --- /dev/null +++ b/notifications/translations/push/adoption_changed/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "기본 적립률이 {{.BaseMiningRate}} ice/h로 절반으로 줄었습니다!", + "title": "🚨 적립률 변경됨 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/mr.txt b/notifications/translations/push/adoption_changed/mr.txt new file mode 100644 index 0000000..42b4786 --- /dev/null +++ b/notifications/translations/push/adoption_changed/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "मूळ कमाई दर {{.BaseMiningRate}} ice/h वर निम्मा करण्यात आला आहे!", + "title": "🚨 कमाईचा दर बदलला 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ms.txt b/notifications/translations/push/adoption_changed/ms.txt new file mode 100644 index 0000000..c3cd873 --- /dev/null +++ b/notifications/translations/push/adoption_changed/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Kadar pendapatan asas telah dikurangkan separuh kepada {{.BaseMiningRate}} ice/j!", + "title": "🚨 Kadar pendapatan berubah 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/no.txt b/notifications/translations/push/adoption_changed/no.txt new file mode 100644 index 0000000..fa6ff87 --- /dev/null +++ b/notifications/translations/push/adoption_changed/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Grunninntektsraten er halvert til {{.BaseMiningRate}} ice/h!", + "title": "🚨 Inntjeningsraten endret 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/pa.txt b/notifications/translations/push/adoption_changed/pa.txt new file mode 100644 index 0000000..bb9396c --- /dev/null +++ b/notifications/translations/push/adoption_changed/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਆਧਾਰ ਕਮਾਈ ਦਰ ਨੂੰ {{.BaseMiningRate}} ice/h ਤੱਕ ਅੱਧਾ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ!", + "title": "🚨 ਕਮਾਈ ਦੀ ਦਰ ਬਦਲ ਗਈ 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/pl.txt b/notifications/translations/push/adoption_changed/pl.txt new file mode 100644 index 0000000..241f309 --- /dev/null +++ b/notifications/translations/push/adoption_changed/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Podstawowa stawka zarobków została zmniejszona o połowę do {{.BaseMiningRate}} ice/h!", + "title": "🚨 Zmieniono stawkę zarobków 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ps.txt b/notifications/translations/push/adoption_changed/ps.txt new file mode 100644 index 0000000..a7b83ba --- /dev/null +++ b/notifications/translations/push/adoption_changed/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "د بیس عاید کچه {{.BaseMiningRate}} ice/h ته نیمه شوې ده!", + "title": "🚨 د عاید کچه بدله شوه 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/pt.txt b/notifications/translations/push/adoption_changed/pt.txt new file mode 100644 index 0000000..76bc08d --- /dev/null +++ b/notifications/translations/push/adoption_changed/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "A taxa de ganho base foi reduzida pela metade para {{.BaseMiningRate}} ice/h!", + "title": "🚨 Taxa de ganho alterada 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ro.txt b/notifications/translations/push/adoption_changed/ro.txt new file mode 100644 index 0000000..7760e1c --- /dev/null +++ b/notifications/translations/push/adoption_changed/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Rata de bază a câștigului a fost redusă la jumătate la {{.BaseMiningRate}} ice/h!", + "title": "🚨 Rata de câștig s-a schimbat 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ru.txt b/notifications/translations/push/adoption_changed/ru.txt new file mode 100644 index 0000000..c4190fe --- /dev/null +++ b/notifications/translations/push/adoption_changed/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Базовая ставка заработка уменьшена вдвое до {{.BaseMiningRate}} ice/ч!", + "title": "🚨 Ставка заработка изменена 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/sd.txt b/notifications/translations/push/adoption_changed/sd.txt new file mode 100644 index 0000000..df734b0 --- /dev/null +++ b/notifications/translations/push/adoption_changed/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "بنيادي آمدني جي شرح اڌ ڪئي وئي آهي {{.BaseMiningRate}} ice/h!", + "title": "🚨 ڪمائي جي شرح تبديل ٿي وئي 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/sk.txt b/notifications/translations/push/adoption_changed/sk.txt new file mode 100644 index 0000000..7a5ace2 --- /dev/null +++ b/notifications/translations/push/adoption_changed/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Základná sadzba zárobku bola znížená na polovicu na {{.BaseMiningRate}} ice/h!", + "title": "🚨 Miera zárobku sa zmenila 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/sl.txt b/notifications/translations/push/adoption_changed/sl.txt new file mode 100644 index 0000000..d3fb551 --- /dev/null +++ b/notifications/translations/push/adoption_changed/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Osnovna stopnja zaslužka je bila prepolovljena na {{.BaseMiningRate}} ice/h!", + "title": "🚨 Spremenjena stopnja zaslužka 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/sq.txt b/notifications/translations/push/adoption_changed/sq.txt new file mode 100644 index 0000000..8760bc8 --- /dev/null +++ b/notifications/translations/push/adoption_changed/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Norma bazë e fitimit është përgjysmuar në {{.BaseMiningRate}} ice/h!", + "title": "🚨 Norma e fitimit ndryshoi 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/su.txt b/notifications/translations/push/adoption_changed/su.txt new file mode 100644 index 0000000..e501d29 --- /dev/null +++ b/notifications/translations/push/adoption_changed/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Laju panghasilan dasar parantos diréduksi jadi {{.BaseMiningRate}} ice/h!", + "title": "🚨 Tingkat earning robah 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/sv.txt b/notifications/translations/push/adoption_changed/sv.txt new file mode 100644 index 0000000..c17ba88 --- /dev/null +++ b/notifications/translations/push/adoption_changed/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Grundinkomsten har halverats till {{.BaseMiningRate}} ice/h!", + "title": "🚨 Intjäningsgraden ändrad 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ta.txt b/notifications/translations/push/adoption_changed/ta.txt new file mode 100644 index 0000000..fdd29a1 --- /dev/null +++ b/notifications/translations/push/adoption_changed/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "அடிப்படை வருவாய் விகிதம் பாதியாக குறைக்கப்பட்டது {{.BaseMiningRate}} ice/h!", + "title": "🚨 வருவாய் விகிதம் மாற்றப்பட்டது🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/te.txt b/notifications/translations/push/adoption_changed/te.txt new file mode 100644 index 0000000..9064069 --- /dev/null +++ b/notifications/translations/push/adoption_changed/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మూల సంపాదన రేటు {{.BaseMiningRate}} ice/hకి సగానికి తగ్గించబడింది!", + "title": "🚨 సంపాదన రేటు మార్చబడింది 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/th.txt b/notifications/translations/push/adoption_changed/th.txt new file mode 100644 index 0000000..1c95428 --- /dev/null +++ b/notifications/translations/push/adoption_changed/th.txt @@ -0,0 +1,4 @@ +{ + "body": "อัตรารายได้พื้นฐานลดลงครึ่งหนึ่งเป็น {{.BaseMiningRate}} ice/h!", + "title": "🚨 อัตราการได้รับการเปลี่ยนแปลง 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/tr.txt b/notifications/translations/push/adoption_changed/tr.txt new file mode 100644 index 0000000..1025e48 --- /dev/null +++ b/notifications/translations/push/adoption_changed/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Temel kazanç oranı {{.BaseMiningRate}} ice/h olarak yarıya indirildi!", + "title": "🚨 Kazanç oranı değişti 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/uk.txt b/notifications/translations/push/adoption_changed/uk.txt new file mode 100644 index 0000000..1e3e514 --- /dev/null +++ b/notifications/translations/push/adoption_changed/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Базову ставку заробітку зменшено вдвічі до {{.BaseMiningRate}} ice/h!", + "title": "🚨 Норма заробітку змінена 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/ur.txt b/notifications/translations/push/adoption_changed/ur.txt new file mode 100644 index 0000000..2c3990b --- /dev/null +++ b/notifications/translations/push/adoption_changed/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "بنیادی آمدنی کی شرح نصف کر دی گئی ہے {{.BaseMiningRate}} ice/h!", + "title": "🚨 کمائی کی شرح بدل گئی 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/vi.txt b/notifications/translations/push/adoption_changed/vi.txt new file mode 100644 index 0000000..81426a2 --- /dev/null +++ b/notifications/translations/push/adoption_changed/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Tỷ lệ thu nhập cơ bản đã giảm một nửa xuống còn {{.BaseMiningRate}} ice/h!", + "title": "🚨 Tỷ lệ thu nhập đã thay đổi 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/yo.txt b/notifications/translations/push/adoption_changed/yo.txt new file mode 100644 index 0000000..9c1534c --- /dev/null +++ b/notifications/translations/push/adoption_changed/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "Oṣuwọn gbigba ipilẹ ti jẹ idaji si {{.BaseMiningRate}} ice/h!", + "title": "🚨 Oṣuwọn owo-owo ti yipada 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/zh-hans.txt b/notifications/translations/push/adoption_changed/zh-hans.txt new file mode 100644 index 0000000..2fe673f --- /dev/null +++ b/notifications/translations/push/adoption_changed/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "基本收入率已减半至 {{.BaseMiningRate}} ice/h!", + "title": "🚨 收益率改变了 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/zh-hant.txt b/notifications/translations/push/adoption_changed/zh-hant.txt new file mode 100644 index 0000000..d0e6eba --- /dev/null +++ b/notifications/translations/push/adoption_changed/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "基本收入率已減半至 {{.BaseMiningRate}} ice/h!", + "title": "🚨 收益率改變了 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/adoption_changed/zu.txt b/notifications/translations/push/adoption_changed/zu.txt new file mode 100644 index 0000000..0359531 --- /dev/null +++ b/notifications/translations/push/adoption_changed/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Izinga lokuhola eliyisisekelo lehliswe ngohhafu ukuze libe ngu-{{.BaseMiningRate}} ice/h!", + "title": "🚨 Izinga lokuhola lishintshile 🚨" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/af.txt b/notifications/translations/push/coin_badge_unlocked/af.txt new file mode 100644 index 0000000..d2e9e38 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Jy het die {{.BadgeName}} muntwapen ontsluit! Kyk dit in jou profiel.", + "title": "🎉 Nuwe kenteken verdien!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/am.txt b/notifications/translations/push/coin_badge_unlocked/am.txt new file mode 100644 index 0000000..9d88018 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/am.txt @@ -0,0 +1,4 @@ +{ + "body": "የ{{.BadgeName}} ሳንቲም ባጅ ከፍተዋል! በመገለጫዎ ውስጥ ይመልከቱት።", + "title": "🎉 አዲስ ባጅ ተገኘ!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ar.txt b/notifications/translations/push/coin_badge_unlocked/ar.txt new file mode 100644 index 0000000..3dc9f5c --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "لقد فتحت شارة العملة {{.BadgeName}}! تحقق من ذلك في ملف التعريف الخاص بك.", + "title": "🎉 تم الحصول على شارة جديدة!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/az.txt b/notifications/translations/push/coin_badge_unlocked/az.txt new file mode 100644 index 0000000..1fed9cf --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Siz {{.BadgeName}} sikkə nişanını açdınız! Bunu profilinizdə yoxlayın.", + "title": "🎉 Yeni nişan qazanıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/bg.txt b/notifications/translations/push/coin_badge_unlocked/bg.txt new file mode 100644 index 0000000..c5d568a --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Отключихте монетната значка {{.BadgeName}}! Вижте го в профила си.", + "title": "🎉 Спечелена нова значка!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/bn.txt b/notifications/translations/push/coin_badge_unlocked/bn.txt new file mode 100644 index 0000000..41a1b94 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "আপনি {{.BadgeName}} কয়েন ব্যাজ আনলক করেছেন! আপনার প্রোফাইলে এটি পরীক্ষা করে দেখুন.", + "title": "🎉 নতুন ব্যাজ অর্জিত!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/cs.txt b/notifications/translations/push/coin_badge_unlocked/cs.txt new file mode 100644 index 0000000..eb945cf --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Odemkli jste odznak {{.BadgeName}} coin! Podívejte se na svůj profil.", + "title": "🎉 Získali jste nový odznak!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/de.txt b/notifications/translations/push/coin_badge_unlocked/de.txt new file mode 100644 index 0000000..debae5b --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Du hast das {{.BadgeName}}-Münzenabzeichen freigeschaltet! Sieh es dir in deinem Profil an.", + "title": "🎉 Neues Abzeichen verdient!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/en.txt b/notifications/translations/push/coin_badge_unlocked/en.txt new file mode 100644 index 0000000..575f695 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/en.txt @@ -0,0 +1,4 @@ +{ + "body": "You've unlocked the {{.BadgeName}} coin badge! Check it out in your profile.", + "title": "🎉 New badge earned!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/es.txt b/notifications/translations/push/coin_badge_unlocked/es.txt new file mode 100644 index 0000000..c7296f1 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡Has desbloqueado la insignia de la moneda {{.BadgeName}}! Compruébalo en tu perfil.", + "title": "🎉 ¡Nueva insignia ganada!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/fa.txt b/notifications/translations/push/coin_badge_unlocked/fa.txt new file mode 100644 index 0000000..a9d8037 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "شما نشان سکه {{.BadgeName}} را باز کرده اید! آن را در پروفایل خود بررسی کنید.", + "title": "🎉 نشان جدید به دست آورد!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/fil.txt b/notifications/translations/push/coin_badge_unlocked/fil.txt new file mode 100644 index 0000000..86ce3a2 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Na-unlock mo ang {{.BadgeName}} coin badge! Tingnan ito sa iyong profile.", + "title": "🎉 Bagong badge ang nakuha!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/fr.txt b/notifications/translations/push/coin_badge_unlocked/fr.txt new file mode 100644 index 0000000..31a453f --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Vous avez débloqué le badge de pièce {{.BadgeName}}! Vérifiez-le dans votre profil.", + "title": "🎉 Nouveau badge gagné!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ge.txt b/notifications/translations/push/coin_badge_unlocked/ge.txt new file mode 100644 index 0000000..bc03e5c --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Ξεκλειδώσατε το σήμα κέρματος {{.BadgeName}}! Δείτε το στο προφίλ σας.", + "title": "🎉 Κερδίστηκε νέο σήμα!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/gu.txt b/notifications/translations/push/coin_badge_unlocked/gu.txt new file mode 100644 index 0000000..d56e510 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમે {{.BadgeName}} સિક્કા બેજને અનલૉક કર્યો છે! તેને તમારી પ્રોફાઇલમાં તપાસો.", + "title": "🎉 નવો બેજ મેળવ્યો!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/he.txt b/notifications/translations/push/coin_badge_unlocked/he.txt new file mode 100644 index 0000000..503438a --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/he.txt @@ -0,0 +1,4 @@ +{ + "body": "פתחת את תג המטבע של {{.BadgeName}}! בדוק את זה בפרופיל שלך.", + "title": "🎉 זכה בתג חדש!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/hi.txt b/notifications/translations/push/coin_badge_unlocked/hi.txt new file mode 100644 index 0000000..75f22cc --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपने {{.BadgeName}} कॉइन बैज अनलॉक कर लिया है! इसे अपने प्रोफाइल में देखें।", + "title": "🎉 नया बैज अर्जित किया गया!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/hu.txt b/notifications/translations/push/coin_badge_unlocked/hu.txt new file mode 100644 index 0000000..7923079 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Feloldottad a {{.BadgeName}} érme jelvényt! Nézd meg a profilodban.", + "title": "🎉 Új jelvényt szerzett!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/id.txt b/notifications/translations/push/coin_badge_unlocked/id.txt new file mode 100644 index 0000000..0beec09 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda telah membuka lencana koin {{.BadgeName}}! Lihat di profil Anda.", + "title": "🎉 Lencana baru diperoleh!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/it.txt b/notifications/translations/push/coin_badge_unlocked/it.txt new file mode 100644 index 0000000..f64220b --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Hai sbloccato il distintivo della moneta da {{.BadgeName}}! Dai un'occhiata nel tuo profilo.", + "title": "🎉 Nuovo badge guadagnato!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ja.txt b/notifications/translations/push/coin_badge_unlocked/ja.txt new file mode 100644 index 0000000..a119cf1 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} コインバッジをアンロックしました! プロフィールからチェックしてみてください。", + "title": "🎉 新しいバッジを獲得しました!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/jv.txt b/notifications/translations/push/coin_badge_unlocked/jv.txt new file mode 100644 index 0000000..dae7b45 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Sampeyan wis mbukak badge duwit receh {{.BadgeName}}! Priksa metu ing profil.", + "title": "🎉 Lencana anyar entuk!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/kn.txt b/notifications/translations/push/coin_badge_unlocked/kn.txt new file mode 100644 index 0000000..22bd28b --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನೀವು {{.BadgeName}} ಕಾಯಿನ್ ಬ್ಯಾಡ್ಜ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಿರುವಿರಿ! ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ನಲ್ಲಿ ಇದನ್ನು ಪರಿಶೀಲಿಸಿ.", + "title": "🎉 ಹೊಸ ಬ್ಯಾಡ್ಜ್ ಗಳಿಸಲಾಗಿದೆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ko.txt b/notifications/translations/push/coin_badge_unlocked/ko.txt new file mode 100644 index 0000000..e31eb40 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} 코인 배지를 잠금 해제했습니다! 프로필에서 확인하세요.", + "title": "🎉 새로운 배지를 획득했습니다!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/mr.txt b/notifications/translations/push/coin_badge_unlocked/mr.txt new file mode 100644 index 0000000..90278b4 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तुम्ही {{.BadgeName}} नाणे बॅज अनलॉक केला आहे! तुमच्या प्रोफाइलमध्ये ते पहा.", + "title": "🎉 नवीन बॅज मिळवला!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ms.txt b/notifications/translations/push/coin_badge_unlocked/ms.txt new file mode 100644 index 0000000..f8cc5ce --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda telah membuka kunci lencana syiling {{.BadgeName}}! Semak dalam profil anda.", + "title": "🎉 Lencana baharu diperoleh!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/no.txt b/notifications/translations/push/coin_badge_unlocked/no.txt new file mode 100644 index 0000000..eec6f47 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har låst opp {{.BadgeName}} myntmerket! Sjekk det ut i profilen din.", + "title": "🎉 Nytt merke opptjent!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/pa.txt b/notifications/translations/push/coin_badge_unlocked/pa.txt new file mode 100644 index 0000000..345e3fc --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਸੀਂ {{.BadgeName}} ਸਿੱਕਾ ਬੈਜ ਨੂੰ ਅਨਲੌਕ ਕਰ ਲਿਆ ਹੈ! ਇਸਨੂੰ ਆਪਣੇ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਦੇਖੋ।", + "title": "🎉 ਨਵਾਂ ਬੈਜ ਕਮਾਇਆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/pl.txt b/notifications/translations/push/coin_badge_unlocked/pl.txt new file mode 100644 index 0000000..1fdcb68 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Odblokowałeś odznakę monety {{.BadgeName}}! Sprawdź to w swoim profilu.", + "title": "🎉 Zdobyto nową odznakę!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ps.txt b/notifications/translations/push/coin_badge_unlocked/ps.txt new file mode 100644 index 0000000..256fa48 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "تاسو د {{.BadgeName}} سکې بیج خلاص کړی! په خپل پروفایل کې یې وګورئ.", + "title": "🎉 نوی بیج ترلاسه کړ!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/pt.txt b/notifications/translations/push/coin_badge_unlocked/pt.txt new file mode 100644 index 0000000..241846f --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Você desbloqueou o distintivo de moeda {{.BadgeName}}! Confira no seu perfil.", + "title": "🎉 Nova insígnia conquistada!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ro.txt b/notifications/translations/push/coin_badge_unlocked/ro.txt new file mode 100644 index 0000000..49223ae --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Ați deblocat insigna de monedă {{.BadgeName}}! Verifică-l în profilul tău.", + "title": "🎉 Insigna nouă obținută!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ru.txt b/notifications/translations/push/coin_badge_unlocked/ru.txt new file mode 100644 index 0000000..5cef5ef --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Вы разблокировали значок монеты {{.BadgeName}}! Проверьте это в своем профиле.", + "title": "🎉 Получен новый значок!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/sd.txt b/notifications/translations/push/coin_badge_unlocked/sd.txt new file mode 100644 index 0000000..ca06b3e --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توھان ان لاڪ ڪيو آھي {{.BadgeName}} ڪوئن بيج! ان کي چيڪ ڪريو توهان جي پروفائيل ۾.", + "title": "🎉 نئون بيج ڪمايو!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/sk.txt b/notifications/translations/push/coin_badge_unlocked/sk.txt new file mode 100644 index 0000000..4341f0c --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Odomkli ste odznak {{.BadgeName}} mince! Pozrite si to vo svojom profile.", + "title": "🎉 Získali ste nový odznak!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/sl.txt b/notifications/translations/push/coin_badge_unlocked/sl.txt new file mode 100644 index 0000000..58383a6 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Odklenili ste značko kovanca {{.BadgeName}}! Preverite v svojem profilu.", + "title": "🎉 Pridobljena nova značka!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/sq.txt b/notifications/translations/push/coin_badge_unlocked/sq.txt new file mode 100644 index 0000000..c80e4b9 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Ju keni zhbllokuar simbolin e monedhës {{.BadgeName}}! Shikojeni në profilin tuaj.", + "title": "🎉 Fituar distinktivin e ri!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/su.txt b/notifications/translations/push/coin_badge_unlocked/su.txt new file mode 100644 index 0000000..c138d35 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Anjeun geus muka konci badge koin {{.BadgeName}}! Pariksa dina profil anjeun.", + "title": "🎉 Lencana anyar meunang!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/sv.txt b/notifications/translations/push/coin_badge_unlocked/sv.txt new file mode 100644 index 0000000..b38da50 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har låst upp {{.BadgeName}} myntmärket! Kolla in det i din profil.", + "title": "🎉 Nytt märke intjänat!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ta.txt b/notifications/translations/push/coin_badge_unlocked/ta.txt new file mode 100644 index 0000000..80dc62c --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} நாணயம் பேட்ஜைத் திறந்துவிட்டீர்கள்! அதை உங்கள் சுயவிவரத்தில் பார்க்கவும்.", + "title": "🎉 புதிய பேட்ஜ் கிடைத்தது!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/te.txt b/notifications/translations/push/coin_badge_unlocked/te.txt new file mode 100644 index 0000000..aa50d67 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీరు {{.BadgeName}} కాయిన్ బ్యాడ్జ్‌ని అన్‌లాక్ చేసారు! మీ ప్రొఫైల్‌లో దాన్ని తనిఖీ చేయండి.", + "title": "🎉 కొత్త బ్యాడ్జ్ సంపాదించారు!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/th.txt b/notifications/translations/push/coin_badge_unlocked/th.txt new file mode 100644 index 0000000..b6a44e9 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/th.txt @@ -0,0 +1,4 @@ +{ + "body": "คุณปลดล็อกเหรียญตรา {{.BadgeName}} แล้ว! ลองดูในโปรไฟล์ของคุณ", + "title": "🎉 ได้รับตราใหม่แล้ว!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/tr.txt b/notifications/translations/push/coin_badge_unlocked/tr.txt new file mode 100644 index 0000000..2ffe7f3 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} madeni para rozetinin kilidini açtınız! Profilinizde kontrol edin.", + "title": "🎉 Yeni rozet kazanıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/uk.txt b/notifications/translations/push/coin_badge_unlocked/uk.txt new file mode 100644 index 0000000..9253a0f --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Ви розблокували монетний значок {{.BadgeName}}! Перегляньте це у своєму профілі.", + "title": "🎉 Отримано новий значок!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/ur.txt b/notifications/translations/push/coin_badge_unlocked/ur.txt new file mode 100644 index 0000000..fa0e992 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "آپ نے {{.BadgeName}} سکے کے بیج کو غیر مقفل کر دیا ہے! اسے اپنے پروفائل میں چیک کریں۔", + "title": "🎉 نیا بیج حاصل کیا گیا!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/vi.txt b/notifications/translations/push/coin_badge_unlocked/vi.txt new file mode 100644 index 0000000..63e9fbe --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Bạn đã mở khóa huy hiệu xu {{.BadgeName}}! Kiểm tra nó ra trong hồ sơ của bạn.", + "title": "🎉 Đã kiếm được huy hiệu mới!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/yo.txt b/notifications/translations/push/coin_badge_unlocked/yo.txt new file mode 100644 index 0000000..bbdf02b --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "O ti ṣii baaji owo {{.BadgeName}}! Ṣayẹwo rẹ ninu profaili rẹ.", + "title": "🎉 Titun baaji mina!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/zh-hans.txt b/notifications/translations/push/coin_badge_unlocked/zh-hans.txt new file mode 100644 index 0000000..f838d19 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "你已经解锁了 {{.BadgeName}} 硬币徽章! 在您的个人资料中查看。", + "title": "🎉 获得新徽章!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/zh-hant.txt b/notifications/translations/push/coin_badge_unlocked/zh-hant.txt new file mode 100644 index 0000000..8fad5e2 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "你已經解鎖了 {{.BadgeName}} 硬幣徽章! 在您的個人資料中查看。", + "title": "🎉 獲得新徽章!" +} \ No newline at end of file diff --git a/notifications/translations/push/coin_badge_unlocked/zu.txt b/notifications/translations/push/coin_badge_unlocked/zu.txt new file mode 100644 index 0000000..070b6c4 --- /dev/null +++ b/notifications/translations/push/coin_badge_unlocked/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Uvule ibheji yemali engu-{{.BadgeName}}! Kuhlole kuphrofayela yakho.", + "title": "🎉 Ibheji elisha elizuziwe!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/af.txt b/notifications/translations/push/daily_bonus/af.txt new file mode 100644 index 0000000..9a33fca --- /dev/null +++ b/notifications/translations/push/daily_bonus/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Jy het 1 uur om jou daaglikse bonus op te eis. Moenie uitmis nie!", + "title": "🎉 Daaglikse bonuswaarskuwing!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/am.txt b/notifications/translations/push/daily_bonus/am.txt new file mode 100644 index 0000000..0615fff --- /dev/null +++ b/notifications/translations/push/daily_bonus/am.txt @@ -0,0 +1,4 @@ +{ + "body": "ዕለታዊ ጉርሻዎን ለመጠየቅ 1 ሰዓት አለዎት። እንዳያመልጥዎ!", + "title": "🎉 ዕለታዊ ጉርሻ ማንቂያ!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ar.txt b/notifications/translations/push/daily_bonus/ar.txt new file mode 100644 index 0000000..f04b3fb --- /dev/null +++ b/notifications/translations/push/daily_bonus/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "لديك ساعة واحدة للمطالبة بمكافأتك اليومية. لا تفوت الفرصة!", + "title": "🎉 تنبيه المكافأة اليومية!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/az.txt b/notifications/translations/push/daily_bonus/az.txt new file mode 100644 index 0000000..56868ee --- /dev/null +++ b/notifications/translations/push/daily_bonus/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Gündəlik bonusunuzu tələb etmək üçün 1 saatınız var. Qaçırmayın!", + "title": "🎉 Gündəlik Bonus Xəbərdarlığı!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/bg.txt b/notifications/translations/push/daily_bonus/bg.txt new file mode 100644 index 0000000..6ab3f13 --- /dev/null +++ b/notifications/translations/push/daily_bonus/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Имате 1 час, за да изискате своя дневен бонус. Не пропускайте!", + "title": "🎉 Сигнал за ежедневен бонус!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/bn.txt b/notifications/translations/push/daily_bonus/bn.txt new file mode 100644 index 0000000..bd0302b --- /dev/null +++ b/notifications/translations/push/daily_bonus/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "আপনার দৈনিক বোনাস দাবি করার জন্য আপনার কাছে 1 ঘন্টা আছে। মিস করবেন না!", + "title": "🎉 দৈনিক বোনাস সতর্কতা!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/cs.txt b/notifications/translations/push/daily_bonus/cs.txt new file mode 100644 index 0000000..cb6c2fb --- /dev/null +++ b/notifications/translations/push/daily_bonus/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Na uplatnění denního bonusu máte 1 hodinu. Nenechte si to ujít!", + "title": "🎉 Denní bonusové upozornění!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/de.txt b/notifications/translations/push/daily_bonus/de.txt new file mode 100644 index 0000000..4bb7401 --- /dev/null +++ b/notifications/translations/push/daily_bonus/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Sie haben 1 Stunde Zeit, um Ihren täglichen Bonus zu beanspruchen. Nicht verpassen!", + "title": "🎉 Täglicher Bonusalarm!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/en.txt b/notifications/translations/push/daily_bonus/en.txt new file mode 100644 index 0000000..3de7055 --- /dev/null +++ b/notifications/translations/push/daily_bonus/en.txt @@ -0,0 +1,4 @@ +{ + "body": "You have 1 hour to claim your daily bonus. Don't miss out!", + "title": "🎉 Daily Bonus Alert!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/es.txt b/notifications/translations/push/daily_bonus/es.txt new file mode 100644 index 0000000..801e58d --- /dev/null +++ b/notifications/translations/push/daily_bonus/es.txt @@ -0,0 +1,4 @@ +{ + "body": "Tienes 1 hora para reclamar tu bono diario. ¡No te lo pierdas!", + "title": "🎉 ¡Alerta de bonificación diaria!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/fa.txt b/notifications/translations/push/daily_bonus/fa.txt new file mode 100644 index 0000000..5501052 --- /dev/null +++ b/notifications/translations/push/daily_bonus/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "شما 1 ساعت فرصت دارید تا پاداش روزانه خود را دریافت کنید. از دست نده!", + "title": "🎉 هشدار پاداش روزانه!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/fil.txt b/notifications/translations/push/daily_bonus/fil.txt new file mode 100644 index 0000000..d035df0 --- /dev/null +++ b/notifications/translations/push/daily_bonus/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Mayroon kang 1 oras para i-claim ang iyong pang-araw-araw na bonus. Huwag palampasin!", + "title": "🎉 Araw-araw na Alerto sa Bonus!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/fr.txt b/notifications/translations/push/daily_bonus/fr.txt new file mode 100644 index 0000000..af91e20 --- /dev/null +++ b/notifications/translations/push/daily_bonus/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Vous avez 1 heure pour réclamer votre bonus quotidien. Ne manquez pas!", + "title": "🎉 Alerte bonus quotidienne!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ge.txt b/notifications/translations/push/daily_bonus/ge.txt new file mode 100644 index 0000000..f93489c --- /dev/null +++ b/notifications/translations/push/daily_bonus/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Έχετε 1 ώρα για να διεκδικήσετε το ημερήσιο μπόνους σας. Μην το χάσετε!", + "title": "🎉 Καθημερινή ειδοποίηση μπόνους!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/gu.txt b/notifications/translations/push/daily_bonus/gu.txt new file mode 100644 index 0000000..3bf2d43 --- /dev/null +++ b/notifications/translations/push/daily_bonus/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમારા દૈનિક બોનસનો દાવો કરવા માટે તમારી પાસે 1 કલાક છે. ચૂકશો નહીં!", + "title": "🎉 દૈનિક બોનસ ચેતવણી!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/he.txt b/notifications/translations/push/daily_bonus/he.txt new file mode 100644 index 0000000..b0e54cc --- /dev/null +++ b/notifications/translations/push/daily_bonus/he.txt @@ -0,0 +1,4 @@ +{ + "body": "יש לך שעה אחת לתבוע את הבונוס היומי שלך. אל תפספסו!", + "title": "🎉 התראת בונוס יומית!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/hi.txt b/notifications/translations/push/daily_bonus/hi.txt new file mode 100644 index 0000000..1ef70d4 --- /dev/null +++ b/notifications/translations/push/daily_bonus/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपके पास अपने दैनिक बोनस का दावा करने के लिए 1 घंटा है। चूको मत!", + "title": "🎉 दैनिक बोनस अलर्ट!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/hu.txt b/notifications/translations/push/daily_bonus/hu.txt new file mode 100644 index 0000000..f1922bf --- /dev/null +++ b/notifications/translations/push/daily_bonus/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "1 órája van a napi bónusz igénylésére. Ne hagyd ki!", + "title": "🎉 Napi bónusz figyelmeztetés!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/id.txt b/notifications/translations/push/daily_bonus/id.txt new file mode 100644 index 0000000..90ffe74 --- /dev/null +++ b/notifications/translations/push/daily_bonus/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda memiliki waktu 1 jam untuk mengklaim bonus harian Anda. Jangan lewatkan!", + "title": "🎉 Peringatan Bonus Harian!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/it.txt b/notifications/translations/push/daily_bonus/it.txt new file mode 100644 index 0000000..f5f8fa1 --- /dev/null +++ b/notifications/translations/push/daily_bonus/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Hai 1 ora per richiedere il tuo bonus giornaliero. Non perderti!", + "title": "🎉 Avviso bonus giornaliero!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ja.txt b/notifications/translations/push/daily_bonus/ja.txt new file mode 100644 index 0000000..2c4f26d --- /dev/null +++ b/notifications/translations/push/daily_bonus/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "デイリー ボーナスを請求できる時間は 1 時間です。 お見逃しなく!", + "title": "🎉 デイリーボーナスアラート!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/jv.txt b/notifications/translations/push/daily_bonus/jv.txt new file mode 100644 index 0000000..c3f7ecf --- /dev/null +++ b/notifications/translations/push/daily_bonus/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Sampeyan duwe 1 jam kanggo pratelan bonus saben dina. Aja kantun!", + "title": "🎉 Lansiran Bonus Saben!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/kn.txt b/notifications/translations/push/daily_bonus/kn.txt new file mode 100644 index 0000000..9bcd95e --- /dev/null +++ b/notifications/translations/push/daily_bonus/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನಿಮ್ಮ ದೈನಂದಿನ ಬೋನಸ್ ಅನ್ನು ಕ್ಲೈಮ್ ಮಾಡಲು ನಿಮಗೆ 1 ಗಂಟೆ ಇದೆ. ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಡಿ!", + "title": "🎉 ದೈನಂದಿನ ಬೋನಸ್ ಎಚ್ಚರಿಕೆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ko.txt b/notifications/translations/push/daily_bonus/ko.txt new file mode 100644 index 0000000..2e4fe79 --- /dev/null +++ b/notifications/translations/push/daily_bonus/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "일일 보너스를 청구할 수 있는 시간은 1시간입니다. 놓치지 마세요!", + "title": "🎉 일일 보너스 알림!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/mr.txt b/notifications/translations/push/daily_bonus/mr.txt new file mode 100644 index 0000000..57cb9ed --- /dev/null +++ b/notifications/translations/push/daily_bonus/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तुमच्या दैनंदिन बोनसचा दावा करण्यासाठी तुमच्याकडे 1 तास आहे. चुकवू नका!", + "title": "🎉 दैनिक बोनस अलर्ट!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ms.txt b/notifications/translations/push/daily_bonus/ms.txt new file mode 100644 index 0000000..e15b442 --- /dev/null +++ b/notifications/translations/push/daily_bonus/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda mempunyai 1 jam untuk menuntut bonus harian anda. Jangan lepaskan peluang!", + "title": "🎉 Makluman Bonus Harian!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/no.txt b/notifications/translations/push/daily_bonus/no.txt new file mode 100644 index 0000000..c3630a6 --- /dev/null +++ b/notifications/translations/push/daily_bonus/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har 1 time på deg til å hente din daglige bonus. Ikke gå glipp av det!", + "title": "🎉 Daglig bonusvarsel!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/pa.txt b/notifications/translations/push/daily_bonus/pa.txt new file mode 100644 index 0000000..5e07533 --- /dev/null +++ b/notifications/translations/push/daily_bonus/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਹਾਡੇ ਰੋਜ਼ਾਨਾ ਬੋਨਸ ਦਾ ਦਾਅਵਾ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਕੋਲ 1 ਘੰਟਾ ਹੈ। ਮਿਸ ਨਾ ਕਰੋ!", + "title": "🎉 ਰੋਜ਼ਾਨਾ ਬੋਨਸ ਚੇਤਾਵਨੀ!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/pl.txt b/notifications/translations/push/daily_bonus/pl.txt new file mode 100644 index 0000000..29e136a --- /dev/null +++ b/notifications/translations/push/daily_bonus/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Masz 1 godzinę, aby odebrać swój dzienny bonus. Nie przegap!", + "title": "🎉 Codzienny alert bonusowy!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ps.txt b/notifications/translations/push/daily_bonus/ps.txt new file mode 100644 index 0000000..889e2bd --- /dev/null +++ b/notifications/translations/push/daily_bonus/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "تاسو د خپل ورځني بونس ادعا کولو لپاره 1 ساعت لرئ. له لاسه مه ورکوئ!", + "title": "🎉 د ورځني بونس خبرتیا!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/pt.txt b/notifications/translations/push/daily_bonus/pt.txt new file mode 100644 index 0000000..bfc82b0 --- /dev/null +++ b/notifications/translations/push/daily_bonus/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Você tem 1 hora para reivindicar seu bônus diário. Não perca!", + "title": "🎉 Alerta de bônus diário!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ro.txt b/notifications/translations/push/daily_bonus/ro.txt new file mode 100644 index 0000000..0cdfded --- /dev/null +++ b/notifications/translations/push/daily_bonus/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Aveți la dispoziție 1 oră pentru a vă revendica bonusul zilnic. Nu ratați!", + "title": "🎉 Alertă zilnică de bonus!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ru.txt b/notifications/translations/push/daily_bonus/ru.txt new file mode 100644 index 0000000..43f386a --- /dev/null +++ b/notifications/translations/push/daily_bonus/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "У вас есть 1 час, чтобы получить свой ежедневный бонус. Не пропустите!", + "title": "🎉 Ежедневное оповещение о бонусах!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/sd.txt b/notifications/translations/push/daily_bonus/sd.txt new file mode 100644 index 0000000..b103613 --- /dev/null +++ b/notifications/translations/push/daily_bonus/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توھان وٽ آھي 1 ڪلاڪ پنھنجي روزاني بونس کي دعوي ڪرڻ لاءِ. نه وڃايو!", + "title": "🎉 روزانه بونس جي خبرداري!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/sk.txt b/notifications/translations/push/daily_bonus/sk.txt new file mode 100644 index 0000000..d0ef1c2 --- /dev/null +++ b/notifications/translations/push/daily_bonus/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Na uplatnenie denného bonusu máte 1 hodinu. Nenechajte si to ujsť!", + "title": "🎉 Denné bonusové upozornenie!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/sl.txt b/notifications/translations/push/daily_bonus/sl.txt new file mode 100644 index 0000000..fc31b11 --- /dev/null +++ b/notifications/translations/push/daily_bonus/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Imate 1 uro, da zahtevate svoj dnevni bonus. Ne zamudite!", + "title": "🎉 Opozorilo o dnevnem bonusu!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/sq.txt b/notifications/translations/push/daily_bonus/sq.txt new file mode 100644 index 0000000..2a00075 --- /dev/null +++ b/notifications/translations/push/daily_bonus/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Keni 1 orë për të kërkuar bonusin tuaj ditor. Mos e humbisni!", + "title": "🎉 Sinjalizim Bonus Ditor!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/su.txt b/notifications/translations/push/daily_bonus/su.txt new file mode 100644 index 0000000..1a63cd1 --- /dev/null +++ b/notifications/translations/push/daily_bonus/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Anjeun gaduh 1 jam pikeun ngaku bonus poean Anjeun. Ulah sono!", + "title": "🎉 Siaga Bonus poean!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/sv.txt b/notifications/translations/push/daily_bonus/sv.txt new file mode 100644 index 0000000..9b0f0fa --- /dev/null +++ b/notifications/translations/push/daily_bonus/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har 1 timme på dig att hämta din dagliga bonus. Missa inte det!", + "title": "🎉 Daglig bonusvarning!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ta.txt b/notifications/translations/push/daily_bonus/ta.txt new file mode 100644 index 0000000..23a5526 --- /dev/null +++ b/notifications/translations/push/daily_bonus/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "உங்கள் தினசரி போனஸைப் பெற உங்களுக்கு 1 மணிநேரம் உள்ளது. தவறவிடாதீர்கள்!", + "title": "🎉 தினசரி போனஸ் எச்சரிக்கை!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/te.txt b/notifications/translations/push/daily_bonus/te.txt new file mode 100644 index 0000000..4e1e130 --- /dev/null +++ b/notifications/translations/push/daily_bonus/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీ రోజువారీ బోనస్‌ను క్లెయిమ్ చేయడానికి మీకు 1 గంట సమయం ఉంది. మిస్ అవ్వకండి!", + "title": "🎉 రోజువారీ బోనస్ హెచ్చరిక!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/th.txt b/notifications/translations/push/daily_bonus/th.txt new file mode 100644 index 0000000..103868c --- /dev/null +++ b/notifications/translations/push/daily_bonus/th.txt @@ -0,0 +1,4 @@ +{ + "body": "คุณมีเวลา 1 ชั่วโมงในการรับโบนัสรายวันของคุณ อย่าพลาด!", + "title": "🎉 การแจ้งเตือนโบนัสรายวัน!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/tr.txt b/notifications/translations/push/daily_bonus/tr.txt new file mode 100644 index 0000000..d487635 --- /dev/null +++ b/notifications/translations/push/daily_bonus/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Günlük bonusunuzu talep etmek için 1 saatiniz var. kaçırmayın!", + "title": "🎉 Günlük Bonus Uyarısı!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/uk.txt b/notifications/translations/push/daily_bonus/uk.txt new file mode 100644 index 0000000..a3ceb16 --- /dev/null +++ b/notifications/translations/push/daily_bonus/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "У вас є 1 година, щоб отримати щоденний бонус. Не пропустіть!", + "title": "🎉 Сповіщення про щоденний бонус!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/ur.txt b/notifications/translations/push/daily_bonus/ur.txt new file mode 100644 index 0000000..cfdae4d --- /dev/null +++ b/notifications/translations/push/daily_bonus/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "آپ کے پاس اپنے یومیہ بونس کا دعوی کرنے کے لیے 1 گھنٹہ ہے۔ مت چھوڑیں!", + "title": "🎉 روزانہ بونس الرٹ!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/vi.txt b/notifications/translations/push/daily_bonus/vi.txt new file mode 100644 index 0000000..5ab37f8 --- /dev/null +++ b/notifications/translations/push/daily_bonus/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Bạn có 1 giờ để yêu cầu tiền thưởng hàng ngày của mình. Đừng bỏ lỡ!", + "title": "🎉 Cảnh báo tiền thưởng hàng ngày!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/yo.txt b/notifications/translations/push/daily_bonus/yo.txt new file mode 100644 index 0000000..075d88a --- /dev/null +++ b/notifications/translations/push/daily_bonus/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "O ni wakati 1 lati beere ẹbun ojoojumọ rẹ. Maṣe padanu!", + "title": "🎉 Ojoojumọ Bonus Alert!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/zh-hans.txt b/notifications/translations/push/daily_bonus/zh-hans.txt new file mode 100644 index 0000000..6faf248 --- /dev/null +++ b/notifications/translations/push/daily_bonus/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "您有 1 小时的时间领取每日奖金。 不要错过!", + "title": "🎉 每日奖金提醒!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/zh-hant.txt b/notifications/translations/push/daily_bonus/zh-hant.txt new file mode 100644 index 0000000..be0eb19 --- /dev/null +++ b/notifications/translations/push/daily_bonus/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "您有 1 小時的時間領取每日獎金。 不要錯過!", + "title": "🎉 每日獎金提醒!" +} \ No newline at end of file diff --git a/notifications/translations/push/daily_bonus/zu.txt b/notifications/translations/push/daily_bonus/zu.txt new file mode 100644 index 0000000..7800c8a --- /dev/null +++ b/notifications/translations/push/daily_bonus/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Unehora elingu-1 lokufuna ibhonasi yakho yansuku zonke. Ungaphuthelwa!", + "title": "🎉 Isexwayiso Sebhonasi Yansuku zonke!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/af.txt b/notifications/translations/push/level_badge_unlocked/af.txt new file mode 100644 index 0000000..8d877bb --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Jy het die {{.BadgeName}}-vlakkenteken ontsluit! Kyk dit in jou profiel.", + "title": "🎉 Nuwe kenteken verdien!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/am.txt b/notifications/translations/push/level_badge_unlocked/am.txt new file mode 100644 index 0000000..dda1d4d --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/am.txt @@ -0,0 +1,4 @@ +{ + "body": "የ{{.BadgeName}} ደረጃ ባጅ ከፍተዋል! በመገለጫዎ ውስጥ ይመልከቱት።", + "title": "🎉 አዲስ ባጅ ተገኘ!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ar.txt b/notifications/translations/push/level_badge_unlocked/ar.txt new file mode 100644 index 0000000..f14e7e7 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "لقد فتحت شارة مستوى {{.BadgeName}}! تحقق من ذلك في ملف التعريف الخاص بك.", + "title": "🎉 تم الحصول على شارة جديدة!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/az.txt b/notifications/translations/push/level_badge_unlocked/az.txt new file mode 100644 index 0000000..9132460 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Siz {{.BadgeName}} səviyyəli nişanı açdınız! Bunu profilinizdə yoxlayın.", + "title": "🎉 Yeni nişan qazanıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/bg.txt b/notifications/translations/push/level_badge_unlocked/bg.txt new file mode 100644 index 0000000..af04b5a --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Отключихте значката за ниво {{.BadgeName}}! Вижте го в профила си.", + "title": "🎉 Спечелена нова значка!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/bn.txt b/notifications/translations/push/level_badge_unlocked/bn.txt new file mode 100644 index 0000000..7cc421e --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "আপনি {{.BadgeName}} স্তরের ব্যাজ আনলক করেছেন! আপনার প্রোফাইলে এটি পরীক্ষা করে দেখুন.", + "title": "🎉 নতুন ব্যাজ অর্জিত!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/cs.txt b/notifications/translations/push/level_badge_unlocked/cs.txt new file mode 100644 index 0000000..d764351 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Odemkli jste odznak úrovně {{.BadgeName}}! Podívejte se na svůj profil.", + "title": "🎉 Získali jste nový odznak!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/de.txt b/notifications/translations/push/level_badge_unlocked/de.txt new file mode 100644 index 0000000..9d8cf0a --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Du hast das Level-Abzeichen {{.BadgeName}} freigeschaltet! Sieh es dir in deinem Profil an.", + "title": "🎉 Neues Abzeichen verdient!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/en.txt b/notifications/translations/push/level_badge_unlocked/en.txt new file mode 100644 index 0000000..7d0e11d --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/en.txt @@ -0,0 +1,4 @@ +{ + "body": "You've unlocked the {{.BadgeName}} level badge! Check it out in your profile.", + "title": "🎉 New badge earned!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/es.txt b/notifications/translations/push/level_badge_unlocked/es.txt new file mode 100644 index 0000000..7625904 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡Has desbloqueado la insignia de nivel {{.BadgeName}}! Compruébalo en tu perfil.", + "title": "🎉 ¡Nueva insignia ganada!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/fa.txt b/notifications/translations/push/level_badge_unlocked/fa.txt new file mode 100644 index 0000000..b5a7b95 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "شما نشان سطح {{.BadgeName}} را باز کرده اید! آن را در پروفایل خود بررسی کنید.", + "title": "🎉 نشان جدید به دست آورد!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/fil.txt b/notifications/translations/push/level_badge_unlocked/fil.txt new file mode 100644 index 0000000..a563a20 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Na-unlock mo ang {{.BadgeName}} level badge! Tingnan ito sa iyong profile.", + "title": "🎉 Bagong badge ang nakuha!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/fr.txt b/notifications/translations/push/level_badge_unlocked/fr.txt new file mode 100644 index 0000000..a21abcd --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Vous avez débloqué le badge de niveau {{.BadgeName}}! Vérifiez-le dans votre profil.", + "title": "🎉 Nouveau badge gagné!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ge.txt b/notifications/translations/push/level_badge_unlocked/ge.txt new file mode 100644 index 0000000..a77a9da --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Ξεκλειδώσατε το σήμα επιπέδου {{.BadgeName}}! Δείτε το στο προφίλ σας.", + "title": "🎉 Κερδίστηκε νέο σήμα!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/gu.txt b/notifications/translations/push/level_badge_unlocked/gu.txt new file mode 100644 index 0000000..a072db0 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમે {{.BadgeName}} લેવલનો બેજ અનલૉક કર્યો છે! તેને તમારી પ્રોફાઇલમાં તપાસો.", + "title": "🎉 નવો બેજ મેળવ્યો!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/he.txt b/notifications/translations/push/level_badge_unlocked/he.txt new file mode 100644 index 0000000..db4d117 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/he.txt @@ -0,0 +1,4 @@ +{ + "body": "פתחת את התג ברמת {{.BadgeName}}! בדוק את זה בפרופיל שלך.", + "title": "🎉 זכה בתג חדש!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/hi.txt b/notifications/translations/push/level_badge_unlocked/hi.txt new file mode 100644 index 0000000..519b343 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपने {{.BadgeName}} स्तर का बैज अनलॉक कर लिया है! इसे अपने प्रोफाइल में देखें।", + "title": "🎉 नया बैज अर्जित किया गया!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/hu.txt b/notifications/translations/push/level_badge_unlocked/hu.txt new file mode 100644 index 0000000..f241400 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Feloldottad a {{.BadgeName}} szintjelvényt! Nézd meg a profilodban.", + "title": "🎉 Új jelvényt szerzett!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/id.txt b/notifications/translations/push/level_badge_unlocked/id.txt new file mode 100644 index 0000000..f32edda --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda telah membuka lencana level {{.BadgeName}}! Lihat di profil Anda.", + "title": "🎉 Lencana baru diperoleh!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/it.txt b/notifications/translations/push/level_badge_unlocked/it.txt new file mode 100644 index 0000000..283f062 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Hai sbloccato il badge di livello {{.BadgeName}}! Dai un'occhiata nel tuo profilo.", + "title": "🎉 Nuovo badge guadagnato!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ja.txt b/notifications/translations/push/level_badge_unlocked/ja.txt new file mode 100644 index 0000000..9490235 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} レベル バッジをアンロックしました! プロフィールからチェックしてみてください。", + "title": "🎉 新しいバッジを獲得しました!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/jv.txt b/notifications/translations/push/level_badge_unlocked/jv.txt new file mode 100644 index 0000000..c4eb85f --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Sampeyan wis mbukak badge level {{.BadgeName}}! Priksa metu ing profil.", + "title": "🎉 Lencana anyar entuk!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/kn.txt b/notifications/translations/push/level_badge_unlocked/kn.txt new file mode 100644 index 0000000..51d1ee2 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನೀವು {{.BadgeName}} ಮಟ್ಟದ ಬ್ಯಾಡ್ಜ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಿರುವಿರಿ! ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ನಲ್ಲಿ ಇದನ್ನು ಪರಿಶೀಲಿಸಿ.", + "title": "🎉 ಹೊಸ ಬ್ಯಾಡ್ಜ್ ಗಳಿಸಲಾಗಿದೆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ko.txt b/notifications/translations/push/level_badge_unlocked/ko.txt new file mode 100644 index 0000000..fd5a408 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} 레벨 배지를 잠금 해제했습니다! 프로필에서 확인하세요.", + "title": "🎉 새로운 배지를 획득했습니다!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/mr.txt b/notifications/translations/push/level_badge_unlocked/mr.txt new file mode 100644 index 0000000..33312cb --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तुम्ही {{.BadgeName}} स्तराचा बॅज अनलॉक केला आहे! तुमच्या प्रोफाइलमध्ये ते पहा.", + "title": "🎉 नवीन बॅज मिळवला!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ms.txt b/notifications/translations/push/level_badge_unlocked/ms.txt new file mode 100644 index 0000000..1977e34 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda telah membuka kunci lencana peringkat {{.BadgeName}}! Semak dalam profil anda.", + "title": "🎉 Lencana baharu diperoleh!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/no.txt b/notifications/translations/push/level_badge_unlocked/no.txt new file mode 100644 index 0000000..e17ca45 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har låst opp nivåmerket {{.BadgeName}}! Sjekk det ut i profilen din.", + "title": "🎉 Nytt merke opptjent!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/pa.txt b/notifications/translations/push/level_badge_unlocked/pa.txt new file mode 100644 index 0000000..3ef8995 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਸੀਂ {{.BadgeName}} ਪੱਧਰ ਬੈਜ ਨੂੰ ਅਨਲੌਕ ਕਰ ਲਿਆ ਹੈ! ਇਸਨੂੰ ਆਪਣੇ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਦੇਖੋ।", + "title": "🎉 ਨਵਾਂ ਬੈਜ ਕਮਾਇਆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/pl.txt b/notifications/translations/push/level_badge_unlocked/pl.txt new file mode 100644 index 0000000..3a430da --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Odblokowałeś odznakę poziomu {{.BadgeName}}! Sprawdź to w swoim profilu.", + "title": "🎉 Zdobyto nową odznakę!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ps.txt b/notifications/translations/push/level_badge_unlocked/ps.txt new file mode 100644 index 0000000..b8b65a0 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "تاسو د {{.BadgeName}} کچې بیج خلاص کړی! په خپل پروفایل کې یې وګورئ.", + "title": "🎉 نوی بیج ترلاسه کړ!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/pt.txt b/notifications/translations/push/level_badge_unlocked/pt.txt new file mode 100644 index 0000000..0d73c87 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Você desbloqueou a insígnia de nível {{.BadgeName}}! Confira no seu perfil.", + "title": "🎉 Nova insígnia conquistada!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ro.txt b/notifications/translations/push/level_badge_unlocked/ro.txt new file mode 100644 index 0000000..d897c87 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Ați deblocat insigna la nivel {{.BadgeName}}! Verifică-l în profilul tău.", + "title": "🎉 Insigna nouă obținută!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ru.txt b/notifications/translations/push/level_badge_unlocked/ru.txt new file mode 100644 index 0000000..55ad536 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Вы разблокировали значок уровня {{.BadgeName}}! Проверьте это в своем профиле.", + "title": "🎉 Получен новый значок!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/sd.txt b/notifications/translations/push/level_badge_unlocked/sd.txt new file mode 100644 index 0000000..52fb737 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توھان ان لاڪ ڪيو آھي {{.BadgeName}} ليول بيج! ان کي چيڪ ڪريو توهان جي پروفائيل ۾.", + "title": "🎉 نئون بيج ڪمايو!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/sk.txt b/notifications/translations/push/level_badge_unlocked/sk.txt new file mode 100644 index 0000000..7798ae5 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Odomkli ste odznak úrovne {{.BadgeName}}! Pozrite si to vo svojom profile.", + "title": "🎉 Získali ste nový odznak!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/sl.txt b/notifications/translations/push/level_badge_unlocked/sl.txt new file mode 100644 index 0000000..d3d26e5 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Odklenili ste značko ravni {{.BadgeName}}! Preverite v svojem profilu.", + "title": "🎉 Pridobljena nova značka!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/sq.txt b/notifications/translations/push/level_badge_unlocked/sq.txt new file mode 100644 index 0000000..800a16b --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Ke zhbllokuar distinktivin e nivelit {{.BadgeName}}! Shikojeni në profilin tuaj.", + "title": "🎉 Fituar distinktivin e ri!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/su.txt b/notifications/translations/push/level_badge_unlocked/su.txt new file mode 100644 index 0000000..2aeab9f --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Anjeun geus muka konci lencana tingkat {{.BadgeName}}! Pariksa dina profil anjeun.", + "title": "🎉 Lencana anyar meunang!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/sv.txt b/notifications/translations/push/level_badge_unlocked/sv.txt new file mode 100644 index 0000000..e31895e --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har låst upp nivåmärket {{.BadgeName}}! Kolla in det i din profil.", + "title": "🎉 Nytt märke intjänat!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ta.txt b/notifications/translations/push/level_badge_unlocked/ta.txt new file mode 100644 index 0000000..85c4795 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} நிலை பேட்ஜைத் திறந்துவிட்டீர்கள்! அதை உங்கள் சுயவிவரத்தில் பார்க்கவும்.", + "title": "🎉 புதிய பேட்ஜ் கிடைத்தது!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/te.txt b/notifications/translations/push/level_badge_unlocked/te.txt new file mode 100644 index 0000000..1f1afe7 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీరు {{.BadgeName}} స్థాయి బ్యాడ్జ్‌ని అన్‌లాక్ చేసారు! మీ ప్రొఫైల్‌లో దాన్ని తనిఖీ చేయండి.", + "title": "🎉 కొత్త బ్యాడ్జ్ సంపాదించారు!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/th.txt b/notifications/translations/push/level_badge_unlocked/th.txt new file mode 100644 index 0000000..0109efb --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/th.txt @@ -0,0 +1,4 @@ +{ + "body": "คุณปลดล็อกป้ายระดับ {{.BadgeName}} แล้ว! ลองดูในโปรไฟล์ของคุณ", + "title": "🎉 ได้รับตราใหม่แล้ว!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/tr.txt b/notifications/translations/push/level_badge_unlocked/tr.txt new file mode 100644 index 0000000..89b09ad --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} seviye rozetini açtınız! Profilinizde kontrol edin.", + "title": "🎉 Yeni rozet kazanıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/uk.txt b/notifications/translations/push/level_badge_unlocked/uk.txt new file mode 100644 index 0000000..9c63e6e --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Ви розблокували значок рівня {{.BadgeName}}! Перегляньте це у своєму профілі.", + "title": "🎉 Отримано новий значок!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/ur.txt b/notifications/translations/push/level_badge_unlocked/ur.txt new file mode 100644 index 0000000..48c2381 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "آپ نے {{.BadgeName}} لیول کے بیج کو غیر مقفل کر دیا ہے! اسے اپنے پروفائل میں چیک کریں۔", + "title": "🎉 نیا بیج حاصل کیا گیا!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/vi.txt b/notifications/translations/push/level_badge_unlocked/vi.txt new file mode 100644 index 0000000..723978b --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Bạn đã mở khóa huy hiệu cấp độ {{.BadgeName}}! Kiểm tra nó ra trong hồ sơ của bạn.", + "title": "🎉 Đã kiếm được huy hiệu mới!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/yo.txt b/notifications/translations/push/level_badge_unlocked/yo.txt new file mode 100644 index 0000000..35b0a65 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "O ti ṣii baaji ipele {{.BadgeName}}! Ṣayẹwo rẹ ninu profaili rẹ.", + "title": "🎉 Titun baaji mina!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/zh-hans.txt b/notifications/translations/push/level_badge_unlocked/zh-hans.txt new file mode 100644 index 0000000..3be7d38 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "你已经解锁了 {{.BadgeName}} 等级徽章! 在您的个人资料中查看。", + "title": "🎉 获得新徽章!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/zh-hant.txt b/notifications/translations/push/level_badge_unlocked/zh-hant.txt new file mode 100644 index 0000000..1748741 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "你已經解鎖了 {{.BadgeName}} 等級徽章! 在您的個人資料中查看。", + "title": "🎉 獲得新徽章!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_badge_unlocked/zu.txt b/notifications/translations/push/level_badge_unlocked/zu.txt new file mode 100644 index 0000000..d9023b9 --- /dev/null +++ b/notifications/translations/push/level_badge_unlocked/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Uvule ibheji yezinga le-{{.BadgeName}}! Kuhlole kuphrofayela yakho.", + "title": "🎉 Ibheji elisha elizuziwe!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/af.txt b/notifications/translations/push/level_changed/af.txt new file mode 100644 index 0000000..49ec579 --- /dev/null +++ b/notifications/translations/push/level_changed/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Baie geluk! Jou harde werk werp vrugte af, hou aan om gelyk te maak! 🏆", + "title": "🚀 'n Nuwe vlak bereik!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/am.txt b/notifications/translations/push/level_changed/am.txt new file mode 100644 index 0000000..6010b17 --- /dev/null +++ b/notifications/translations/push/level_changed/am.txt @@ -0,0 +1,4 @@ +{ + "body": "እንኳን ደስ አለዎት! ጠንክሮ መሥራትዎ ፍሬያማ ነው ፣ ደረጃዎን ይቀጥሉ! 🏆", + "title": "🚀 አዲስ ደረጃ ደርሷል!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ar.txt b/notifications/translations/push/level_changed/ar.txt new file mode 100644 index 0000000..1f197e0 --- /dev/null +++ b/notifications/translations/push/level_changed/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "تهانينا! عملك الشاق يؤتي ثماره ، استمر في رفع المستوى! 🏆", + "title": "🚀 تحقق مستوى جديد!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/az.txt b/notifications/translations/push/level_changed/az.txt new file mode 100644 index 0000000..6c47c1b --- /dev/null +++ b/notifications/translations/push/level_changed/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Təbrik edirik! Zəhmətiniz bəhrəsini verir, səviyyənizi yüksəltməyə davam edin! 🏆", + "title": "🚀 Yeni səviyyə əldə edildi!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/bg.txt b/notifications/translations/push/level_changed/bg.txt new file mode 100644 index 0000000..c80e10b --- /dev/null +++ b/notifications/translations/push/level_changed/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Честито! Вашата упорита работа се отплаща, продължавайте да се изравнявате! 🏆", + "title": "🚀 Постигнато ново ниво!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/bn.txt b/notifications/translations/push/level_changed/bn.txt new file mode 100644 index 0000000..ed3988a --- /dev/null +++ b/notifications/translations/push/level_changed/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "অভিনন্দন! আপনার কঠোর পরিশ্রম প্রতিফলিত হচ্ছে, সমতল করতে থাকুন! 🏆", + "title": "🚀 একটি নতুন স্তর অর্জন!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/cs.txt b/notifications/translations/push/level_changed/cs.txt new file mode 100644 index 0000000..12e7774 --- /dev/null +++ b/notifications/translations/push/level_changed/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Gratulujeme! Vaše tvrdá práce se vyplácí, pokračujte v levelování! 🏆", + "title": "🚀 Nová úroveň dosažena!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/de.txt b/notifications/translations/push/level_changed/de.txt new file mode 100644 index 0000000..0e23d9c --- /dev/null +++ b/notifications/translations/push/level_changed/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Glückwünsche! Deine harte Arbeit zahlt sich aus, steige weiter auf! 🏆", + "title": "🚀 Ein neues Level erreicht!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/en.txt b/notifications/translations/push/level_changed/en.txt new file mode 100644 index 0000000..3e1f7af --- /dev/null +++ b/notifications/translations/push/level_changed/en.txt @@ -0,0 +1,4 @@ +{ + "body": "Congratulations! Your hard work is paying off, keep leveling up! 🏆", + "title": "🚀 A new level achieved!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/es.txt b/notifications/translations/push/level_changed/es.txt new file mode 100644 index 0000000..c3715d1 --- /dev/null +++ b/notifications/translations/push/level_changed/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡Felicidades! Tu arduo trabajo está dando sus frutos, ¡sigue subiendo de nivel! 🏆", + "title": "🚀 ¡Un nuevo nivel alcanzado!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/fa.txt b/notifications/translations/push/level_changed/fa.txt new file mode 100644 index 0000000..7e5d7ef --- /dev/null +++ b/notifications/translations/push/level_changed/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "تبریک می گویم! کار سخت شما نتیجه می دهد، به بالا رفتن ادامه دهید! 🏆", + "title": "🚀 یک سطح جدید به دست آمد!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/fil.txt b/notifications/translations/push/level_changed/fil.txt new file mode 100644 index 0000000..beafc35 --- /dev/null +++ b/notifications/translations/push/level_changed/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Binabati kita! Ang iyong pagsusumikap ay nagbubunga, magpatuloy sa pag-level up! 🏆", + "title": "🚀 Isang bagong antas ang nakamit!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/fr.txt b/notifications/translations/push/level_changed/fr.txt new file mode 100644 index 0000000..acd8b80 --- /dev/null +++ b/notifications/translations/push/level_changed/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Toutes nos félicitations! Votre travail acharné porte ses fruits, continuez à monter de niveau! 🏆", + "title": "🚀 Un nouveau palier atteint!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ge.txt b/notifications/translations/push/level_changed/ge.txt new file mode 100644 index 0000000..dc87e66 --- /dev/null +++ b/notifications/translations/push/level_changed/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Συγχαρητήρια! Η σκληρή δουλειά σας αποδίδει καρπούς, συνεχίστε να ανεβαίνετε επίπεδο! 🏆", + "title": "🚀 Επιτεύχθηκε ένα νέο επίπεδο!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/gu.txt b/notifications/translations/push/level_changed/gu.txt new file mode 100644 index 0000000..f125479 --- /dev/null +++ b/notifications/translations/push/level_changed/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "અભિનંદન! તમારી મહેનત રંગ લાવી રહી છે, સ્તર કરતા રહો! 🏆", + "title": "🚀 એક નવું સ્તર હાંસલ કર્યું!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/he.txt b/notifications/translations/push/level_changed/he.txt new file mode 100644 index 0000000..a2063de --- /dev/null +++ b/notifications/translations/push/level_changed/he.txt @@ -0,0 +1,4 @@ +{ + "body": "מזל טוב! העבודה הקשה שלך משתלמת, תמשיך לעלות רמה! 🏆", + "title": "🚀 הושגה רמה חדשה!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/hi.txt b/notifications/translations/push/level_changed/hi.txt new file mode 100644 index 0000000..26595a6 --- /dev/null +++ b/notifications/translations/push/level_changed/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "बधाई हो! आपकी मेहनत रंग ला रही है, लेवल बढ़ाते रहें! 🏆", + "title": "🚀 एक नया स्तर हासिल किया!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/hu.txt b/notifications/translations/push/level_changed/hu.txt new file mode 100644 index 0000000..6b551d5 --- /dev/null +++ b/notifications/translations/push/level_changed/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Gratulálunk! Kemény munkája meghozza gyümölcsét, lépj tovább! 🏆", + "title": "🚀 Új szint elérve!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/id.txt b/notifications/translations/push/level_changed/id.txt new file mode 100644 index 0000000..4b051cc --- /dev/null +++ b/notifications/translations/push/level_changed/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Selamat! Kerja kerasmu terbayar, terus naik level! 🏆", + "title": "🚀 Level baru tercapai!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/it.txt b/notifications/translations/push/level_changed/it.txt new file mode 100644 index 0000000..3d3aefd --- /dev/null +++ b/notifications/translations/push/level_changed/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Congratulazioni! Il tuo duro lavoro sta dando i suoi frutti, continua a salire di livello! 🏆", + "title": "🚀 Un nuovo livello raggiunto!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ja.txt b/notifications/translations/push/level_changed/ja.txt new file mode 100644 index 0000000..3b71541 --- /dev/null +++ b/notifications/translations/push/level_changed/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "おめでとう! あなたの努力は報われています。レベルアップを続けてください! 🏆", + "title": "🚀 新しいレベルが達成されました!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/jv.txt b/notifications/translations/push/level_changed/jv.txt new file mode 100644 index 0000000..d7a4791 --- /dev/null +++ b/notifications/translations/push/level_changed/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Sugeng! Kerja kerasmu terbayar, naik level terus! 🏆", + "title": "🚀 Tingkat anyar wis diraih!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/kn.txt b/notifications/translations/push/level_changed/kn.txt new file mode 100644 index 0000000..25bf7f8 --- /dev/null +++ b/notifications/translations/push/level_changed/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ಅಭಿನಂದನೆಗಳು! ನಿಮ್ಮ ಕಠಿಣ ಪರಿಶ್ರಮವು ಫಲ ನೀಡುತ್ತಿದೆ, ಸಮತಟ್ಟಾಗಿರಿ! 🏆", + "title": "🚀 ಹೊಸ ಮಟ್ಟವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ko.txt b/notifications/translations/push/level_changed/ko.txt new file mode 100644 index 0000000..3f8672f --- /dev/null +++ b/notifications/translations/push/level_changed/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "축하합니다! 당신의 노력은 성과를 거두고 있습니다. 계속해서 레벨을 올리세요! 🏆", + "title": "🚀 새로운 레벨 달성!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/mr.txt b/notifications/translations/push/level_changed/mr.txt new file mode 100644 index 0000000..bc320df --- /dev/null +++ b/notifications/translations/push/level_changed/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "अभिनंदन! तुमच्या मेहनतीचे फळ मिळत आहे, पातळी वाढवत रहा! 🏆", + "title": "🚀 एक नवीन पातळी गाठली!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ms.txt b/notifications/translations/push/level_changed/ms.txt new file mode 100644 index 0000000..ad38668 --- /dev/null +++ b/notifications/translations/push/level_changed/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Tahniah! Kerja keras anda membuahkan hasil, teruskan naik level! 🏆", + "title": "🚀 Tahap baharu dicapai!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/no.txt b/notifications/translations/push/level_changed/no.txt new file mode 100644 index 0000000..e94627f --- /dev/null +++ b/notifications/translations/push/level_changed/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Gratulerer! Det harde arbeidet ditt lønner seg, fortsett med nivået opp! 🏆", + "title": "🚀 Et nytt nivå oppnådd!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/pa.txt b/notifications/translations/push/level_changed/pa.txt new file mode 100644 index 0000000..9111ba3 --- /dev/null +++ b/notifications/translations/push/level_changed/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਵਧਾਈਆਂ! ਤੁਹਾਡੀ ਮਿਹਨਤ ਰੰਗ ਲਿਆ ਰਹੀ ਹੈ, ਪੱਧਰ ਨੂੰ ਵਧਾਓ! 🏆", + "title": "🚀 ਇੱਕ ਨਵਾਂ ਪੱਧਰ ਪ੍ਰਾਪਤ ਕੀਤਾ!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/pl.txt b/notifications/translations/push/level_changed/pl.txt new file mode 100644 index 0000000..71dcd33 --- /dev/null +++ b/notifications/translations/push/level_changed/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Gratulacje! Twoja ciężka praca się opłaca, zdobywaj kolejne poziomy! 🏆", + "title": "🚀 Nowy poziom osiągnięty!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ps.txt b/notifications/translations/push/level_changed/ps.txt new file mode 100644 index 0000000..bc03b9d --- /dev/null +++ b/notifications/translations/push/level_changed/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "مبارک شه! ستاسو سخت کار پای ته رسیږي، سطح ته دوام ورکړئ! 🏆", + "title": "🚀 یوه نوې کچه ترلاسه کړه!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/pt.txt b/notifications/translations/push/level_changed/pt.txt new file mode 100644 index 0000000..083bc8a --- /dev/null +++ b/notifications/translations/push/level_changed/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Parabéns! Seu trabalho duro está valendo a pena, continue subindo de nível! 🏆", + "title": "🚀 Um novo nível alcançado!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ro.txt b/notifications/translations/push/level_changed/ro.txt new file mode 100644 index 0000000..6bb4efa --- /dev/null +++ b/notifications/translations/push/level_changed/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Felicitări! Munca ta grea dă roade, continuă să crești nivelul! 🏆", + "title": "🚀 Un nou nivel atins!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ru.txt b/notifications/translations/push/level_changed/ru.txt new file mode 100644 index 0000000..0826023 --- /dev/null +++ b/notifications/translations/push/level_changed/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Поздравляю! Ваша тяжелая работа окупается, продолжайте повышать уровень! 🏆", + "title": "🚀 Достигнут новый уровень!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/sd.txt b/notifications/translations/push/level_changed/sd.txt new file mode 100644 index 0000000..4ec3c02 --- /dev/null +++ b/notifications/translations/push/level_changed/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "مبارڪون! توهان جي محنت ادا ٿي رهي آهي، سطح تي رکو! 🏆", + "title": "🚀 هڪ نئين سطح حاصل ڪئي!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/sk.txt b/notifications/translations/push/level_changed/sk.txt new file mode 100644 index 0000000..7a1823b --- /dev/null +++ b/notifications/translations/push/level_changed/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Gratulujem! Vaša tvrdá práca sa vypláca, pokračujte v levelovaní! 🏆", + "title": "🚀 Dosiahnutá nová úroveň!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/sl.txt b/notifications/translations/push/level_changed/sl.txt new file mode 100644 index 0000000..78c2873 --- /dev/null +++ b/notifications/translations/push/level_changed/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Čestitam! Vaše trdo delo je poplačano, napredujte naprej! 🏆", + "title": "🚀 Dosežena nova raven!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/sq.txt b/notifications/translations/push/level_changed/sq.txt new file mode 100644 index 0000000..1952c8d --- /dev/null +++ b/notifications/translations/push/level_changed/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Urime! Puna juaj e palodhur po shpërblehet, vazhdoni të rriteni! 🏆", + "title": "🚀 Arritur një nivel të ri!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/su.txt b/notifications/translations/push/level_changed/su.txt new file mode 100644 index 0000000..a972c8a --- /dev/null +++ b/notifications/translations/push/level_changed/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Wilujeng! Kerja keras anjeun terbayar, terus tingkatkeun! 🏆", + "title": "🚀 Tingkat anyar kahontal!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/sv.txt b/notifications/translations/push/level_changed/sv.txt new file mode 100644 index 0000000..0a32ba7 --- /dev/null +++ b/notifications/translations/push/level_changed/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Grattis! Ditt hårda arbete lönar sig, fortsätt höja nivån! 🏆", + "title": "🚀 En ny nivå uppnådd!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ta.txt b/notifications/translations/push/level_changed/ta.txt new file mode 100644 index 0000000..936d4a3 --- /dev/null +++ b/notifications/translations/push/level_changed/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "வாழ்த்துக்கள்! உங்கள் கடின உழைப்பு பலனளிக்கிறது, தொடர்ந்து முன்னேறுங்கள்! 🏆", + "title": "🚀 ஒரு புதிய நிலை அடையப்பட்டது!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/te.txt b/notifications/translations/push/level_changed/te.txt new file mode 100644 index 0000000..54f576a --- /dev/null +++ b/notifications/translations/push/level_changed/te.txt @@ -0,0 +1,4 @@ +{ + "body": "అభినందనలు! మీ కృషి ఫలిస్తోంది, స్థాయిని పెంచుతూ ఉండండి! 🏆", + "title": "🚀 కొత్త స్థాయి సాధించబడింది!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/th.txt b/notifications/translations/push/level_changed/th.txt new file mode 100644 index 0000000..3920742 --- /dev/null +++ b/notifications/translations/push/level_changed/th.txt @@ -0,0 +1,4 @@ +{ + "body": "ยินดีด้วย! การทำงานหนักของคุณกำลังได้รับผลตอบแทน เลื่อนระดับต่อไป! 🏆", + "title": "🚀 บรรลุระดับใหม่แล้ว!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/tr.txt b/notifications/translations/push/level_changed/tr.txt new file mode 100644 index 0000000..368423a --- /dev/null +++ b/notifications/translations/push/level_changed/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Tebrikler! Sıkı çalışman meyvesini veriyor, seviye atlamaya devam et! 🏆", + "title": "🚀 Yeni bir seviyeye ulaşıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/uk.txt b/notifications/translations/push/level_changed/uk.txt new file mode 100644 index 0000000..bd90344 --- /dev/null +++ b/notifications/translations/push/level_changed/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Вітаємо! Ваша важка праця окупається, продовжуйте розвиватися! 🏆", + "title": "🚀 Досягнуто нового рівня!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/ur.txt b/notifications/translations/push/level_changed/ur.txt new file mode 100644 index 0000000..ead6c94 --- /dev/null +++ b/notifications/translations/push/level_changed/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "مبارک ہو! آپ کی محنت رنگ لے رہی ہے، برابر کرتے رہیں! 🏆", + "title": "🚀 ایک نئی سطح حاصل کی!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/vi.txt b/notifications/translations/push/level_changed/vi.txt new file mode 100644 index 0000000..9a35bd8 --- /dev/null +++ b/notifications/translations/push/level_changed/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Xin chúc mừng! Công việc khó khăn của bạn đang được đền đáp, hãy tiếp tục tăng cấp! 🏆", + "title": "🚀 Đã đạt được một cấp độ mới!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/yo.txt b/notifications/translations/push/level_changed/yo.txt new file mode 100644 index 0000000..1f827c9 --- /dev/null +++ b/notifications/translations/push/level_changed/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "Oriire! Iṣẹ takuntakun rẹ n sanwo, tẹsiwaju ni ipele! 🏆", + "title": "🚀 Ipele tuntun ti ṣaṣeyọri!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/zh-hans.txt b/notifications/translations/push/level_changed/zh-hans.txt new file mode 100644 index 0000000..1c639e2 --- /dev/null +++ b/notifications/translations/push/level_changed/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "恭喜! 你的努力得到了回报,继续升级! 🏆", + "title": "🚀 达到了新的水平!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/zh-hant.txt b/notifications/translations/push/level_changed/zh-hant.txt new file mode 100644 index 0000000..b794c32 --- /dev/null +++ b/notifications/translations/push/level_changed/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "恭喜! 你的努力得到了回報,繼續升級! 🏆", + "title": "🚀 達到了新的水平!" +} \ No newline at end of file diff --git a/notifications/translations/push/level_changed/zu.txt b/notifications/translations/push/level_changed/zu.txt new file mode 100644 index 0000000..91461b4 --- /dev/null +++ b/notifications/translations/push/level_changed/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Siyakuhalalisela! Ukusebenza kanzima kwakho kuyathela, qhubeka ukhuphuka! 🏆", + "title": "🚀 Izinga elisha elizuziwe!" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/af.txt b/notifications/translations/push/new_contact/af.txt new file mode 100644 index 0000000..b431e42 --- /dev/null +++ b/notifications/translations/push/new_contact/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Een van jou vriende is nou deel van die ice-gemeenskap. 🚀", + "title": "👋 Jou vriend {{.Username}} het by ice aangesluit" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/am.txt b/notifications/translations/push/new_contact/am.txt new file mode 100644 index 0000000..fda8133 --- /dev/null +++ b/notifications/translations/push/new_contact/am.txt @@ -0,0 +1,4 @@ +{ + "body": "ከጓደኞችዎ አንዱ አሁን የ ice ማህበረሰብ አካል ነው። 🚀", + "title": "👋 ጓደኛህ {{.Username}} iceን ተቀላቅሏል።" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ar.txt b/notifications/translations/push/new_contact/ar.txt new file mode 100644 index 0000000..a75bb8b --- /dev/null +++ b/notifications/translations/push/new_contact/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "أصبح أحد أصدقائك الآن جزءًا من مجتمع ice. 🚀", + "title": " انضم صديقك {{.Username}} إلى ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/az.txt b/notifications/translations/push/new_contact/az.txt new file mode 100644 index 0000000..99af811 --- /dev/null +++ b/notifications/translations/push/new_contact/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Dostlarınızdan biri indi ice icmasının üzvüdür. 🚀", + "title": "👋 Dostunuz {{.Username}} ice-ə qoşuldu" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/bg.txt b/notifications/translations/push/new_contact/bg.txt new file mode 100644 index 0000000..b41dc8f --- /dev/null +++ b/notifications/translations/push/new_contact/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Един от вашите приятели вече е част от общността на ice. 🚀", + "title": "👋 Вашият приятел {{.Username}} се присъедини към ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/bn.txt b/notifications/translations/push/new_contact/bn.txt new file mode 100644 index 0000000..6d07fc9 --- /dev/null +++ b/notifications/translations/push/new_contact/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "আপনার বন্ধুদের একজন এখন ice সম্প্রদায়ের অংশ। 🚀", + "title": "👋 আপনার বন্ধু {{.Username}} ice-এ যোগ দিয়েছেন" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/cs.txt b/notifications/translations/push/new_contact/cs.txt new file mode 100644 index 0000000..8d84b97 --- /dev/null +++ b/notifications/translations/push/new_contact/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Jeden z vašich přátel je nyní součástí komunity ice. 🚀", + "title": "👋 Váš přítel {{.Username}} se připojil k ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/de.txt b/notifications/translations/push/new_contact/de.txt new file mode 100644 index 0000000..5683b4c --- /dev/null +++ b/notifications/translations/push/new_contact/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Einer Ihrer Freunde ist jetzt Teil der ice-Community. 🚀", + "title": "👋 Dein Freund {{.Username}} ist ice beigetreten" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/en.txt b/notifications/translations/push/new_contact/en.txt new file mode 100644 index 0000000..bea6af6 --- /dev/null +++ b/notifications/translations/push/new_contact/en.txt @@ -0,0 +1,4 @@ +{ + "body": "One of your friends is now part of the ice community. 🚀", + "title": "👋 Your friend {{.Username}} joined ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/es.txt b/notifications/translations/push/new_contact/es.txt new file mode 100644 index 0000000..ba82ff5 --- /dev/null +++ b/notifications/translations/push/new_contact/es.txt @@ -0,0 +1,4 @@ +{ + "body": "Uno de tus amigos ahora es parte de la comunidad ice. 🚀", + "title": "👋 Tu amigo {{.Username}} se unió a ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/fa.txt b/notifications/translations/push/new_contact/fa.txt new file mode 100644 index 0000000..2f6f555 --- /dev/null +++ b/notifications/translations/push/new_contact/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "یکی از دوستان شما اکنون بخشی از جامعه ice است. 🚀", + "title": "👋 دوست شما {{.Username}} به ice پیوست" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/fil.txt b/notifications/translations/push/new_contact/fil.txt new file mode 100644 index 0000000..b846d69 --- /dev/null +++ b/notifications/translations/push/new_contact/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Isa sa iyong mga kaibigan ay bahagi na ngayon ng komunidad ng ice. 🚀", + "title": "👋 Sumali sa ice ang kaibigan mong si {{.Username}}" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/fr.txt b/notifications/translations/push/new_contact/fr.txt new file mode 100644 index 0000000..6de5fe6 --- /dev/null +++ b/notifications/translations/push/new_contact/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Un de vos amis fait maintenant partie de la communauté ice. 🚀", + "title": "👋 Votre ami {{.Username}} a rejoint ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ge.txt b/notifications/translations/push/new_contact/ge.txt new file mode 100644 index 0000000..7d763d9 --- /dev/null +++ b/notifications/translations/push/new_contact/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Ένας από τους φίλους σας είναι πλέον μέλος της κοινότητας ice. 🚀", + "title": "👋 Ο φίλος σας {{.Username}} εντάχθηκε στο ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/gu.txt b/notifications/translations/push/new_contact/gu.txt new file mode 100644 index 0000000..619101b --- /dev/null +++ b/notifications/translations/push/new_contact/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમારો એક મિત્ર હવે ice સમુદાયનો ભાગ છે. 🚀", + "title": "👋 તમારો મિત્ર {{.Username}} ice માં જોડાયો" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/he.txt b/notifications/translations/push/new_contact/he.txt new file mode 100644 index 0000000..ded6ea2 --- /dev/null +++ b/notifications/translations/push/new_contact/he.txt @@ -0,0 +1,4 @@ +{ + "body": "אחד מחבריך הוא כעת חלק מקהילת ice. 🚀", + "title": "👋 החבר שלך {{.Username}} הצטרף ל-ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/hi.txt b/notifications/translations/push/new_contact/hi.txt new file mode 100644 index 0000000..958251d --- /dev/null +++ b/notifications/translations/push/new_contact/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपका एक मित्र अब ice समुदाय का हिस्सा है। 🚀", + "title": "👋 आपका मित्र {{.Username}} ice में शामिल हुआ" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/hu.txt b/notifications/translations/push/new_contact/hu.txt new file mode 100644 index 0000000..948188e --- /dev/null +++ b/notifications/translations/push/new_contact/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Az egyik barátod mostantól az ice közösség tagja. 🚀", + "title": "👋 {{.Username}} barátod csatlakozott az ice-hez" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/id.txt b/notifications/translations/push/new_contact/id.txt new file mode 100644 index 0000000..74e4a13 --- /dev/null +++ b/notifications/translations/push/new_contact/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Salah satu teman Anda sekarang menjadi bagian dari komunitas ice. 🚀", + "title": "👋 Temanmu {{.Username}} bergabung dengan ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/it.txt b/notifications/translations/push/new_contact/it.txt new file mode 100644 index 0000000..2a0a50c --- /dev/null +++ b/notifications/translations/push/new_contact/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Uno dei tuoi amici fa ora parte della comunità ice. 🚀", + "title": "👋 Il tuo amico {{.Username}} si è unito all'ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ja.txt b/notifications/translations/push/new_contact/ja.txt new file mode 100644 index 0000000..0c0f488 --- /dev/null +++ b/notifications/translations/push/new_contact/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "あなたの友人の 1 人が ice コミュニティの一員になりました。 🚀", + "title": "👋 あなたの友人 {{.Username}} が ice に参加しました" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/jv.txt b/notifications/translations/push/new_contact/jv.txt new file mode 100644 index 0000000..dc4cf89 --- /dev/null +++ b/notifications/translations/push/new_contact/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Salah sawijining kanca saiki dadi bagian saka komunitas ice. 🚀", + "title": "👋 Kancamu {{.Username}} melu ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/kn.txt b/notifications/translations/push/new_contact/kn.txt new file mode 100644 index 0000000..62d6c8e --- /dev/null +++ b/notifications/translations/push/new_contact/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನಿಮ್ಮ ಸ್ನೇಹಿತರಲ್ಲಿ ಒಬ್ಬರು ಈಗ ice ಸಮುದಾಯದ ಭಾಗವಾಗಿದ್ದಾರೆ. 🚀", + "title": "👋 ನಿಮ್ಮ ಸ್ನೇಹಿತ {{.Username}} ice ಸೇರಿದ್ದಾರೆ" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ko.txt b/notifications/translations/push/new_contact/ko.txt new file mode 100644 index 0000000..14c8887 --- /dev/null +++ b/notifications/translations/push/new_contact/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "친구 중 한 명이 이제 ice 커뮤니티의 일원이 되었습니다. 🚀", + "title": "👋 친구 {{.Username}}가 ice에 가입했습니다." +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/mr.txt b/notifications/translations/push/new_contact/mr.txt new file mode 100644 index 0000000..18d199f --- /dev/null +++ b/notifications/translations/push/new_contact/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तुमचा एक मित्र आता ice समुदायाचा भाग आहे. 🚀", + "title": "👋 तुमचा मित्र {{.Username}} ice मध्ये सामील झाला" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ms.txt b/notifications/translations/push/new_contact/ms.txt new file mode 100644 index 0000000..338fdf3 --- /dev/null +++ b/notifications/translations/push/new_contact/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Salah seorang rakan anda kini sebahagian daripada komuniti ice. 🚀", + "title": "👋 Rakan anda {{.Username}} menyertai ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/no.txt b/notifications/translations/push/new_contact/no.txt new file mode 100644 index 0000000..3f93019 --- /dev/null +++ b/notifications/translations/push/new_contact/no.txt @@ -0,0 +1,4 @@ +{ + "body": "En av vennene dine er nå en del av ice-fellesskapet. 🚀", + "title": "👋 Vennen din {{.Username}} ble med i ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/pa.txt b/notifications/translations/push/new_contact/pa.txt new file mode 100644 index 0000000..c03b8f7 --- /dev/null +++ b/notifications/translations/push/new_contact/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੁਣ ice ਭਾਈਚਾਰੇ ਦਾ ਹਿੱਸਾ ਹੈ। 🚀", + "title": "👋 ਤੁਹਾਡਾ ਦੋਸਤ {{.Username}} ice ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਇਆ" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/pl.txt b/notifications/translations/push/new_contact/pl.txt new file mode 100644 index 0000000..325a22b --- /dev/null +++ b/notifications/translations/push/new_contact/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Jeden z twoich znajomych jest teraz częścią społeczności ice. 🚀", + "title": "👋 Twój przyjaciel {{.Username}} dołączył do ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ps.txt b/notifications/translations/push/new_contact/ps.txt new file mode 100644 index 0000000..8f7808b --- /dev/null +++ b/notifications/translations/push/new_contact/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "ستاسو یو ملګری اوس د ice ټولنې برخه ده. 🚀", + "title": "👋 ستاسو ملګری {{.Username}} ice سره یوځای شو" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/pt.txt b/notifications/translations/push/new_contact/pt.txt new file mode 100644 index 0000000..d212aba --- /dev/null +++ b/notifications/translations/push/new_contact/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Um de seus amigos agora faz parte da comunidade ice. 🚀", + "title": "👋 Seu amigo {{.Username}} se juntou ao ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ro.txt b/notifications/translations/push/new_contact/ro.txt new file mode 100644 index 0000000..fc8011d --- /dev/null +++ b/notifications/translations/push/new_contact/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Unul dintre prietenii tăi face acum parte din comunitatea ice. 🚀", + "title": "👋 Prietenul tău {{.Username}} s-a alăturat ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ru.txt b/notifications/translations/push/new_contact/ru.txt new file mode 100644 index 0000000..5806bfa --- /dev/null +++ b/notifications/translations/push/new_contact/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Один из ваших друзей теперь является частью сообщества ice. 🚀", + "title": "👋 Ваш друг {{.Username}} присоединился к ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/sd.txt b/notifications/translations/push/new_contact/sd.txt new file mode 100644 index 0000000..8b097ea --- /dev/null +++ b/notifications/translations/push/new_contact/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توھان جو ھڪڙو دوست ھاڻي ice ڪميونٽي جو حصو آھي. 🚀", + "title": "👋 توهان جو دوست {{.Username}} ice ۾ شامل ٿيو" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/sk.txt b/notifications/translations/push/new_contact/sk.txt new file mode 100644 index 0000000..28c2951 --- /dev/null +++ b/notifications/translations/push/new_contact/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Jeden z vašich priateľov je teraz súčasťou komunity ice. 🚀", + "title": "👋 Váš priateľ {{.Username}} sa pripojil k ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/sl.txt b/notifications/translations/push/new_contact/sl.txt new file mode 100644 index 0000000..5bfc4fc --- /dev/null +++ b/notifications/translations/push/new_contact/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Eden od vaših prijateljev je zdaj del skupnosti ice. 🚀", + "title": "👋 Tvoj prijatelj {{.Username}} se je pridružil ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/sq.txt b/notifications/translations/push/new_contact/sq.txt new file mode 100644 index 0000000..b05555e --- /dev/null +++ b/notifications/translations/push/new_contact/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Një nga miqtë tuaj tani është pjesë e komunitetit ice. 🚀", + "title": "👋 Miku juaj {{.Username}} iu bashkua ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/su.txt b/notifications/translations/push/new_contact/su.txt new file mode 100644 index 0000000..8cfc593 --- /dev/null +++ b/notifications/translations/push/new_contact/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Salah sahiji babaturan anjeun ayeuna bagian tina komunitas ice. 🚀", + "title": "👋 Babaturan anjeun {{.Username}} gabung ka ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/sv.txt b/notifications/translations/push/new_contact/sv.txt new file mode 100644 index 0000000..7487a43 --- /dev/null +++ b/notifications/translations/push/new_contact/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "En av dina vänner är nu en del av ice-communityt. 🚀", + "title": "👋 Din vän {{.Username}} gick med i ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ta.txt b/notifications/translations/push/new_contact/ta.txt new file mode 100644 index 0000000..e87d8d0 --- /dev/null +++ b/notifications/translations/push/new_contact/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "உங்கள் நண்பர்களில் ஒருவர் இப்போது ice சமூகத்தின் ஒரு பகுதியாக உள்ளார். 🚀", + "title": "👋 உங்கள் நண்பர் {{.Username}} ice இல் சேர்ந்தார்" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/te.txt b/notifications/translations/push/new_contact/te.txt new file mode 100644 index 0000000..0390bf8 --- /dev/null +++ b/notifications/translations/push/new_contact/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీ స్నేహితుల్లో ఒకరు ఇప్పుడు ice సంఘంలో భాగం. 🚀", + "title": "👋 మీ స్నేహితుడు {{.Username}} iceలో చేరారు" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/th.txt b/notifications/translations/push/new_contact/th.txt new file mode 100644 index 0000000..024a2ae --- /dev/null +++ b/notifications/translations/push/new_contact/th.txt @@ -0,0 +1,4 @@ +{ + "body": "เพื่อนของคุณคนหนึ่งเป็นส่วนหนึ่งของชุมชน ice แล้ว 🚀", + "title": "👋 เพื่อนของคุณ {{.Username}} เข้าร่วม ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/tr.txt b/notifications/translations/push/new_contact/tr.txt new file mode 100644 index 0000000..4c7a207 --- /dev/null +++ b/notifications/translations/push/new_contact/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Arkadaşlarınızdan biri artık ice topluluğunun bir parçası. 🚀", + "title": "👋 Arkadaşınız {{.Username}} ice'ye katıldı" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/uk.txt b/notifications/translations/push/new_contact/uk.txt new file mode 100644 index 0000000..9b10a94 --- /dev/null +++ b/notifications/translations/push/new_contact/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Один із ваших друзів тепер є частиною спільноти ice. 🚀", + "title": "👋 Ваш друг {{.Username}} приєднався до ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/ur.txt b/notifications/translations/push/new_contact/ur.txt new file mode 100644 index 0000000..4db8d40 --- /dev/null +++ b/notifications/translations/push/new_contact/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "آپ کا ایک دوست اب ice کمیونٹی کا حصہ ہے۔ 🚀", + "title": "👋 آپ کے دوست {{.Username}} نے ice میں شمولیت اختیار کی۔" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/vi.txt b/notifications/translations/push/new_contact/vi.txt new file mode 100644 index 0000000..f6989b9 --- /dev/null +++ b/notifications/translations/push/new_contact/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Một trong những người bạn của bạn hiện là thành viên của cộng đồng ice. 🚀", + "title": "👋 Bạn của bạn {{.Username}} đã tham gia ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/yo.txt b/notifications/translations/push/new_contact/yo.txt new file mode 100644 index 0000000..94b3888 --- /dev/null +++ b/notifications/translations/push/new_contact/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "Ọkan ninu awọn ọrẹ rẹ jẹ apakan ti agbegbe ice. 🚀", + "title": "👋 Ọrẹ rẹ {{.Username}} darapọ mọ ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/zh-hans.txt b/notifications/translations/push/new_contact/zh-hans.txt new file mode 100644 index 0000000..61c125d --- /dev/null +++ b/notifications/translations/push/new_contact/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "你的一位朋友现在是 ice 社区的一员。 🚀", + "title": "👋 你的朋友{{.Username}} 加入了 ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/zh-hant.txt b/notifications/translations/push/new_contact/zh-hant.txt new file mode 100644 index 0000000..84ea8db --- /dev/null +++ b/notifications/translations/push/new_contact/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "你的一位朋友現在是 ice 社區的一員。 🚀", + "title": "👋 你的朋友{{.Username}} 加入了 ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_contact/zu.txt b/notifications/translations/push/new_contact/zu.txt new file mode 100644 index 0000000..05f4061 --- /dev/null +++ b/notifications/translations/push/new_contact/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Omunye wabangane bakho manje useyingxenye yomphakathi we-ice. 🚀", + "title": "👋 Umngane wakho u-{{.Username}} ujoyine i-ice" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/af.txt b/notifications/translations/push/new_referral/af.txt new file mode 100644 index 0000000..b953147 --- /dev/null +++ b/notifications/translations/push/new_referral/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Jou span het net groter geword! 🎉", + "title": "🔥 {{.Username}} het by jou span aangesluit." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/am.txt b/notifications/translations/push/new_referral/am.txt new file mode 100644 index 0000000..b8c1b83 --- /dev/null +++ b/notifications/translations/push/new_referral/am.txt @@ -0,0 +1,4 @@ +{ + "body": "የእርስዎ ቡድን አሁን ትልቅ ሆኗል! 🎉", + "title": "🔥 {{.Username}} ቡድንዎን ተቀላቅሏል።" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ar.txt b/notifications/translations/push/new_referral/ar.txt new file mode 100644 index 0000000..66725f5 --- /dev/null +++ b/notifications/translations/push/new_referral/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "فريقك أصبح أكبر للتو! 🎉", + "title": "🔥{{.Username}} انضم إلى فريقك." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/az.txt b/notifications/translations/push/new_referral/az.txt new file mode 100644 index 0000000..58244c9 --- /dev/null +++ b/notifications/translations/push/new_referral/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Komandanız daha da böyüdü! 🎉", + "title": "🔥 {{.Username}} komandanıza qoşuldu." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/bg.txt b/notifications/translations/push/new_referral/bg.txt new file mode 100644 index 0000000..f0eedef --- /dev/null +++ b/notifications/translations/push/new_referral/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Вашият екип току-що стана по-голям! 🎉", + "title": "🔥 {{.Username}} се присъедини към вашия екип." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/bn.txt b/notifications/translations/push/new_referral/bn.txt new file mode 100644 index 0000000..0a73e8e --- /dev/null +++ b/notifications/translations/push/new_referral/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "আপনার দল শুধু বড় হয়েছে! 🎉", + "title": "🔥 {{.Username}} আপনার দলে যোগ দিয়েছে।" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/cs.txt b/notifications/translations/push/new_referral/cs.txt new file mode 100644 index 0000000..49bbfe9 --- /dev/null +++ b/notifications/translations/push/new_referral/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Váš tým se právě rozrostl! 🎉", + "title": "🔥 {{.Username}} se připojil k vašemu týmu." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/de.txt b/notifications/translations/push/new_referral/de.txt new file mode 100644 index 0000000..d6e3e74 --- /dev/null +++ b/notifications/translations/push/new_referral/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Ihr Team ist gerade größer geworden! 🎉", + "title": "🔥 {{.Username}} ist Ihrem Team beigetreten." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/en.txt b/notifications/translations/push/new_referral/en.txt new file mode 100644 index 0000000..04afeba --- /dev/null +++ b/notifications/translations/push/new_referral/en.txt @@ -0,0 +1,4 @@ +{ + "body": " Your team just got bigger! 🎉", + "title": "🔥 {{.Username}} has joined your team." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/es.txt b/notifications/translations/push/new_referral/es.txt new file mode 100644 index 0000000..d87f700 --- /dev/null +++ b/notifications/translations/push/new_referral/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡Tu equipo acaba de crecer! 🎉", + "title": "🔥 {{.Username}} se ha unido a tu equipo." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/fa.txt b/notifications/translations/push/new_referral/fa.txt new file mode 100644 index 0000000..dba0d7e --- /dev/null +++ b/notifications/translations/push/new_referral/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "تیم شما به تازگی بزرگتر شده است! 🎉", + "title": "🔥 {{.Username}} به تیم شما پیوست." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/fil.txt b/notifications/translations/push/new_referral/fil.txt new file mode 100644 index 0000000..7cea9a8 --- /dev/null +++ b/notifications/translations/push/new_referral/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Lumaki lang ang team mo! 🎉", + "title": "🔥 Sumali si {{.Username}} sa iyong team." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/fr.txt b/notifications/translations/push/new_referral/fr.txt new file mode 100644 index 0000000..231a9b0 --- /dev/null +++ b/notifications/translations/push/new_referral/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Votre équipe vient de s'agrandir! 🎉", + "title": "🔥 {{.Username}} a rejoint votre équipe." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ge.txt b/notifications/translations/push/new_referral/ge.txt new file mode 100644 index 0000000..765154f --- /dev/null +++ b/notifications/translations/push/new_referral/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Η ομάδα σας μόλις έγινε μεγαλύτερη! 🎉", + "title": "🔥 {{.Username}} έγινε μέλος της ομάδας σας." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/gu.txt b/notifications/translations/push/new_referral/gu.txt new file mode 100644 index 0000000..600d202 --- /dev/null +++ b/notifications/translations/push/new_referral/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમારી ટીમ હવે મોટી થઈ ગઈ છે! 🎉", + "title": "🔥 {{.Username}} તમારી ટીમમાં જોડાયો છે." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/he.txt b/notifications/translations/push/new_referral/he.txt new file mode 100644 index 0000000..c46846b --- /dev/null +++ b/notifications/translations/push/new_referral/he.txt @@ -0,0 +1,4 @@ +{ + "body": "הצוות שלך רק גדל! 🎉", + "title": "🔥 {{.Username}} הצטרף לצוות שלך." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/hi.txt b/notifications/translations/push/new_referral/hi.txt new file mode 100644 index 0000000..72616f2 --- /dev/null +++ b/notifications/translations/push/new_referral/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपकी टीम अभी बड़ी हो गई है! 🎉", + "title": "🔥 {{.Username}} आपकी टीम में शामिल हो गया है।" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/hu.txt b/notifications/translations/push/new_referral/hu.txt new file mode 100644 index 0000000..83ca327 --- /dev/null +++ b/notifications/translations/push/new_referral/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "A csapatod még nagyobb lett! 🎉", + "title": "🔥 {{.Username}} csatlakozott a csapatodhoz." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/id.txt b/notifications/translations/push/new_referral/id.txt new file mode 100644 index 0000000..4ab3be1 --- /dev/null +++ b/notifications/translations/push/new_referral/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Tim Anda semakin besar! 🎉", + "title": "🔥 {{.Username}} telah bergabung dengan tim Anda." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/it.txt b/notifications/translations/push/new_referral/it.txt new file mode 100644 index 0000000..21087b5 --- /dev/null +++ b/notifications/translations/push/new_referral/it.txt @@ -0,0 +1,4 @@ +{ + "body": "La tua squadra è appena diventata più grande! 🎉", + "title": "🔥 {{.Username}} si è unito al tuo team." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ja.txt b/notifications/translations/push/new_referral/ja.txt new file mode 100644 index 0000000..64a8650 --- /dev/null +++ b/notifications/translations/push/new_referral/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "チームが大きくなりました! 🎉", + "title": "🔥 {{.Username}} があなたのチームに加わりました。" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/jv.txt b/notifications/translations/push/new_referral/jv.txt new file mode 100644 index 0000000..3d9b35b --- /dev/null +++ b/notifications/translations/push/new_referral/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Tim sampeyan tambah gedhe! 🎉", + "title": "🔥 {{.Username}} wis gabung karo tim sampeyan." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/kn.txt b/notifications/translations/push/new_referral/kn.txt new file mode 100644 index 0000000..eca6d3c --- /dev/null +++ b/notifications/translations/push/new_referral/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನಿಮ್ಮ ತಂಡ ಈಗಷ್ಟೇ ದೊಡ್ಡದಾಗಿದೆ! 🎉", + "title": "🔥 {{.Username}} ಅವರು ನಿಮ್ಮ ತಂಡವನ್ನು ಸೇರಿಕೊಂಡಿದ್ದಾರೆ." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ko.txt b/notifications/translations/push/new_referral/ko.txt new file mode 100644 index 0000000..d69a7ef --- /dev/null +++ b/notifications/translations/push/new_referral/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "팀이 더 커졌습니다! 🎉", + "title": "🔥 {{.Username}}이 팀에 합류했습니다." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/mr.txt b/notifications/translations/push/new_referral/mr.txt new file mode 100644 index 0000000..1305ede --- /dev/null +++ b/notifications/translations/push/new_referral/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तुमची टीम आता मोठी झाली आहे! 🎉", + "title": "🔥 {{.Username}} तुमच्या टीममध्ये सामील झाला आहे." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ms.txt b/notifications/translations/push/new_referral/ms.txt new file mode 100644 index 0000000..339f9ca --- /dev/null +++ b/notifications/translations/push/new_referral/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Pasukan anda semakin besar! 🎉", + "title": "🔥 {{.Username}} telah menyertai pasukan anda." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/no.txt b/notifications/translations/push/new_referral/no.txt new file mode 100644 index 0000000..c336b8d --- /dev/null +++ b/notifications/translations/push/new_referral/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Teamet ditt har akkurat blitt større! 🎉", + "title": "🔥 {{.Username}} har blitt med i teamet ditt." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/pa.txt b/notifications/translations/push/new_referral/pa.txt new file mode 100644 index 0000000..cc0eaf6 --- /dev/null +++ b/notifications/translations/push/new_referral/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਹਾਡੀ ਟੀਮ ਹੁਣੇ ਵੱਡੀ ਹੋ ਗਈ ਹੈ! 🎉", + "title": "🔥 {{.Username}} ਤੁਹਾਡੀ ਟੀਮ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਇਆ ਹੈ।" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/pl.txt b/notifications/translations/push/new_referral/pl.txt new file mode 100644 index 0000000..47b50e9 --- /dev/null +++ b/notifications/translations/push/new_referral/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Twój zespół właśnie się powiększył! 🎉", + "title": "🔥 {{.Username}} dołączył do Twojego zespołu." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ps.txt b/notifications/translations/push/new_referral/ps.txt new file mode 100644 index 0000000..21d925c --- /dev/null +++ b/notifications/translations/push/new_referral/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "ستاسو ټیم یوازې لوی شوی! 🎉", + "title": "🔥 {{.Username}} ستاسو له ټیم سره یوځای شو." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/pt.txt b/notifications/translations/push/new_referral/pt.txt new file mode 100644 index 0000000..ff92210 --- /dev/null +++ b/notifications/translations/push/new_referral/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Sua equipe acaba de ficar maior! 🎉", + "title": "🔥 {{.Username}} juntou-se à sua equipe." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ro.txt b/notifications/translations/push/new_referral/ro.txt new file mode 100644 index 0000000..040804b --- /dev/null +++ b/notifications/translations/push/new_referral/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Echipa ta tocmai a devenit mai mare! 🎉", + "title": "🔥 {{.Username}} s-a alăturat echipei tale." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ru.txt b/notifications/translations/push/new_referral/ru.txt new file mode 100644 index 0000000..aabaaf8 --- /dev/null +++ b/notifications/translations/push/new_referral/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Ваша команда стала больше! 🎉", + "title": "🔥 {{.Username}} присоединился к вашей команде." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/sd.txt b/notifications/translations/push/new_referral/sd.txt new file mode 100644 index 0000000..645dc7f --- /dev/null +++ b/notifications/translations/push/new_referral/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توهان جي ٽيم صرف وڏي ٿي وئي آهي! 🎉", + "title": "🔥 {{.Username}} توهان جي ٽيم ۾ شامل ٿيو آهي." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/sk.txt b/notifications/translations/push/new_referral/sk.txt new file mode 100644 index 0000000..7ffac28 --- /dev/null +++ b/notifications/translations/push/new_referral/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Váš tím sa práve zväčšil! 🎉", + "title": "🔥 {{.Username}} sa pripojil k vášmu tímu." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/sl.txt b/notifications/translations/push/new_referral/sl.txt new file mode 100644 index 0000000..9fef336 --- /dev/null +++ b/notifications/translations/push/new_referral/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Vaša ekipa je pravkar postala večja! 🎉", + "title": "🔥 {{.Username}} se je pridružil vaši ekipi." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/sq.txt b/notifications/translations/push/new_referral/sq.txt new file mode 100644 index 0000000..0fe74df --- /dev/null +++ b/notifications/translations/push/new_referral/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Ekipi juaj sapo u bë më i madh! 🎉", + "title": "🔥 {{.Username}} i është bashkuar ekipit tuaj." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/su.txt b/notifications/translations/push/new_referral/su.txt new file mode 100644 index 0000000..f4ce19a --- /dev/null +++ b/notifications/translations/push/new_referral/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Tim anjeun langkung ageung! 🎉", + "title": "🔥 {{.Username}} parantos gabung ka tim anjeun." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/sv.txt b/notifications/translations/push/new_referral/sv.txt new file mode 100644 index 0000000..4412fb7 --- /dev/null +++ b/notifications/translations/push/new_referral/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "SDitt lag har precis blivit större! 🎉", + "title": "🔥 {{.Username}} har gått med i ditt team." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ta.txt b/notifications/translations/push/new_referral/ta.txt new file mode 100644 index 0000000..ccd8dbb --- /dev/null +++ b/notifications/translations/push/new_referral/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "உங்கள் குழு இப்போது பெரிதாகிவிட்டது! 🎉", + "title": "🔥 {{.Username}} உங்கள் குழுவில் சேர்ந்துள்ளார்." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/te.txt b/notifications/translations/push/new_referral/te.txt new file mode 100644 index 0000000..b18a1fe --- /dev/null +++ b/notifications/translations/push/new_referral/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీ బృందం ఇప్పుడే పెద్దదైంది! 🎉", + "title": "🔥 {{.Username}} మీ బృందంలో చేరారు." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/th.txt b/notifications/translations/push/new_referral/th.txt new file mode 100644 index 0000000..5c68621 --- /dev/null +++ b/notifications/translations/push/new_referral/th.txt @@ -0,0 +1,4 @@ +{ + "body": "ทีมของคุณใหญ่ขึ้น! 🎉", + "title": "🔥 {{.Username}} เข้าร่วมทีมของคุณแล้ว" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/tr.txt b/notifications/translations/push/new_referral/tr.txt new file mode 100644 index 0000000..c26df0d --- /dev/null +++ b/notifications/translations/push/new_referral/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Ekibiniz daha da büyüdü! 🎉", + "title": "🔥 {{.Username}} ekibinize katıldı." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/uk.txt b/notifications/translations/push/new_referral/uk.txt new file mode 100644 index 0000000..8aa7e80 --- /dev/null +++ b/notifications/translations/push/new_referral/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Ваша команда стала більшою! 🎉", + "title": "🔥 {{.Username}} приєднався до вашої команди." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/ur.txt b/notifications/translations/push/new_referral/ur.txt new file mode 100644 index 0000000..f0ad545 --- /dev/null +++ b/notifications/translations/push/new_referral/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "آپ کی ٹیم ابھی بڑی ہو گئی ہے! 🎉", + "title": "🔥 {{.Username}} آپ کی ٹیم میں شامل ہو گیا ہے۔" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/vi.txt b/notifications/translations/push/new_referral/vi.txt new file mode 100644 index 0000000..f505503 --- /dev/null +++ b/notifications/translations/push/new_referral/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Nhóm của bạn vừa trở nên lớn hơn! 🎉", + "title": "🔥 {{.Username}} đã tham gia nhóm của bạn." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/yo.txt b/notifications/translations/push/new_referral/yo.txt new file mode 100644 index 0000000..3a3ee69 --- /dev/null +++ b/notifications/translations/push/new_referral/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "Ẹgbẹ rẹ ṣẹṣẹ di nla! 🎉", + "title": "🔥 {{.Username}} ti darapọ mọ ẹgbẹ rẹ." +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/zh-hans.txt b/notifications/translations/push/new_referral/zh-hans.txt new file mode 100644 index 0000000..3d19d24 --- /dev/null +++ b/notifications/translations/push/new_referral/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "你的团队变得更大了! 🎉", + "title": "🔥 {{.Username}} 已加入您的团队。" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/zh-hant.txt b/notifications/translations/push/new_referral/zh-hant.txt new file mode 100644 index 0000000..b4b3389 --- /dev/null +++ b/notifications/translations/push/new_referral/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "你的團隊變得更大了! 🎉", + "title": "🔥 {{.Username}} 已加入您的團隊。" +} \ No newline at end of file diff --git a/notifications/translations/push/new_referral/zu.txt b/notifications/translations/push/new_referral/zu.txt new file mode 100644 index 0000000..9afb88e --- /dev/null +++ b/notifications/translations/push/new_referral/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "UIqembu lakho lisanda kuba likhulu! 🎉", + "title": "🔥 {{.Username}} ujoyine iqembu lakho." +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/af.txt b/notifications/translations/push/news_added/af.txt new file mode 100644 index 0000000..b6ed559 --- /dev/null +++ b/notifications/translations/push/news_added/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Bly op hoogte van die jongste gebeure op ice.", + "title": "🚨 Nuuswaarskuwing" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/am.txt b/notifications/translations/push/news_added/am.txt new file mode 100644 index 0000000..83cc342 --- /dev/null +++ b/notifications/translations/push/news_added/am.txt @@ -0,0 +1,4 @@ +{ + "body": "በ ice ላይ የቅርብ ጊዜ ክስተቶችን ይወቁ።", + "title": "🚨 የዜና ማንቂያ" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ar.txt b/notifications/translations/push/news_added/ar.txt new file mode 100644 index 0000000..488bae3 --- /dev/null +++ b/notifications/translations/push/news_added/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "ابق على اطلاع بآخر الأحداث على ice.", + "title": "🚨 تنبيه الأخبار" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/az.txt b/notifications/translations/push/news_added/az.txt new file mode 100644 index 0000000..a3a7e5c --- /dev/null +++ b/notifications/translations/push/news_added/az.txt @@ -0,0 +1,4 @@ +{ + "body": "ice-də ən son hadisələrdən xəbərdar olun.", + "title": "🚨 Xəbər Xəbərdarlığı" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/bg.txt b/notifications/translations/push/news_added/bg.txt new file mode 100644 index 0000000..65228c7 --- /dev/null +++ b/notifications/translations/push/news_added/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Бъдете информирани за най-новите събития в ice", + "title": "🚨 Сигнал за новини" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/bn.txt b/notifications/translations/push/news_added/bn.txt new file mode 100644 index 0000000..6437179 --- /dev/null +++ b/notifications/translations/push/news_added/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "ice-তে সাম্প্রতিক ঘটনা সম্পর্কে অবগত থাকুন।", + "title": "🚨 সংবাদ সতর্কতা" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/cs.txt b/notifications/translations/push/news_added/cs.txt new file mode 100644 index 0000000..b088c01 --- /dev/null +++ b/notifications/translations/push/news_added/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Zůstaňte informováni o nejnovějším dění na ice.", + "title": "🚨 Upozornění na novinky" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/de.txt b/notifications/translations/push/news_added/de.txt new file mode 100644 index 0000000..7f4c666 --- /dev/null +++ b/notifications/translations/push/news_added/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Bleiben Sie mit den neuesten Ereignissen auf ice auf dem Laufenden.", + "title": "🚨 Nachrichtenalarm" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/en.txt b/notifications/translations/push/news_added/en.txt new file mode 100644 index 0000000..21b52d6 --- /dev/null +++ b/notifications/translations/push/news_added/en.txt @@ -0,0 +1,4 @@ +{ + "body": "Stay informed with the latest happenings on ice.", + "title": "🚨 News Alert" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/es.txt b/notifications/translations/push/news_added/es.txt new file mode 100644 index 0000000..a5498c9 --- /dev/null +++ b/notifications/translations/push/news_added/es.txt @@ -0,0 +1,4 @@ +{ + "body": "Manténgase informado con los últimos acontecimientos en ice.", + "title": "🚨 Alerta de noticias" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/fa.txt b/notifications/translations/push/news_added/fa.txt new file mode 100644 index 0000000..131e4eb --- /dev/null +++ b/notifications/translations/push/news_added/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "از آخرین اتفاقات ice مطلع باشید.", + "title": "🚨 هشدار خبری" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/fil.txt b/notifications/translations/push/news_added/fil.txt new file mode 100644 index 0000000..e695597 --- /dev/null +++ b/notifications/translations/push/news_added/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Manatiling may alam sa mga pinakabagong pangyayari sa ice.", + "title": "🚨 Balitang Alerto" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/fr.txt b/notifications/translations/push/news_added/fr.txt new file mode 100644 index 0000000..0ccca99 --- /dev/null +++ b/notifications/translations/push/news_added/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Restez informé des derniers événements sur ice.", + "title": "🚨 Alerte actualité" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ge.txt b/notifications/translations/push/news_added/ge.txt new file mode 100644 index 0000000..017cad4 --- /dev/null +++ b/notifications/translations/push/news_added/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Μείνετε ενημερωμένοι με τα τελευταία γεγονότα στο ice.", + "title": "🚨 Ειδοποίηση ειδήσεων" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/gu.txt b/notifications/translations/push/news_added/gu.txt new file mode 100644 index 0000000..2aca3e2 --- /dev/null +++ b/notifications/translations/push/news_added/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "ice પર નવીનતમ ઘટનાઓથી માહિતગાર રહો.", + "title": "🚨 સમાચાર ચેતવણી" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/he.txt b/notifications/translations/push/news_added/he.txt new file mode 100644 index 0000000..797fb35 --- /dev/null +++ b/notifications/translations/push/news_added/he.txt @@ -0,0 +1,4 @@ +{ + "body": "הישאר מעודכן לגבי ההתרחשויות האחרונות ב-ice.", + "title": "🚨 התראת חדשות" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/hi.txt b/notifications/translations/push/news_added/hi.txt new file mode 100644 index 0000000..fd44927 --- /dev/null +++ b/notifications/translations/push/news_added/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "ice पर नवीनतम घटनाओं से अवगत रहें।", + "title": "🚨 न्यूज अलर्ट" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/hu.txt b/notifications/translations/push/news_added/hu.txt new file mode 100644 index 0000000..c58e716 --- /dev/null +++ b/notifications/translations/push/news_added/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Legyen tájékozott az ice legfrissebb eseményeiről.", + "title": "🚨 Hírértesítés" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/id.txt b/notifications/translations/push/news_added/id.txt new file mode 100644 index 0000000..44fc06f --- /dev/null +++ b/notifications/translations/push/news_added/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Tetap terinformasi dengan kejadian terbaru di ice.", + "title": "🚨 Peringatan Berita" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/it.txt b/notifications/translations/push/news_added/it.txt new file mode 100644 index 0000000..095dd89 --- /dev/null +++ b/notifications/translations/push/news_added/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Tieniti informato con gli ultimi avvenimenti su ice.", + "title": "🚨 Avviso notizie" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ja.txt b/notifications/translations/push/news_added/ja.txt new file mode 100644 index 0000000..e401230 --- /dev/null +++ b/notifications/translations/push/news_added/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "ice の最新情報を入手してください。", + "title": "🚨ニュースアラート" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/jv.txt b/notifications/translations/push/news_added/jv.txt new file mode 100644 index 0000000..51fdd29 --- /dev/null +++ b/notifications/translations/push/news_added/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Tetep ngerti babagan kedadeyan paling anyar ing ice.", + "title": "🚨 Tandha Warta" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/kn.txt b/notifications/translations/push/news_added/kn.txt new file mode 100644 index 0000000..b5bacd3 --- /dev/null +++ b/notifications/translations/push/news_added/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ice ನಲ್ಲಿ ಇತ್ತೀಚಿನ ಘಟನೆಗಳ ಕುರಿತು ಮಾಹಿತಿಯಲ್ಲಿರಿ.", + "title": "🚨 ಸುದ್ದಿ ಎಚ್ಚರಿಕೆ" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ko.txt b/notifications/translations/push/news_added/ko.txt new file mode 100644 index 0000000..b7dfd45 --- /dev/null +++ b/notifications/translations/push/news_added/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "ice의 최신 소식을 받아보세요.", + "title": "🚨 뉴스 알림" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/mr.txt b/notifications/translations/push/news_added/mr.txt new file mode 100644 index 0000000..c229a05 --- /dev/null +++ b/notifications/translations/push/news_added/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "ice वर ताज्या घडामोडींची माहिती ठेवा.", + "title": "🚨 न्यूज अलर्ट" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ms.txt b/notifications/translations/push/news_added/ms.txt new file mode 100644 index 0000000..aaf9a5c --- /dev/null +++ b/notifications/translations/push/news_added/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Kekal dimaklumkan dengan kejadian terkini di ice.", + "title": "🚨 Makluman Berita" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/no.txt b/notifications/translations/push/news_added/no.txt new file mode 100644 index 0000000..964fc8c --- /dev/null +++ b/notifications/translations/push/news_added/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Hold deg informert om de siste hendelsene på ice.", + "title": "🚨 Nyhetsvarsel" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/pa.txt b/notifications/translations/push/news_added/pa.txt new file mode 100644 index 0000000..9bffbf0 --- /dev/null +++ b/notifications/translations/push/news_added/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ice 'ਤੇ ਨਵੀਨਤਮ ਘਟਨਾਵਾਂ ਨਾਲ ਸੂਚਿਤ ਰਹੋ।", + "title": "🚨 ਨਿਊਜ਼ ਅਲਰਟ" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/pl.txt b/notifications/translations/push/news_added/pl.txt new file mode 100644 index 0000000..de44875 --- /dev/null +++ b/notifications/translations/push/news_added/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Bądź na bieżąco z najnowszymi wydarzeniami na ice", + "title": "🚨 Powiadomienie o nowościach" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ps.txt b/notifications/translations/push/news_added/ps.txt new file mode 100644 index 0000000..16b40e0 --- /dev/null +++ b/notifications/translations/push/news_added/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "په ice کې د وروستي پیښو سره خبر اوسئ.", + "title": "🚨 خبرتیا" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/pt.txt b/notifications/translations/push/news_added/pt.txt new file mode 100644 index 0000000..bb5463a --- /dev/null +++ b/notifications/translations/push/news_added/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Mantenha-se informado com os últimos acontecimentos no ice.", + "title": "🚨 Alerta de Novidades" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ro.txt b/notifications/translations/push/news_added/ro.txt new file mode 100644 index 0000000..3bf8039 --- /dev/null +++ b/notifications/translations/push/news_added/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Rămâneți la curent cu cele mai recente evenimente de pe ice.", + "title": "🚨 Alertă de știri" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ru.txt b/notifications/translations/push/news_added/ru.txt new file mode 100644 index 0000000..4062b5c --- /dev/null +++ b/notifications/translations/push/news_added/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Будьте в курсе последних событий на ice.", + "title": "🚨 Оповещение о новостях" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/sd.txt b/notifications/translations/push/news_added/sd.txt new file mode 100644 index 0000000..c50ac42 --- /dev/null +++ b/notifications/translations/push/news_added/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "ice تي تازي واقعن سان باخبر رھو.", + "title": "🚨 نيوز الرٽ" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/sk.txt b/notifications/translations/push/news_added/sk.txt new file mode 100644 index 0000000..7d83e28 --- /dev/null +++ b/notifications/translations/push/news_added/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Zostaňte informovaní o najnovšom dianí na ice.", + "title": "🚨 Upozornenie na novinky" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/sl.txt b/notifications/translations/push/news_added/sl.txt new file mode 100644 index 0000000..65cab7c --- /dev/null +++ b/notifications/translations/push/news_added/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Bodite obveščeni o najnovejših dogodkih na ice.", + "title": "🚨 Obvestilo o novicah" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/sq.txt b/notifications/translations/push/news_added/sq.txt new file mode 100644 index 0000000..05e0fd8 --- /dev/null +++ b/notifications/translations/push/news_added/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Qëndroni të informuar me ngjarjet më të fundit në ice.", + "title": "🚨 Lajmërim Lajmi" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/su.txt b/notifications/translations/push/news_added/su.txt new file mode 100644 index 0000000..cc8103b --- /dev/null +++ b/notifications/translations/push/news_added/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Tetep informed jeung kajadian panganyarna dina ice.", + "title": "🚨 Siaga Warta" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/sv.txt b/notifications/translations/push/news_added/sv.txt new file mode 100644 index 0000000..e183f75 --- /dev/null +++ b/notifications/translations/push/news_added/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Håll dig informerad om de senaste händelserna på ice.", + "title": "🚨 Nyhetslarm" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ta.txt b/notifications/translations/push/news_added/ta.txt new file mode 100644 index 0000000..b896ceb --- /dev/null +++ b/notifications/translations/push/news_added/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "ice இல் சமீபத்திய நிகழ்வுகள் குறித்து அறிந்திருங்கள்.", + "title": "🚨 செய்தி எச்சரிக்கை" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/te.txt b/notifications/translations/push/news_added/te.txt new file mode 100644 index 0000000..848686b --- /dev/null +++ b/notifications/translations/push/news_added/te.txt @@ -0,0 +1,4 @@ +{ + "body": "iceలో తాజా సంఘటనల గురించి తెలుసుకుంటూ ఉండండి.", + "title": "🚨 వార్తల హెచ్చరిక" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/th.txt b/notifications/translations/push/news_added/th.txt new file mode 100644 index 0000000..5ec8db6 --- /dev/null +++ b/notifications/translations/push/news_added/th.txt @@ -0,0 +1,4 @@ +{ + "body": "รับทราบข่าวสารล่าสุดเกี่ยวกับ ice", + "title": "🚨 แจ้งเตือนข่าวสาร" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/tr.txt b/notifications/translations/push/news_added/tr.txt new file mode 100644 index 0000000..84b7139 --- /dev/null +++ b/notifications/translations/push/news_added/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "ice'deki son gelişmelerden haberdar olun.", + "title": "🚨 Haber Uyarısı" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/uk.txt b/notifications/translations/push/news_added/uk.txt new file mode 100644 index 0000000..94f0704 --- /dev/null +++ b/notifications/translations/push/news_added/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Будьте в курсі останніх подій на ice.", + "title": "🚨 Новини" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/ur.txt b/notifications/translations/push/news_added/ur.txt new file mode 100644 index 0000000..8131dff --- /dev/null +++ b/notifications/translations/push/news_added/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "ice پر تازہ ترین واقعات سے باخبر رہیں۔", + "title": "🚨 نیوز الرٹ" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/vi.txt b/notifications/translations/push/news_added/vi.txt new file mode 100644 index 0000000..d9adb61 --- /dev/null +++ b/notifications/translations/push/news_added/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Được thông báo với những diễn biến mới nhất trên ice.", + "title": "🚨 Thông báo tin tức" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/yo.txt b/notifications/translations/push/news_added/yo.txt new file mode 100644 index 0000000..a328f9f --- /dev/null +++ b/notifications/translations/push/news_added/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "Duro si alaye pẹlu awọn iṣẹlẹ tuntun lori ice.", + "title": "🚨 Itaniji Iroyin" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/zh-hans.txt b/notifications/translations/push/news_added/zh-hans.txt new file mode 100644 index 0000000..7c09d0c --- /dev/null +++ b/notifications/translations/push/news_added/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "随时了解 ice 上的最新动态。", + "title": "🚨 新闻提醒" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/zh-hant.txt b/notifications/translations/push/news_added/zh-hant.txt new file mode 100644 index 0000000..24c994e --- /dev/null +++ b/notifications/translations/push/news_added/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "隨時了解 ice 上的最新動態。", + "title": "🚨 新聞提醒" +} \ No newline at end of file diff --git a/notifications/translations/push/news_added/zu.txt b/notifications/translations/push/news_added/zu.txt new file mode 100644 index 0000000..8fef8b1 --- /dev/null +++ b/notifications/translations/push/news_added/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Hlala unolwazi ngezehlakalo zakamuva ku-ice.", + "title": "🚨 Isexwayiso Sezindaba" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/af.txt b/notifications/translations/push/ping/af.txt new file mode 100644 index 0000000..4befe72 --- /dev/null +++ b/notifications/translations/push/ping/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Moenie sluimer nie, jy sal verloor! Begin jou inkloksessie 💪", + "title": "🔔 {{.Username}} het jou geping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/am.txt b/notifications/translations/push/ping/am.txt new file mode 100644 index 0000000..e992b63 --- /dev/null +++ b/notifications/translations/push/ping/am.txt @@ -0,0 +1,4 @@ +{ + "body": "አታሸልብክ፣ ትሸነፋለህ! የመግባት ክፍለ ጊዜዎን ይጀምሩ 💪", + "title": "🔔 {{.Username}} አንገተህ!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ar.txt b/notifications/translations/push/ping/ar.txt new file mode 100644 index 0000000..acce554 --- /dev/null +++ b/notifications/translations/push/ping/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "لا تغف ، ستخسر! ابدأ جلسة تسجيل الوصول 💪", + "title": "🔔 لقد تعرضت لضغوط من {{.Username}}!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/az.txt b/notifications/translations/push/ping/az.txt new file mode 100644 index 0000000..630dde6 --- /dev/null +++ b/notifications/translations/push/ping/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Mürgüləmə, itirəcəksən! Qeydiyyat seansına başlayın 💪", + "title": "🔔 {{.Username}} sizə ping atdı!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/bg.txt b/notifications/translations/push/ping/bg.txt new file mode 100644 index 0000000..4026d09 --- /dev/null +++ b/notifications/translations/push/ping/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Не отлагайте, ще загубите! Започнете своята сесия за настаняване 💪", + "title": "🔔 {{.Username}} ви изпрати ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/bn.txt b/notifications/translations/push/ping/bn.txt new file mode 100644 index 0000000..90dab1a --- /dev/null +++ b/notifications/translations/push/ping/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "স্নুজ করবেন না, আপনি হারাবেন! আপনার চেক-ইন সেশন শুরু করুন 💪", + "title": "🔔 {{.Username}} আপনাকে পিং করেছে!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/cs.txt b/notifications/translations/push/ping/cs.txt new file mode 100644 index 0000000..0092a85 --- /dev/null +++ b/notifications/translations/push/ping/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Neodkládejte, prohrajete! Začněte svou check-in relaci 💪", + "title": "🔔 {{.Username}} vám odeslal ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/de.txt b/notifications/translations/push/ping/de.txt new file mode 100644 index 0000000..55851f8 --- /dev/null +++ b/notifications/translations/push/ping/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Schlummern Sie nicht, Sie werden verlieren! Starten Sie Ihre Check-in-Session 💪", + "title": "🔔 {{.Username}} hat dich gepingt!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/en.txt b/notifications/translations/push/ping/en.txt new file mode 100644 index 0000000..0366a3e --- /dev/null +++ b/notifications/translations/push/ping/en.txt @@ -0,0 +1,4 @@ +{ + "body": "Don't snooze, you'll lose! Start your check-in session 💪", + "title": "🔔 {{.Username}} has pinged you!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/es.txt b/notifications/translations/push/ping/es.txt new file mode 100644 index 0000000..da78006 --- /dev/null +++ b/notifications/translations/push/ping/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡No te duermas, perderás! Inicia tu sesión de check-in 💪", + "title": "🔔 ¡{{.Username}} te ha hecho ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/fa.txt b/notifications/translations/push/ping/fa.txt new file mode 100644 index 0000000..415a704 --- /dev/null +++ b/notifications/translations/push/ping/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "چرت نزنید، ضرر می کنید! جلسه ورود خود را شروع کنید 💪", + "title": "🔔 {{.Username}} شما را پینگ کرده است!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/fil.txt b/notifications/translations/push/ping/fil.txt new file mode 100644 index 0000000..5d91858 --- /dev/null +++ b/notifications/translations/push/ping/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Huwag i-snooze, matatalo ka! Simulan ang iyong check-in session 💪", + "title": "🔔 Na-ping ka ni {{.Username}}!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/fr.txt b/notifications/translations/push/ping/fr.txt new file mode 100644 index 0000000..4d86ad5 --- /dev/null +++ b/notifications/translations/push/ping/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Ne roupillez pas, vous allez perdre! Commencez votre session d'enregistrement 💪", + "title": "🔔 {{.Username}} vous a envoyé un ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ge.txt b/notifications/translations/push/ping/ge.txt new file mode 100644 index 0000000..87c50e7 --- /dev/null +++ b/notifications/translations/push/ping/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Μην αναβάλετε, θα χάσετε! Ξεκινήστε τη συνεδρία του check-in 💪", + "title": "🔔 Το {{.Username}} σας έκανε ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/gu.txt b/notifications/translations/push/ping/gu.txt new file mode 100644 index 0000000..12346b8 --- /dev/null +++ b/notifications/translations/push/ping/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "સ્નૂઝ કરશો નહીં, તમે હારી જશો! તમારું ચેક-ઇન સત્ર તમારું ચેક-ઇન સત્ર શરૂ કરો 💪", + "title": "🔔 {{.Username}} એ તમને પિંગ કર્યા છે!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/he.txt b/notifications/translations/push/ping/he.txt new file mode 100644 index 0000000..d42bc27 --- /dev/null +++ b/notifications/translations/push/ping/he.txt @@ -0,0 +1,4 @@ +{ + "body": "אל תנדנד, אתה תפסיד! התחל את סשן הצ'ק-אין שלך 💪", + "title": "🔔 {{.Username}} שלח לך פינג!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/hi.txt b/notifications/translations/push/ping/hi.txt new file mode 100644 index 0000000..0556908 --- /dev/null +++ b/notifications/translations/push/ping/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "झपकी मत लो, तुम हार जाओगे! अपना चेक-इन सत्र शुरू करें 💪", + "title": "🔔 {{.Username}} ने आपको पिंग किया है!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/hu.txt b/notifications/translations/push/ping/hu.txt new file mode 100644 index 0000000..9cc28fb --- /dev/null +++ b/notifications/translations/push/ping/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Ne szundikálj, veszítesz! Indítsa el a bejelentkezést 💪", + "title": "🔔 {{.Username}} pingált rád!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/id.txt b/notifications/translations/push/ping/id.txt new file mode 100644 index 0000000..3b2c56c --- /dev/null +++ b/notifications/translations/push/ping/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Jangan tunda, Anda akan kalah! Mulai sesi check-in Anda 💪", + "title": "🔔 {{.Username}} telah mem-ping Anda!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/it.txt b/notifications/translations/push/ping/it.txt new file mode 100644 index 0000000..c104cb8 --- /dev/null +++ b/notifications/translations/push/ping/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Non sonnecchiare, perderai! Inizia la tua sessione di check-in 💪", + "title": "🔔 {{.Username}} ti ha inviato un ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ja.txt b/notifications/translations/push/ping/ja.txt new file mode 100644 index 0000000..dcf2691 --- /dev/null +++ b/notifications/translations/push/ping/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "うたた寝しないでください、あなたは負けます! チェックイン セッションを開始します 💪", + "title": "🔔 {{.Username}} があなたに ping を送信しました!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/jv.txt b/notifications/translations/push/ping/jv.txt new file mode 100644 index 0000000..cf1c97e --- /dev/null +++ b/notifications/translations/push/ping/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Aja tundha, sampeyan bakal ilang! Mulai sesi check-in 💪", + "title": "🔔 {{.Username}} wis ping sampeyan!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/kn.txt b/notifications/translations/push/ping/kn.txt new file mode 100644 index 0000000..aefc5fd --- /dev/null +++ b/notifications/translations/push/ping/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ಸ್ನೂಜ್ ಮಾಡಬೇಡಿ, ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ! ನಿಮ್ಮ ಚೆಕ್-ಇನ್ ಸೆಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ 💪", + "title": "🔔 {{.Username}} ನಿಮಗೆ ಪಿಂಗ್ ಮಾಡಿದ್ದಾರೆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ko.txt b/notifications/translations/push/ping/ko.txt new file mode 100644 index 0000000..1b1135f --- /dev/null +++ b/notifications/translations/push/ping/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "졸지 마세요, 당신은 잃을 것입니다! 체크인 세션 시작 💪", + "title": "🔔 {{.Username}} 이 당신을 핑했습니다!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/mr.txt b/notifications/translations/push/ping/mr.txt new file mode 100644 index 0000000..d83248f --- /dev/null +++ b/notifications/translations/push/ping/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "स्नूझ करू नका, आपण गमावाल! तुमचे चेक-इन सत्र सुरू करा 💪", + "title": "🔔 {{.Username}} ने तुम्हाला पिंग केले आहे!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ms.txt b/notifications/translations/push/ping/ms.txt new file mode 100644 index 0000000..5425403 --- /dev/null +++ b/notifications/translations/push/ping/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Jangan tunda, anda akan rugi! Mulakan sesi daftar masuk anda 💪", + "title": "🔔 {{.Username}} pengguna telah menghantar ping kepada anda!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/no.txt b/notifications/translations/push/ping/no.txt new file mode 100644 index 0000000..7d7455f --- /dev/null +++ b/notifications/translations/push/ping/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Ikke slumre, du vil tape! Start innsjekkingsøkten 💪", + "title": "🔔 {{.Username}} har pinget deg!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/pa.txt b/notifications/translations/push/ping/pa.txt new file mode 100644 index 0000000..1f50633 --- /dev/null +++ b/notifications/translations/push/ping/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਸਨੂਜ਼ ਨਾ ਕਰੋ, ਤੁਸੀਂ ਹਾਰ ਜਾਓਗੇ! ਆਪਣਾ ਚੈੱਕ-ਇਨ ਸੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰੋ 💪", + "title": "🔔 {{.Username}} ਨੇ ਤੁਹਾਨੂੰ ਪਿੰਗ ਕੀਤਾ ਹੈ!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/pl.txt b/notifications/translations/push/ping/pl.txt new file mode 100644 index 0000000..713ec32 --- /dev/null +++ b/notifications/translations/push/ping/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Nie śpij, przegrasz! Rozpocznij sesję meldunkową 💪", + "title": "🔔 {{.Username}} wysłał Ci ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ps.txt b/notifications/translations/push/ping/ps.txt new file mode 100644 index 0000000..c6dd009 --- /dev/null +++ b/notifications/translations/push/ping/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "مه کوه، تاسو به له لاسه ورکړئ! خپل د چیک ان سیشن پیل کړئ 💪", + "title": "🔔 {{.Username}} تاسو پینګ کړی دی!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/pt.txt b/notifications/translations/push/ping/pt.txt new file mode 100644 index 0000000..6a5735b --- /dev/null +++ b/notifications/translations/push/ping/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Não adie, você perderá! Inicie a sua sessão de check-in 💪", + "title": "🔔 {{.Username}} enviou um ping para você!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ro.txt b/notifications/translations/push/ping/ro.txt new file mode 100644 index 0000000..933eef2 --- /dev/null +++ b/notifications/translations/push/ping/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Nu amâna, vei pierde! Începeți sesiunea de check-in 💪", + "title": "🔔 {{.Username}} v-a trimis un ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ru.txt b/notifications/translations/push/ping/ru.txt new file mode 100644 index 0000000..647ce9a --- /dev/null +++ b/notifications/translations/push/ping/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Не откладывай, проиграешь! Начните сеанс регистрации 💪", + "title": "🔔 {{.Username}} пропинговал вас!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/sd.txt b/notifications/translations/push/ping/sd.txt new file mode 100644 index 0000000..d2d5f39 --- /dev/null +++ b/notifications/translations/push/ping/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "ننڊ نه ڪريو، توهان وڃائي ڇڏيندؤ! پنهنجو چيڪ ان سيشن شروع ڪريو 💪", + "title": "🔔 {{.Username}} توهان کي پنگ ڪيو آهي!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/sk.txt b/notifications/translations/push/ping/sk.txt new file mode 100644 index 0000000..7d708af --- /dev/null +++ b/notifications/translations/push/ping/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Neodkladaj, prehráš! Začnite svoju registračnú reláciu 💪", + "title": "🔔 {{.Username}} vám poslal ping!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/sl.txt b/notifications/translations/push/ping/sl.txt new file mode 100644 index 0000000..90dba40 --- /dev/null +++ b/notifications/translations/push/ping/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Ne dremežajte, izgubili boste! Začnite sejo prijave 💪", + "title": "🔔 {{.Username}} vas je pingal!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/sq.txt b/notifications/translations/push/ping/sq.txt new file mode 100644 index 0000000..d4eabb3 --- /dev/null +++ b/notifications/translations/push/ping/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Mos u përgjum, do të humbisni! Filloni seancën tuaj të regjistrimit 💪", + "title": "🔔 {{.Username}} ju ka prekur!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/su.txt b/notifications/translations/push/ping/su.txt new file mode 100644 index 0000000..023946d --- /dev/null +++ b/notifications/translations/push/ping/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Tong snooze, anjeun bakal éléh! Mimitian sési check-in anjeun 💪", + "title": "🔔 {{.Username}} geus ping anjeun!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/sv.txt b/notifications/translations/push/ping/sv.txt new file mode 100644 index 0000000..3633acd --- /dev/null +++ b/notifications/translations/push/ping/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Snooza inte, du kommer att förlora! Starta din incheckningssession 💪", + "title": "🔔 {{.Username}} har pingat dig!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ta.txt b/notifications/translations/push/ping/ta.txt new file mode 100644 index 0000000..f85d242 --- /dev/null +++ b/notifications/translations/push/ping/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "உறக்கநிலை வேண்டாம், நீங்கள் இழப்பீர்கள்! உங்கள் செக்-இன் அமர்வைத் தொடங்கவும் 💪", + "title": "🔔 {{.Username}} உங்களுக்கு பிங் செய்துள்ளார்!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/te.txt b/notifications/translations/push/ping/te.txt new file mode 100644 index 0000000..1a571c7 --- /dev/null +++ b/notifications/translations/push/ping/te.txt @@ -0,0 +1,4 @@ +{ + "body": "తాత్కాలికంగా ఆపివేయవద్దు, మీరు ఓడిపోతారు! మీ చెక్-ఇన్ సెషన్‌ను ప్రారంభించండి 💪", + "title": "🔔 {{.Username}} మీకు పింగ్ చేసారు!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/th.txt b/notifications/translations/push/ping/th.txt new file mode 100644 index 0000000..047cff4 --- /dev/null +++ b/notifications/translations/push/ping/th.txt @@ -0,0 +1,4 @@ +{ + "body": "อย่างีบหลับ คุณจะแพ้! เริ่มเซสชั่นเช็คอินของคุณ 💪", + "title": "🔔 {{.Username}} ส่ง Ping หาคุณ!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/tr.txt b/notifications/translations/push/ping/tr.txt new file mode 100644 index 0000000..e92b898 --- /dev/null +++ b/notifications/translations/push/ping/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Erteleme, kaybedersin! Check-in seansınızı başlatın 💪", + "title": "🔔 {{.Username}} size ping attı!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/uk.txt b/notifications/translations/push/ping/uk.txt new file mode 100644 index 0000000..1d70d50 --- /dev/null +++ b/notifications/translations/push/ping/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Не дрімай, програєш! Розпочніть сеанс реєстрації 💪", + "title": "🔔 {{.Username}} надіслав вам запит!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/ur.txt b/notifications/translations/push/ping/ur.txt new file mode 100644 index 0000000..4c3688e --- /dev/null +++ b/notifications/translations/push/ping/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "اسنوز نہ کریں، آپ ہار جائیں گے! اپنا چیک ان سیشن شروع کریں۔", + "title": "🔔 {{.Username}} نے آپ کو پنگ کیا ہے!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/vi.txt b/notifications/translations/push/ping/vi.txt new file mode 100644 index 0000000..28b8c59 --- /dev/null +++ b/notifications/translations/push/ping/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Đừng ngủ, bạn sẽ thua! Bắt đầu buổi đăng ký của bạn 💪", + "title": "🔔 {{.Username}} đã liên lạc với bạn!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/yo.txt b/notifications/translations/push/ping/yo.txt new file mode 100644 index 0000000..bde3409 --- /dev/null +++ b/notifications/translations/push/ping/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "Maṣe ṣan, iwọ yoo padanu! Bẹrẹ igba iwọle 💪", + "title": "🔔 {{.Username}} ti kọ ọ!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/zh-hans.txt b/notifications/translations/push/ping/zh-hans.txt new file mode 100644 index 0000000..f46c6dd --- /dev/null +++ b/notifications/translations/push/ping/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "不要打瞌睡,你会输的! 开始您的签到环节💪", + "title": "🔔 {{.Username}} 已通知您!" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/zh-hant.txt b/notifications/translations/push/ping/zh-hant.txt new file mode 100644 index 0000000..100dd55 --- /dev/null +++ b/notifications/translations/push/ping/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "不要打瞌睡,你會輸的! 開始您的簽到環節💪", + "title": "🔔 {{.Username}} 已通知您" +} \ No newline at end of file diff --git a/notifications/translations/push/ping/zu.txt b/notifications/translations/push/ping/zu.txt new file mode 100644 index 0000000..989ed03 --- /dev/null +++ b/notifications/translations/push/ping/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Ungasnuzi, uzolahlekelwa! Qala iseshini yakho yokungena 💪", + "title": "🔔 {{.Username}} ukuphikile!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/af.txt b/notifications/translations/push/role_changed/af.txt new file mode 100644 index 0000000..48b59f9 --- /dev/null +++ b/notifications/translations/push/role_changed/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Jy het dit gemaak! Welkom by die ambassadeurspan. 🚀", + "title": "🌟Jy is 'n gemeenskapsheld!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/am.txt b/notifications/translations/push/role_changed/am.txt new file mode 100644 index 0000000..ad43cd9 --- /dev/null +++ b/notifications/translations/push/role_changed/am.txt @@ -0,0 +1,4 @@ +{ + "body": "አደረከው! ወደ አምባሳደር ቡድን እንኳን በደህና መጡ። 🚀", + "title": "🌟የማህበረሰብ ጀግና ነዎት!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ar.txt b/notifications/translations/push/role_changed/ar.txt new file mode 100644 index 0000000..756c331 --- /dev/null +++ b/notifications/translations/push/role_changed/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "لقد فعلتها! مرحبا بكم في فريق السفير. 🚀", + "title": "🌟 أنت بطل المجتمع!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/az.txt b/notifications/translations/push/role_changed/az.txt new file mode 100644 index 0000000..185d09b --- /dev/null +++ b/notifications/translations/push/role_changed/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Sən bunu bacardın! Səfir komandasına xoş gəlmisiniz. 🚀", + "title": "🌟Siz icma qəhrəmanısınız!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/bg.txt b/notifications/translations/push/role_changed/bg.txt new file mode 100644 index 0000000..e41aae8 --- /dev/null +++ b/notifications/translations/push/role_changed/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Ти успя! Добре дошли в екипа на посланика. 🚀", + "title": "🌟Ти си герой на общността!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/bn.txt b/notifications/translations/push/role_changed/bn.txt new file mode 100644 index 0000000..bc8f385 --- /dev/null +++ b/notifications/translations/push/role_changed/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "তুমি পেরেছো! রাষ্ট্রদূত দলে স্বাগতম। 🚀", + "title": "🌟আপনি একজন সম্প্রদায়ের নায়ক!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/cs.txt b/notifications/translations/push/role_changed/cs.txt new file mode 100644 index 0000000..4e27883 --- /dev/null +++ b/notifications/translations/push/role_changed/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Dokázal jsi to! Vítejte v týmu ambasadorů. 🚀", + "title": "🌟Jsi hrdina komunity!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/de.txt b/notifications/translations/push/role_changed/de.txt new file mode 100644 index 0000000..560dc4b --- /dev/null +++ b/notifications/translations/push/role_changed/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Sie haben es geschafft! Willkommen im Botschafter-Team. 🚀", + "title": "🌟Du bist ein Community-Held!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/en.txt b/notifications/translations/push/role_changed/en.txt new file mode 100644 index 0000000..cb05380 --- /dev/null +++ b/notifications/translations/push/role_changed/en.txt @@ -0,0 +1,4 @@ +{ + "body": "You made it! Welcome to the ambassador team. 🚀", + "title": "🌟You’re a community hero!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/es.txt b/notifications/translations/push/role_changed/es.txt new file mode 100644 index 0000000..e0ee794 --- /dev/null +++ b/notifications/translations/push/role_changed/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡Lo hiciste! Bienvenido al equipo de embajadores. 🚀", + "title": "🌟¡Eres un héroe de la comunidad!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/fa.txt b/notifications/translations/push/role_changed/fa.txt new file mode 100644 index 0000000..2704400 --- /dev/null +++ b/notifications/translations/push/role_changed/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "تو موفق شدی! به تیم سفیر خوش آمدید. 🚀", + "title": "🌟شما یک قهرمان جامعه هستید!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/fil.txt b/notifications/translations/push/role_changed/fil.txt new file mode 100644 index 0000000..8c70657 --- /dev/null +++ b/notifications/translations/push/role_changed/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Nagawa mo! Maligayang pagdating sa pangkat ng ambassador. 🚀", + "title": "🌟Ikaw ay isang bayani ng komunidad!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/fr.txt b/notifications/translations/push/role_changed/fr.txt new file mode 100644 index 0000000..95f1306 --- /dev/null +++ b/notifications/translations/push/role_changed/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Tu l'as fait! Bienvenue dans l'équipe des ambassadeurs. 🚀", + "title": "🌟Vous êtes un héros de la communauté!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ge.txt b/notifications/translations/push/role_changed/ge.txt new file mode 100644 index 0000000..0f5b9a0 --- /dev/null +++ b/notifications/translations/push/role_changed/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Τα κατάφερες! Καλώς ήρθατε στην ομάδα των πρεσβευτών. 🚀", + "title": "🌟Είστε ένας ήρωας της κοινότητας!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/gu.txt b/notifications/translations/push/role_changed/gu.txt new file mode 100644 index 0000000..3687a61 --- /dev/null +++ b/notifications/translations/push/role_changed/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમે તેને બનાવ્યું! એમ્બેસેડર ટીમમાં આપનું સ્વાગત છે. 🚀", + "title": "🌟તમે સમુદાયના હીરો છો!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/he.txt b/notifications/translations/push/role_changed/he.txt new file mode 100644 index 0000000..415ef71 --- /dev/null +++ b/notifications/translations/push/role_changed/he.txt @@ -0,0 +1,4 @@ +{ + "body": "עשית זאת! ברוכים הבאים לצוות השגרירים. 🚀", + "title": "🌟אתה גיבור קהילה!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/hi.txt b/notifications/translations/push/role_changed/hi.txt new file mode 100644 index 0000000..65ac906 --- /dev/null +++ b/notifications/translations/push/role_changed/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपने कर दिखाया! राजदूत टीम में आपका स्वागत है। 🚀", + "title": "🌟आप एक सामुदायिक नायक हैं!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/hu.txt b/notifications/translations/push/role_changed/hu.txt new file mode 100644 index 0000000..f7f5fb8 --- /dev/null +++ b/notifications/translations/push/role_changed/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Megcsináltad! Üdvözöljük a nagyköveti csapatban. 🚀", + "title": "🌟Te a közösség hőse vagy!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/id.txt b/notifications/translations/push/role_changed/id.txt new file mode 100644 index 0000000..2bbc753 --- /dev/null +++ b/notifications/translations/push/role_changed/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Kau berhasil! Selamat datang di tim duta besar. 🚀", + "title": "🌟Anda adalah pahlawan komunitas!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/it.txt b/notifications/translations/push/role_changed/it.txt new file mode 100644 index 0000000..fbcb990 --- /dev/null +++ b/notifications/translations/push/role_changed/it.txt @@ -0,0 +1,4 @@ +{ + "body": "L'hai fatta! Benvenuto nel team degli ambasciatori. 🚀", + "title": "🌟Sei un eroe della community!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ja.txt b/notifications/translations/push/role_changed/ja.txt new file mode 100644 index 0000000..a0db266 --- /dev/null +++ b/notifications/translations/push/role_changed/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "やった! アンバサダーチームへようこそ。 🚀", + "title": "🌟 あなたはコミュニティのヒーローです!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/jv.txt b/notifications/translations/push/role_changed/jv.txt new file mode 100644 index 0000000..50ba1a8 --- /dev/null +++ b/notifications/translations/push/role_changed/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Sampeyan digawe iku! Sugeng rawuh ing tim duta. 🚀", + "title": "🌟Sampeyan pahlawan komunitas!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/kn.txt b/notifications/translations/push/role_changed/kn.txt new file mode 100644 index 0000000..4a667f8 --- /dev/null +++ b/notifications/translations/push/role_changed/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನೀವು ಅದನ್ನು ಮಾಡಿದ್ದೀರಿ! ರಾಯಭಾರಿ ತಂಡಕ್ಕೆ ಸ್ವಾಗತ. 🚀", + "title": "🌟ನೀವು ಸಮುದಾಯದ ಹೀರೋ!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ko.txt b/notifications/translations/push/role_changed/ko.txt new file mode 100644 index 0000000..d198f18 --- /dev/null +++ b/notifications/translations/push/role_changed/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "네가 해냈어! 대사팀에 오신 것을 환영합니다. 🚀", + "title": "🌟 당신은 커뮤니티 영웅입니다!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/mr.txt b/notifications/translations/push/role_changed/mr.txt new file mode 100644 index 0000000..7524952 --- /dev/null +++ b/notifications/translations/push/role_changed/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तू करून दाखवलस! राजदूत संघात आपले स्वागत आहे. 🚀", + "title": "🌟तुम्ही समुदायाचे नायक आहात!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ms.txt b/notifications/translations/push/role_changed/ms.txt new file mode 100644 index 0000000..d950ded --- /dev/null +++ b/notifications/translations/push/role_changed/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda berjaya! Selamat datang ke pasukan duta. 🚀", + "title": "🌟Anda wira komuniti!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/no.txt b/notifications/translations/push/role_changed/no.txt new file mode 100644 index 0000000..ca0d31e --- /dev/null +++ b/notifications/translations/push/role_changed/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Du klarte det! Velkommen til ambassadørteamet. 🚀", + "title": "🌟Du er en fellesskapshelt!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/pa.txt b/notifications/translations/push/role_changed/pa.txt new file mode 100644 index 0000000..af922df --- /dev/null +++ b/notifications/translations/push/role_changed/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਸੀਂ ਇਸ ਨੂੰ ਬਣਾਇਆ ਹੈ! ਰਾਜਦੂਤ ਟੀਮ ਵਿੱਚ ਤੁਹਾਡਾ ਸੁਆਗਤ ਹੈ। 🚀", + "title": "🌟ਤੁਸੀਂ ਇੱਕ ਭਾਈਚਾਰੇ ਦੇ ਹੀਰੋ ਹੋ!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/pl.txt b/notifications/translations/push/role_changed/pl.txt new file mode 100644 index 0000000..abb948c --- /dev/null +++ b/notifications/translations/push/role_changed/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Zrobiłeś to! Witamy w zespole ambasadorów. 🚀", + "title": "🌟Jesteś bohaterem społeczności!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ps.txt b/notifications/translations/push/role_changed/ps.txt new file mode 100644 index 0000000..cc4bb0c --- /dev/null +++ b/notifications/translations/push/role_changed/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "تاسو جوړ کړ! د سفیر ټیم ته ښه راغلاست. 🚀", + "title": "🌟 تاسو د ټولنې اتل یاست!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/pt.txt b/notifications/translations/push/role_changed/pt.txt new file mode 100644 index 0000000..43c943a --- /dev/null +++ b/notifications/translations/push/role_changed/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Você conseguiu! Bem-vindo à equipe de embaixadores. 🚀", + "title": "🌟Você é um herói da comunidade!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ro.txt b/notifications/translations/push/role_changed/ro.txt new file mode 100644 index 0000000..df086dd --- /dev/null +++ b/notifications/translations/push/role_changed/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Ai făcut-o! Bun venit în echipa de ambasadori. 🚀", + "title": "🌟Ești un erou al comunității!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ru.txt b/notifications/translations/push/role_changed/ru.txt new file mode 100644 index 0000000..04656ad --- /dev/null +++ b/notifications/translations/push/role_changed/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Ты сделал это! Добро пожаловать в команду амбассадоров. 🚀", + "title": "🌟Ты герой сообщества!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/sd.txt b/notifications/translations/push/role_changed/sd.txt new file mode 100644 index 0000000..7b696ff --- /dev/null +++ b/notifications/translations/push/role_changed/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توهان ڪيو! سفير ٽيم ۾ ڀليڪار. 🚀", + "title": "🌟 توهان هڪ ڪميونٽي هيرو آهيو!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/sk.txt b/notifications/translations/push/role_changed/sk.txt new file mode 100644 index 0000000..361c606 --- /dev/null +++ b/notifications/translations/push/role_changed/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Dokázal si to! Vitajte v tíme ambasádorov. 🚀", + "title": "🌟Ste hrdina komunity!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/sl.txt b/notifications/translations/push/role_changed/sl.txt new file mode 100644 index 0000000..d99d4d7 --- /dev/null +++ b/notifications/translations/push/role_changed/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Uspelo ti je! Dobrodošli v ekipi ambasadorjev. 🚀", + "title": "🌟Ti si junak skupnosti!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/sq.txt b/notifications/translations/push/role_changed/sq.txt new file mode 100644 index 0000000..ff6fd3c --- /dev/null +++ b/notifications/translations/push/role_changed/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Ti e bëre atë! Mirë se vini në ekipin e ambasadorit. 🚀", + "title": "🌟Ju jeni një hero i komunitetit!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/su.txt b/notifications/translations/push/role_changed/su.txt new file mode 100644 index 0000000..ee42a92 --- /dev/null +++ b/notifications/translations/push/role_changed/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Anjeun dijieun! Wilujeng sumping di tim duta. 🚀", + "title": "🌟Anjeun pahlawan komunitas!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/sv.txt b/notifications/translations/push/role_changed/sv.txt new file mode 100644 index 0000000..2aa985c --- /dev/null +++ b/notifications/translations/push/role_changed/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Du gjorde det! Välkommen till ambassadörsteamet. 🚀", + "title": "🌟Du är en samhällshjälte!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ta.txt b/notifications/translations/push/role_changed/ta.txt new file mode 100644 index 0000000..1fd5313 --- /dev/null +++ b/notifications/translations/push/role_changed/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "நீ சாதித்துவிட்டாய்! தூதர் குழுவிற்கு வரவேற்கிறோம். 🚀", + "title": "🌟நீங்கள் ஒரு சமூக ஹீரோ!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/te.txt b/notifications/translations/push/role_changed/te.txt new file mode 100644 index 0000000..70db64a --- /dev/null +++ b/notifications/translations/push/role_changed/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీరు సాధించారు! రాయబారి బృందానికి స్వాగతం. 🚀", + "title": "🌟మీరు కమ్యూనిటీ హీరో!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/th.txt b/notifications/translations/push/role_changed/th.txt new file mode 100644 index 0000000..18aa615 --- /dev/null +++ b/notifications/translations/push/role_changed/th.txt @@ -0,0 +1,4 @@ +{ + "body": "คุณทำมัน! ยินดีต้อนรับคณะทูตานุทูต 🚀", + "title": "🌟คุณคือฮีโร่ของชุมชน!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/tr.txt b/notifications/translations/push/role_changed/tr.txt new file mode 100644 index 0000000..bcbb937 --- /dev/null +++ b/notifications/translations/push/role_changed/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "Başardın! Büyükelçi ekibine hoş geldiniz. 🚀", + "title": "🌟Sen bir topluluk kahramanısın!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/uk.txt b/notifications/translations/push/role_changed/uk.txt new file mode 100644 index 0000000..d9352a7 --- /dev/null +++ b/notifications/translations/push/role_changed/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Ти це зробив! Ласкаво просимо до команди посла. 🚀", + "title": "🌟Ти герой спільноти!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/ur.txt b/notifications/translations/push/role_changed/ur.txt new file mode 100644 index 0000000..a33ba7b --- /dev/null +++ b/notifications/translations/push/role_changed/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "تم نے کر دکھایا! سفیر ٹیم میں خوش آمدید۔ 🚀", + "title": "🌟آپ کمیونٹی کے ہیرو ہیں!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/vi.txt b/notifications/translations/push/role_changed/vi.txt new file mode 100644 index 0000000..7235cc3 --- /dev/null +++ b/notifications/translations/push/role_changed/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Bạn đã thực hiện nó! Chào mừng đến với đội đại sứ. 🚀", + "title": "🌟Bạn là người hùng của cộng đồng!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/yo.txt b/notifications/translations/push/role_changed/yo.txt new file mode 100644 index 0000000..dc9557f --- /dev/null +++ b/notifications/translations/push/role_changed/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "O ṣe! Kaabo si egbe asoju. 🚀", + "title": "🌟O jẹ akọni agbegbe!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/zh-hans.txt b/notifications/translations/push/role_changed/zh-hans.txt new file mode 100644 index 0000000..d9feb29 --- /dev/null +++ b/notifications/translations/push/role_changed/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "你做到了! 欢迎加入大使团队。 🚀", + "title": "🌟 你是社区英雄!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/zh-hant.txt b/notifications/translations/push/role_changed/zh-hant.txt new file mode 100644 index 0000000..7a759e9 --- /dev/null +++ b/notifications/translations/push/role_changed/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "你做到了! 歡迎加入大使團隊。 🚀", + "title": "🌟 你是社區英雄!" +} \ No newline at end of file diff --git a/notifications/translations/push/role_changed/zu.txt b/notifications/translations/push/role_changed/zu.txt new file mode 100644 index 0000000..81a8452 --- /dev/null +++ b/notifications/translations/push/role_changed/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Ukwenzile! Siyakwamukela ethimbeni lamanxusa. 🚀", + "title": "🌟Uyiqhawe lomphakathi!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/af.txt b/notifications/translations/push/social_badge_unlocked/af.txt new file mode 100644 index 0000000..50daebd --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/af.txt @@ -0,0 +1,4 @@ +{ + "body": "Jy het die {{.BadgeName}} sosiale kenteken ontsluit! Kyk dit in jou profiel.", + "title": "🎉 Nuwe kenteken verdien!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/am.txt b/notifications/translations/push/social_badge_unlocked/am.txt new file mode 100644 index 0000000..b670816 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/am.txt @@ -0,0 +1,4 @@ +{ + "body": "የ{{.BadgeName}} ማህበራዊ ባጅ ከፍተዋል! በመገለጫዎ ውስጥ ይመልከቱት።", + "title": "🎉 አዲስ ባጅ ተገኘ!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ar.txt b/notifications/translations/push/social_badge_unlocked/ar.txt new file mode 100644 index 0000000..1f8f1e9 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ar.txt @@ -0,0 +1,4 @@ +{ + "body": "لقد قمت بفتح الشارة الاجتماعية {{.BadgeName}}! تحقق من ذلك في ملف التعريف الخاص بك.", + "title": "🎉 تم الحصول على شارة جديدة!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/az.txt b/notifications/translations/push/social_badge_unlocked/az.txt new file mode 100644 index 0000000..da60b8c --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/az.txt @@ -0,0 +1,4 @@ +{ + "body": "Siz {{.BadgeName}} sosial nişanını açdınız! Bunu profilinizdə yoxlayın.", + "title": "🎉 Yeni nişan qazanıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/bg.txt b/notifications/translations/push/social_badge_unlocked/bg.txt new file mode 100644 index 0000000..5621c8a --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/bg.txt @@ -0,0 +1,4 @@ +{ + "body": "Вие отключихте социалната значка {{.BadgeName}}! Вижте го в профила си.", + "title": "🎉 Спечелена нова значка!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/bn.txt b/notifications/translations/push/social_badge_unlocked/bn.txt new file mode 100644 index 0000000..64ca60b --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/bn.txt @@ -0,0 +1,4 @@ +{ + "body": "আপনি {{.BadgeName}} সামাজিক ব্যাজ আনলক করেছেন! আপনার প্রোফাইলে এটি পরীক্ষা করে দেখুন.", + "title": "🎉 নতুন ব্যাজ অর্জিত!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/cs.txt b/notifications/translations/push/social_badge_unlocked/cs.txt new file mode 100644 index 0000000..7eed555 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/cs.txt @@ -0,0 +1,4 @@ +{ + "body": "Odemkli jste sociální odznak {{.BadgeName}}! Podívejte se na svůj profil.", + "title": "🎉 Získali jste nový odznak!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/de.txt b/notifications/translations/push/social_badge_unlocked/de.txt new file mode 100644 index 0000000..68877a8 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/de.txt @@ -0,0 +1,4 @@ +{ + "body": "Du hast das {{.BadgeName}} Social Badge freigeschaltet! Sieh es dir in deinem Profil an.", + "title": "🎉 Neues Abzeichen verdient!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/en.txt b/notifications/translations/push/social_badge_unlocked/en.txt new file mode 100644 index 0000000..2d012ad --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/en.txt @@ -0,0 +1,4 @@ +{ + "body": "You've unlocked the {{.BadgeName}} social badge! Check it out in your profile.", + "title": "🎉 New badge earned!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/es.txt b/notifications/translations/push/social_badge_unlocked/es.txt new file mode 100644 index 0000000..4a9cc76 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/es.txt @@ -0,0 +1,4 @@ +{ + "body": "¡Has desbloqueado la insignia social {{.BadgeName}}! Compruébalo en tu perfil.", + "title": "🎉 ¡Nueva insignia ganada!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/fa.txt b/notifications/translations/push/social_badge_unlocked/fa.txt new file mode 100644 index 0000000..5d63256 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/fa.txt @@ -0,0 +1,4 @@ +{ + "body": "شما نشان اجتماعی {{.BadgeName}} را باز کرده اید! آن را در پروفایل خود بررسی کنید.", + "title": "🎉 نشان جدید به دست آورد!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/fil.txt b/notifications/translations/push/social_badge_unlocked/fil.txt new file mode 100644 index 0000000..73370c7 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/fil.txt @@ -0,0 +1,4 @@ +{ + "body": "Na-unlock mo ang {{.BadgeName}} social badge! Tingnan ito sa iyong profile.", + "title": "🎉 Bagong badge ang nakuha!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/fr.txt b/notifications/translations/push/social_badge_unlocked/fr.txt new file mode 100644 index 0000000..ba7341d --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/fr.txt @@ -0,0 +1,4 @@ +{ + "body": "Vous avez débloqué le badge social {{.BadgeName}}! Vérifiez-le dans votre profil.", + "title": "🎉 Nouveau badge gagné!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ge.txt b/notifications/translations/push/social_badge_unlocked/ge.txt new file mode 100644 index 0000000..5464256 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ge.txt @@ -0,0 +1,4 @@ +{ + "body": "Ξεκλειδώσατε το κοινωνικό σήμα {{.BadgeName}}! Δείτε το στο προφίλ σας.", + "title": "🎉 Κερδίστηκε νέο σήμα!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/gu.txt b/notifications/translations/push/social_badge_unlocked/gu.txt new file mode 100644 index 0000000..662ec45 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/gu.txt @@ -0,0 +1,4 @@ +{ + "body": "તમે {{.BadgeName}} સામાજિક બેજ અનલૉક કર્યો છે! તેને તમારી પ્રોફાઇલમાં તપાસો.", + "title": "🎉 નવો બેજ મેળવ્યો!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/he.txt b/notifications/translations/push/social_badge_unlocked/he.txt new file mode 100644 index 0000000..3f27a99 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/he.txt @@ -0,0 +1,4 @@ +{ + "body": "פתחת את התג החברתי {{.BadgeName}}! בדוק את זה בפרופיל שלך.", + "title": "🎉 זכה בתג חדש!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/hi.txt b/notifications/translations/push/social_badge_unlocked/hi.txt new file mode 100644 index 0000000..9047986 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/hi.txt @@ -0,0 +1,4 @@ +{ + "body": "आपने {{.BadgeName}} सामाजिक बैज अनलॉक कर लिया है! इसे अपने प्रोफाइल में देखें।", + "title": "🎉 नया बैज अर्जित किया गया!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/hu.txt b/notifications/translations/push/social_badge_unlocked/hu.txt new file mode 100644 index 0000000..5c11f4d --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/hu.txt @@ -0,0 +1,4 @@ +{ + "body": "Feloldottad a {{.BadgeName}} közösségi jelvényt! Nézd meg a profilodban.", + "title": "🎉 Új jelvényt szerzett!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/id.txt b/notifications/translations/push/social_badge_unlocked/id.txt new file mode 100644 index 0000000..aa1cac7 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/id.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda telah membuka lencana sosial {{.BadgeName}}! Lihat di profil Anda.", + "title": "🎉 Lencana baru diperoleh!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/it.txt b/notifications/translations/push/social_badge_unlocked/it.txt new file mode 100644 index 0000000..a21bb58 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/it.txt @@ -0,0 +1,4 @@ +{ + "body": "Hai sbloccato il badge sociale {{.BadgeName}}! Dai un'occhiata nel tuo profilo.", + "title": "🎉 Nuovo badge guadagnato!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ja.txt b/notifications/translations/push/social_badge_unlocked/ja.txt new file mode 100644 index 0000000..65737c5 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ja.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} ソーシャル バッジのロックを解除しました! プロフィールからチェックしてみてください。", + "title": "🎉 新しいバッジを獲得しました!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/jv.txt b/notifications/translations/push/social_badge_unlocked/jv.txt new file mode 100644 index 0000000..f52dafb --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/jv.txt @@ -0,0 +1,4 @@ +{ + "body": "Sampeyan wis mbukak badge sosial {{.BadgeName}}! Priksa metu ing profil.", + "title": "🎉 Lencana anyar entuk!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/kn.txt b/notifications/translations/push/social_badge_unlocked/kn.txt new file mode 100644 index 0000000..6b6bee4 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/kn.txt @@ -0,0 +1,4 @@ +{ + "body": "ನೀವು {{.BadgeName}} ಸಾಮಾಜಿಕ ಬ್ಯಾಡ್ಜ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಿರುವಿರಿ! ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ನಲ್ಲಿ ಇದನ್ನು ಪರಿಶೀಲಿಸಿ.", + "title": "🎉 ಹೊಸ ಬ್ಯಾಡ್ಜ್ ಗಳಿಸಲಾಗಿದೆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ko.txt b/notifications/translations/push/social_badge_unlocked/ko.txt new file mode 100644 index 0000000..fbd4053 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ko.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} 소셜 배지를 잠금 해제했습니다! 프로필에서 확인하세요.", + "title": "🎉 새로운 배지를 획득했습니다!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/mr.txt b/notifications/translations/push/social_badge_unlocked/mr.txt new file mode 100644 index 0000000..56a74a2 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/mr.txt @@ -0,0 +1,4 @@ +{ + "body": "तुम्ही {{.BadgeName}} सोशल बॅज अनलॉक केला आहे! तुमच्या प्रोफाइलमध्ये ते पहा.", + "title": "🎉 नवीन बॅज मिळवला!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ms.txt b/notifications/translations/push/social_badge_unlocked/ms.txt new file mode 100644 index 0000000..ff2a2bb --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ms.txt @@ -0,0 +1,4 @@ +{ + "body": "Anda telah membuka kunci lencana sosial {{.BadgeName}}! Semak dalam profil anda.", + "title": "🎉 Lencana baharu diperoleh!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/no.txt b/notifications/translations/push/social_badge_unlocked/no.txt new file mode 100644 index 0000000..4a12869 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/no.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har låst opp det sosiale merket {{.BadgeName}}! Sjekk det ut i profilen din.", + "title": "🎉 Nytt merke opptjent!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/pa.txt b/notifications/translations/push/social_badge_unlocked/pa.txt new file mode 100644 index 0000000..1b5606f --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/pa.txt @@ -0,0 +1,4 @@ +{ + "body": "ਤੁਸੀਂ {{.BadgeName}} ਸਮਾਜਿਕ ਬੈਜ ਨੂੰ ਅਨਲੌਕ ਕਰ ਲਿਆ ਹੈ! ਇਸਨੂੰ ਆਪਣੇ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਦੇਖੋ।", + "title": "🎉 ਨਵਾਂ ਬੈਜ ਕਮਾਇਆ!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/pl.txt b/notifications/translations/push/social_badge_unlocked/pl.txt new file mode 100644 index 0000000..2f11fac --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/pl.txt @@ -0,0 +1,4 @@ +{ + "body": "Odblokowałeś odznakę społecznościową {{.BadgeName}}! Sprawdź to w swoim profilu.", + "title": "🎉 Zdobyto nową odznakę!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ps.txt b/notifications/translations/push/social_badge_unlocked/ps.txt new file mode 100644 index 0000000..eee45ba --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ps.txt @@ -0,0 +1,4 @@ +{ + "body": "تاسو د {{.BadgeName}} ټولنیز بیج خلاص کړی! په خپل پروفایل کې یې وګورئ.", + "title": "🎉 نوی بیج ترلاسه کړ!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/pt.txt b/notifications/translations/push/social_badge_unlocked/pt.txt new file mode 100644 index 0000000..fc21241 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/pt.txt @@ -0,0 +1,4 @@ +{ + "body": "Você desbloqueou a insígnia social {{.BadgeName}}! Confira no seu perfil.", + "title": "🎉 Nova insígnia conquistada!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ro.txt b/notifications/translations/push/social_badge_unlocked/ro.txt new file mode 100644 index 0000000..4ac20d5 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ro.txt @@ -0,0 +1,4 @@ +{ + "body": "Ați deblocat insigna socială {{.BadgeName}}! Verifică-l în profilul tău.", + "title": "🎉 Insigna nouă obținută!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ru.txt b/notifications/translations/push/social_badge_unlocked/ru.txt new file mode 100644 index 0000000..513363a --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ru.txt @@ -0,0 +1,4 @@ +{ + "body": "Вы разблокировали социальный значок {{.BadgeName}}! Проверьте это в своем профиле.", + "title": "🎉 Получен новый значок!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/sd.txt b/notifications/translations/push/social_badge_unlocked/sd.txt new file mode 100644 index 0000000..1ef9d02 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/sd.txt @@ -0,0 +1,4 @@ +{ + "body": "توھان ان لاڪ ڪيو آھي {{.BadgeName}} سماجي بيج! ان کي چيڪ ڪريو توهان جي پروفائيل ۾.", + "title": "🎉 نئون بيج ڪمايو!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/sk.txt b/notifications/translations/push/social_badge_unlocked/sk.txt new file mode 100644 index 0000000..a7652ae --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/sk.txt @@ -0,0 +1,4 @@ +{ + "body": "Odomkli ste sociálny odznak {{.BadgeName}}! Pozrite si to vo svojom profile.", + "title": "🎉 Získali ste nový odznak!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/sl.txt b/notifications/translations/push/social_badge_unlocked/sl.txt new file mode 100644 index 0000000..40e03ef --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/sl.txt @@ -0,0 +1,4 @@ +{ + "body": "Odklenili ste socialno značko {{.BadgeName}}! Preverite v svojem profilu.", + "title": "🎉 Pridobljena nova značka!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/sq.txt b/notifications/translations/push/social_badge_unlocked/sq.txt new file mode 100644 index 0000000..6a26e98 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/sq.txt @@ -0,0 +1,4 @@ +{ + "body": "Ke zhbllokuar distinktivin social {{.BadgeName}}! Shikojeni në profilin tuaj.", + "title": "🎉 Fituar distinktivin e ri!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/su.txt b/notifications/translations/push/social_badge_unlocked/su.txt new file mode 100644 index 0000000..c93afe7 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/su.txt @@ -0,0 +1,4 @@ +{ + "body": "Anjeun geus muka konci badge sosial {{.BadgeName}}! Pariksa dina profil anjeun.", + "title": "🎉 Lencana anyar meunang!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/sv.txt b/notifications/translations/push/social_badge_unlocked/sv.txt new file mode 100644 index 0000000..9f71a45 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/sv.txt @@ -0,0 +1,4 @@ +{ + "body": "Du har låst upp det sociala märket {{.BadgeName}}! Kolla in det i din profil.", + "title": "🎉 Nytt märke intjänat!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ta.txt b/notifications/translations/push/social_badge_unlocked/ta.txt new file mode 100644 index 0000000..c970c2f --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ta.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} சமூக பேட்ஜைத் திறந்துவிட்டீர்கள்! அதை உங்கள் சுயவிவரத்தில் பார்க்கவும்.", + "title": "🎉 புதிய பேட்ஜ் கிடைத்தது!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/te.txt b/notifications/translations/push/social_badge_unlocked/te.txt new file mode 100644 index 0000000..ff94db1 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/te.txt @@ -0,0 +1,4 @@ +{ + "body": "మీరు {{.BadgeName}} సామాజిక బ్యాడ్జ్‌ని అన్‌లాక్ చేసారు! మీ ప్రొఫైల్‌లో దాన్ని తనిఖీ చేయండి.", + "title": "🎉 కొత్త బ్యాడ్జ్ సంపాదించారు!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/th.txt b/notifications/translations/push/social_badge_unlocked/th.txt new file mode 100644 index 0000000..e6376f7 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/th.txt @@ -0,0 +1,4 @@ +{ + "body": "คุณปลดล็อกป้ายโซเชียล {{.BadgeName}} แล้ว! ลองดูในโปรไฟล์ของคุณ", + "title": "🎉 ได้รับตราใหม่แล้ว!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/tr.txt b/notifications/translations/push/social_badge_unlocked/tr.txt new file mode 100644 index 0000000..46d08e5 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/tr.txt @@ -0,0 +1,4 @@ +{ + "body": "{{.BadgeName}} sosyal rozetini açtınız! Profilinizde kontrol edin.", + "title": "🎉 Yeni rozet kazanıldı!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/uk.txt b/notifications/translations/push/social_badge_unlocked/uk.txt new file mode 100644 index 0000000..0ea602e --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/uk.txt @@ -0,0 +1,4 @@ +{ + "body": "Ви розблокували соціальний значок {{.BadgeName}}! Перегляньте це у своєму профілі.", + "title": "🎉 Отримано новий значок!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/ur.txt b/notifications/translations/push/social_badge_unlocked/ur.txt new file mode 100644 index 0000000..a68731d --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/ur.txt @@ -0,0 +1,4 @@ +{ + "body": "آپ نے {{.BadgeName}} سماجی بیج کو غیر مقفل کر دیا ہے! اسے اپنے پروفائل میں چیک کریں۔", + "title": "🎉 نیا بیج حاصل کیا گیا!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/vi.txt b/notifications/translations/push/social_badge_unlocked/vi.txt new file mode 100644 index 0000000..c6615ea --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/vi.txt @@ -0,0 +1,4 @@ +{ + "body": "Bạn đã mở khóa huy hiệu xã hội {{.BadgeName}}! Kiểm tra nó ra trong hồ sơ của bạn.", + "title": "🎉 Đã kiếm được huy hiệu mới!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/yo.txt b/notifications/translations/push/social_badge_unlocked/yo.txt new file mode 100644 index 0000000..a16f6dc --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/yo.txt @@ -0,0 +1,4 @@ +{ + "body": "O ti ṣii baaji awujo {{.BadgeName}}! Ṣayẹwo rẹ ninu profaili rẹ.", + "title": "🎉 Titun baaji mina!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/zh-hans.txt b/notifications/translations/push/social_badge_unlocked/zh-hans.txt new file mode 100644 index 0000000..60c0a43 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/zh-hans.txt @@ -0,0 +1,4 @@ +{ + "body": "你已经解锁了 {{.BadgeName}} 社交徽章! 在您的个人资料中查看。", + "title": "🎉 获得新徽章!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/zh-hant.txt b/notifications/translations/push/social_badge_unlocked/zh-hant.txt new file mode 100644 index 0000000..dc6dc6c --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/zh-hant.txt @@ -0,0 +1,4 @@ +{ + "body": "你已經解鎖了 {{.BadgeName}} 社交徽章! 在您的個人資料中查看。", + "title": "🎉 獲得新徽章!" +} \ No newline at end of file diff --git a/notifications/translations/push/social_badge_unlocked/zu.txt b/notifications/translations/push/social_badge_unlocked/zu.txt new file mode 100644 index 0000000..7046bb9 --- /dev/null +++ b/notifications/translations/push/social_badge_unlocked/zu.txt @@ -0,0 +1,4 @@ +{ + "body": "Uvule ibheji yomphakathi ye-{{.BadgeName}}! Kuhlole kuphrofayela yakho.", + "title": "🎉 Ibheji elisha elizuziwe!" +} \ No newline at end of file diff --git a/notifications/users.go b/notifications/users.go new file mode 100644 index 0000000..1a4a008 --- /dev/null +++ b/notifications/users.go @@ -0,0 +1,419 @@ +// SPDX-License-Identifier: ice License 1.0 + +package notifications + +import ( + "context" + "fmt" + "strings" + + "github.com/goccy/go-json" + "github.com/hashicorp/go-multierror" + "github.com/pkg/errors" + + "github.com/ice-blockchain/eskimo/users" + "github.com/ice-blockchain/go-tarantool-client" + messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" + "github.com/ice-blockchain/wintr/connectors/storage" + "github.com/ice-blockchain/wintr/log" + "github.com/ice-blockchain/wintr/time" +) + +func (r *repository) GetNotificationChannelToggles( //nolint:funlen,gocognit,gocyclo,revive,cyclop // . + ctx context.Context, channel NotificationChannel, userID string, +) (resp []*NotificationChannelToggle, err error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "unexpected deadline") + } + resp = r.defaultNotificationChannelToggles(channel) + usr, err := r.getUserByID(ctx, userID) + if err != nil { + if errors.Is(err, ErrNotFound) { + return resp, nil + } + + return nil, errors.Wrapf(err, "failed to get user by id:%v ", userID) + } + switch channel { //nolint:exhaustive // We don't care about the rest. + case EmailNotificationChannel: + if usr.DisabledEmailNotificationDomains != nil && len(*usr.DisabledEmailNotificationDomains) > 0 { + for _, domain := range *usr.DisabledEmailNotificationDomains { + for _, toggle := range resp { + if toggle.Type == DisableAllNotificationDomain && domain == AllNotificationDomain { + toggle.Enabled = true + } else if domain == toggle.Type { + toggle.Enabled = false + } + } + } + } + case PushNotificationChannel: + if usr.DisabledPushNotificationDomains != nil && len(*usr.DisabledPushNotificationDomains) > 0 { + for _, domain := range *usr.DisabledPushNotificationDomains { + for _, toggle := range resp { + if toggle.Type == DisableAllNotificationDomain && domain == AllNotificationDomain { + toggle.Enabled = true + } else if domain == toggle.Type { + toggle.Enabled = false + } + } + } + } + default: + log.Panic(fmt.Sprintf("channel `%v` not supported", channel)) + } + + return resp, nil +} + +func (*repository) defaultNotificationChannelToggles(channel NotificationChannel) []*NotificationChannelToggle { + all := AllNotificationDomains[channel] + resp := make([]*NotificationChannelToggle, 0, len(all)) + for _, domain := range all { + resp = append(resp, &NotificationChannelToggle{ + Type: domain, + Enabled: domain != DisableAllNotificationDomain, + }) + } + + return resp +} + +func (r *repository) ToggleNotificationChannelDomain( //nolint:funlen,gocognit,gocyclo,revive,cyclop,maintidx // . + ctx context.Context, channel NotificationChannel, domain NotificationDomain, enabled bool, userID string, +) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline") + } + usr, err := r.getUserByID(ctx, userID) + if err != nil { + if errors.Is(err, ErrNotFound) { + err = ErrRelationNotFound + } + + return errors.Wrapf(err, "failed to get user by id:%v ", userID) + } + op := tarantool.Op{Op: "="} + switch channel { //nolint:exhaustive // We don't care about the rest. + case EmailNotificationChannel: //nolint:dupl // . + op.Field = 2 + if enabled && domain != DisableAllNotificationDomain { //nolint:nestif // . + if usr.DisabledEmailNotificationDomains != nil && len(*usr.DisabledEmailNotificationDomains) > 0 { + for i, disabledDomain := range *usr.DisabledEmailNotificationDomains { + if domain == disabledDomain { + (*usr.DisabledEmailNotificationDomains)[i] = "" + op.Arg = usr.DisabledEmailNotificationDomains + + break + } + } + } + } else { + if usr.DisabledEmailNotificationDomains != nil && len(*usr.DisabledEmailNotificationDomains) > 0 { + alreadyThere := !enabled && domain == DisableAllNotificationDomain + for i, disabledDomain := range *usr.DisabledEmailNotificationDomains { + if !enabled && domain == DisableAllNotificationDomain && disabledDomain == AllNotificationDomain { + (*usr.DisabledEmailNotificationDomains)[i] = "" + op.Arg = usr.DisabledEmailNotificationDomains + alreadyThere = true + + break + } + if (enabled && domain == DisableAllNotificationDomain && disabledDomain == AllNotificationDomain) || domain == disabledDomain { + alreadyThere = true + + break + } + } + if !alreadyThere { + actualDomain := domain + if domain == DisableAllNotificationDomain { + actualDomain = AllNotificationDomain + } + *usr.DisabledEmailNotificationDomains = append(*usr.DisabledEmailNotificationDomains, actualDomain) + op.Arg = usr.DisabledEmailNotificationDomains + } + } else { + if !enabled && domain == DisableAllNotificationDomain { + break + } + actualDomain := domain + if domain == DisableAllNotificationDomain { + actualDomain = AllNotificationDomain + } + disabledDomains := append(make(users.Enum[NotificationDomain], 0, 1), actualDomain) + usr.DisabledEmailNotificationDomains = &disabledDomains + op.Arg = usr.DisabledEmailNotificationDomains + } + } + case PushNotificationChannel: //nolint:dupl // . + op.Field = 1 + if enabled && domain != DisableAllNotificationDomain { //nolint:nestif // . + if usr.DisabledPushNotificationDomains != nil && len(*usr.DisabledPushNotificationDomains) > 0 { + for i, disabledDomain := range *usr.DisabledPushNotificationDomains { + if domain == disabledDomain { + (*usr.DisabledPushNotificationDomains)[i] = "" + op.Arg = usr.DisabledPushNotificationDomains + + break + } + } + } + } else { + if usr.DisabledPushNotificationDomains != nil && len(*usr.DisabledPushNotificationDomains) > 0 { + alreadyThere := !enabled && domain == DisableAllNotificationDomain + for i, disabledDomain := range *usr.DisabledPushNotificationDomains { + if !enabled && domain == DisableAllNotificationDomain && disabledDomain == AllNotificationDomain { + (*usr.DisabledPushNotificationDomains)[i] = "" + op.Arg = usr.DisabledPushNotificationDomains + alreadyThere = true + + break + } + if (enabled && domain == DisableAllNotificationDomain && disabledDomain == AllNotificationDomain) || domain == disabledDomain { + alreadyThere = true + + break + } + } + if !alreadyThere { + actualDomain := domain + if domain == DisableAllNotificationDomain { + actualDomain = AllNotificationDomain + } + *usr.DisabledPushNotificationDomains = append(*usr.DisabledPushNotificationDomains, actualDomain) + op.Arg = usr.DisabledPushNotificationDomains + } + } else { + if !enabled && domain == DisableAllNotificationDomain { + break + } + actualDomain := domain + if domain == DisableAllNotificationDomain { + actualDomain = AllNotificationDomain + } + disabledDomains := append(make(users.Enum[NotificationDomain], 0, 1), actualDomain) + usr.DisabledPushNotificationDomains = &disabledDomains + op.Arg = usr.DisabledPushNotificationDomains + } + } + default: + log.Panic(fmt.Sprintf("channel `%v` not supported", channel)) + } + if op.Arg == nil { + return nil + } + disabledDomains := *(op.Arg.(*users.Enum[NotificationDomain])) //nolint:forcetypeassert // We know for sure. + sanitizedDisabledDomains := make(users.Enum[NotificationDomain], 0, len(disabledDomains)) + for _, notificationDomain := range disabledDomains { + if notificationDomain != "" { + sanitizedDisabledDomains = append(sanitizedDisabledDomains, notificationDomain) + } + } + op.Arg = &sanitizedDisabledDomains + resp := make([]*user, 0, 1) + if err = storage.CheckNoSQLDMLErr(r.db.UpdateTyped("USERS", "pk_unnamed_USERS_1", tarantool.StringKey{S: userID}, append(make([]tarantool.Op, 0, 1), op), &resp)); err != nil { //nolint:lll // . + if errors.Is(err, storage.ErrNotFound) { + err = ErrRelationNotFound + } + + return errors.Wrapf(err, "failed to update users for userID:%v,ops:%#v", userID, op) + } + if len(resp) == 0 || resp[0].UserID == "" { //nolint:revive // Wrong. + return ErrRelationNotFound + } + + return nil +} + +func (s *userTableSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:gocognit // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + snapshot := new(users.UserSnapshot) + if err := json.UnmarshalContext(ctx, msg.Value, snapshot); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), snapshot) + } + if (snapshot.Before == nil || snapshot.Before.ID == "") && (snapshot.User == nil || snapshot.User.ID == "") { + return nil + } + if snapshot.Before != nil && snapshot.Before.ID != "" && (snapshot.User == nil || snapshot.User.ID == "") { + return errors.Wrapf(s.deleteUser(ctx, snapshot), "failed to delete user:%#v", snapshot) + } + if err := s.upsertUser(ctx, snapshot); err != nil { + return errors.Wrapf(err, "failed to upsert:%#v", snapshot) + } + + return multierror.Append(nil, //nolint:wrapcheck // Not needed. + errors.Wrapf(s.sendNewReferralNotification(ctx, snapshot), "failed to sendNewReferralNotification for :%#v", snapshot), + errors.Wrapf(s.sendNewContactNotification(ctx, snapshot), "failed to sendNewContactNotification for :%#v", snapshot), + ).ErrorOrNil() +} + +func (s *userTableSource) upsertUser(ctx context.Context, us *users.UserSnapshot) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + insertTuple := &user{ + PhoneNumber: us.PhoneNumber, + Email: us.Email, + FirstName: us.FirstName, + LastName: us.LastName, + UserID: us.ID, + Username: us.Username, + ProfilePictureName: s.pictureClient.StripDownloadURL(strings.Replace(us.ProfilePictureURL, "profile/", "", 1)), + ReferredBy: us.ReferredBy, + PhoneNumberHash: us.PhoneNumberHash, + AgendaPhoneNumberHashes: us.AgendaPhoneNumberHashes, + Language: us.Language, + } + //nolint:gomnd // Those are the field indices. + ops := append(make([]tarantool.Op, 0, 10), + tarantool.Op{Op: "=", Field: 4, Arg: us.PhoneNumber}, + tarantool.Op{Op: "=", Field: 5, Arg: us.Email}, + tarantool.Op{Op: "=", Field: 6, Arg: us.FirstName}, + tarantool.Op{Op: "=", Field: 7, Arg: us.LastName}, + tarantool.Op{Op: "=", Field: 9, Arg: us.Username}, + tarantool.Op{Op: "=", Field: 10, Arg: s.pictureClient.StripDownloadURL(strings.Replace(us.ProfilePictureURL, "profile/", "", 1))}, + tarantool.Op{Op: "=", Field: 11, Arg: us.ReferredBy}, + tarantool.Op{Op: "=", Field: 12, Arg: us.PhoneNumberHash}, + tarantool.Op{Op: "=", Field: 13, Arg: us.AgendaPhoneNumberHashes}, + tarantool.Op{Op: "=", Field: 14, Arg: us.Language}) + + return errors.Wrapf(storage.CheckNoSQLDMLErr(s.db.UpsertTyped("USERS", insertTuple, ops, &[]*user{})), "failed to upsert %#v", us) +} + +func (s *userTableSource) deleteUser(ctx context.Context, us *users.UserSnapshot) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "context failed") + } + sql := `DELETE FROM users WHERE user_id = :user_id` + params := map[string]any{"user_id": us.Before.ID} + + return errors.Wrapf(storage.CheckSQLDMLErr(s.db.PrepareExecute(sql, params)), "failed to delete user:%#v", us) +} + +func (r *repository) getUserByID(ctx context.Context, userID string) (*user, error) { + if ctx.Err() != nil { + return nil, errors.Wrap(ctx.Err(), "context failed") + } + usr := new(user) + if err := r.db.GetTyped("USERS", "pk_unnamed_USERS_1", tarantool.StringKey{S: userID}, usr); err != nil { + return nil, errors.Wrapf(err, "failed to get user by id: %#v", userID) + } + if usr.UserID == "" { + return nil, storage.ErrNotFound + } + + return usr, nil +} + +func (u *deviceMetadataTableSource) Process(ctx context.Context, msg *messagebroker.Message) error { + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected deadline while processing message") + } + if len(msg.Value) == 0 { + return nil + } + snapshot := new(users.DeviceMetadataSnapshot) + if err := json.UnmarshalContext(ctx, msg.Value, snapshot); err != nil { + return errors.Wrapf(err, "cannot unmarshal %v into %#v", string(msg.Value), snapshot) + } + if snapshot.DeviceMetadata == nil || snapshot.DeviceMetadata.ID.UserID == "" || + (snapshot.Before != nil && snapshot.Before.PushNotificationToken == snapshot.DeviceMetadata.PushNotificationToken) { + return nil + } + type deviceMetadata struct { + _msgpack struct{} `msgpack:",asArray"` //nolint:unused,tagliatelle,revive,nosnakecase // . + users.DeviceID + PushNotificationToken string + } + insertTuple := deviceMetadata{ + DeviceID: snapshot.ID, + PushNotificationToken: snapshot.PushNotificationToken, + } + ops := append(make([]tarantool.Op, 0, 1), tarantool.Op{Op: "=", Field: 2, Arg: snapshot.PushNotificationToken}) //nolint:gomnd // Field index. + + return errors.Wrapf(storage.CheckNoSQLDMLErr(u.db.UpsertTyped("DEVICE_METADATA", insertTuple, ops, &[]*deviceMetadata{})), + "failed to upsert %#v", insertTuple) +} + +func (r *repository) PingUser(ctx context.Context, userID string) error { //nolint:funlen,gocognit,revive // . + if ctx.Err() != nil { + return errors.Wrap(ctx.Err(), "unexpected context deadline") + } + usr, err := r.getUserByID(ctx, userID) + if err != nil { + return errors.Wrapf(err, "failed to getUserByID for userID:%v", userID) + } + reqUserID := requestingUserID(ctx) + if usr.ReferredBy != reqUserID { + ref, refErr := r.getUserByID(ctx, reqUserID) + if refErr != nil { + return errors.Wrapf(refErr, "failed to getUserByID for reqUserID:%v", reqUserID) + } + if ref.ReferredBy != userID { + return ErrPingingUserNotAllowed + } + } + now := time.Now() + newPingCooldownEndsAt := time.New(now.Add(r.cfg.PingCooldown)) + if usr.LastPingCooldownEndedAt != nil && usr.LastPingCooldownEndedAt.After(*now.Time) { + return ErrDuplicate + } + sql := `UPDATE users + SET last_ping_cooldown_ended_at = :now_nanos + WHERE user_id = :user_id + AND referred_by = :referred_by + AND IFNULL(last_ping_cooldown_ended_at, 0) = IFNULL(:last_ping_cooldown_ended_at, 0)` + params := make(map[string]any, 1+1+1+1) + params["user_id"] = userID + params["referred_by"] = usr.ReferredBy + params["now_nanos"] = newPingCooldownEndsAt + params["last_ping_cooldown_ended_at"] = usr.LastPingCooldownEndedAt + if err = storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)); err != nil { + if errors.Is(err, storage.ErrNotFound) { + return r.PingUser(ctx, userID) + } + + return errors.Wrapf(err, "failed to update users to set last_ping_cooldown_ended_at params:%#v", params) + } + up := &UserPing{UserID: userID, PingedBy: reqUserID, LastPingCooldownEndedAt: newPingCooldownEndsAt} + + if err = r.sendUserPingMessage(ctx, up); err != nil { + params["now_nanos"] = usr.LastPingCooldownEndedAt + params["last_ping_cooldown_ended_at"] = newPingCooldownEndsAt + rErr := storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)) + if rErr != nil && errors.Is(rErr, storage.ErrNotFound) { + return r.PingUser(ctx, userID) + } + + return multierror.Append( //nolint:wrapcheck // Not needed. + errors.Wrapf(err, "failed to sendUserPingMessage %#v", up), + errors.Wrapf(rErr, "[rollback] failed to update users to set last_ping_cooldown_ended_at params:%#v", params), + ).ErrorOrNil() + } + + return nil +} + +func (r *repository) sendUserPingMessage(ctx context.Context, up *UserPing) error { + valueBytes, err := json.MarshalContext(ctx, up) + if err != nil { + return errors.Wrapf(err, "failed to marshal %#v", up) + } + msg := &messagebroker.Message{ + Headers: map[string]string{"producer": "husky"}, + Key: up.UserID, + Topic: r.cfg.MessageBroker.Topics[1].Name, + Value: valueBytes, + } + responder := make(chan error, 1) + defer close(responder) + r.mb.SendMessage(ctx, msg, responder) + + return errors.Wrapf(<-responder, "failed to send `%v` message to broker", msg.Topic) +}