1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-20 21:38:26 +00:00
Commit Graph

524 Commits

Author SHA1 Message Date
Martin Milata
b8063e882b legacy: drop zcash v3 tx signing support 2020-07-30 15:14:18 +02:00
Andrew Kozlik
38074a4e59
legacy: print inverted question mark for nonprintable characters 2020-07-27 16:29:03 +02:00
Pavol Rusnak
89d701ed08
core+legacy: bump versions (also in changelogs) 2020-07-27 13:59:49 +02:00
Pavol Rusnak
e97413e8c5
legacy: convert old changelogs to new format 2020-07-27 12:13:43 +02:00
Pavol Rusnak
8dacad0782
core/bootloader: update protobuf definitions 2020-07-26 00:00:37 +02:00
Tomas Susanka
34bd57006f core, legacy: set version of the upcoming release in Changelog 2020-07-24 12:33:46 +02:00
Martin Milata
48e1dc957f legacy: raise error on auto-lock value out of range 2020-07-22 21:38:42 +02:00
Pavol Rusnak
2b9613c8a0
legacy: add changelog entry 2020-07-09 15:54:42 +02:00
Andrew Kozlik
24bf352577 legacy: Support multiple change-outputs. 2020-07-09 15:51:23 +02:00
matejcik
2c8e5f527b all: rename changelogs to .md for highlighting 2020-07-08 10:43:40 +02:00
matejcik
a19a9a318a all: improve changelog formatting 2020-07-08 10:43:40 +02:00
matejcik
476cf2ee8f core, legacy: more changelog entries 2020-07-08 10:43:40 +02:00
Andrew Kozlik
533de50588 common/protob: Add GetOwnershipId message. 2020-07-03 11:17:19 +02:00
Andrew Kozlik
956ea9a94f common: Add ownership_proof field to TxInputType. 2020-07-03 11:17:19 +02:00
Andrew Kozlik
c723c78529 common/protob: Add GetOwnershipProof message. 2020-07-03 11:17:19 +02:00
Andrew Kozlik
cc655575c8 common: Add witness field to TxInputType. 2020-07-03 11:17:19 +02:00
Tomas Susanka
3a3e5739b0 core, legacy: update changelogs 2020-07-02 09:09:34 +00:00
Tomas Susanka
ca3dd2bfb9 common: skip deprecated fields during generation; deprecate overwintered field in Zcash 2020-06-30 16:02:21 +02:00
matejcik
e6e3043096 all: implement support for pre-overwinter prevtx (fixes #1030) 2020-06-30 15:19:31 +02:00
Tomas Susanka
e534ae3ad7 legacy, core: rename Features.pin_cached to unlocked and unify 2020-06-19 21:26:36 +02:00
Tomas Susanka
4239e8d551 legacy: set initialized in storage to false if no mnemonic is present 2020-06-19 09:06:30 +02:00
Tomas Susanka
9979af3cd2 changelogs: start using more detailed changelog 2020-06-11 17:43:40 +02:00
Tomas Susanka
56fe5adcfc Merge branch 'release/2020-06' 2020-06-10 06:51:18 +00:00
Tomas Susanka
41966c60db legacy: initialized field in Features is true only if mnemonic is stored 2020-06-05 11:07:01 +02:00
matejcik
6f53ca0ac6 core: rework wait_layout()
The original wait_layout was unreliable, because there are no guarantees
re order of arrival of the respective events. Still, TT's event handling
is basically deterministic, so as long as the host sent its messages
close enough to each other, the order worked out.

This is no longer the case with the introduction of loop.spawn: TT's
behavior is still deterministic, but now ButtonAck is processed *before*
the corresponding wait_layout, so the waiting side waits forever.

In the new process, the host must first register to receive layout
events, and then receives all of them (so the number of calls to
wait_layout must match the number of layout changes).

DebugLinkWatchLayout message must be version-gated, because of an
unfortunate collection of bugs in previous versions wrt unknown message
handling; and this interests us because upgrade-tests are using
wait_layout feature.
2020-06-04 16:18:46 +02:00
matejcik
0600d87c8c common: rename ClearSession to LockDevice, introduce EndSession 2020-06-04 16:18:46 +02:00
Tomas Susanka
8859d103f4 core, legacy: bump versions 2020-06-03 15:39:25 +00:00
Tomas Susanka
e2629eb921 core, legacy: update Changelogs to reflect the release 2020-06-03 15:35:30 +00:00
Tomas Susanka
81553df02f legacy: add ToS dialog to recovery
(cherry picked from commit 28b22cef22)
2020-05-29 05:41:00 +00:00
Tomas Susanka
28b22cef22 legacy: add ToS dialog to recovery 2020-05-28 14:52:56 +02:00
Andrew Kozlik
e6745bce43 legacy/signing: Don't force nJoinSplit to be 0 for prev_tx in overwintered. This was dead code until we started validating prevout amounts. 2020-05-24 14:36:37 +00:00
Andrew Kozlik
386be6ff09 legacy/signing: Check inputs for amount field only when amount is required. 2020-05-24 14:36:37 +00:00
Andrew Kozlik
d34428eeb3 legacy/signing: add checks for version_group_id and branch_id fields 2020-05-24 14:36:37 +00:00
Andrew Kozlik
5aea566eb5 legacy/signing: validate prevout amount in all cases 2020-05-24 14:36:37 +00:00
Tomas Susanka
675ff459db core, legacy: update changelogs 2020-05-22 11:55:55 +00:00
Tomas Susanka
9dfc08ca61 core/bitcoin: drop decred_script_version 2020-05-21 19:14:39 +02:00
Ondřej Vejpustek
ef9eb7b7a4 legacy/stellar: change price format 2020-05-21 16:21:32 +02:00
Tomas Susanka
47f104bceb core, legacy: bump versions 2020-04-24 17:12:20 +00:00
Andrew Kozlik
2e29f7bba6 legacy/u2f: Add bogus app ID used by Firefox to indicate error in U2F. Figure out which error to display based on past U2F_AUTHENTICATE check-only requests on the same channel. 2020-04-24 10:38:41 +02:00
Pavol Rusnak
4b5a84eab7
core+legacy: update changelogs 2020-04-16 14:20:18 +02:00
Tomas Susanka
ae4f927a45 tests: test incorrect script type 2020-03-20 14:19:31 +00:00
Andrew Kozlik
175d708ebc legacy: Drop obsolete check for ANYONECANSPEND segwit outputs. 2020-03-20 14:19:31 +00:00
Tomas Susanka
d0d41c884e legacy: move script type checks to separate functions and unify with core 2020-03-20 14:19:31 +00:00
matejcik
da89a17ce5 all: add checks for prev_hash size 2020-03-20 14:19:31 +00:00
Tomas Susanka
64584e271c legacy, core: add and unify validation checks 2020-03-20 14:19:30 +00:00
Tomas Susanka
71a39bc0d7 legacy: check inputs' and outputs' script types 2020-03-20 14:19:30 +00:00
matejcik
adea7d6b35 all: make timestamp mandatory on timestamp-enabled coins 2020-03-20 14:19:07 +00:00
matejcik
e2035b4972 all: drop Horizen and BIP-115 support [NO BACKPORT] 2020-03-20 14:19:07 +00:00
matejcik
ed464f3d47 all: ensure expiry, timestamp and extra_data are blocked as appropriate 2020-03-20 14:18:27 +00:00
matejcik
27803ee8c1 all: drop overwintered field from transaction 2020-03-20 14:18:27 +00:00
matejcik
c9fd3f77a5 all: add overwintered field to coin specification 2020-03-20 14:18:27 +00:00
Pavol Rusnak
817b922850 all: add extra_data and timestamp fields to coin specification 2020-03-20 14:18:27 +00:00
Tomas Susanka
0903159d9b core, legacy: make sure OPRETURN ouput is not marked as change 2020-03-20 14:17:44 +00:00
Tomas Susanka
a513f7429b legacy: forbid unnecessary fields in OPRETURN output 2020-03-20 14:17:44 +00:00
Andrew Kozlik
b2dc5813fe legacy, tests: Check for invalid PIN. 2020-03-17 11:53:48 +01:00
Tomas Susanka
a63e6fc4ef core+legacy: update changelogs 2020-02-27 13:21:17 +00:00
Pavol Rusnak
ec199b19a9
legacy: use 2 page pagination to show xpubs in multisig get_address 2020-02-27 11:42:52 +00:00
Pavol Rusnak
5c01a9459c
legacy: show xpubs with multisig get_address 2020-02-24 17:36:50 +01:00
matejcik
b916072389 common: restore PassphraseAck.state 2020-02-24 15:15:09 +01:00
Tomas Susanka
f93f6e445b legacy: store multiple sessions/caches at the same time 2020-02-21 14:40:42 +01:00
matejcik
ddee77ecb6 core: add SD clearing via debuglink 2020-02-20 12:51:48 +01:00
Pavol Rusnak
d2bcccf0ae
Merge pull request #847 from trezor/prusnak/bootloader-restart
legacy/bootloader: soft reset after firmware upload
2020-02-19 18:20:49 +01:00
Pavol Rusnak
581e46ff87
Merge pull request #845 from trezor/prusnak/webusb-popup
Don't show WebUSB popup in firmware, in bootloader only if no firmware present
2020-02-19 18:18:01 +01:00
Pavol Rusnak
23ffc87236
legacy/bootloader: soft reset after firmware upload
originally submitted by @kedoubitcoin
2020-02-19 17:14:36 +00:00
matejcik
e61b7d28e9 all: do not send state in PassphraseAck (not needed for compatibility) 2020-02-13 15:44:50 +01:00
Pavol Rusnak
215020a592
legacy: show webusb popup only in bootloader and only if firmware is not installed 2020-02-12 21:01:06 +00:00
matejcik
0ec628ccd4 legacy: fix CALLBACK checker 2020-02-12 17:18:51 +01:00
Tomas Susanka
2c0504ad1c
Merge pull request #803 from trezor/passphrase
Passphrase Redesign
2020-02-11 16:01:59 +01:00
matejcik
05a1d6f771 core/debug: add "show arbitrary screen" capability, for easier prototyping 2020-02-11 11:53:34 +01:00
matejcik
ff702c7d7f common: add proper markers for deprecated messages 2020-02-10 15:38:26 +01:00
Pavol Rusnak
73ed2f3450
legacy: small nitpicks related to the new passphrase handling 2020-02-07 11:41:03 +00:00
Tomas Susanka
f21c13f0bd
legacy: remove redundant failure response 2020-02-07 11:41:01 +00:00
Tomas Susanka
c65b57affb
core, legacy: remove passphrase_cached 2020-02-07 11:41:00 +00:00
Tomas Susanka
1ae5813cab
legacy: bump version to 1.9.0 2020-02-07 11:41:00 +00:00
Tomas Susanka
a3f3d4fcdb
remove ping.passphrase/pin 2020-02-07 11:41:00 +00:00
Tomas Susanka
48fe192103
legacy: clear up passphrase usage 2020-02-07 11:41:00 +00:00
Tomas Susanka
b5d6aaf77c
tests: test PassphraseAck options 2020-02-07 11:41:00 +00:00
Tomas Susanka
041a95f738
legacy: new passphrase redesign draft 2020-02-07 11:40:59 +00:00
Pavol Rusnak
6dbed1424f
core+legacy: update nanopb api to version 0.4 2020-02-04 17:18:27 +00:00
Pavol Rusnak
4647e7d686
core+legacy: use nanopb generator from pipenv 2020-02-04 17:15:25 +00:00
Pavol Rusnak
5bf8eca350
legacy+core: accept only valid UTF-8 strings via nanopb 2020-02-04 17:15:25 +00:00
Pavol Rusnak
0ceba80876
legacy: fix wrong logic in layoutButtonNo 2020-02-04 16:37:20 +00:00
Tomas Susanka
7c41b40dff
tests: introduce UI tests for core with diffs (#784)
tests: introduce UI tests for core with diffs
2020-01-10 20:39:31 +01:00
Pavol Rusnak
11d80f0f20
legacy: remove hackish cast usage 2020-01-04 16:03:32 +00:00
Tomas Susanka
eabd0da196 core/make; legacy: style 2020-01-03 14:28:27 +00:00
Tomas Susanka
51ef963738 tests: introduce UI tests for core 2020-01-03 14:28:27 +00:00
Pavol Rusnak
516edbe825
legacy: add u2f_knownapps.h to gitignore 2019-12-23 16:39:54 +01:00
Pavol Rusnak
e5bdf0d51b
Merge pull request #742 from trezor/language
common: change language field to IETF BCP 47 language tag
2019-12-12 18:07:54 +01:00
Pavol Rusnak
7646b97dca
common: divisibility -> decimals 2019-12-09 17:43:47 +01:00
matejcik
ac6e23fb87 mako: improve local variable name 2019-12-09 16:31:46 +01:00
matejcik
f5a6342844 legacy: auto-generate U2F/FIDO apps 2019-12-09 16:31:46 +01:00
Pavol Rusnak
bb8d809a6d
common: change language field to IETF BCP 47 language tag 2019-12-08 11:27:10 +01:00
Tomas Susanka
0f3466bf01 core, legacy: update changelog 2019-12-06 12:53:25 +00:00
Pavol Rusnak
3d50bb5ed8
common: add Peercoin, regenerate coins 2019-12-05 09:43:32 +00:00
Pavol Rusnak
5301c03607
common: add coin.divisibility attribute
legacy: remove has_address_type/has_address_type_p2sh
2019-12-05 04:30:51 +01:00
Andrew Kozlik
829da5fe6c legacy: Implement ChangeWipeCode message for Trezor One. 2019-11-25 12:32:20 +01:00
matejcik
34913a328a all: disallow most RecoveryDevice fields in dry-run (fixes #666) 2019-11-20 12:27:57 +01:00
Pavol Rusnak
33ecdeb193
core+legacy: remove confusing changelog entries 2019-11-13 19:47:35 +01:00
matejcik
9787e38206 legacy: properly omit LoadDevice in non-debug build 2019-11-13 16:48:35 +01:00
matejcik
fd8aed6105 all: drop XPRV feature of LoadDevice 2019-11-13 16:48:35 +01:00
Pavol Rusnak
16af7f1353 common: add {needs,no}_backup flags to LoadDevice, make it debug only 2019-11-13 16:48:35 +01:00
Tomas Susanka
499eb8e628 legacy: get next u2f counter 2019-11-13 11:33:12 +00:00
Pavol Rusnak
1caae698ca
storage: make FLAG_PUBLIC and FLAGS_WRITE part of public API 2019-11-11 19:47:48 +01:00
Pavol Rusnak
ee98d0b398
legacy/layout: use bmp_btn_confirm, bmp_btn_cancel 2019-11-09 19:02:51 +00:00
Pavol Rusnak
2d8f70d49a
common/defs: add mojeid.cz definition to webauthn 2019-11-01 12:54:28 +00:00
Pavol Rusnak
9ab1554e93
legacy: use cryptoMultisigPubkeyCount where possible 2019-10-24 15:47:38 +02:00
Pavol Rusnak
c145db7dd2
legacy: fix not showing MultisigRedeemScriptType.nodes count correctly in GetAddress 2019-10-24 13:30:40 +00:00
Pavol Rusnak
5fe2f7e59c common/protob: remove ButtonRequest.data field 2019-10-24 11:11:43 +02:00
matejcik
34823b6fcb legacy: add field options to fix build 2019-10-22 17:06:49 +02:00
Andrew Kozlik
15d8f9def6 legacy/signing.c: Revert formatting of the workflow of streamed signing. 2019-10-11 11:20:02 +02:00
Pavol Rusnak
e688fa8775
vendor: update nanopb, remove build failure workaround
This reverts commit 5cfa386e44.
2019-10-11 10:01:04 +02:00
Pavol Rusnak
5cfa386e44
legacy: workaround nanopb build failure with -Werror 2019-10-10 23:39:10 +02:00
Pavol Rusnak
b07b9b1d09
legacy/vendor: use pre-relase of nanopb 0.3.9.4
drop our patch, use upstream PB_ENCODE_ARRAYS_UNPACKED option
2019-10-10 16:08:28 +00:00
Ondřej Vejpustek
fa9d349bc9
legacy: explicitly initialize variable length arrays 2019-10-09 17:05:33 +02:00
Ondřej Vejpustek
08265cdd08
legacy: explicitly initialize variables 2019-10-09 17:05:33 +02:00
Saleem Rashid
1ca521eec9
legacy/nem: Refactor nem_canonicalizeMosaics
GCC is able to reason about transfer->mosaics_count using Value Range
Propagation. Using transfer->mosaics_count, instead of a mosaics_count
argument, satisfies GCC that the variable-length skip array cannot be
too large.

Renamed variables to old_count and new_count to reduce ambiguity.
2019-10-04 15:17:46 +00:00
Andrew Kozlik
ba9eee3b8f core, legacy: Don't allow change_pin if device is not initialized. 2019-10-04 13:54:43 +02:00
matejcik
3c62db2696 stellar: fix ManageDataOp value padding 2019-10-01 15:12:37 +02:00
matejcik
d48c5c6450 legacy/stellar: fix timebounds display (#582) 2019-09-30 15:52:40 +02:00
Andrew Kozlik
9ea8136545 u2f: Add keepersecurity.eu to knownapps. 2019-09-26 19:02:29 +02:00
Andrew Kozlik
e4c13b6357 u2f: Store hashes of U2F application parameters instead of pre-images. 2019-09-26 19:02:29 +02:00
Pavol Rusnak
6a9d986e20
legacy: correctly handle set/clear flags 2019-09-24 14:32:37 +00:00
Pavol Rusnak
78041d261b
crypto: refactor bip39 api 2019-09-23 17:56:36 +02:00
Pavol Rusnak
3c20b1b1cd legacy: Add SdProtect to SKIPPED_MESSAGES 2019-09-18 18:55:58 +02:00
Andrew Kozlik
4f01003637 storage: Add external salt parameter to unlock() and change_pin(). 2019-09-18 18:53:42 +02:00
Andrew Kozlik
091053507d common/messages: Add credential management message. 2019-09-17 18:32:31 +02:00
Tomas Susanka
75c539ec55
all: replace /bin/bash with /usr/bin/env bash 2019-09-12 17:35:55 +02:00
Pavol Rusnak
42f030dbcd
legacy: refactor SKIPPED_MESSAGES in the Makefile 2019-09-05 17:11:22 +02:00
Pavol Rusnak
324cb651c6
core+legacy: update bootloader ChangeLogs 2019-08-30 16:15:04 +02:00
Pavol Rusnak
fc1f90875b
legacy: fix firmware build in CI with MEMORY_PROTECT=0 2019-08-28 16:12:19 +02:00
Pavol Rusnak
4cbbc3da64
legacy: fix style 2019-08-28 15:09:12 +02:00
Pavol Rusnak
1a71c7a3e8
common: rename Features.features to Features.capabilities 2019-08-28 15:02:30 +02:00
Pavol Rusnak
41428ab2df
legacy: make sca pixels for pin matrix grow from the inside 2019-08-28 14:49:59 +02:00
Pavol Rusnak
9cef06de2b
core+legacy: update ChangeLogs 2019-08-28 13:59:42 +02:00
Pavol Rusnak
1c3b5009d0
legacy: bump version to 1.8.4 2019-08-27 16:59:44 +02:00
Pavol Rusnak
1ea4f9de56
legacy: remove remaning Decred/Zcash code for Bitcoin only firmware 2019-08-27 12:38:28 +02:00
Pavol Rusnak
980e037d00
legacy: modify nanopb so it doesn't pack repeated fields
We can remove this once protobuf.js has been updated to 6.x.x
where this is fixed.
2019-08-27 11:18:03 +02:00
Pavol Rusnak
ca494940a5
legacy: fill in Features.features 2019-08-23 13:52:13 +02:00
Pavol Rusnak
9d8ebfcdbc
legacy: remove Features.features field for now, will get reintroduced later 2019-08-21 15:28:02 +02:00
Pavol Rusnak
f40d926d16
legacy: fix emulator bitcoin only build 2019-08-21 10:25:56 +02:00
Pavol Rusnak
a25c9fd307
legacy: fill in Features.features with enabled features 2019-08-20 16:13:33 +02:00
Pavol Rusnak
cc184a0a30
common: introduce Features.features enum 2019-08-20 14:38:31 +02:00
Pavol Rusnak
c6b9fa4873
legacy: support Signify Ed25519 signatures + add device test 2019-08-19 18:11:08 +02:00
Pavol Rusnak
e23bb10ec4
core+legacy: fix KMD signing (introduce negative_fee coin field) 2019-08-09 16:47:24 +02:00
Pavol Rusnak
6d861a5d05
legacy: fix style 2019-08-07 16:58:31 +02:00
Pavol Rusnak
eaa85ddd6e
core+legacy: add new changelog entries 2019-08-07 15:42:33 +02:00
Pavol Rusnak
67896be867
legacy: bump version to 1.8.2
(cherry picked from commit 7ab07e7aff)
2019-08-07 12:43:52 +02:00
Pavol Rusnak
ee95e58f4a
legacy: use fixed font for showing internal entropy
(cherry picked from commit 3b1f44945a)
2019-08-07 12:43:52 +02:00
Pavol Rusnak
93ef10d564
legacy: make fake/real words indistinguishable in simple recovery
(cherry picked from commit d9c02bb924)
2019-08-07 12:43:51 +02:00
Pavol Rusnak
8190bf3819
legacy: fix oledSCA in simple recovery
(cherry picked from commit ddd3e9c577)
2019-08-07 12:43:51 +02:00
Pavol Rusnak
0e224644b6
legacy: don't add more pixels than needed in oledSCA
(cherry picked from commit 6720690452)
2019-08-07 12:43:51 +02:00
Pavol Rusnak
9107731079
legacy: fix SCA when displaying the PIN matrix
(cherry picked from commit f237a26137)
2019-08-07 12:43:51 +02:00
Andrew Kozlik
1c9fa5d3c6
legacy: fix SCA when displaying the words
(cherry picked from commit f16c941ed4)
2019-08-07 12:43:51 +02:00
Pavol Rusnak
c288514a4f
core+legacy: fix display of non-divisible OMNI amounts 2019-07-26 12:59:10 +02:00
Tomas Susanka
accc33c8e6 legacy: replace load_device mnemonic to mnemonics 2019-07-24 17:04:54 +02:00
Andrew Kozlik
b9f63c3f55 webauthn: Add Binance to knownapps. Add Binance icon. 2019-07-12 11:38:44 +02:00
Pavol Rusnak
a978290d50
legacy: detect CALLBACK fields and fail build when found 2019-06-24 15:23:14 +02:00
Pavol Rusnak
848051efcf
legacy: don't process EthereumAddress.old_address via callback 2019-06-24 15:02:58 +02:00
Pavol Rusnak
54d348228f
all: rename TREZOR to Trezor where possible 2019-06-17 20:28:29 +02:00
Andrew Kozlik
ad5d9168c8 legacy: Move wait_random() to common.c and use HMAC DRBG to generate delays. 2019-06-11 11:41:40 +02:00
Pavol Rusnak
684862a7f5
common: more TRX cleanup 2019-05-25 12:48:04 +02:00
Pavol Rusnak
6dcf9635a9
legacy: wipe with debug link only in emulator 2019-05-17 17:00:45 +02:00
Alex Dupre
fc3a93dc47 legacy/firmware: fix ethereum message signing (#153)
If the length of the message was exactly a power of `10` the initial `1` was omitted.
2019-05-16 18:07:43 +02:00
Pavol Rusnak
14b2cc336a
legacy: initialize decoded variable 2019-04-30 23:31:07 +02:00
Pavol Rusnak
0a8995bc86
legacy: update firmware changelog 2019-04-30 18:22:49 +02:00
Pavol Rusnak
597b9fabd1
legacy: fix build parameters 2019-04-27 16:38:08 +02:00
Pavol Rusnak
236ca1ae83
legacy: enable Bitcoin only firmware 2019-04-27 16:16:33 +02:00
Pavol Rusnak
62707a062a
core+legacy: reintroduce USB 2.1 landing page for firmware 2019-04-24 22:56:07 +02:00
Pavol Rusnak
5185371fb3
legacy: bump versions to 1.8.1 2019-04-23 21:28:47 +02:00
Pavol Rusnak
e06768a7a7
legacy: use local copy of the previously built bootloader 2019-04-23 21:26:18 +02:00
Pavol Rusnak
def96032d2
core+legacy: make path checks more benevolent (#84)
Non-existing BIP-48 is causing mess among implementations
2019-04-23 18:16:37 +02:00
Pavol Rusnak
af89ae88dc
core+legacy: update changelogs 2019-04-22 18:57:14 +02:00
Pavol Rusnak
8b06598474
core+legacy: rework code styling checks 2019-04-18 17:40:55 +02:00
matejcik
6aa05f8a6f MONOREPO MERGE trezor-mcu 2019-04-15 19:14:58 +02:00