1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-25 19:36:50 +01:00
Commit Graph

8569 Commits

Author SHA1 Message Date
Damien 'Psolyca' Gaignon
916fb6b768 Add customize buffer size on BTBRQueue 2023-07-22 19:49:34 +00:00
José Rebelo
247a954920 Huami/Zepp OS: Improve reconnection
- Remove notification on unneeded characteristics for Zepp OS devices
- Reset MTU before initializing device, since the support class is
  reused when reconnecting, and keeping the previous high MTU before
  renegotiating again can make the initialization fail sometimes
  (band will never reply)
- If any of the chunked characteristics is null during initialization,
  mark the device as waiting for reconnect, which will make it retry the
  connection later with a backoff delay.
2023-07-22 20:31:26 +01:00
José Rebelo
aa87c5abeb Fix reconnect delay reset after all devices are initialized 2023-07-22 20:28:25 +01:00
José Rebelo
db4349bfc9 Huami: Display fetch operation description 2023-07-22 20:27:20 +01:00
José Rebelo
07ec8a095b Zepp OS: Handle fitness goals in Huami2021Support
HuamiSupport handles configurations with performInitialize, which may
trigger a device reinitialization if called while the device is already
initializing.

Handle fitness goals in Huami2021Support, which should be one of the
last settings still missing.
2023-07-22 14:35:54 +01:00
José Rebelo
76576af324 Huami 2021: Do not initialize device for chunked ack
Since we now handle chunked acks as of 74dac3f5c, these may happen
during device initialization. We must not use performInitialized, or
initializeDevice will be called twice, since the device will still not
be in INITIALIZING state.
2023-07-22 13:50:54 +01:00
Arjan Schrijver
f58c655449 Fossil/Skagen Hybrids: Strip unicode characters that the watch can't display 2023-07-22 12:13:25 +02:00
mormegil
8f5c32fbee Fix PineTime firmware upload for Android 12 target
Now that the target SDK was changed to 31, the `no.nordicsemi.android:dfu`
library needs to be updated, as the current version dies on Android 12+.

However, the fixed version (1.12.0) also fixed MTU handling: The previous
versions ignored the MTU settings completely for legacy DFU.
<https://github.com/NordicSemiconductor/Android-DFU-Library/pull/260>

And while our `PineTimeJFSupport` code always tried to set MTU to 517, it was
ignored. Which was good because PineTime does not support larger MTUs. So that
we need to set the correct low MTU now the library really applies it.

Note that the current version of the DFU library cannot be used right now, it
does not even compile because of androidx dependency mismatch.

Fixes #3203
2023-07-22 09:54:45 +00:00
Johannes Krude
9700fef111 Casio GMW-B5000: separate DeviceType, but still using the CasioGWB5600DeviceSupport 2023-07-22 09:39:56 +00:00
Johannes Krude
685ccfd1c9 Casio GW-B5600: setAutoReconnect(true) on first connection 2023-07-22 09:39:56 +00:00
Johannes Krude
7cb060c9fe Casio GW-B5600: initial support 2023-07-22 09:39:56 +00:00
Johannes Krude
91415e2500 Casio: Refactoring 2023-07-22 09:39:56 +00:00
José Rebelo
57ef0ded64 Sony WH-1000XM5: Fix speak-to-chat enable/disable 2023-07-22 10:24:33 +01:00
José Rebelo
5c78488e93 Fix emoji transliteration 2023-07-20 21:54:31 +01:00
mormegil
cc8a1dbdaa Added copyright header to all new Garmin Vivomove files 2023-07-20 20:30:14 +00:00
mormegil
a4ec3a62aa PR-related improvements
- rename service identifiers for clarity
- define BLE scan filter in the coordinator (even though GB does not use those currently)
- rename `DownloadedFitFile` to `GarminFitFile`
- bump DB schema version to 49
2023-07-20 20:30:14 +00:00
mormegil
dccb8ed1c4 Changes suggested in PR
- use `BLETypeConversions`, added the missing functions there (+ unit tests for all)
- change Java package of Protobuf definitions so that they are not discarded by Proguard
-- +add subpackages to the Proguard rules so we can subdivide the classes

+ disable device-specific settings for Vivomove (no settings yet)
2023-07-20 20:30:14 +00:00
Mormegil
3a58314db6 Garmin Vivomove HR support
- communication protocols
- device support implementation
- download FIT file storage

Features:
- basic connectivity: time sync, battery status, HW/FW version info
- real-time activity tracking
- fitness data sync
- find the device, find the phone
- factory reset

Features implemented but not working:
- notifications: fully implemented, seem to communicate correctly, but not shown on watch

Features implemented partially (not expected to work now):
- weather information (and in future possibly weather alerts)
- music info
- firmware update: only the initial file upload implemented, not used

Things to improve/change:
- Device name hardcoded in `VivomoveHrCoordinator.getSupportedType`, service UUIDs not available
- Download FIT file storage: Should be store (and offer the user to export?) the FIT data forever?
- Obviously, various code improvements, cleanup, etc.
2023-07-20 20:30:14 +00:00
Mormegil
114f6fcbf0 First piece of Garmin Vivomove HR support basics
- `DeviceType` definition
- Definition of activity sample table
- Coordinator and sample provider
2023-07-20 20:30:14 +00:00
José Rebelo
bdb904faf9 Fix character mark removal before flattening to ASCII 2023-07-17 22:42:53 +01:00
José Rebelo
12dd9651e7 Fix opening screenshots from notification on external apps 2023-07-17 00:09:10 +01:00
vanous
849337b447 Amazfit Neo: Enable PAI 2023-07-16 22:57:18 +02:00
José Rebelo
896e89b256 Fix PAI high label 2023-07-16 20:48:27 +01:00
José Rebelo
258023a05d Zepp OS: Fix reminder creation
Regression introduced by 9d3c480414
2023-07-12 23:27:15 +01:00
José Rebelo
525f1567c1 Huami: Prevent activity data fetch if there is no data to fetch
More information in #3201

Fixes #3196
2023-07-12 23:21:56 +01:00
José Rebelo
ccfc112e2b Huami: Persist workout raw details even if gpx has no points 2023-07-12 23:18:31 +01:00
Richard de Boer
8e270fcbf7
Bangle.js: refactoring
Extract handling of packet types with large code blocks.
Incidentally fixes "intent" packets launching a full calendar sync if
intents are disabled in GB settings.
2023-07-11 20:46:50 +02:00
José Rebelo
4c7920133b Amazfit GTS 2e: Add activate display on lift sensitivity 2023-07-11 18:19:43 +01:00
José Rebelo
226ccd9fad Remove duplicated media session handling code 2023-07-09 17:39:21 +01:00
José Rebelo
3da539be23 Bohemic Smart Bracelet: Initial support 2023-07-09 14:29:39 +00:00
José Rebelo
298dbbe777 LeFun: Broadcast when HR samples are received 2023-07-09 14:29:39 +00:00
José Rebelo
da5f91f05b Huami/Zepp OS: Improve music info stability 2023-07-09 15:16:37 +01:00
José Rebelo
ac89b1df9d Use package name for Catima permissions
The Catima permissions had to be split per package-name to avoid
conflicts between debug and release channels due to mismatching apk
signatures.

See https://github.com/CatimaLoyalty/Android/pull/1411
2023-07-09 14:29:30 +01:00
Benjamin Swartley
f81ffc3447 Add mb_intents summary and make dep for Preferred Audioplayer 2023-07-08 23:13:04 +00:00
Benjamin Swartley
739bd1b5a8 Use AudioManager for Media Buttons
Switch from ACTION_MEDIA_BUTTON to all AudioManager

Add mb_intents pref for audioplayer
2023-07-08 23:13:04 +00:00
Andreas Shimokawa
932249f148 bump version, add changelog 2023-07-07 21:08:53 +02:00
José Rebelo
665268c419 Fix Weather notification integration 2023-07-07 09:03:35 +01:00
José Rebelo
708cb0c617 Zepp OS: Attempt to parse raw sensor values 2023-07-05 17:47:19 +01:00
José Rebelo
ef99674eea Bump main targetSdkVersion to 31 2023-07-04 09:59:03 +01:00
José Rebelo
3516099dc9 Fix crash if Catima is not installed 2023-07-04 09:43:35 +01:00
José Rebelo
fea3bf50a4 Zepp OS: Add loyalty cards integration with Catima 2023-07-03 23:19:19 +01:00
José Rebelo
e95c8a3775 Add PAI charts 2023-07-02 16:05:10 +01:00
Andreas Shimokawa
0f7fa75931 add changelogs, bump version 2023-06-30 13:06:00 +02:00
Gordon Williams
88e0b9543d Bangle.js: HTTP request XPath can now return Arrays.
More robost toJSON that deals with unicode and null
Log messages when converting words to images so we can debug when words are being converted that shouldn't be
2023-06-30 11:34:53 +01:00
Kintu
690d97b881
Translated using Weblate (Catalan)
Currently translated at 65.0% (1353 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ca/
2023-06-29 15:49:43 +02:00
vanous
c35e09f4fe
Translated using Weblate (Czech)
Currently translated at 90.3% (1880 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2023-06-29 15:49:43 +02:00
Linerly
7261b3cc9e
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/id/
2023-06-29 15:49:43 +02:00
Kryštof Černý
88de5bbc7b
Translated using Weblate (Czech)
Currently translated at 88.9% (1851 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2023-06-29 15:49:43 +02:00
Rex_sa
70dbba5b23
Translated using Weblate (Arabic)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
2023-06-29 15:49:43 +02:00
Manuel-Senpai
2a2e882462
Translated using Weblate (Spanish)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2023-06-29 15:49:43 +02:00
nautilusx
7f18cdb524
Translated using Weblate (German)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2023-06-29 15:49:43 +02:00
Kryštof Černý
51072dd73e
Translated using Weblate (Czech)
Currently translated at 89.0% (1852 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2023-06-29 15:49:43 +02:00
陈少举
c1080c3a5b
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2023-06-29 15:49:43 +02:00
arjan-s
c509956297
Translated using Weblate (Dutch)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/nl/
2023-06-29 15:49:43 +02:00
Ihor Hordiichuk
667eebee6a
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2023-06-29 15:49:43 +02:00
Yaron Shahrabani
05804a9f02
Translated using Weblate (Hebrew)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/
2023-06-29 15:49:43 +02:00
Vincèn PUJOL
f99faab710
Translated using Weblate (French)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/fr/
2023-06-29 15:49:43 +02:00
gallegonovato
211f0668d3
Translated using Weblate (Spanish)
Currently translated at 100.0% (2080 of 2080 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2023-06-29 15:49:42 +02:00
Vincèn PUJOL
87df4d961a
Translated using Weblate (French)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/fr/
2023-06-29 15:49:42 +02:00
Rex_sa
a02101e13f
Translated using Weblate (Arabic)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
2023-06-29 15:49:42 +02:00
Rex_sa
1c88c1e085
Translated using Weblate (Arabic)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
2023-06-29 15:49:42 +02:00
Linerly
37113dc114
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/id/
2023-06-29 15:49:42 +02:00
陈少举
dafd45a46e
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2023-06-29 15:49:42 +02:00
arjan-s
c034d791e7
Translated using Weblate (Dutch)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/nl/
2023-06-29 15:49:42 +02:00
Ihor Hordiichuk
11fb1d42d4
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2023-06-29 15:49:42 +02:00
Yaron Shahrabani
e5bd1845f3
Translated using Weblate (Hebrew)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/
2023-06-29 15:49:42 +02:00
gallegonovato
5821bf998a
Translated using Weblate (Spanish)
Currently translated at 100.0% (2065 of 2065 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2023-06-29 15:49:42 +02:00
Rex_sa
8e099e7b99
Translated using Weblate (Arabic)
Currently translated at 99.9% (2062 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
2023-06-29 15:49:42 +02:00
Yaron Shahrabani
ab168fa1b2
Translated using Weblate (Hebrew)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/
2023-06-29 15:49:42 +02:00
Vincèn PUJOL
8ab230b457
Translated using Weblate (French)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/fr/
2023-06-29 15:49:42 +02:00
Manuel-Senpai
009e02f411
Translated using Weblate (Spanish)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2023-06-29 15:49:42 +02:00
gallegonovato
b6d84e86f0
Translated using Weblate (Spanish)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2023-06-29 15:49:42 +02:00
nautilusx
13b1d7bdc6
Translated using Weblate (German)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2023-06-29 15:49:41 +02:00
Linerly
31ec3262e2
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/id/
2023-06-29 15:49:41 +02:00
陈少举
bd41dd0f5b
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2023-06-29 15:49:41 +02:00
Ihor Hordiichuk
fe57fc5cb7
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2064 of 2064 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2023-06-29 15:49:41 +02:00
Vincèn PUJOL
9ae2396cbd
Translated using Weblate (French)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/fr/
2023-06-29 15:49:41 +02:00
陈少举
dd966a33d9
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2023-06-29 15:49:41 +02:00
Ihor Hordiichuk
e15a63b2cf
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2023-06-29 15:49:41 +02:00
Rex_sa
995172f81a
Translated using Weblate (Arabic)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
2023-06-29 15:49:41 +02:00
Rex_sa
64c539439c
Translated using Weblate (Arabic)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
2023-06-29 15:49:41 +02:00
arjan-s
728422a439
Translated using Weblate (Dutch)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/nl/
2023-06-29 15:49:41 +02:00
Ihor Hordiichuk
ef80f2392b
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2023-06-29 15:49:41 +02:00
Yaron Shahrabani
3a926f0b67
Translated using Weblate (Hebrew)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/
2023-06-29 15:49:41 +02:00
Vincèn PUJOL
e8e52f8ef7
Translated using Weblate (French)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/fr/
2023-06-29 15:49:41 +02:00
Manuel-Senpai
c1f1f54cb7
Translated using Weblate (Spanish)
Currently translated at 100.0% (2059 of 2059 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2023-06-29 15:49:41 +02:00
Gordon Williams
0e0f72410a Bangle.js: fix mixup of navigation left slight&sharp icons 2023-06-29 14:49:22 +01:00
Gordon Williams
d82ba7a04c Bangle.js: Send the timestamp of our last activity sample to the Bangle on connect, so that it can update us on missing activity samples 2023-06-26 11:39:29 +01:00
Gordon Williams
2aac797dec Remove some build warnings in BangleJSDeviceSupport 2023-06-26 11:20:50 +01:00
Gordon Williams
8e010bc6dd Stop BangleJSDeviceSupport repeatedly calling GBLocationManager.stop and spamming the log with "Stop location updates" 2023-06-26 11:15:54 +01:00
Gordon Williams
94cd7523db Ensure we now escape chars in the unicode start range. With Bangle.js ~2v18.20+ we added Unicode support, but if we're sending non-unicode chars in the unicode range it will confuse Espruino 2023-06-26 11:07:38 +01:00
Martin Boonk
7101bfe631 Bangle.js: Allow connecting HW keyboard without closing app loader 2023-06-23 20:32:38 +00:00
Martin Boonk
1c99aac029 Bangle.js: Fix orientation changes closing app loader 2023-06-23 20:32:38 +00:00
José Rebelo
9aa4612f6c Make changelog dialog translatable
The ckChangelog lib does not have translations for all languages -
declare the resources on Gadgetbridge side with the same name so that
they can be translated in weblate.
2023-06-22 22:50:59 +01:00
José Rebelo
bdeab0cc73 Extract some hardcoded strings to resources 2023-06-22 22:40:55 +01:00
Lukas
4cdefb17df update default value,
extract strings to translation file
2023-06-22 21:37:55 +00:00
Lukas
6e3ce89ae5 add attribute to set the source of the gps signal 2023-06-22 21:37:55 +00:00
Lukas
d54b7426cc update summary of new toggle 2023-06-22 21:37:55 +00:00
Lukas
f6b8567246 update summary text 2023-06-22 21:37:55 +00:00
Lukas
6da6baa5e6 Add switch to control if the GPS chip should be used to locate the location 2023-06-22 21:37:55 +00:00