Benjamin Beurdouche
07b1c625e1
Add Digital signature properties verification panel
...
Adds a new "Digital signature properties" doorhanger to the pdf.js
toolbar that lists every digital signature found in the opened PDF,
verifies each one (via NSS in the Firefox build through a new chrome
bridge), and shows per-signature status + certificate state.
The viewer side parses /Sig dicts in the worker
(`PDFDocument.signatures`), strict-validates the /ByteRange offsets
before slicing, and ships only signature metadata across the worker
boundary. The PKCS#7 blob and signed-data byte spans live in a
worker-side map and are fetched lazily one signature at a time via
a new `getSignatureData(id)` RPC, immediately before verification
runs, so the bytes never sit in main-thread memory for the
document's lifetime.
The panel is feature-gated by `pdfjs.enableSignatureVerification`
(true in MOZCENTRAL/TESTING, off by default in the GENERIC build).
External services expose a `createSignatureVerifier()` factory that
the Firefox build wires up to `nsIX509CertDB.asyncVerifyPKCS7Object`;
GENERIC builds return null and the toolbar button stays hidden.
UI summary:
- Toolbar button states: loading dots while in flight, then green
check, orange `!`, or red `✕` based on the worst aggregate
signature status.
- Doorhanger contains a banner summarising the document state, then
one card per signature with status row + certificate row (sub-
signatures nested under their outer revision via /ByteRange
containment).
- Icons are mono SVGs themed via `mask-image` + `background-color`
so they pick up light/dark/HCM via `--sig-icon-*` vars; flipped
under RTL via `scaleX(var(--dir-factor))`. The HCM mapping reuses
the alt-text vocabulary (ButtonFace / ButtonText / ButtonBorder /
GrayText / AccentColor / LinkText) so this panel reads the same
as the rest of the editor toolbar in high-contrast mode.
- All visible strings are localized via Fluent
(`pdfjs-digital-signature-properties-*`); status row, banner, and
certificate row use explicit lookup tables instead of generated
ids so a grep finds them.
- Esc + outside-click close the panel through the viewer's existing
handlers; the manager exposes `isOpen`, `close()`, and
`shouldCloseOnClick(target)` for that.
This commit also adds a `test/pdfs/sig_corpus/` directory holding a
Python generator that produces a corpus of signed PDFs covering
every visible state of the doorhanger (verified / untrusted /
expired / invalid / unknown / multi-signature variants). The corpus
is intentionally NOT part of the automated test suite — it is a
manual-test tool. Generated `.pdf` files are gitignored; only the
generator, README, and a `user.js.example` snippet are tracked.
The generator shells out to mozilla-central's
`security/manager/tools/pycms.py` (resolved via `--mozilla-central
<path>` or the `MOZILLA_CENTRAL_SRC` env var) and the embedded test
trust anchors (`pdf-sign-ca` / `pdf-sign-ca-expired`), gated by
`security.pdf_signature_verification.enable_test_trust_anchors` so
the test certificates never validate in shipping Firefox.
2026-06-30 13:25:09 +02:00
..
2026-06-30 13:25:09 +02:00
2026-06-23 21:38:57 +02:00
2026-05-25 14:44:48 +02:00
2026-04-14 14:16:26 +01:00
2026-05-12 20:59:07 +02:00
2023-07-31 13:04:15 +02:00
2023-07-31 13:04:15 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-06-03 16:44:57 +02:00
2026-05-12 20:59:07 +02:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-01-07 22:05:05 +01:00
2026-05-12 20:59:07 +02:00
2026-01-31 16:25:53 +01:00
2025-03-28 15:20:43 +01:00
2023-07-29 12:37:58 +02:00
2025-02-05 16:56:54 +01:00
2025-02-05 16:56:54 +01:00
2022-11-26 11:24:59 +01:00
2023-05-19 18:40:03 +02:00
2023-05-28 19:03:37 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-05-24 14:59:13 +02:00
2024-04-16 12:54:36 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-07-18 20:15:31 +02:00
2023-03-07 15:01:31 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2022-07-08 15:39:56 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2022-09-20 20:01:54 +02:00
2022-10-14 14:37:58 +02:00
2026-05-12 20:59:07 +02:00
2022-11-10 18:27:26 +01:00
2026-06-12 20:10:56 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-01-21 12:21:21 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-03-09 15:03:01 +01:00
2023-03-21 19:27:24 +01:00
2026-05-12 20:59:07 +02:00
2024-03-12 13:18:15 +01:00
2023-07-22 17:51:06 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-08-08 15:05:27 +02:00
2026-05-12 20:59:07 +02:00
2023-10-23 22:11:30 +02:00
2026-05-12 20:59:07 +02:00
2023-11-23 17:01:49 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-01-05 10:20:32 +01:00
2024-01-05 10:20:32 +01:00
2026-05-12 20:59:07 +02:00
2026-06-16 15:09:39 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-04-09 22:52:11 +02:00
2024-05-24 21:37:35 +02:00
2024-06-10 21:01:37 +02:00
2024-06-07 17:38:35 +02:00
2024-06-20 15:33:34 +02:00
2024-07-03 09:46:54 +02:00
2024-07-11 10:36:44 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-01-20 16:50:22 +01:00
2025-03-22 20:35:24 +01:00
2025-02-11 14:36:06 +01:00
2025-02-11 14:36:06 +01:00
2025-03-12 17:50:13 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-08-25 14:02:08 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-02-03 23:11:31 +01:00
2026-05-12 20:59:07 +02:00
2026-04-22 18:30:43 +02:00
2026-03-25 10:21:34 +01:00
2026-05-12 20:59:07 +02:00
2026-04-27 18:54:52 +02:00
2026-04-27 18:54:52 +02:00
2026-03-10 14:51:03 +01:00
2026-06-16 19:34:48 +02:00
2026-06-12 20:10:56 +02:00
2023-01-16 13:02:53 +01:00
2025-04-07 17:36:40 +02:00
2026-05-30 21:53:29 +02:00
2025-02-21 10:00:55 -08:00
2023-03-03 17:25:11 -05:00
2023-03-03 17:25:11 -05:00
2023-03-03 17:25:11 -05:00
2025-09-24 09:45:37 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-16 16:30:55 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-28 10:30:37 +02:00
2026-05-12 20:59:07 +02:00
2026-03-20 10:41:58 +01:00
2023-02-23 12:09:39 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-11-21 11:32:29 -08:00
2026-05-12 20:59:07 +02:00
2026-03-07 19:03:02 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-03-31 20:46:01 +02:00
2026-03-22 21:08:49 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-03-10 14:51:03 +01:00
2026-03-10 14:51:03 +01:00
2025-04-09 15:31:49 +02:00
2024-12-02 17:15:33 +01:00
2024-12-02 17:15:33 +01:00
2024-06-03 20:08:11 +02:00
2026-05-12 20:59:07 +02:00
2022-11-12 16:31:01 +01:00
2025-03-05 10:29:59 +01:00
2024-04-16 12:54:36 +02:00
2025-02-23 15:15:11 -08:00
2024-04-16 12:54:36 +02:00
2023-03-05 14:07:07 +01:00
2023-06-02 17:10:25 +02:00
2026-05-24 18:10:09 +02:00
2026-05-12 20:59:07 +02:00
2026-05-31 21:16:29 +02:00
2023-03-05 14:07:07 +01:00
2022-10-06 10:33:07 +02:00
2022-10-19 12:28:25 +02:00
2023-03-09 08:49:50 -05:00
2024-06-03 20:08:11 +02:00
2023-05-24 14:59:13 +02:00
2024-04-20 11:10:09 +02:00
2026-04-30 18:47:42 +02:00
2024-04-16 12:54:36 +02:00
2026-05-12 20:59:07 +02:00
2024-04-16 12:54:36 +02:00
2026-05-12 20:59:07 +02:00
2025-12-28 11:21:40 +01:00
2026-04-13 22:12:04 +02:00
2022-06-07 14:59:02 +02:00
2023-03-09 08:49:50 -05:00
2024-12-30 14:25:07 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-05-06 21:19:25 +02:00
2026-05-12 20:59:07 +02:00
2024-05-01 18:01:54 +02:00
2023-05-18 19:37:16 +02:00
2026-05-12 20:59:07 +02:00
2024-05-01 18:01:54 +02:00
2022-07-05 14:27:14 +02:00
2022-06-09 15:10:54 +02:00
2022-06-13 10:08:39 +02:00
2022-06-15 10:37:20 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2022-07-20 11:58:44 +02:00
2022-07-08 12:43:43 +02:00
2022-07-25 08:41:37 +02:00
2022-08-02 13:58:20 +02:00
2022-08-08 22:56:26 +02:00
2022-09-05 12:07:19 +02:00
2022-09-04 14:21:05 +02:00
2022-09-03 23:11:42 +02:00
2022-08-30 18:47:45 +02:00
2022-09-01 17:34:24 +02:00
2022-09-15 11:37:20 +02:00
2022-09-15 22:19:16 +02:00
2022-09-22 14:09:04 +02:00
2022-09-27 16:31:51 +02:00
2022-10-10 09:48:01 +02:00
2022-10-13 10:02:25 +02:00
2022-10-18 20:24:01 +02:00
2022-11-03 12:46:30 +01:00
2022-10-19 17:49:40 +02:00
2026-05-12 20:59:07 +02:00
2022-10-20 22:36:15 +02:00
2022-10-26 18:35:48 +02:00
2026-05-12 20:59:07 +02:00
2022-11-23 12:58:00 +01:00
2022-11-23 15:51:18 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2022-12-16 15:17:46 +01:00
2026-05-12 20:59:07 +02:00
2022-12-19 23:01:09 +01:00
2023-05-21 16:24:41 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2022-12-15 13:46:28 +01:00
2023-01-06 13:09:37 +01:00
2023-01-17 16:04:51 +01:00
2023-01-19 17:14:17 +01:00
2023-01-30 12:13:21 +01:00
2026-05-12 20:59:07 +02:00
2024-09-26 14:20:48 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-02-23 12:09:39 +01:00
2026-05-12 20:59:07 +02:00
2023-03-07 22:17:19 +01:00
2023-03-07 19:38:49 +01:00
2023-03-08 09:20:52 +01:00
2023-03-21 21:35:57 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2023-04-10 11:34:41 +02:00
2023-04-16 21:36:26 +02:00
2024-07-11 11:30:45 +02:00
2023-05-21 16:24:41 +02:00
2026-05-12 20:59:07 +02:00
2023-05-04 20:08:32 +02:00
2023-05-06 13:55:39 +02:00
2023-05-17 11:41:08 +02:00
2024-09-26 14:20:48 +02:00
2023-05-23 17:04:51 +02:00
2023-05-24 10:48:47 +02:00
2023-05-25 23:11:42 +02:00
2026-05-12 20:59:07 +02:00
2024-04-16 12:54:36 +02:00
2026-05-12 20:59:07 +02:00
2023-06-09 15:48:01 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-03-24 15:07:31 +01:00
2023-07-27 17:57:12 +02:00
2024-06-03 20:08:11 +02:00
2023-08-08 15:53:48 +02:00
2023-11-10 14:16:20 +01:00
2024-05-21 19:41:24 +05:30
2023-08-24 09:10:27 -04:00
2023-10-04 11:14:23 +02:00
2024-04-16 12:54:36 +02:00
2023-10-03 21:26:08 +02:00
2023-10-03 23:50:59 +02:00
2026-05-12 20:59:07 +02:00
2023-10-20 23:46:24 +09:00
2023-10-25 10:16:14 +02:00
2024-11-23 22:42:30 +01:00
2024-11-23 22:42:30 +01:00
2026-05-12 20:59:07 +02:00
2023-11-07 19:58:29 +01:00
2024-04-16 12:54:36 +02:00
2023-11-26 18:12:22 +01:00
2026-06-23 21:38:57 +02:00
2024-01-14 20:23:29 +01:00
2024-01-19 22:13:51 +01:00
2024-01-21 19:59:13 +01:00
2026-05-12 20:59:07 +02:00
2024-02-17 13:45:16 +01:00
2024-02-17 13:45:16 +01:00
2024-02-19 09:55:23 +01:00
2024-02-27 22:48:08 +01:00
2024-05-01 15:40:44 +02:00
2026-04-13 23:54:53 +02:00
2024-03-15 15:33:18 +01:00
2026-05-12 20:59:07 +02:00
2024-03-26 20:15:48 +01:00
2024-03-29 22:58:25 +01:00
2024-03-29 21:30:24 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-04-08 16:34:27 +02:00
2024-04-09 16:03:49 +02:00
2026-05-12 20:59:07 +02:00
2024-04-22 22:51:35 +02:00
2026-05-12 20:59:07 +02:00
2024-05-01 09:02:11 +02:00
2026-05-12 22:00:44 +02:00
2026-05-12 20:59:07 +02:00
2024-05-14 13:58:36 +02:00
2024-09-10 16:44:30 +02:00
2024-07-09 09:41:01 +02:00
2025-12-28 14:51:06 +01:00
2024-10-01 17:26:39 +02:00
2024-07-06 11:29:21 -04:00
2024-05-20 12:13:55 +02:00
2024-05-21 13:38:17 +02:00
2024-05-22 12:04:02 +02:00
2024-08-19 19:10:35 +02:00
2024-06-20 13:03:17 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-07-18 13:29:32 +02:00
2024-07-17 14:20:50 +02:00
2024-07-22 09:56:10 +02:00
2024-07-28 12:08:44 +02:00
2025-03-23 18:08:06 +01:00
2026-05-12 20:59:07 +02:00
2026-05-24 15:01:22 +02:00
2026-05-12 20:59:07 +02:00
2024-08-23 16:31:43 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-09-19 21:55:02 +02:00
2024-09-26 16:42:54 +02:00
2025-01-08 15:57:56 +01:00
2024-10-15 11:34:45 +02:00
2026-05-12 20:59:07 +02:00
2024-10-14 21:50:32 +02:00
2026-05-12 20:59:07 +02:00
2024-10-22 11:51:28 +02:00
2026-05-12 20:59:07 +02:00
2024-10-29 09:36:08 +01:00
2024-11-05 18:19:26 +01:00
2024-11-11 15:53:07 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-12-08 15:51:04 +01:00
2024-12-06 18:25:13 +01:00
2024-12-16 16:04:13 +01:00
2024-12-18 09:39:22 +01:00
2026-05-12 20:59:07 +02:00
2025-01-04 11:54:45 +01:00
2025-01-13 13:09:47 +01:00
2025-01-15 10:16:06 +01:00
2026-05-12 20:59:07 +02:00
2025-01-29 12:40:09 +01:00
2026-05-12 20:59:07 +02:00
2025-02-14 15:49:05 +01:00
2025-02-24 15:36:37 -06:00
2025-02-24 15:36:37 -06:00
2025-02-15 15:14:47 +01:00
2026-05-12 20:59:07 +02:00
2025-02-18 18:04:00 +01:00
2026-05-12 20:59:07 +02:00
2025-02-21 21:31:04 +01:00
2025-02-26 10:16:06 +01:00
2025-03-10 12:37:44 +01:00
2025-03-10 16:21:54 +01:00
2026-05-12 20:59:07 +02:00
2026-04-13 14:49:39 +02:00
2025-03-20 20:12:24 +01:00
2025-05-09 21:46:17 +02:00
2025-04-11 16:54:22 +02:00
2025-04-11 15:01:35 +02:00
2025-04-20 14:53:10 +02:00
2025-04-23 10:19:20 +02:00
2025-05-19 12:56:14 +02:00
2025-05-23 13:59:05 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-09-14 18:52:16 +02:00
2026-02-08 16:56:15 +01:00
2025-10-04 18:31:55 +02:00
2025-10-03 22:18:02 +02:00
2025-10-03 22:18:02 +02:00
2025-10-29 17:31:49 +01:00
2025-11-20 22:47:57 +05:30
2026-05-23 12:33:56 +02:00
2025-12-07 06:46:16 +05:30
2025-12-01 10:21:27 +08:00
2025-12-23 14:05:27 +01:00
2025-12-22 23:45:34 +01:00
2025-12-22 17:41:53 +01:00
2026-02-16 16:22:00 +01:00
2026-02-23 22:37:20 +01:00
2026-03-21 19:37:42 +01:00
2026-03-22 15:49:04 +01:00
2026-03-20 23:09:03 +01:00
2026-04-09 13:48:20 +02:00
2026-04-12 13:08:45 +02:00
2026-04-20 18:42:09 +02:00
2026-05-26 22:36:50 +02:00
2026-06-08 19:09:45 +02:00
2026-06-21 23:06:43 +02:00
2026-06-12 12:04:58 +02:00
2026-06-16 21:35:44 +02:00
2026-05-25 08:36:18 +02:00
2026-06-05 16:31:44 +02:00
2026-01-03 22:05:14 +01:00
2026-05-11 23:08:06 +02:00
2026-05-11 23:08:06 +02:00
2026-06-04 09:13:43 +02:00
2026-05-11 23:08:06 +02:00
2026-05-11 23:08:06 +02:00
2026-05-11 23:08:06 +02:00
2026-05-11 23:08:06 +02:00
2026-05-11 23:08:06 +02:00
2026-05-12 20:59:07 +02:00
2026-03-16 23:23:14 +01:00
2026-05-12 20:59:07 +02:00
2026-06-22 21:27:52 +02:00
2023-09-19 14:11:03 +02:00
2026-03-19 10:52:39 +01:00
2026-02-27 17:07:44 +01:00
2026-05-07 22:30:51 +02:00
2026-06-15 18:23:26 +02:00
2026-04-21 22:23:28 +02:00
2026-03-17 22:22:13 +01:00
2026-03-08 12:28:24 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2024-10-15 10:55:17 +02:00
2026-05-12 20:59:07 +02:00
2026-04-03 22:29:38 +02:00
2025-02-09 22:06:58 +01:00
2025-07-03 05:52:31 +09:00
2026-05-12 20:59:07 +02:00
2023-12-09 10:36:18 +01:00
2026-03-13 10:23:58 +01:00
2026-04-12 14:55:22 +02:00
2026-05-12 20:59:07 +02:00
2023-07-24 18:42:46 +02:00
2026-05-12 20:59:07 +02:00
2025-06-19 16:33:52 +02:00
2026-05-12 20:59:07 +02:00
2026-02-26 20:22:34 -05:00
2026-03-03 22:46:11 +08:00
2026-05-07 19:06:49 +02:00
2026-05-07 19:06:49 +02:00
2026-05-07 19:06:49 +02:00
2026-05-07 19:06:49 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-06-08 17:22:11 +02:00
2026-03-22 14:20:18 +01:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2022-08-12 14:35:26 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2026-05-12 20:59:07 +02:00
2025-03-29 00:12:08 +01:00
2023-07-31 13:04:15 +02:00
2025-11-21 17:53:38 +01:00
2026-03-03 22:46:11 +08:00