Commit Graph

485 Commits

Author SHA1 Message Date
VitaliiShpital
3bbf08917c web/satellite: node packages updated
WHAT:
node packages updated to be up to date

Change-Id: Ic5a44c548562f16b23da59d3c39c4634572f7b35
2020-09-16 12:37:21 +00:00
VitaliiShpital
7d5e0259f6 satellite/projects: initial update project name functionality implemented
WHAT:
added functionality for user to update project name. Logic only, without actual GUI updates.

WHY:
better user experience

Change-Id: I1e38e33ba827b0bdf2c89e29de24e4e87edb474a
2020-09-15 12:21:56 +03:00
VitaliiShpital
df5a6ebe32 web/satellite: navigation sidebar and dashboard header reworked
WHAT:
Navigation sidebar reworked.
Project dropdown moved back to header, resources and settings sections moved to header as dropdowns.
Header reworked to match new design.

WHY:
GUI redesign

Change-Id: I73e1269326d3dbfba2e44d848dba4a415e64e539
2020-09-10 10:38:00 +00:00
VitaliiShpital
c4d6f472fc web/satellite: notification bar for reaching projects count limit
WHAT:
notification bar added to project dashboard page. It is shown when projects count limit is reached.
Create project button is removed after creating last available project

WHY:
inform user that their projects count limit was reached

Change-Id: If0d67148003be40cc9eb4d8b25cc17f8204008d4
2020-09-08 15:48:27 +00:00
Malcolm Bouzi
3f0c21323d
web/satellite: create new project button added to projects dropdown (#3936)
Change-Id: Ib604f24e0c11fee97d22e71a0c7c83b7e8a1e56a

Co-authored-by: VitaliiShpital <takur12345@gmail.com>
2020-09-03 17:58:29 +03:00
VitaliiShpital
c1e089b226 web/satellite: create project popup replaced with separate page
WHAT:
create project popup removed. Separate page implemented instead.

WHY:
to fulfill multiple project state requirements

change-Id: Iab65981aef1d9b0caceca94b1109fa63f8f22891
2020-09-03 12:56:40 +03:00
VitaliiShpital
3fbbe1847e web/satellite: scrolling with no paywall banner fixed
WHAT:
dashboard and billing pages' scrolling fixed with no paywall banner

WHY:
content was slightly clipped

Change-Id: I4d663775456980887af7bc41c72bf3a8da87d301
2020-09-02 09:51:04 +00:00
VitaliiShpital
5729d087b0 web/satellite: dashboard template simplified, project selection moved to nav bar
WHAT:
project selection moved to navigation panel

WHY:
preparing for multiple project state

Change-Id: I434c73c25b3fec85fc7226a8400cf280b379b537
2020-08-21 17:33:14 +03:00
VitaliiShpital
e5012fcb3d web/satellite: info bars for accounts with no paywall
WHAT:
info bars for accounts with no paywall implemented, USR-976

WHY:
we should notify users with no paywall that available coupon value is running low or coupon is used

Change-Id: I1a84afce890515b3aaedf1f0b8d359499af05471
2020-08-21 09:39:01 +00:00
VitaliiShpital
3383acc3c8 web/satellite: low balance banner removed for no paywall users
WHAT:
yellow low balance banner removed from billing page for no paywall users

WHY:
better user experience for no paywall users

Change-Id: I1c254d7696e166073c66a6fbb82c134903cbc920
2020-08-14 16:20:47 +00:00
VitaliiShpital
c921710247 web/satellite: confirm saving API key modal implemented
WHAT:
modal with saving API key confirmation implemented for onboarding tour

WHY:
ensure user saved API key

Change-Id: I9bc000cf5a19a9d6fc9eb3a4bfb9156d6b4bc78f
2020-08-11 13:19:01 +00:00
Malcolm Bouzi
2ef9f7f644
change doc link (#3924)
Co-authored-by: VitaliiShpital <takur12345@gmail.com>
2020-08-06 10:51:07 +02:00
Michal Niewrzal
4561d9bdb0 satellite/console/consoleweb: add support for partner parameter for
signup page

With this change partner id can be associated with user during creating
account by adding `?partner=partner_name` parameter to signup page url
e.g. https://tardigrade.io/signup?partner=mongodb

https://storjlabs.atlassian.net/browse/USR-999

Change-Id: I12a5ebec92a6f5135909447172ef24da57fb1c68
2020-07-30 11:29:31 +00:00
Bill Thorp
b265b7f555 satellite/console: make paywall optional
Add a config so that some percent of users require credit cards /
account balances
in order to create a project or have a promotional coupon applied

UI was updated to match needed paywall status

At this point we decided not to use a field to store if a user is in an
A/B
test, and instead just use math to see if they're in a test.  We decided
to use MD5 (because its in Postgres too) and User UUID for that math.

Change-Id: I0fcd80707dc29afc668632d078e1b5a7a24f3bb3
2020-07-28 10:57:49 +00:00
VitaliiShpital
4684eb5b75 web/satellite: completed transaction state condition changed
WHAT:
completed transaction state condition depends only on stripe balance now

WHY:
avoid waiting for transaction status to update

Change-Id: I09be620f94934209b60ef692ffcc0f5097880920
2020-07-17 17:29:14 +03:00
VitaliiShpital
0a800336cb web/satellite: token deposit dropdown position fixed
WHAT:
dropdown position fixed before first ever transaction

WHY:
bug fix

Change-Id: I049acc1e1bc8311e165efc92c9769c989dbb8e41
2020-07-16 14:36:03 +00:00
stefanbenten
9ace375ee0 satellite/{console,satellitedb}: change project limiting based on new users field
This change switches the backend logic to use the new DB column on the users table to restrict project creation.
Furthermore it back fills the existing limits from registration tokens to the new column to ensure no users are reset to the new default.

UI is updated to reflect ability to create several projects

Change-Id: Ie29157430ae6b065411ca4c4557c9f1be69cdc4f
2020-07-16 10:57:47 +00:00
VitaliiShpital
d4bde7848e web/satellite: coupon status replaced with expiration date
WHAT:
coupon status view replaced with month and year of coupon expiration date

WHY:
better User experience

Change-Id: I67abe14418aeb876a524de5e3f3c027407343100
2020-07-13 18:02:44 +00:00
VitaliiShpital
02a39354c6 web/satellite: rel='noopener noreferrer' added to blank links
WHAT:
rels added to target="_blank" links

WHY:
to avoid tabnapping

Change-Id: Iada8ad4e1e1be5d4efd33f5d8c5b14816c2d85e0
2020-07-13 17:21:32 +00:00
VitaliiShpital
dd9eaafceb web/satellite: api keys component slightly refactored
Change-Id: I8d2bde0a7d2c2778ba3c906232a1a38aaf94cff3
2020-07-08 10:13:39 +00:00
VitaliiShpital
a26fab2553 web/satellite: balance history dropdown implemented on billing page
WHAT:
1. STORJ Balance renamed to Available Balance
2. Balance history dropdown added

WHY:
better User experience

Change-Id: I4e7186fd285f6d9d1dd4b1ad93142fcf9d3367f3
2020-07-08 09:59:05 +00:00
VitaliiShpital
2ec9de94ba web/satellite: onboarding tour's payment wall updated
WHAT:
1. payment step added to overview screen
2. pricing modal added to payment screen
3. info bar with payment info added to be shown before adding first payment method
4. message on verifying coin payment transaction screen was updated
5. coin payment transaction checkout button added to verifying screen

WHY:
better User experience

Change-Id: Ia3b12a3f7f6c874f19a9414b61afc6ba5a29970b
2020-07-08 09:44:25 +00:00
VitaliiShpital
5b3c8b2f1a web/satellite: google tag manager for signup pages
WHAT:
GTM added for partnered satellites sign up pages
csp values were extended to make GTM work at all:
1. googletagmanager.com for GTM script
2. google-analytics.com for GA script
3. hash was added to avoid using 'unsafe-inline' value in 'script-src' directive

Also config flag for GTM id was added

WHY:
Marketing team needs GTM and GA for their campaigns

Change-Id: Ibb2ace737feb971dda6c191599d479fe4a7af332
2020-06-23 10:45:04 +00:00
VitaliiShpital
8ecf01ece8 web/satellite: credit history page implemented
WHAT:
credit history page implemented.
can be visited by clicking specific button in a free credits dropdown.

WHY:
UI didn't display remaining coupon value.
coupons and referral items (in future) are displayed in the same place.

Change-Id: I495fd7a99f2ea5117152aaf8f495bd5322f02588
2020-06-12 14:31:02 +00:00
VitaliiShpital
a7211badc2 web/satellite: validate methods replaced into class Validator
Change-Id: Ib52b7209bab3fc1cb2f713421ef6bac2125c5f04
2020-06-09 13:05:24 +00:00
VitaliiShpital
cc0fca850e web/satellite: charges container on billing page reworked
WHAT:
charges container view was reworked to be more user-friendly

WHY:
billing UI/UX enhancements

Change-Id: Ice663544a1e69742a5c5fcc7123eeaa38bfbf255
2020-06-09 12:46:23 +00:00
VitaliiShpital
47a766328f web/satellite: deposit and billing history splitted to be shown separately
WHAT:
1. Deposit & Billing history view was divided to be shown separately as Deposit History and Billing History
2. Datepicker was removed from billing page

WHY:
billing UX enhancements

Change-Id: Ie183849ef0965169997674ce37b71db38a562fc2
2020-06-09 12:32:02 +00:00
VitaliiShpital
c9b9c686fc web/satellite: logic for new signup/login flow
WHAT:
1. updated verification page URL in config
2. added list of partnered satellites to config
3. added logic for satellites dropdown on new signup/login pages

WHY:
1. signup/login flow was reworked in tardigrade.io repo (iframe removed, new pages etc.)
2. new config flag was added to check if satellite name matches at least one member of partnered satellites list to redirect user to verification page
3. new pages will have dropdown with partnered satellites list. Appropriate logic was added.

Change-Id: I33399ab66ca31f07b297a433f6b1f41da4cb6e66
2020-05-29 17:11:44 +00:00
VitaliiShpital
0148f421c2 web/satellite: onboarding flow's vertical adaptation fixed
Change-Id: I8c3205b49a44907725a2dcd30951a36c8f3f746a
2020-05-29 16:55:58 +00:00
VitaliiShpital
45ccf59067 web/satellite: onboarding tour adapted to multiple project state
Change-Id: I853772bf2a05c3fe9ef8dea0d1e290e6074fbfec
2020-05-21 12:19:33 +00:00
VitaliiShpital
f0619c6db7 web/satellite: error handling for login/signup rate limit exceeding
related jira issue:
https://storjlabs.atlassian.net/browse/USR-767

Change-Id: I4b4f27435323234ce6803c06a8c5b004f91873bf
2020-05-21 12:03:27 +00:00
VitaliiShpital
7d00b3c792 web/satellite: billing history item's expiration countdown fixed
related jira issue:
https://storjlabs.atlassian.net/browse/USR-774

Change-Id: I4629b3ea24ba4148f2faf4030d46fb5adad192fe
2020-05-21 11:47:38 +00:00
VitaliiShpital
47def02094 satellite: account balance divided into Free Credits and Coins
Change-Id: I2ae29701bab9f0b48f236ff94b366eb534b81c6b
2020-05-18 14:25:26 +00:00
VitaliiShpital
4544f2dffb web/satellite: navigation side bar reworked
Change-Id: I9be2d23a7a4af219d0b8888b7296fa7b0e57fc5a
2020-05-18 11:04:45 +00:00
VitaliiShpital
1ec5eb06bd web/satellite: account dropdown reworked
Change-Id: I415f77c7c13546f467da62fc13feb2774dd54290
2020-05-14 17:08:02 +00:00
VitaliiShpital
a3459ec6b8 web/satellite: project dashboard page UI reworked
Change-Id: I134d70b3a351d2a104612727f7c24e21122a6730
2020-05-14 16:52:11 +00:00
Stefan Benten
65f3e26f80
satellite: Change Default Project Limits and minimum STORJ Payment (#3877) 2020-05-12 14:18:58 +03:00
Kaloyan Raev
2af7138928 web/satellite: change invoice link title to 'Invoice PDF'
Change-Id: I820bb33f4ba88bb732d1c66ba3369ac4eac72f5c
2020-05-07 18:14:40 +03:00
VitaliiShpital
9837230f1e web/satellite: project dropdown reworked
Change-Id: I6267347693724ec34996af7625a917451aef631d
2020-05-07 12:51:34 +00:00
VitaliiShpital
0ae0cea93b web/satellite: billing history UX improved
added sorting header title
currency numbers are displayed with two digits now

Change-Id: I9531f112ff70ffb89b8a2dfe05ab02eb767dd107
2020-05-05 12:07:33 +00:00
VitaliiShpital
2284008b8c web/satellite: onboarding tour: api keys and upload data steps
Change-Id: I8ffa6d688a22c1568495a7e0e176096cadcd6eaa
2020-05-04 13:26:12 +00:00
VitaliiShpital
4e5e6c8e5c web/satellite: onboarding tour: create project step
Change-Id: If091fd7f703e61c402a6bbdd80d98b0ce7b2bfd6
2020-04-30 16:50:19 +03:00
VitaliiShpital
19df9beb33 web/satellite: pagination position unified
Change-Id: I0c763627126bd0007ec5557158252de5b3f5acba
2020-04-29 15:27:44 +00:00
VitaliiShpital
a3eeab2919 web/satellite: UI unit tests for billing history
Change-Id: I60e67fd0a998737dca3a77389f40aefb56311c2c
2020-04-28 18:27:18 +03:00
VitaliiShpital
befe7574e1 web/satellite: onboarding tour: adding payment methods step
Change-Id: I40c6680de4778700611f2f6978a02688d50d792f
2020-04-27 12:59:43 +03:00
VitaliiShpital
7365fc434e web/satellite: available credits disabled due to coupon expiration bug
Change-Id: I8271640a7f4364e27e5ff570c7e26d5ee4fdbcd4
2020-04-21 15:48:15 +00:00
JT Olio
7403e9a8ab satellite web ui: fix spelling mistake
Change-Id: I866c1045a3a487ccb22a336ba34932c7ca9e1fb5
2020-04-17 09:11:19 -06:00
VitaliiShpital
2dce4c232c web/satellite: redirect to verification page on sign up if inside iframe
Change-Id: I606b63fd27bef46597697b491970523e8a3a0cae
2020-04-16 13:35:49 +00:00
VitaliiShpital
6109fa685d web/satellite: allow users who have balance to create projects
Change-Id: I5c93dea09812fcbfcc1b7a9ca2202de3087b7032
2020-04-14 17:10:35 +00:00
VitaliiShpital
d392c6e658 web/satellite: copy api key container reworked
Change-Id: I51945d260095605327cd36e2f7d6e51f4044a429
2020-04-14 15:27:28 +00:00
VitaliiShpital
17ccf36c15 web/satellite: payment methods component divided into smaller ones
Change-Id: Ibecc3803878e0902d458c3b28613c4ffbec0c634
2020-04-14 13:44:27 +00:00
VitaliiShpital
ef6c9d89bb web/satellite: dashboard blur step after adding payment method removed
Change-Id: I926016feca0cf0bf97feef8fd6936fbf466a5a51
2020-04-07 12:12:03 +00:00
VitaliiShpital
61b6ff5186 web/satellite: available credits amount added on billing page
Change-Id: I9d9c18ad08cf150ceba078356e39132a602558d4
2020-04-06 14:39:05 +00:00
VitaliiShpital
dbd036de8b web/satellite: api key and proj member name's length visibility extended
Change-Id: If42dc48849f6414f4224d57ffa7267431426b457
2020-04-03 11:32:41 +00:00
VitaliiShpital
23da9228b3 satellite/console: email used error handling for registration
Change-Id: Ifd3f2ce065ebd3c5e538c5c1eeaa76137b243b78
2020-03-26 17:42:33 +00:00
VitaliiShpital
506582e208 web/satellite: project overview page removed, dashboard page implemented
Change-Id: Id56425fe38296250e5814a0f02a554cdd73b2330
2020-03-26 17:15:14 +00:00
VitaliiShpital
d7558db5ed web/satellite: succesful registration flow reworked
Change-Id: I29f7b0fd2286c32ada39bc1e86d58feda624c645
2020-03-23 16:09:00 +00:00
VitaliiShpital
fe39845a8c web/satellite: refreshing billing history on entering billing page implemented
Change-Id: I986d6bc5ca1277c78ead7cf6323d59cb73045e25
2020-03-23 15:26:08 +00:00
VitaliiShpital
f61b77ea39 web/satellite: request limit link added on project details page
Change-Id: I4e57bb2f9dc610e9103ca21face20a615481bf40
2020-03-23 15:03:40 +00:00
VitaliiShpital
859fce3af7 web/satellite: browser caching bug fixed
Change-Id: I5b97a90d28c754cc893852909dcc87290a739f59
2020-03-23 14:41:20 +00:00
NickolaiYurchenko
b30a9cb1f9 web/satellite: readme structure section
Change-Id: I99dbb1e9689373fe4b490466f7b5f7b5c1d48c9e
2020-03-17 15:16:49 +00:00
VitaliiShpital
2cd5eb7dac web/satellite: navigation side bar reworked
Change-Id: I72af3d825febf172d5a4a32a1d71b52dae152e59
2020-03-17 13:47:18 +00:00
VitaliiShpital
97df9b5704 web/satellite: new project popup reworked
Change-Id: I90c14bed222824231a5f41bc7029d38cb405863e
2020-03-16 16:06:10 +00:00
VitaliiShpital
dedb87a6dd web/satellite: billing periods logic implemented on billing page
Change-Id: Ia762f50e0b700fe17258efcd255c16d635edd003
2020-03-16 15:46:44 +00:00
VitaliiShpital
54dbc5173d web/satellite: limits info bar added to billing page, free credit amount changed
Change-Id: I08f52e5dab16f5d176a909b29952718891f406d5
2020-03-16 14:54:46 +00:00
Stefan Benten
bd603c0751
satellite/payments: Improve Invoice Generation (#3800) 2020-03-13 17:07:39 +01:00
VitaliiShpital
7f0a6c9eef web/satellite: project creation tests extended
Change-Id: Ib73b2d556952a6690d3e783e0f15dc16aa51caf7
2020-03-12 15:14:34 +00:00
VitaliiShpital
1b5b153fb7 web/satellite: adding payment method flow reworked, animations added
Change-Id: I57433cf17fa12442c8ddcc74a9854a3d5dd24ea9
2020-03-11 18:12:32 +00:00
VitaliiShpital
de59e8e124 web/satellite: project creation restricted before adding payment method
Change-Id: Ifc1f3b05b05bfb22891628892ce8c4f110d76861
2020-03-10 18:38:08 +00:00
VitaliiShpital
56c33f5193 satellite/payments: project charges api extended to show usage and period
Change-Id: I471def779d8b2a896fc43a692029233a2cd839b0
2020-03-10 18:39:05 +02:00
VitaliiShpital
4abbf3198d web/satellite: login loading screen removed
Change-Id: I0cc0c777979d1d82ce8742882d5d66c6bf2e2c29
2020-03-10 16:08:32 +00:00
VitaliiShpital
208e88f2cb web/satellite: no api keys state implemented
Change-Id: Ia5b1cc534daf1124ec5f9cfbe8bbc4f713959582
2020-03-10 17:42:35 +02:00
Brandon Iglesias
4e9cd77d54
web/satellite: update links to APIKeys documentation 2020-03-09 15:12:23 +02:00
VitaliiShpital
9a8db05836 web/satellite: updating billing history after render added
Change-Id: Ic7f3d4734d010759ed31bbae330c84f56057f370
2020-02-26 12:18:57 +00:00
NikolaiYurchenko
fc105af0e5 web/satellite: user select text restricted
Change-Id: If3692d55e48255c95b7722c5a574060c84fdf502
2020-02-26 11:13:56 +00:00
VitaliiShpital
b387c6b90c web/satellite: overview page implemented
Change-Id: I66a8e17635040730906bd6f9c20924abd0db0744
2020-02-25 14:28:00 +00:00
VitaliiShpital
8ea620b3c4 satellite/console: redirecting to login after activation implemented
Change-Id: Ibcf65f5d4664ac41c795f5ceb0a94bcd42673004
2020-02-24 19:52:28 +02:00
VitaliiShpital
985c3ef897 satellite/console: handling graphql errors bug fix
Change-Id: Ib20786485b0ea448e388912bb8406030d4fae1f7
2020-02-24 16:22:09 +00:00
VitaliiShpital
dccca518da web/satellite: shortened token payments dropdown bug fix
Change-Id: Ie4a77cf88fcdc5a730a23e878481277ddf6cdb79
2020-02-19 11:51:04 +00:00
VitaliiShpital
5c508d1438 web/satellite: new project button removed after creating one
Change-Id: I7e3d063e5defd59926029c6d37f25655fc788eb2
2020-02-19 12:42:31 +02:00
VitaliiShpital
f4472b0b8c web/satellite: iframe checking added for login/register/forgotpass views
Change-Id: I2256c50498afc815f57fe0d87af1d2f60a1a5d60
2020-02-19 10:20:19 +00:00
VitaliiShpital
07da9d17c4 web/satellite: successful project creation popup reworked
Change-Id: I6d94a25a6507d1ab27fa223f042db91cc2cfd4e5
2020-02-19 10:04:23 +00:00
NickolaiYurchenko
1c1e62be09 web/satellite: comments update
Change-Id: If5779cf8d80cf9fac7180498ce748f427df57e0a
2020-02-14 18:54:31 +02:00
VitaliiShpital
dba647199a web/satellite: multiple storj coin transactions bug fix
Change-Id: If69c5ff65741de1d4ed1d555816df3710d6ee721
2020-02-11 17:30:07 +00:00
NickolaiYurchenko
6cd86b2145 web/storagenode: npm audit fix
Change-Id: I09cb16ca8196d36b931e0a148cf73a2ce7ab5be0
2020-02-11 12:53:29 +00:00
VitaliiShpital
a90955eced web/satellite: billing history refreshing bug fix
Change-Id: I221e2dc13179b9368dea1c7e1a46b8b49b79c729
2020-02-10 18:56:43 +02:00
VitaliiShpital
55a3a90391 web/satellite: uplink CLI docs link behaviour on API keys page reworked
Change-Id: I5565c3c8e6e55720c2cbf527aa37b6d881047818
2020-02-10 11:35:54 +00:00
NikolaiYurchenko
6679036ace web/satellite: unauthorize error handled
Change-Id: I12c6937ed1660af097d6930fe2a90fac5f298311
2020-02-10 11:14:51 +00:00
Egon Elbre
91a480f5a0 Jenkins: add storagenode npm checks
Change-Id: I93e3cc009c628e3c97a24541e7b01c75a342bda6
2020-02-03 20:35:33 +02:00
VitaliiShpital
d3fe122d9b web/satellite: project/billing dropdown bug fix
Change-Id: I1276ad20bd4efc011a1e705c5401260779b7b610
2020-01-31 17:09:54 +00:00
NikolaiYurchenko
e641ff45a5 web/satellite: logout fix
Change-Id: I1b2b14c098e0959e9c5bd36adc889a425d00963c
2020-01-29 16:53:21 +00:00
NikolaiYurchenko
4e819c196b web/satellite: uncaught router exception fixed
Change-Id: Ia20204e710d4d6d162522244fb02e0356ef49483
2020-01-28 16:04:21 +02:00
nerdatwork
913a80c20a web/satellite: Fixing typos in website pages
typo for text `website` shown as  `websities`

Attribution to @nerdatwork
2020-01-27 13:29:32 +01:00
NikolaiYurchenko
524da4d2db web/satellite: word secret added to api keys
Change-Id: I80e14b220900a2b7cf3b31a70e6b9790779b050e
2020-01-24 15:32:29 +00:00
NikolaiYurchenko
b691a17566 web/satellite: payment banner second state
Change-Id: If1b6dfb73e3420ec8f41dbfb076c58304e048963
2020-01-24 15:17:44 +00:00
VitaliiShpital
5e831f1f4d web/satellite: bakeoff UI prettifying
Change-Id: I0e5b83b44f61ec04f1cb260333a0f4c60f81289e
2020-01-24 14:36:05 +00:00
VitaliiShpital
826fef0fac web/satellite: hyperlink on copy api key popup added
Change-Id: I662410ffd79220b171bb3dde0a61ab4864a6390a
2020-01-23 17:46:04 +00:00
NikolaiYurchenko
6bc989ae62 web/satellite: banner action area extended
Change-Id: I4f9a001846f2d66943c95f76728695d4cd1ac71f
2020-01-23 17:32:26 +00:00
VitaliiShpital
81d4c05d9b web/satellite: hyperlinks updated
Change-Id: I2ddf5350e02f832a5139df1064ef03777d5beadb
2020-01-23 17:17:33 +00:00
NikolaiYurchenko
9414b8eb48 web/satellite: redundant scrolls fixed
Change-Id: I0677c3bd9ca13aaf788261af4edbc4921a3aa633
2020-01-23 17:02:55 +00:00