Commit graph

7902 commits

Author SHA1 Message Date
Bowen Wang
d0a6dd40c4 coremark/Makefile: avoid crc function multiple definition
/data/project/oh2/rel-4.0/prebuilts/gcc/linux/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: crc16_sw.c.data.project.oh2.rel-4.0.external.zblue.zblue_1.o (symbol from plugin): in function `crc16':
(.text+0x0): multiple definition of `crc16'; core_util.c.data.project.oh2.rel-4.0.apps.benchmarks.coremark_1.o (symbol from plugin):(.text+0x0): first defined here

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 19:32:58 +08:00
Bowen Wang
6ea8f70ca8 osperf/osperf: move close pipefd after pthread_join
Avoid the new thread write the closed pipe

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 19:32:27 +08:00
lipengfei28
f15ed311c0 wapi_json_load: the buf need add null character
sched_backtrace+0xd4/0xfffffffffff444e0
sched_dumpstack+0x5c/0xc50a0
_assert+0x1a0/0x11cf380
__assert+0x28/0x4ebd70
kasan_report+0x280/0x5b0
__asan_loadN+0x234/0xfffffffffffffac0
strlen+0x3c/0x838410
cJSON_Parse+0x38/0x1d0
wapi_json_load+0xc4/0x1c0
wapi_load_config+0x50/0x110600
netinit_associate+0x34/0xfffffffffffffe70
netinit_thread+0xbc/0x18ad0
pthread_startup+0x34/0x11660a0
pthread_start+0x84/0xfffffffffeea2520

If the buf no null character, the strlen acces buf maybe out of bounds

Signed-off-by: lipengfei28 <lipengfei28@xiaomi.com>
2024-10-11 19:26:44 +08:00
Bowen Wang
6f85062019 nshlib/nsh_parse: support use \" and \' to pass " and ' to arguments
Now we can pass symbol " and ' to the nsh command arguments

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 19:22:57 +08:00
Bowen Wang
048f9d7720 system/system: add config SYSTEM_SYSTEM_DUMPINFO
In some cases, applicationes use system() to excute the nsh command,
but it's hard to find out who used the system function to execute
the nsh command, so  add this config to print the call backtrace and
the command content.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 19:21:41 +08:00
zhangkai25
3fef38c96d Fix issue with return value not being checked
Signed-off-by: zhangkai25 <zhangkai25@xiaomi.com>
2024-10-11 18:35:27 +08:00
cuiziwei
e50627ecd6 apps/testing:Add c++ STL code size test case.
Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
2024-10-11 18:31:14 +08:00
Neo Xu
d91e3db9fd noteprintf: fix compile warnings
noteprintf_main.c:52:7: warning: unused variable 'binary' [-Wunused-variable]
   52 |     } binary =

Fix typo of sched.

Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-10-11 18:30:33 +08:00
cuiziwei
13ce4707ff libuv: Remove GCCVER and add compilation options directly.
Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
2024-10-11 18:29:40 +08:00
Huang Qi
648e25bac1 examples/pipe: Enhance test by different r/w thread priority
By arranging and combining the priorities of read and write
threads to cover more usage scenarios.

Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2024-10-11 18:20:29 +08:00
Bowen Wang
0b8a52379c nsh_syscmds/rpmsg: include <nuttx/rpmsg/rpmsg.h> to fix compile error
nsh_syscmds.c: In function ‘cmd_rpmsg_once’:
nsh_syscmds.c:567:13: error: ‘RPMSGIOC_PANIC’ undeclared (first use in this function)
  567 |       cmd = RPMSGIOC_PANIC;
      |             ^~~~~~~~~~~~~~
nsh_syscmds.c:567:13: note: each undeclared identifier is reported only once for each function it appears in
nsh_syscmds.c:571:13: error: ‘RPMSGIOC_DUMP’ undeclared (first use in this function); did you mean ‘FIOC_DUMP’?
  571 |       cmd = RPMSGIOC_DUMP;

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 14:59:22 +08:00
Yongrong Wang
568310858b nsh_syscmds.c: upadate rpmsg ping help
1. struct rpmsg_ping_s ack change to cmd;
2. Update the help descrption based on the new cmd
   meaning;

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 14:59:22 +08:00
Lup Yuen Lee
eedd71f508 CI: Sync the Build Workflow from nuttx repo
This PR syncs the CI Build Workflow from `nuttx` repo to `nuttx-apps`, with the following updates:
- https://github.com/apache/nuttx/pull/13954
- https://github.com/apache/nuttx/pull/14011
- https://github.com/apache/nuttx/pull/14022

To follow the existing convention, `build.yml` from `nuttx` repo was slightly modified for `nuttx-apps`:
- All References to `apache/nuttx/.../arch.yml` were changed to `apache/nuttx-apps/.../arch.yml`
- Removed `pull_request > paths-ignore` and `push > paths-ignore`
2024-10-11 07:45:36 +02:00
zhangwenjian
9003110d7f libc:getline support backspace
Signed-off-by: zhangwenjian <zhangwenjian@xiaomi.com>
2024-10-11 03:02:23 +08:00
shizhenghui
de8fae7119 nxcodec: fix build warning
nxcodec_main.c:143:37: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘uint32_t’ {aka ‘unsigned int’} [-Wformat=]
  143 |             printf("nxcodec size: %lux%lu\n",
      |                                   ~~^
      |                                     |
      |                                     long unsigned int
      |                                   %u
  144 |                    codec.output.format.fmt.pix.width,
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               uint32_t {aka unsigned int}
nxcodec_main.c:143:41: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘uint32_t’ {aka ‘unsigned int’} [-Wformat=]
  143 |             printf("nxcodec size: %lux%lu\n",
      |                                       ~~^
      |                                         |
      |                                         long unsigned int
      |                                       %u
  144 |                    codec.output.format.fmt.pix.width,
  145 |                    codec.output.format.fmt.pix.height);
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               uint32_t {aka unsigned int}

Signed-off-by: shizhenghui <shizhenghui@xiaomi.com>
2024-10-11 01:28:51 +08:00
shizhenghui
8f50bf3867 nxcodec: add rich debugging logs
Signed-off-by: shizhenghui <shizhenghui@xiaomi.com>
2024-10-11 01:28:51 +08:00
Windrow14
6bebd1bea1 fsutils/mkmbr/mkmbr.c: fix null pointer access when not all device space is defined in mbr
argv[argn] is accessed out of range when there are neither four partitions are specified nor the last partition is of auto size.
Add a number of partition variable based on input argument number.

Signed-off-by: Yinzhe Wu <Yinzhe.Wu@sony.com>
Reviewed-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Jacky Cao <Jacky.Cao@sony.com>
Tested-by: Yinzhe Wu <Yinzhe.Wu@sony.com>
2024-10-10 02:24:58 +08:00
Alin Jerpelea
7cabf00380 canutils/libobd2: replace field ch_unused with ch_tcf
https://github.com/apache/nuttx-apps/pull/2635
replaced ch_unused with ch_tcf

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2024-10-10 02:24:20 +08:00
yinshengkai
1b27b73a99 system/gprof: Support gprof tool
It can perform statistics on running hot spots or record function calls

arm-none-eabi-gprof nuttx/nuttx gmon.out -b
Flat profile:

Each sample counts as 0.001 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
 66.41      3.55     3.55       43     0.08     0.08  sdelay
 33.44      5.34     1.79       44     0.04     0.04  delay
  0.07      5.34     0.00                             up_idle
  0.04      5.34     0.00                             nx_start
  0.02      5.34     0.00                             fdtdump_main
  0.02      5.34     0.00                             nxsem_wait
  0.00      5.34     0.00        1     0.00     5.34  hello_main
  0.00      5.34     0.00        1     0.00     0.00  singal_handler

granularity: each sample hit covers 4 byte(s) for 0.02% of 5.34 seconds

index % time    self  children    called     name
                0.00    5.34       1/1           nxtask_startup [2]
[1]     99.9    0.00    5.34       1         hello_main [1]
                3.55    0.00      43/43          sdelay [3]
                1.79    0.00      44/44          delay [4]
-----------------------------------------------
                                                 <spontaneous>
[2]     99.9    0.00    5.34                 nxtask_startup [2]
                0.00    5.34       1/1           hello_main [1]
-----------------------------------------------
                3.55    0.00      43/43          hello_main [1]
[3]     66.4    3.55    0.00      43         sdelay [3]
-----------------------------------------------
                1.79    0.00      44/44          hello_main [1]
[4]     33.4    1.79    0.00      44         delay [4]
-----------------------------------------------
                                                 <spontaneous>
[5]      0.1    0.00    0.00                 up_idle [5]
-----------------------------------------------
                                                 <spontaneous>
[6]      0.0    0.00    0.00                 nx_start [6]
-----------------------------------------------
                                                 <spontaneous>
[7]      0.0    0.00    0.00                 fdtdump_main [7]
-----------------------------------------------
                                                 <spontaneous>
[8]      0.0    0.00    0.00                 nxsem_wait [8]
-----------------------------------------------
                0.00    0.00       1/1           nxsig_deliver [3553]
[9]      0.0    0.00    0.00       1         singal_handler [9]
-----------------------------------------------

Index by function name

   [4] delay                   [6] nx_start                [9] singal_handler
   [7] fdtdump_main            [8] nxsem_wait              [5] up_idle
   [1] hello_main              [3] sdelay

Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-09 23:16:13 +08:00
pengyiqiang
f1fc3616d0 testing/monkey: add screen offset config support
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-10-09 22:40:15 +08:00
wangmingrong1
a2964c744d gcov.c: deal compile warming
gcov.c:61:6: warning: 'path' may be used uninitialized [-Wmaybe-uninitialized]
   61 |   if (path == NULL || access(path, F_OK) != 0 || atoi(strip) <= 0)
      |      ^
gcov.c: In function 'gcov_main':
gcov.c:79:19: note: 'path' was declared here
   79 |   FAR const char *path;

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2024-10-09 21:27:35 +08:00
yinshengkai
aa9d69e224 system: adjust gcov configuration name
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-09 21:27:35 +08:00
yinshengkai
0f74de57cf system/gcov: supports generating device-side code coverage
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-09 21:27:35 +08:00
xuxin19
faea166566 cmake:add system cdcacm/critmom/stackmonitor missing CMake scripts
Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-10-09 20:15:49 +08:00
xuxin19
190926b467 cmake:add romfs/unionfs/tcpblaster/udpblaster exmaple app CMake build
Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-10-09 20:15:49 +08:00
zhangjun21
cc200c301c Keep the dhcpv6 renew process name the same in cmake and makefile
Signed-off-by: zhangjun21 <zhangjun21@xiaomi.com>
2024-10-09 20:05:11 +08:00
yinshengkai
1b48055286 system: simplify system/note code
delete the note format. This part has been implemented inside the driver.

Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-09 13:42:31 +08:00
wangjianyu3
98427f67f1 tools/mksymtab.sh: Add symbol table for modlib
Configs:
  +CONFIG_MODLIB_HAVE_SYMTAB=y

  CONFIG_MODLIB_SYMTAB_ARRAY="g_mod_symtab"
  CONFIG_MODLIB_NSYMBOLS_VAR="g_mod_nsymbols"

Link error:
  LD: nuttx
  aarch64-none-elf-ld: /workspace/nuttx/staging/libc.a(modlib_symtab.o): in function `modlib_getsymtab':
  /workspace/nuttx/libs/libc/modlib/modlib_symtab.c:97:(.text.modlib_getsymtab+0xa0): undefined reference to `g_mod_symtab'
  aarch64-none-elf-ld: /workspace/nuttx/libs/libc/modlib/modlib_symtab.c:97:(.text.modlib_getsymtab+0xa4): undefined reference to `g_mod_symtab'
  aarch64-none-elf-ld: /workspace/nuttx/libs/libc/modlib/modlib_symtab.c:98:(.text.modlib_getsymtab+0xa8): undefined reference to `g_mod_nsymbols'
  aarch64-none-elf-ld: /workspace/nuttx/libs/libc/modlib/modlib_symtab.c:98:(.text.modlib_getsymtab+0xac): undefined reference to `g_mod_nsymbols'

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2024-10-09 12:15:24 +08:00
yinshengkai
30df081276 examples: fix noteprint compile error
The sched_note_string/bprintf/dump interfaces have been removed and replaced with printf and event

Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-08 23:35:46 +08:00
Lars Kruse
d35dd65727 system/dhcp6c: add NET_ICMPv6_AUTOCONF dependency
Previously the build failed if NET_ICMPv6_AUTOCONF was disabled
(due to the missing `netlib_obtain_ipv6addr` symbol).

Closes: #2412
2024-10-08 19:56:50 +08:00
Lup Yuen Lee
a14429296e CI: Sync the Build Workflow from nuttx repo
This PR syncs the CI Build Workflow `build.yml` from `nuttx` repo to `nuttx-apps`. The updated `build.yml` consolidates these changes:
- https://github.com/apache/nuttx/pull/13301
- https://github.com/apache/nuttx/pull/13806
- https://github.com/apache/nuttx/pull/13862

`build.yml` from `nuttx` repo was slightly modified for `nuttx-apps`:
- All References to `apache/nuttx/.../arch.yml` were changed to `apache/nuttx-apps/.../arch.yml` (we decouple them so they are easier to update)
- Removed `pull_request > paths-ignore` and `push > paths-ignore` (following the existing convention)
2024-10-08 18:12:07 +08:00
wangmingrong
cc1c4a3722 examples/romfs: Compilation error after enabling options
Enable CONFIG_PROFIG_EXAMPLES_ROMFS compilation error

Signed-off-by: wangmingrong <wangmingrong@xiaomi.com>
2024-10-08 14:04:39 +08:00
Lup Yuen Lee
0918826561 CI: Sync the Build Rules from nuttx repo
This PR syncs the Build Rules from `nuttx` to `nuttx-apps` repo. The Build Rules were added to `nuttx` repo here: https://github.com/apache/nuttx/pull/13858
2024-10-08 14:04:23 +08:00
wangmingrong
c2597504e0 nsh: Fix PS printing misalignment
When the stack is allocated in megabytes, printing seven bits of ps will not align

Signed-off-by: wangmingrong <wangmingrong@xiaomi.com>
2024-10-08 07:58:51 +02:00
Xiang Xiao
c30583dda4 system/adbd: Fix typo error(CONFIG_ADB_SERVER->CONFIG_SYSTEM_ADBD)
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2024-10-07 21:25:42 +08:00
Xiang Xiao
9b8a02749f net: Remove IFF_DOWN flag to compatible with Linux/*BSD
turn off interface by checking IFF_UP flag isn't set:
https://github.com/apache/nuttx/issues/1838

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2024-10-07 20:19:47 +08:00
wangjianyu3
58e5bc7e74 apps/Makefile: Passing extra arguments to mksymtab.sh
https://github.com/apache/nuttx-apps/pull/2637

For example, now can passing file(s) contain additional symbols that may be used in the future to mksymtab.sh by using "-a" option to avoid freuent kernel rebuilds:
SYMTABEXT="-a $(XXXX_PREFIX)/platform/nuttx/exports_xxxx_api.txt"
ifneq ($(CONFIG_LIBM),)
    SYMTABEXT+="-a $(XXXX_PREFIX)/platform/nuttx/exports_xxxx_api_math.txt"
endif

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2024-10-07 18:55:06 +08:00
wangjianyu3
266049bd11 tools/mksymtab.sh: Using getopts to parse parameters
Use the "-a" option to specify additional lists

Examples
  - The basic.txt
    $ cat basic.txt
    basic_func0
    basic_func1
    basic_func2

  - The additional.txt
    $ cat additional.txt
    additional_func0
    additional_func1
    additional_func2

  1. Get symbols from directory "EMPTY_DIR" and additional list basic.txt
    ./tools/mksymtab.sh ./EMPTY_DIR -a basic.txt
    #if defined(CONFIG_EXECFUNCS_HAVE_SYMTAB)
    const struct symtab_s CONFIG_EXECFUNCS_SYMTAB_ARRAY[] =
    #elif defined(CONFIG_NSH_SYMTAB)
    const struct symtab_s CONFIG_NSH_SYMTAB_ARRAYNAME[] =
    #else
    const struct symtab_s dummy_symtab[] =
    #endif
    {
      {"basic_func0", &basic_func0},
      {"basic_func1", &basic_func1},
      {"basic_func2", &basic_func2},
    };

  2. Get symbols from directory "EMPTY_DIR" and two additional lists basic.txt, additional.txt
    ./tools/mksymtab.sh ./EMPTY_DIR -a basic.txt -a additional.txt
    #if defined(CONFIG_EXECFUNCS_HAVE_SYMTAB)
    const struct symtab_s CONFIG_EXECFUNCS_SYMTAB_ARRAY[] =
    #elif defined(CONFIG_NSH_SYMTAB)
    const struct symtab_s CONFIG_NSH_SYMTAB_ARRAYNAME[] =
    #else
    const struct symtab_s dummy_symtab[] =
    #endif
    {
      {"additional_func0", &additional_func0},
      {"additional_func1", &additional_func1},
      {"additional_func2", &additional_func2},
      {"basic_func0", &basic_func0},
      {"basic_func1", &basic_func1},
      {"basic_func2", &basic_func2},
    };

  3. Set prefix and get symbols from directory "EMPTY_DIR" and two additional lists basic.txt, additional.txt
    ./tools/mksymtab.sh ./EMPTY_DIR PREFIX_TEST  -a basic.txt -a additional.txt
    const struct symtab_s PREFIX_TEST_exports[] =
    {
      {"additional_func0", &additional_func0},
      {"additional_func1", &additional_func1},
      {"additional_func2", &additional_func2},
      {"basic_func0", &basic_func0},
      {"basic_func1", &basic_func1},
      {"basic_func2", &basic_func2},
    };

  4. Error: Missing <imagedirpath>
    $ ./tools/mksymtab.sh
    ERROR: Missing <imagedirpath>

    Usage: ./tools/mksymtab.sh <imagedirpath> [symtabprefix] [-a additionalsymbolspath]

UNSUPPORTED usage examples
  # `getopt` supports these, but the usage in GNU and macOS is incompatible.
  - ./tools/mksymtab.sh ./EMPTY_DIR -a basic.txt PREFIX_TEST -a additional.txt
  - ./tools/mksymtab.sh -a basic.txt ./EMPTY_DIR PREFIX_TEST -a additional.txt

References
  BASH(1)   -- getopts
  GETOPT(1) -- getopt

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2024-10-07 18:55:06 +08:00
wanggang26
d407670115 resetcause:restore to factory, factory to factory_inquiry
Signed-off-by: wanggang26 <wanggang26@xiaomi.com>
2024-10-07 05:10:19 +08:00
ligd
32e8b8e8ae mps2: add zero-latency-interrupt case on mps2
Signed-off-by: ligd <liguiding1@xiaomi.com>
2024-10-07 05:10:07 +08:00
wanggang26
d5d8e9eacb fix build error:
[linguini@pastabox nuttx]$ make -j
CC:  tcpblaster_server.c
LN: platform/board to
/home/linguini/cuinspace/pico-nuttx/apps/platform/dummy
tcpblaster_server.c: In function ‘tcpblaster_server’:
tcpblaster_server.c:159:14: error: implicit declaration of function
‘accept4’; did you mean ‘accept’? [-Wimplicit-function-declaration]
  159 |   acceptsd = accept4(listensd, (FAR struct sockaddr *)&myaddr,
&addrlen,
      |              ^~~~~~~
      |              accept
make[3]: *** [Makefile:92: tcpblaster_server.hobj] Error 1
make[2]: *** [Makefile:53:
/home/linguini/cuinspace/pico-nuttx/apps/examples/tcpblaster_context]
Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:180: context] Error 2
make: *** [tools/Unix.mk:457:
/home/linguini/cuinspace/pico-nuttx/apps/.context] Error 2
make: *** Waiting for unfinished jobs....

from https://github.com/apache/nuttx-apps/issues/2632

Signed-off-by: wanggang26 <wanggang26@xiaomi.com>
2024-10-05 09:06:43 +08:00
Petro Karashchenko
86f367132a netutils/ptpd: add missing FAR
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2024-10-04 08:17:51 +08:00
Petro Karashchenko
66b79a7c89 style: fix indentation issues
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2024-10-04 08:17:51 +08:00
xucheng5
76d419ca45 example/can: replace field ch_unused with ch_tcf
Signed-off-by: zhaohaiyang1 <zhaohaiyang1@xiaomi.com>
2024-10-02 21:22:14 +08:00
anjiahao
c916f163f2 nsh:support wait command to wait task exit.
usage like:
  nsh> sleep 10 &
  [5:100]
  nsh>set pid1=$!
  nsh>sleep 15 &
  [6:100]
  nsh>set pid2=$!
  nsh>wait $pid1 $pid2

'wait' command will block nsh from running until pid1 and pid2 finish.
This is useful for parallel requirements to perform certain tasks

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2024-10-02 21:13:54 +08:00
W-M-R
8d1966e9fc kasantest: Fix compilation warning
signed-off-by: W-M-R <Mike_0528@163.com>
2024-10-02 21:10:22 +08:00
wangmingrong1
94a6f1837a kasantest: add CMakeLists.txt
Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2024-10-02 21:10:22 +08:00
wangmingrong1
1fb3687eaa kasantest.c: fix the size passed by mm_initialize is incorrect
Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2024-10-02 21:10:22 +08:00
raiden00pl
8fc7004f5b github: sync labels with nuttx repo
sync github lables with main NuttX repo
2024-10-02 20:55:54 +08:00
Petro Karashchenko
4f09da79cf system/uniqueid: remove FAR from int variables
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2024-10-02 10:40:05 +02:00