From cbe507440a7230022e823506d1e7857b0dff3072 Mon Sep 17 00:00:00 2001
From: Michael Lee <lee.5151@osu.edu>
Date: Mon, 26 Aug 2024 09:37:01 -0400
Subject: [PATCH] Upgrading drupal/file_mdm (3.0.0 => 3.1.0)

---
 composer.lock                                 | 163 ++++++++--------
 vendor/composer/autoload_classmap.php         |  76 ++++----
 vendor/composer/autoload_psr4.php             |   4 +-
 vendor/composer/autoload_static.php           |  82 ++++----
 vendor/composer/include_paths.php             |   2 +-
 vendor/composer/installed.json                | 181 +++++++++---------
 vendor/composer/installed.php                 |  48 ++---
 vendor/dompdf/php-font-lib/AUTHORS.md         |  17 ++
 vendor/{phenx => dompdf}/php-font-lib/LICENSE |   0
 .../{phenx => dompdf}/php-font-lib/README.md  |   0
 .../php-font-lib/composer.json                |   9 +-
 .../maps/adobe-standard-encoding.map          |   0
 .../php-font-lib/maps/cp1250.map              |   0
 .../php-font-lib/maps/cp1251.map              |   0
 .../php-font-lib/maps/cp1252.map              |   0
 .../php-font-lib/maps/cp1253.map              |   0
 .../php-font-lib/maps/cp1254.map              |   0
 .../php-font-lib/maps/cp1255.map              |   0
 .../php-font-lib/maps/cp1257.map              |   0
 .../php-font-lib/maps/cp1258.map              |   0
 .../php-font-lib/maps/cp874.map               |   0
 .../php-font-lib/maps/iso-8859-1.map          |   0
 .../php-font-lib/maps/iso-8859-11.map         |   0
 .../php-font-lib/maps/iso-8859-15.map         |   0
 .../php-font-lib/maps/iso-8859-16.map         |   0
 .../php-font-lib/maps/iso-8859-2.map          |   0
 .../php-font-lib/maps/iso-8859-4.map          |   0
 .../php-font-lib/maps/iso-8859-5.map          |   0
 .../php-font-lib/maps/iso-8859-7.map          |   0
 .../php-font-lib/maps/iso-8859-9.map          |   0
 .../php-font-lib/maps/koi8-r.map              |   0
 .../php-font-lib/maps/koi8-u.map              |   0
 .../src/FontLib/AdobeFontMetrics.php          |   1 -
 .../php-font-lib/src/FontLib/BinaryStream.php |   1 -
 .../php-font-lib/src/FontLib/EOT/File.php     |   1 -
 .../php-font-lib/src/FontLib/EOT/Header.php   |   1 -
 .../php-font-lib/src/FontLib/EncodingMap.php  |   1 -
 .../Exception/FontNotFoundException.php       |   0
 .../php-font-lib/src/FontLib/Font.php         |   1 -
 .../src/FontLib/Glyph/Outline.php             |   1 -
 .../src/FontLib/Glyph/OutlineComponent.php    |   1 -
 .../src/FontLib/Glyph/OutlineComposite.php    |   1 -
 .../src/FontLib/Glyph/OutlineSimple.php       |   1 -
 .../php-font-lib/src/FontLib/Header.php       |   1 -
 .../src/FontLib/OpenType/File.php             |   1 -
 .../FontLib/OpenType/TableDirectoryEntry.php  |   1 -
 .../src/FontLib/Table/DirectoryEntry.php      |   1 -
 .../php-font-lib/src/FontLib/Table/Table.php  |   1 -
 .../src/FontLib/Table/Type/cmap.php           |   1 -
 .../src/FontLib/Table/Type/cvt.php            |   3 +-
 .../src/FontLib/Table/Type/fpgm.php           |   3 +-
 .../src/FontLib/Table/Type/glyf.php           |   1 -
 .../src/FontLib/Table/Type/head.php           |   1 -
 .../src/FontLib/Table/Type/hhea.php           |   1 -
 .../src/FontLib/Table/Type/hmtx.php           |   1 -
 .../src/FontLib/Table/Type/kern.php           |   1 -
 .../src/FontLib/Table/Type/loca.php           |   1 -
 .../src/FontLib/Table/Type/maxp.php           |   1 -
 .../src/FontLib/Table/Type/name.php           |   1 -
 .../src/FontLib/Table/Type/nameRecord.php     |   1 -
 .../src/FontLib/Table/Type/os2.php            |   1 -
 .../src/FontLib/Table/Type/post.php           |   1 -
 .../src/FontLib/Table/Type/prep.php           |   3 +-
 .../src/FontLib/TrueType/Collection.php       |   1 -
 .../src/FontLib/TrueType/File.php             |   1 -
 .../src/FontLib/TrueType/Header.php           |   1 -
 .../FontLib/TrueType/TableDirectoryEntry.php  |   1 -
 .../php-font-lib/src/FontLib/WOFF/File.php    |   1 -
 .../php-font-lib/src/FontLib/WOFF/Header.php  |   1 -
 .../src/FontLib/WOFF/TableDirectoryEntry.php  |   1 -
 .../fileeye/pel/.github/workflows/tests.yml   |  19 +-
 vendor/fileeye/pel/.scrutinizer.yml           |  16 --
 vendor/fileeye/pel/CHANGELOG.md               |   5 +
 vendor/fileeye/pel/README.markdown            |   8 +-
 vendor/fileeye/pel/composer.json              |  17 +-
 vendor/fileeye/pel/phpstan.neon.dist          |  13 ++
 vendor/fileeye/pel/src/PelCanonMakerNotes.php |  55 ------
 vendor/fileeye/pel/src/PelConvert.php         |   2 +-
 vendor/fileeye/pel/src/PelDataWindow.php      |   1 +
 vendor/fileeye/pel/src/PelEntryNumber.php     |   6 +-
 vendor/fileeye/pel/src/PelEntryRational.php   |   2 +-
 vendor/fileeye/pel/src/PelEntryShort.php      |   5 +-
 vendor/fileeye/pel/src/PelEntryTime.php       |   5 +-
 vendor/fileeye/pel/src/PelEntryUndefined.php  |   2 -
 vendor/fileeye/pel/src/PelEntryVersion.php    |   3 -
 vendor/fileeye/pel/src/PelExif.php            |   2 +-
 vendor/fileeye/pel/src/PelIfd.php             |  24 ++-
 vendor/fileeye/pel/src/PelJpeg.php            |   2 +-
 vendor/fileeye/pel/src/PelTiff.php            |   2 +-
 vendor/fileeye/pel/test/Bug3017880Test.php    |   2 +-
 vendor/fileeye/pel/test/Gh16Test.php          |  48 +++--
 vendor/fileeye/pel/test/MisplacedExifTest.php |   2 +-
 vendor/fileeye/pel/test/NumberTestCase.php    |   6 +-
 vendor/fileeye/pel/test/PelTagTest.php        |   4 +-
 vendor/fileeye/pel/test/ReadWriteTest.php     |   1 +
 .../pel/test/imagetests/CanonEos650dTest.php  |   2 +-
 vendor/psr/log/src/LoggerAwareInterface.php   |   4 -
 vendor/psr/log/src/LoggerAwareTrait.php       |   4 -
 vendor/psr/log/src/LoggerInterface.php        |  28 ---
 vendor/psr/log/src/LoggerTrait.php            |  46 +----
 vendor/psr/log/src/NullLogger.php             |   6 +-
 web/modules/file_mdm/.gitlab-ci.yml           | 108 +++++++++++
 web/modules/file_mdm/README.md                |  13 +-
 web/modules/file_mdm/composer.json            |   8 +-
 web/modules/file_mdm/drupalci.yml             |  24 ---
 web/modules/file_mdm/file_mdm.info.yml        |   8 +-
 web/modules/file_mdm/file_mdm.services.yml    |  19 +-
 .../file_mdm_exif/file_mdm_exif.info.yml      |   8 +-
 .../file_mdm_exif/file_mdm_exif.services.yml  |   9 +-
 .../file_mdm_exif/src/ExifTagMapper.php       |   7 +-
 .../src/Plugin/FileMetadata/Exif.php          |  23 +--
 .../tests/src/Kernel/FileMetadataExifTest.php |  36 ++--
 web/modules/file_mdm/file_mdm_font/README.md  |   2 +-
 .../file_mdm_font/file_mdm_font.info.yml      |   8 +-
 .../src/Plugin/FileMetadata/Font.php          |  19 +-
 web/modules/file_mdm/phpcs.xml.dist           |   4 +-
 web/modules/file_mdm/phpstan-baseline.neon    |  15 --
 .../{phpstan.neon.dist => phpstan.neon}       |   0
 .../src/Element/FileMetadataCaching.php       |   8 +-
 web/modules/file_mdm/src/FileMetadata.php     |   5 +-
 .../file_mdm/src/FileMetadataManager.php      |   3 +
 .../src/Plugin/Attribute/FileMetadata.php     |  30 +++
 .../FileMetadata/FileMetadataPluginBase.php   |   4 +-
 .../src/Plugin/FileMetadata/GetImageSize.php  |  15 +-
 .../src/Plugin/FileMetadataPluginManager.php  |  13 +-
 .../tests/src/Functional/SettingsFormTest.php |   2 +-
 .../src/Kernel/FileMetadataManagerTest.php    |  21 +-
 127 files changed, 682 insertions(+), 697 deletions(-)
 create mode 100644 vendor/dompdf/php-font-lib/AUTHORS.md
 rename vendor/{phenx => dompdf}/php-font-lib/LICENSE (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/README.md (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/composer.json (69%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/adobe-standard-encoding.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1250.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1251.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1252.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1253.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1254.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1255.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1257.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp1258.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/cp874.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-1.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-11.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-15.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-16.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-2.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-4.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-5.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-7.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/iso-8859-9.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/koi8-r.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/maps/koi8-u.map (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/AdobeFontMetrics.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/BinaryStream.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/EOT/File.php (98%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/EOT/Header.php (98%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/EncodingMap.php (93%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Exception/FontNotFoundException.php (100%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Font.php (96%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Glyph/Outline.php (97%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Glyph/OutlineComponent.php (92%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Glyph/OutlineComposite.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Glyph/OutlineSimple.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Header.php (92%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/OpenType/File.php (86%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php (87%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/DirectoryEntry.php (97%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Table.php (96%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/cmap.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/cvt.php (83%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/fpgm.php (83%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/glyf.php (98%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/head.php (96%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/hhea.php (95%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/hmtx.php (96%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/kern.php (97%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/loca.php (96%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/maxp.php (95%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/name.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/nameRecord.php (95%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/os2.php (96%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/post.php (98%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/Table/Type/prep.php (84%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/TrueType/Collection.php (97%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/TrueType/File.php (99%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/TrueType/Header.php (92%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php (92%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/WOFF/File.php (97%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/WOFF/Header.php (93%)
 rename vendor/{phenx => dompdf}/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php (92%)
 delete mode 100644 vendor/fileeye/pel/.scrutinizer.yml
 create mode 100644 vendor/fileeye/pel/phpstan.neon.dist
 create mode 100644 web/modules/file_mdm/.gitlab-ci.yml
 delete mode 100644 web/modules/file_mdm/drupalci.yml
 rename web/modules/file_mdm/{phpstan.neon.dist => phpstan.neon} (100%)
 create mode 100644 web/modules/file_mdm/src/Plugin/Attribute/FileMetadata.php

diff --git a/composer.lock b/composer.lock
index e8eeb073e6..c797facfda 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1307,6 +1307,51 @@
             ],
             "time": "2024-02-05T11:35:39+00:00"
         },
+        {
+            "name": "dompdf/php-font-lib",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dompdf/php-font-lib.git",
+                "reference": "991d6a954f6bbd7e41022198f00586b230731441"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/991d6a954f6bbd7e41022198f00586b230731441",
+                "reference": "991d6a954f6bbd7e41022198f00586b230731441",
+                "shasum": ""
+            },
+            "require": {
+                "ext-mbstring": "*",
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "FontLib\\": "src/FontLib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-2.1-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "The FontLib Community",
+                    "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
+                }
+            ],
+            "description": "A library to read, parse, export and make subsets of different types of font files.",
+            "homepage": "https://github.com/dompdf/php-font-lib",
+            "support": {
+                "issues": "https://github.com/dompdf/php-font-lib/issues",
+                "source": "https://github.com/dompdf/php-font-lib/tree/1.0.0"
+            },
+            "time": "2024-04-29T13:40:38+00:00"
+        },
         {
             "name": "drupal/addtocalendar",
             "version": "3.5.0",
@@ -3313,32 +3358,32 @@
         },
         {
             "name": "drupal/file_mdm",
-            "version": "3.0.0",
+            "version": "3.1.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/file_mdm.git",
-                "reference": "3.0.0"
+                "reference": "3.1.0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/file_mdm-3.0.0.zip",
-                "reference": "3.0.0",
-                "shasum": "d6ea077882777619c25b217301dc3d1c10218502"
+                "url": "https://ftp.drupal.org/files/projects/file_mdm-3.1.0.zip",
+                "reference": "3.1.0",
+                "shasum": "fa7709137705a693c4d5329035612473045a19d3"
             },
             "require": {
-                "drupal/core": "^10.1",
-                "fileeye/pel": "^0.9.20",
-                "phenx/php-font-lib": "^0.5.4"
+                "dompdf/php-font-lib": "^1",
+                "drupal/core": "^10.3 | ^11",
+                "fileeye/pel": "^0.10.0"
             },
             "require-dev": {
-                "drupal/vendor_stream_wrapper": "^2.0.2",
+                "drupal/vendor_stream_wrapper": "^2.0.4",
                 "fileeye/linuxlibertine-fonts": "^5.3"
             },
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "3.0.0",
-                    "datestamp": "1691421181",
+                    "version": "3.1.0",
+                    "datestamp": "1718086268",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -3363,16 +3408,16 @@
         },
         {
             "name": "drupal/file_mdm_exif",
-            "version": "3.0.0",
+            "version": "3.1.0",
             "require": {
-                "drupal/core": "^10.1",
+                "drupal/core": "^10.3 | ^11",
                 "drupal/file_mdm": "*"
             },
             "type": "metapackage",
             "extra": {
                 "drupal": {
-                    "version": "3.0.0",
-                    "datestamp": "1691421181",
+                    "version": "3.1.0",
+                    "datestamp": "1718086268",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -3397,16 +3442,16 @@
         },
         {
             "name": "drupal/file_mdm_font",
-            "version": "3.0.0",
+            "version": "3.1.0",
             "require": {
-                "drupal/core": "^10.1",
+                "drupal/core": "^10.3 | ^11",
                 "drupal/file_mdm": "*"
             },
             "type": "metapackage",
             "extra": {
                 "drupal": {
-                    "version": "3.0.0",
-                    "datestamp": "1691421181",
+                    "version": "3.1.0",
+                    "datestamp": "1718086268",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -7528,28 +7573,30 @@
         },
         {
             "name": "fileeye/pel",
-            "version": "0.9.20",
+            "version": "0.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FileEye/pel.git",
-                "reference": "1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede"
+                "reference": "5da1e6ab73508056f0abb79f560d20a315d1aefe"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FileEye/pel/zipball/1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede",
-                "reference": "1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede",
+                "url": "https://api.github.com/repos/FileEye/pel/zipball/5da1e6ab73508056f0abb79f560d20a315d1aefe",
+                "reference": "5da1e6ab73508056f0abb79f560d20a315d1aefe",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.1.0"
+                "php": ">=7.4"
             },
             "require-dev": {
                 "ext-exif": "*",
                 "ext-gd": "*",
-                "php-coveralls/php-coveralls": ">2.4",
-                "phpstan/phpstan": "^1.4",
-                "squizlabs/php_codesniffer": ">3.5",
-                "symfony/phpunit-bridge": "^4 || ^5 || ^6"
+                "php-coveralls/php-coveralls": ">=2.7",
+                "phpstan/extension-installer": "^1.1",
+                "phpstan/phpstan": "^1.10",
+                "phpstan/phpstan-phpunit": "^1.3.11",
+                "phpunit/phpunit": "^8 || ^9",
+                "squizlabs/php_codesniffer": ">=3.8"
             },
             "type": "library",
             "autoload": {
@@ -7583,9 +7630,9 @@
             ],
             "support": {
                 "issues": "https://github.com/FileEye/pel/issues",
-                "source": "https://github.com/FileEye/pel/tree/0.9.20"
+                "source": "https://github.com/FileEye/pel/tree/0.10.0"
             },
-            "time": "2023-06-20T07:10:35+00:00"
+            "time": "2024-01-11T19:11:58+00:00"
         },
         {
             "name": "gdsmith/jquery.easing",
@@ -9120,50 +9167,6 @@
             },
             "time": "2021-03-21T15:43:46+00:00"
         },
-        {
-            "name": "phenx/php-font-lib",
-            "version": "0.5.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dompdf/php-font-lib.git",
-                "reference": "a1681e9793040740a405ac5b189275059e2a9863"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863",
-                "reference": "a1681e9793040740a405ac5b189275059e2a9863",
-                "shasum": ""
-            },
-            "require": {
-                "ext-mbstring": "*"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "FontLib\\": "src/FontLib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "LGPL-2.1-or-later"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Ménager",
-                    "email": "fabien.menager@gmail.com"
-                }
-            ],
-            "description": "A library to read, parse, export and make subsets of different types of font files.",
-            "homepage": "https://github.com/PhenX/php-font-lib",
-            "support": {
-                "issues": "https://github.com/dompdf/php-font-lib/issues",
-                "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6"
-            },
-            "time": "2024-01-29T14:45:26+00:00"
-        },
         {
             "name": "phootwork/collection",
             "version": "v3.2.2",
@@ -9783,16 +9786,16 @@
         },
         {
             "name": "psr/log",
-            "version": "3.0.0",
+            "version": "3.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+                "reference": "79dff0b268932c640297f5208d6298f71855c03e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
-                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e",
+                "reference": "79dff0b268932c640297f5208d6298f71855c03e",
                 "shasum": ""
             },
             "require": {
@@ -9827,9 +9830,9 @@
                 "psr-3"
             ],
             "support": {
-                "source": "https://github.com/php-fig/log/tree/3.0.0"
+                "source": "https://github.com/php-fig/log/tree/3.0.1"
             },
-            "time": "2021-07-14T16:46:02+00:00"
+            "time": "2024-08-21T13:31:24+00:00"
         },
         {
             "name": "psy/psysh",
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index ea573f37f0..c4f425ee77 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -3048,44 +3048,44 @@
     'Egulias\\EmailValidator\\Warning\\QuotedString' => $vendorDir . '/egulias/email-validator/src/Warning/QuotedString.php',
     'Egulias\\EmailValidator\\Warning\\TLD' => $vendorDir . '/egulias/email-validator/src/Warning/TLD.php',
     'Egulias\\EmailValidator\\Warning\\Warning' => $vendorDir . '/egulias/email-validator/src/Warning/Warning.php',
-    'FontLib\\AdobeFontMetrics' => $vendorDir . '/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php',
-    'FontLib\\BinaryStream' => $vendorDir . '/phenx/php-font-lib/src/FontLib/BinaryStream.php',
-    'FontLib\\EOT\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/EOT/File.php',
-    'FontLib\\EOT\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/EOT/Header.php',
-    'FontLib\\EncodingMap' => $vendorDir . '/phenx/php-font-lib/src/FontLib/EncodingMap.php',
-    'FontLib\\Exception\\FontNotFoundException' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Exception/FontNotFoundException.php',
-    'FontLib\\Font' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Font.php',
-    'FontLib\\Glyph\\Outline' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/Outline.php',
-    'FontLib\\Glyph\\OutlineComponent' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php',
-    'FontLib\\Glyph\\OutlineComposite' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php',
-    'FontLib\\Glyph\\OutlineSimple' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php',
-    'FontLib\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Header.php',
-    'FontLib\\OpenType\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/OpenType/File.php',
-    'FontLib\\OpenType\\TableDirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php',
-    'FontLib\\Table\\DirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php',
-    'FontLib\\Table\\Table' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Table.php',
-    'FontLib\\Table\\Type\\cmap' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php',
-    'FontLib\\Table\\Type\\cvt' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php',
-    'FontLib\\Table\\Type\\fpgm' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php',
-    'FontLib\\Table\\Type\\glyf' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php',
-    'FontLib\\Table\\Type\\head' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/head.php',
-    'FontLib\\Table\\Type\\hhea' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php',
-    'FontLib\\Table\\Type\\hmtx' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php',
-    'FontLib\\Table\\Type\\kern' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/kern.php',
-    'FontLib\\Table\\Type\\loca' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/loca.php',
-    'FontLib\\Table\\Type\\maxp' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php',
-    'FontLib\\Table\\Type\\name' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/name.php',
-    'FontLib\\Table\\Type\\nameRecord' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php',
-    'FontLib\\Table\\Type\\os2' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/os2.php',
-    'FontLib\\Table\\Type\\post' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/post.php',
-    'FontLib\\Table\\Type\\prep' => $vendorDir . '/phenx/php-font-lib/src/FontLib/Table/Type/prep.php',
-    'FontLib\\TrueType\\Collection' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/Collection.php',
-    'FontLib\\TrueType\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/File.php',
-    'FontLib\\TrueType\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/Header.php',
-    'FontLib\\TrueType\\TableDirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php',
-    'FontLib\\WOFF\\File' => $vendorDir . '/phenx/php-font-lib/src/FontLib/WOFF/File.php',
-    'FontLib\\WOFF\\Header' => $vendorDir . '/phenx/php-font-lib/src/FontLib/WOFF/Header.php',
-    'FontLib\\WOFF\\TableDirectoryEntry' => $vendorDir . '/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php',
+    'FontLib\\AdobeFontMetrics' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/AdobeFontMetrics.php',
+    'FontLib\\BinaryStream' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/BinaryStream.php',
+    'FontLib\\EOT\\File' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/EOT/File.php',
+    'FontLib\\EOT\\Header' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/EOT/Header.php',
+    'FontLib\\EncodingMap' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/EncodingMap.php',
+    'FontLib\\Exception\\FontNotFoundException' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Exception/FontNotFoundException.php',
+    'FontLib\\Font' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Font.php',
+    'FontLib\\Glyph\\Outline' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Glyph/Outline.php',
+    'FontLib\\Glyph\\OutlineComponent' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComponent.php',
+    'FontLib\\Glyph\\OutlineComposite' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComposite.php',
+    'FontLib\\Glyph\\OutlineSimple' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Glyph/OutlineSimple.php',
+    'FontLib\\Header' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Header.php',
+    'FontLib\\OpenType\\File' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/OpenType/File.php',
+    'FontLib\\OpenType\\TableDirectoryEntry' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php',
+    'FontLib\\Table\\DirectoryEntry' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/DirectoryEntry.php',
+    'FontLib\\Table\\Table' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Table.php',
+    'FontLib\\Table\\Type\\cmap' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/cmap.php',
+    'FontLib\\Table\\Type\\cvt' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/cvt.php',
+    'FontLib\\Table\\Type\\fpgm' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/fpgm.php',
+    'FontLib\\Table\\Type\\glyf' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/glyf.php',
+    'FontLib\\Table\\Type\\head' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/head.php',
+    'FontLib\\Table\\Type\\hhea' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/hhea.php',
+    'FontLib\\Table\\Type\\hmtx' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/hmtx.php',
+    'FontLib\\Table\\Type\\kern' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/kern.php',
+    'FontLib\\Table\\Type\\loca' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/loca.php',
+    'FontLib\\Table\\Type\\maxp' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/maxp.php',
+    'FontLib\\Table\\Type\\name' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/name.php',
+    'FontLib\\Table\\Type\\nameRecord' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/nameRecord.php',
+    'FontLib\\Table\\Type\\os2' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/os2.php',
+    'FontLib\\Table\\Type\\post' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/post.php',
+    'FontLib\\Table\\Type\\prep' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/Table/Type/prep.php',
+    'FontLib\\TrueType\\Collection' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/TrueType/Collection.php',
+    'FontLib\\TrueType\\File' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/TrueType/File.php',
+    'FontLib\\TrueType\\Header' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/TrueType/Header.php',
+    'FontLib\\TrueType\\TableDirectoryEntry' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php',
+    'FontLib\\WOFF\\File' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/WOFF/File.php',
+    'FontLib\\WOFF\\Header' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/WOFF/Header.php',
+    'FontLib\\WOFF\\TableDirectoryEntry' => $vendorDir . '/dompdf/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php',
     'Gettext\\Comments' => $vendorDir . '/gettext/gettext/src/Comments.php',
     'Gettext\\Flags' => $vendorDir . '/gettext/gettext/src/Flags.php',
     'Gettext\\Formatter' => $vendorDir . '/gettext/translator/src/Formatter.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 550a53a82e..27ca41313d 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -73,7 +73,7 @@
     'ReCaptcha\\' => array($vendorDir . '/google/recaptcha/src/ReCaptcha'),
     'Psy\\' => array($vendorDir . '/psy/psysh/src'),
     'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
-    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'),
+    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
     'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
     'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
@@ -92,7 +92,7 @@
     'Grasmash\\Expander\\' => array($vendorDir . '/grasmash/expander/src'),
     'Gettext\\Languages\\' => array($vendorDir . '/gettext/languages/src'),
     'Gettext\\' => array($vendorDir . '/gettext/gettext/src', $vendorDir . '/gettext/translator/src'),
-    'FontLib\\' => array($vendorDir . '/phenx/php-font-lib/src/FontLib'),
+    'FontLib\\' => array($vendorDir . '/dompdf/php-font-lib/src/FontLib'),
     'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/src'),
     'Drush\\' => array($vendorDir . '/drush/drush/src'),
     'Drupal\\bootstrap\\' => array($baseDir . '/web/themes/bootstrap/src'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 3b98520c38..d4f8ddf1b8 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -468,8 +468,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         ),
         'Psr\\Http\\Message\\' => 
         array (
-            0 => __DIR__ . '/..' . '/psr/http-message/src',
-            1 => __DIR__ . '/..' . '/psr/http-factory/src',
+            0 => __DIR__ . '/..' . '/psr/http-factory/src',
+            1 => __DIR__ . '/..' . '/psr/http-message/src',
         ),
         'Psr\\Http\\Client\\' => 
         array (
@@ -546,7 +546,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         ),
         'FontLib\\' => 
         array (
-            0 => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib',
+            0 => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib',
         ),
         'Egulias\\EmailValidator\\' => 
         array (
@@ -3708,44 +3708,44 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Egulias\\EmailValidator\\Warning\\QuotedString' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/QuotedString.php',
         'Egulias\\EmailValidator\\Warning\\TLD' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/TLD.php',
         'Egulias\\EmailValidator\\Warning\\Warning' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/Warning.php',
-        'FontLib\\AdobeFontMetrics' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php',
-        'FontLib\\BinaryStream' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/BinaryStream.php',
-        'FontLib\\EOT\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/EOT/File.php',
-        'FontLib\\EOT\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/EOT/Header.php',
-        'FontLib\\EncodingMap' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/EncodingMap.php',
-        'FontLib\\Exception\\FontNotFoundException' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Exception/FontNotFoundException.php',
-        'FontLib\\Font' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Font.php',
-        'FontLib\\Glyph\\Outline' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/Outline.php',
-        'FontLib\\Glyph\\OutlineComponent' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php',
-        'FontLib\\Glyph\\OutlineComposite' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php',
-        'FontLib\\Glyph\\OutlineSimple' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php',
-        'FontLib\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Header.php',
-        'FontLib\\OpenType\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/OpenType/File.php',
-        'FontLib\\OpenType\\TableDirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php',
-        'FontLib\\Table\\DirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php',
-        'FontLib\\Table\\Table' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Table.php',
-        'FontLib\\Table\\Type\\cmap' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php',
-        'FontLib\\Table\\Type\\cvt' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php',
-        'FontLib\\Table\\Type\\fpgm' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php',
-        'FontLib\\Table\\Type\\glyf' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php',
-        'FontLib\\Table\\Type\\head' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/head.php',
-        'FontLib\\Table\\Type\\hhea' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php',
-        'FontLib\\Table\\Type\\hmtx' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php',
-        'FontLib\\Table\\Type\\kern' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/kern.php',
-        'FontLib\\Table\\Type\\loca' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/loca.php',
-        'FontLib\\Table\\Type\\maxp' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php',
-        'FontLib\\Table\\Type\\name' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/name.php',
-        'FontLib\\Table\\Type\\nameRecord' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php',
-        'FontLib\\Table\\Type\\os2' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/os2.php',
-        'FontLib\\Table\\Type\\post' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/post.php',
-        'FontLib\\Table\\Type\\prep' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/Table/Type/prep.php',
-        'FontLib\\TrueType\\Collection' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/Collection.php',
-        'FontLib\\TrueType\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/File.php',
-        'FontLib\\TrueType\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/Header.php',
-        'FontLib\\TrueType\\TableDirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php',
-        'FontLib\\WOFF\\File' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/WOFF/File.php',
-        'FontLib\\WOFF\\Header' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/WOFF/Header.php',
-        'FontLib\\WOFF\\TableDirectoryEntry' => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php',
+        'FontLib\\AdobeFontMetrics' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/AdobeFontMetrics.php',
+        'FontLib\\BinaryStream' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/BinaryStream.php',
+        'FontLib\\EOT\\File' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/EOT/File.php',
+        'FontLib\\EOT\\Header' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/EOT/Header.php',
+        'FontLib\\EncodingMap' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/EncodingMap.php',
+        'FontLib\\Exception\\FontNotFoundException' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Exception/FontNotFoundException.php',
+        'FontLib\\Font' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Font.php',
+        'FontLib\\Glyph\\Outline' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Glyph/Outline.php',
+        'FontLib\\Glyph\\OutlineComponent' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComponent.php',
+        'FontLib\\Glyph\\OutlineComposite' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComposite.php',
+        'FontLib\\Glyph\\OutlineSimple' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Glyph/OutlineSimple.php',
+        'FontLib\\Header' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Header.php',
+        'FontLib\\OpenType\\File' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/OpenType/File.php',
+        'FontLib\\OpenType\\TableDirectoryEntry' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php',
+        'FontLib\\Table\\DirectoryEntry' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/DirectoryEntry.php',
+        'FontLib\\Table\\Table' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Table.php',
+        'FontLib\\Table\\Type\\cmap' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/cmap.php',
+        'FontLib\\Table\\Type\\cvt' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/cvt.php',
+        'FontLib\\Table\\Type\\fpgm' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/fpgm.php',
+        'FontLib\\Table\\Type\\glyf' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/glyf.php',
+        'FontLib\\Table\\Type\\head' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/head.php',
+        'FontLib\\Table\\Type\\hhea' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/hhea.php',
+        'FontLib\\Table\\Type\\hmtx' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/hmtx.php',
+        'FontLib\\Table\\Type\\kern' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/kern.php',
+        'FontLib\\Table\\Type\\loca' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/loca.php',
+        'FontLib\\Table\\Type\\maxp' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/maxp.php',
+        'FontLib\\Table\\Type\\name' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/name.php',
+        'FontLib\\Table\\Type\\nameRecord' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/nameRecord.php',
+        'FontLib\\Table\\Type\\os2' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/os2.php',
+        'FontLib\\Table\\Type\\post' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/post.php',
+        'FontLib\\Table\\Type\\prep' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/Table/Type/prep.php',
+        'FontLib\\TrueType\\Collection' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/TrueType/Collection.php',
+        'FontLib\\TrueType\\File' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/TrueType/File.php',
+        'FontLib\\TrueType\\Header' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/TrueType/Header.php',
+        'FontLib\\TrueType\\TableDirectoryEntry' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php',
+        'FontLib\\WOFF\\File' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/WOFF/File.php',
+        'FontLib\\WOFF\\Header' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/WOFF/Header.php',
+        'FontLib\\WOFF\\TableDirectoryEntry' => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php',
         'Gettext\\Comments' => __DIR__ . '/..' . '/gettext/gettext/src/Comments.php',
         'Gettext\\Flags' => __DIR__ . '/..' . '/gettext/gettext/src/Flags.php',
         'Gettext\\Formatter' => __DIR__ . '/..' . '/gettext/translator/src/Formatter.php',
diff --git a/vendor/composer/include_paths.php b/vendor/composer/include_paths.php
index ac3ab9f02d..af33c14914 100644
--- a/vendor/composer/include_paths.php
+++ b/vendor/composer/include_paths.php
@@ -6,8 +6,8 @@
 $baseDir = dirname($vendorDir);
 
 return array(
+    $vendorDir . '/pear/archive_tar',
     $vendorDir . '/pear/console_getopt',
     $vendorDir . '/pear/pear-core-minimal/src',
     $vendorDir . '/pear/pear_exception',
-    $vendorDir . '/pear/archive_tar',
 );
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 5dd81b629b..bd1439c102 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1375,6 +1375,54 @@
             ],
             "install-path": "../doctrine/lexer"
         },
+        {
+            "name": "dompdf/php-font-lib",
+            "version": "1.0.0",
+            "version_normalized": "1.0.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dompdf/php-font-lib.git",
+                "reference": "991d6a954f6bbd7e41022198f00586b230731441"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/991d6a954f6bbd7e41022198f00586b230731441",
+                "reference": "991d6a954f6bbd7e41022198f00586b230731441",
+                "shasum": ""
+            },
+            "require": {
+                "ext-mbstring": "*",
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
+            },
+            "time": "2024-04-29T13:40:38+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "FontLib\\": "src/FontLib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-2.1-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "The FontLib Community",
+                    "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
+                }
+            ],
+            "description": "A library to read, parse, export and make subsets of different types of font files.",
+            "homepage": "https://github.com/dompdf/php-font-lib",
+            "support": {
+                "issues": "https://github.com/dompdf/php-font-lib/issues",
+                "source": "https://github.com/dompdf/php-font-lib/tree/1.0.0"
+            },
+            "install-path": "../dompdf/php-font-lib"
+        },
         {
             "name": "drupal/addtocalendar",
             "version": "3.5.0",
@@ -3479,33 +3527,33 @@
         },
         {
             "name": "drupal/file_mdm",
-            "version": "3.0.0",
-            "version_normalized": "3.0.0.0",
+            "version": "3.1.0",
+            "version_normalized": "3.1.0.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/file_mdm.git",
-                "reference": "3.0.0"
+                "reference": "3.1.0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/file_mdm-3.0.0.zip",
-                "reference": "3.0.0",
-                "shasum": "d6ea077882777619c25b217301dc3d1c10218502"
+                "url": "https://ftp.drupal.org/files/projects/file_mdm-3.1.0.zip",
+                "reference": "3.1.0",
+                "shasum": "fa7709137705a693c4d5329035612473045a19d3"
             },
             "require": {
-                "drupal/core": "^10.1",
-                "fileeye/pel": "^0.9.20",
-                "phenx/php-font-lib": "^0.5.4"
+                "dompdf/php-font-lib": "^1",
+                "drupal/core": "^10.3 | ^11",
+                "fileeye/pel": "^0.10.0"
             },
             "require-dev": {
-                "drupal/vendor_stream_wrapper": "^2.0.2",
+                "drupal/vendor_stream_wrapper": "^2.0.4",
                 "fileeye/linuxlibertine-fonts": "^5.3"
             },
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "3.0.0",
-                    "datestamp": "1691421181",
+                    "version": "3.1.0",
+                    "datestamp": "1718086268",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -3532,17 +3580,17 @@
         },
         {
             "name": "drupal/file_mdm_exif",
-            "version": "3.0.0",
-            "version_normalized": "3.0.0.0",
+            "version": "3.1.0",
+            "version_normalized": "3.1.0.0",
             "require": {
-                "drupal/core": "^10.1",
+                "drupal/core": "^10.3 | ^11",
                 "drupal/file_mdm": "*"
             },
             "type": "metapackage",
             "extra": {
                 "drupal": {
-                    "version": "3.0.0",
-                    "datestamp": "1691421181",
+                    "version": "3.1.0",
+                    "datestamp": "1718086268",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -3568,17 +3616,17 @@
         },
         {
             "name": "drupal/file_mdm_font",
-            "version": "3.0.0",
-            "version_normalized": "3.0.0.0",
+            "version": "3.1.0",
+            "version_normalized": "3.1.0.0",
             "require": {
-                "drupal/core": "^10.1",
+                "drupal/core": "^10.3 | ^11",
                 "drupal/file_mdm": "*"
             },
             "type": "metapackage",
             "extra": {
                 "drupal": {
-                    "version": "3.0.0",
-                    "datestamp": "1691421181",
+                    "version": "3.1.0",
+                    "datestamp": "1718086268",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -7908,31 +7956,33 @@
         },
         {
             "name": "fileeye/pel",
-            "version": "0.9.20",
-            "version_normalized": "0.9.20.0",
+            "version": "0.10.0",
+            "version_normalized": "0.10.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FileEye/pel.git",
-                "reference": "1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede"
+                "reference": "5da1e6ab73508056f0abb79f560d20a315d1aefe"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FileEye/pel/zipball/1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede",
-                "reference": "1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede",
+                "url": "https://api.github.com/repos/FileEye/pel/zipball/5da1e6ab73508056f0abb79f560d20a315d1aefe",
+                "reference": "5da1e6ab73508056f0abb79f560d20a315d1aefe",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.1.0"
+                "php": ">=7.4"
             },
             "require-dev": {
                 "ext-exif": "*",
                 "ext-gd": "*",
-                "php-coveralls/php-coveralls": ">2.4",
-                "phpstan/phpstan": "^1.4",
-                "squizlabs/php_codesniffer": ">3.5",
-                "symfony/phpunit-bridge": "^4 || ^5 || ^6"
-            },
-            "time": "2023-06-20T07:10:35+00:00",
+                "php-coveralls/php-coveralls": ">=2.7",
+                "phpstan/extension-installer": "^1.1",
+                "phpstan/phpstan": "^1.10",
+                "phpstan/phpstan-phpunit": "^1.3.11",
+                "phpunit/phpunit": "^8 || ^9",
+                "squizlabs/php_codesniffer": ">=3.8"
+            },
+            "time": "2024-01-11T19:11:58+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -7966,7 +8016,7 @@
             ],
             "support": {
                 "issues": "https://github.com/FileEye/pel/issues",
-                "source": "https://github.com/FileEye/pel/tree/0.9.20"
+                "source": "https://github.com/FileEye/pel/tree/0.10.0"
             },
             "install-path": "../fileeye/pel"
         },
@@ -9593,53 +9643,6 @@
             },
             "install-path": "../pear/pear_exception"
         },
-        {
-            "name": "phenx/php-font-lib",
-            "version": "0.5.6",
-            "version_normalized": "0.5.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dompdf/php-font-lib.git",
-                "reference": "a1681e9793040740a405ac5b189275059e2a9863"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863",
-                "reference": "a1681e9793040740a405ac5b189275059e2a9863",
-                "shasum": ""
-            },
-            "require": {
-                "ext-mbstring": "*"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
-            },
-            "time": "2024-01-29T14:45:26+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "FontLib\\": "src/FontLib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "LGPL-2.1-or-later"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Ménager",
-                    "email": "fabien.menager@gmail.com"
-                }
-            ],
-            "description": "A library to read, parse, export and make subsets of different types of font files.",
-            "homepage": "https://github.com/PhenX/php-font-lib",
-            "support": {
-                "issues": "https://github.com/dompdf/php-font-lib/issues",
-                "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6"
-            },
-            "install-path": "../phenx/php-font-lib"
-        },
         {
             "name": "phootwork/collection",
             "version": "v3.2.2",
@@ -10298,23 +10301,23 @@
         },
         {
             "name": "psr/log",
-            "version": "3.0.0",
-            "version_normalized": "3.0.0.0",
+            "version": "3.0.1",
+            "version_normalized": "3.0.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+                "reference": "79dff0b268932c640297f5208d6298f71855c03e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
-                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e",
+                "reference": "79dff0b268932c640297f5208d6298f71855c03e",
                 "shasum": ""
             },
             "require": {
                 "php": ">=8.0.0"
             },
-            "time": "2021-07-14T16:46:02+00:00",
+            "time": "2024-08-21T13:31:24+00:00",
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -10345,7 +10348,7 @@
                 "psr-3"
             ],
             "support": {
-                "source": "https://github.com/php-fig/log/tree/3.0.0"
+                "source": "https://github.com/php-fig/log/tree/3.0.1"
             },
             "install-path": "../psr/log"
         },
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 88d4a8d3ef..848d67372c 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
         'name' => 'osu-asc-webservices/d8-upstream',
         'pretty_version' => 'dev-main',
         'version' => 'dev-main',
-        'reference' => 'cf4b641a5e7fa81e45173552c75d3bc70c37a699',
+        'reference' => 'f298cb58cc244630e9c56c682a0a3daffebd3fb8',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -244,6 +244,15 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'dompdf/php-font-lib' => array(
+            'pretty_version' => '1.0.0',
+            'version' => '1.0.0.0',
+            'reference' => '991d6a954f6bbd7e41022198f00586b230731441',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../dompdf/php-font-lib',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
         'drupal/addtocalendar' => array(
             'pretty_version' => '3.5.0',
             'version' => '3.5.0.0',
@@ -665,17 +674,17 @@
             'dev_requirement' => false,
         ),
         'drupal/file_mdm' => array(
-            'pretty_version' => '3.0.0',
-            'version' => '3.0.0.0',
-            'reference' => '3.0.0',
+            'pretty_version' => '3.1.0',
+            'version' => '3.1.0.0',
+            'reference' => '3.1.0',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/file_mdm',
             'aliases' => array(),
             'dev_requirement' => false,
         ),
         'drupal/file_mdm_exif' => array(
-            'pretty_version' => '3.0.0',
-            'version' => '3.0.0.0',
+            'pretty_version' => '3.1.0',
+            'version' => '3.1.0.0',
             'reference' => null,
             'type' => 'metapackage',
             'install_path' => null,
@@ -683,8 +692,8 @@
             'dev_requirement' => false,
         ),
         'drupal/file_mdm_font' => array(
-            'pretty_version' => '3.0.0',
-            'version' => '3.0.0.0',
+            'pretty_version' => '3.1.0',
+            'version' => '3.1.0.0',
             'reference' => null,
             'type' => 'metapackage',
             'install_path' => null,
@@ -1277,9 +1286,9 @@
             'dev_requirement' => false,
         ),
         'fileeye/pel' => array(
-            'pretty_version' => '0.9.20',
-            'version' => '0.9.20.0',
-            'reference' => '1675cbd44e89ff8f01b9576cf32ec1b4a4a67ede',
+            'pretty_version' => '0.10.0',
+            'version' => '0.10.0.0',
+            'reference' => '5da1e6ab73508056f0abb79f560d20a315d1aefe',
             'type' => 'library',
             'install_path' => __DIR__ . '/../fileeye/pel',
             'aliases' => array(),
@@ -1555,7 +1564,7 @@
         'osu-asc-webservices/d8-upstream' => array(
             'pretty_version' => 'dev-main',
             'version' => 'dev-main',
-            'reference' => 'cf4b641a5e7fa81e45173552c75d3bc70c37a699',
+            'reference' => 'f298cb58cc244630e9c56c682a0a3daffebd3fb8',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
@@ -1606,15 +1615,6 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
-        'phenx/php-font-lib' => array(
-            'pretty_version' => '0.5.6',
-            'version' => '0.5.6.0',
-            'reference' => 'a1681e9793040740a405ac5b189275059e2a9863',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../phenx/php-font-lib',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
         'phootwork/collection' => array(
             'pretty_version' => 'v3.2.2',
             'version' => '3.2.2.0',
@@ -1770,9 +1770,9 @@
             ),
         ),
         'psr/log' => array(
-            'pretty_version' => '3.0.0',
-            'version' => '3.0.0.0',
-            'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
+            'pretty_version' => '3.0.1',
+            'version' => '3.0.1.0',
+            'reference' => '79dff0b268932c640297f5208d6298f71855c03e',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/log',
             'aliases' => array(),
diff --git a/vendor/dompdf/php-font-lib/AUTHORS.md b/vendor/dompdf/php-font-lib/AUTHORS.md
new file mode 100644
index 0000000000..69b8f0bf0b
--- /dev/null
+++ b/vendor/dompdf/php-font-lib/AUTHORS.md
@@ -0,0 +1,17 @@
+FontLib was designed and developed by Fabien Ménager.
+
+### Current Team
+
+* **Brian Sweeney** (maintainer)
+
+### Alumni
+
+* **Fabien Ménager** (creator)
+
+### Contributors
+* **mondrake**
+* [and many more...](https://github.com/dompdf/php-font-lib/graphs/contributors)
+
+### Thanks
+
+FontLib would not have been possible without strong community support.
diff --git a/vendor/phenx/php-font-lib/LICENSE b/vendor/dompdf/php-font-lib/LICENSE
similarity index 100%
rename from vendor/phenx/php-font-lib/LICENSE
rename to vendor/dompdf/php-font-lib/LICENSE
diff --git a/vendor/phenx/php-font-lib/README.md b/vendor/dompdf/php-font-lib/README.md
similarity index 100%
rename from vendor/phenx/php-font-lib/README.md
rename to vendor/dompdf/php-font-lib/README.md
diff --git a/vendor/phenx/php-font-lib/composer.json b/vendor/dompdf/php-font-lib/composer.json
similarity index 69%
rename from vendor/phenx/php-font-lib/composer.json
rename to vendor/dompdf/php-font-lib/composer.json
index 97b42b89a7..934bb005b7 100644
--- a/vendor/phenx/php-font-lib/composer.json
+++ b/vendor/dompdf/php-font-lib/composer.json
@@ -1,13 +1,13 @@
 {
-    "name": "phenx/php-font-lib",
+    "name": "dompdf/php-font-lib",
     "type": "library",
     "description": "A library to read, parse, export and make subsets of different types of font files.",
-    "homepage": "https://github.com/PhenX/php-font-lib",
+    "homepage": "https://github.com/dompdf/php-font-lib",
     "license": "LGPL-2.1-or-later",
     "authors": [
         {
-            "name": "Fabien Ménager",
-            "email": "fabien.menager@gmail.com"
+            "name": "The FontLib Community",
+            "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
         }
     ],
     "autoload": {
@@ -24,6 +24,7 @@
         "bin-dir": "bin"
     },
     "require": {
+        "php": "^7.1 || ^8.0",
         "ext-mbstring": "*"
     },
     "require-dev": {
diff --git a/vendor/phenx/php-font-lib/maps/adobe-standard-encoding.map b/vendor/dompdf/php-font-lib/maps/adobe-standard-encoding.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/adobe-standard-encoding.map
rename to vendor/dompdf/php-font-lib/maps/adobe-standard-encoding.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1250.map b/vendor/dompdf/php-font-lib/maps/cp1250.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1250.map
rename to vendor/dompdf/php-font-lib/maps/cp1250.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1251.map b/vendor/dompdf/php-font-lib/maps/cp1251.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1251.map
rename to vendor/dompdf/php-font-lib/maps/cp1251.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1252.map b/vendor/dompdf/php-font-lib/maps/cp1252.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1252.map
rename to vendor/dompdf/php-font-lib/maps/cp1252.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1253.map b/vendor/dompdf/php-font-lib/maps/cp1253.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1253.map
rename to vendor/dompdf/php-font-lib/maps/cp1253.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1254.map b/vendor/dompdf/php-font-lib/maps/cp1254.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1254.map
rename to vendor/dompdf/php-font-lib/maps/cp1254.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1255.map b/vendor/dompdf/php-font-lib/maps/cp1255.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1255.map
rename to vendor/dompdf/php-font-lib/maps/cp1255.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1257.map b/vendor/dompdf/php-font-lib/maps/cp1257.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1257.map
rename to vendor/dompdf/php-font-lib/maps/cp1257.map
diff --git a/vendor/phenx/php-font-lib/maps/cp1258.map b/vendor/dompdf/php-font-lib/maps/cp1258.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp1258.map
rename to vendor/dompdf/php-font-lib/maps/cp1258.map
diff --git a/vendor/phenx/php-font-lib/maps/cp874.map b/vendor/dompdf/php-font-lib/maps/cp874.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/cp874.map
rename to vendor/dompdf/php-font-lib/maps/cp874.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-1.map b/vendor/dompdf/php-font-lib/maps/iso-8859-1.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-1.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-1.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-11.map b/vendor/dompdf/php-font-lib/maps/iso-8859-11.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-11.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-11.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-15.map b/vendor/dompdf/php-font-lib/maps/iso-8859-15.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-15.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-15.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-16.map b/vendor/dompdf/php-font-lib/maps/iso-8859-16.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-16.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-16.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-2.map b/vendor/dompdf/php-font-lib/maps/iso-8859-2.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-2.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-2.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-4.map b/vendor/dompdf/php-font-lib/maps/iso-8859-4.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-4.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-4.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-5.map b/vendor/dompdf/php-font-lib/maps/iso-8859-5.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-5.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-5.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-7.map b/vendor/dompdf/php-font-lib/maps/iso-8859-7.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-7.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-7.map
diff --git a/vendor/phenx/php-font-lib/maps/iso-8859-9.map b/vendor/dompdf/php-font-lib/maps/iso-8859-9.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/iso-8859-9.map
rename to vendor/dompdf/php-font-lib/maps/iso-8859-9.map
diff --git a/vendor/phenx/php-font-lib/maps/koi8-r.map b/vendor/dompdf/php-font-lib/maps/koi8-r.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/koi8-r.map
rename to vendor/dompdf/php-font-lib/maps/koi8-r.map
diff --git a/vendor/phenx/php-font-lib/maps/koi8-u.map b/vendor/dompdf/php-font-lib/maps/koi8-u.map
similarity index 100%
rename from vendor/phenx/php-font-lib/maps/koi8-u.map
rename to vendor/dompdf/php-font-lib/maps/koi8-u.map
diff --git a/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php b/vendor/dompdf/php-font-lib/src/FontLib/AdobeFontMetrics.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php
rename to vendor/dompdf/php-font-lib/src/FontLib/AdobeFontMetrics.php
index 613117db4c..eeaeb89d48 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/AdobeFontMetrics.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/BinaryStream.php b/vendor/dompdf/php-font-lib/src/FontLib/BinaryStream.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/BinaryStream.php
rename to vendor/dompdf/php-font-lib/src/FontLib/BinaryStream.php
index 5e170c6e79..cc5e72ced4 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/BinaryStream.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/BinaryStream.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/EOT/File.php b/vendor/dompdf/php-font-lib/src/FontLib/EOT/File.php
similarity index 98%
rename from vendor/phenx/php-font-lib/src/FontLib/EOT/File.php
rename to vendor/dompdf/php-font-lib/src/FontLib/EOT/File.php
index 55933ebf9d..fb07cddfb8 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/EOT/File.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/EOT/File.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/EOT/Header.php b/vendor/dompdf/php-font-lib/src/FontLib/EOT/Header.php
similarity index 98%
rename from vendor/phenx/php-font-lib/src/FontLib/EOT/Header.php
rename to vendor/dompdf/php-font-lib/src/FontLib/EOT/Header.php
index 2730c80841..492da8a6cb 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/EOT/Header.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/EOT/Header.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/EncodingMap.php b/vendor/dompdf/php-font-lib/src/FontLib/EncodingMap.php
similarity index 93%
rename from vendor/phenx/php-font-lib/src/FontLib/EncodingMap.php
rename to vendor/dompdf/php-font-lib/src/FontLib/EncodingMap.php
index 02e7ca4fe9..a5942ef961 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/EncodingMap.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/EncodingMap.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Exception/FontNotFoundException.php b/vendor/dompdf/php-font-lib/src/FontLib/Exception/FontNotFoundException.php
similarity index 100%
rename from vendor/phenx/php-font-lib/src/FontLib/Exception/FontNotFoundException.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Exception/FontNotFoundException.php
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Font.php b/vendor/dompdf/php-font-lib/src/FontLib/Font.php
similarity index 96%
rename from vendor/phenx/php-font-lib/src/FontLib/Font.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Font.php
index 3f6a7842a4..8661288f54 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Font.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Font.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Glyph/Outline.php b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/Outline.php
similarity index 97%
rename from vendor/phenx/php-font-lib/src/FontLib/Glyph/Outline.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Glyph/Outline.php
index efb2de5c23..dde4de2232 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Glyph/Outline.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/Outline.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  * @version $Id: Font_Table_glyf.php 46 2012-04-02 20:22:38Z fabien.menager $
  */
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComponent.php
similarity index 92%
rename from vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComponent.php
index fa75c2a8d7..40aade36c3 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineComponent.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComponent.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  * @version $Id: Font_Table_glyf.php 46 2012-04-02 20:22:38Z fabien.menager $
  */
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComposite.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComposite.php
index eb3da91ccb..179c0122dd 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineComposite.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineComposite.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  * @version $Id: Font_Table_glyf.php 46 2012-04-02 20:22:38Z fabien.menager $
  */
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineSimple.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineSimple.php
index c0c5c8561b..4b2d4ca765 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Glyph/OutlineSimple.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Glyph/OutlineSimple.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  * @version $Id: Font_Table_glyf.php 46 2012-04-02 20:22:38Z fabien.menager $
  */
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Header.php b/vendor/dompdf/php-font-lib/src/FontLib/Header.php
similarity index 92%
rename from vendor/phenx/php-font-lib/src/FontLib/Header.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Header.php
index df308b35fe..32b80c6910 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Header.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Header.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace FontLib;
diff --git a/vendor/phenx/php-font-lib/src/FontLib/OpenType/File.php b/vendor/dompdf/php-font-lib/src/FontLib/OpenType/File.php
similarity index 86%
rename from vendor/phenx/php-font-lib/src/FontLib/OpenType/File.php
rename to vendor/dompdf/php-font-lib/src/FontLib/OpenType/File.php
index 0b46df92d7..8bfed0bc5e 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/OpenType/File.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/OpenType/File.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php b/vendor/dompdf/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php
similarity index 87%
rename from vendor/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php
rename to vendor/dompdf/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php
index d8f0f6eca9..b32008c504 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/OpenType/TableDirectoryEntry.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/DirectoryEntry.php
similarity index 97%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/DirectoryEntry.php
index b41fdd0bad..14f16ed48b 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/DirectoryEntry.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace FontLib\Table;
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Table.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Table.php
similarity index 96%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Table.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Table.php
index 57328dd5bc..6b3a5656e7 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Table.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Table.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace FontLib\Table;
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/cmap.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/cmap.php
index 02788efc57..c7abca7cd8 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/cmap.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/cvt.php
similarity index 83%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/cvt.php
index cec9ee412c..82a9514dc0 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cvt.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/cvt.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package php-font-lib
- * @link    https://github.com/PhenX/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/php-font-lib
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/fpgm.php
similarity index 83%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/fpgm.php
index 3c37c18a52..e97d9ed885 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/fpgm.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/fpgm.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package php-font-lib
- * @link    https://github.com/PhenX/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/php-font-lib
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/glyf.php
similarity index 98%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/glyf.php
index 8e47f14746..94ee2d3438 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/glyf.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/glyf.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/head.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/head.php
similarity index 96%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/head.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/head.php
index 068650814e..ce5a3a4977 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/head.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/head.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/hhea.php
similarity index 95%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/hhea.php
index cd69040e1f..becb9a46ea 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hhea.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/hhea.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/hmtx.php
similarity index 96%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/hmtx.php
index ef985bb05c..ccd37d7f32 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/hmtx.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/kern.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/kern.php
similarity index 97%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/kern.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/kern.php
index 538d8b2cc9..75f2c6fd35 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/kern.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/kern.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/loca.php
similarity index 96%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/loca.php
index 25453f7bb2..bbd87d1f2a 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/loca.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/maxp.php
similarity index 95%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/maxp.php
index c69da3cd7b..867125a8bf 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/maxp.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/maxp.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/name.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/name.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/name.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/name.php
index acdda7a7cb..003a1e80fe 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/name.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/name.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/nameRecord.php
similarity index 95%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/nameRecord.php
index fe22ba3027..162629df76 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/nameRecord.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/nameRecord.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace FontLib\Table\Type;
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/os2.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/os2.php
similarity index 96%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/os2.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/os2.php
index 276de0deae..b1a2016696 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/os2.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/os2.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/post.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/post.php
similarity index 98%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/post.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/post.php
index 1160c0b13c..3b29c086cc 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/post.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/post.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/prep.php b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/prep.php
similarity index 84%
rename from vendor/phenx/php-font-lib/src/FontLib/Table/Type/prep.php
rename to vendor/dompdf/php-font-lib/src/FontLib/Table/Type/prep.php
index c82c17d624..a8442cfa0d 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/Table/Type/prep.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/Table/Type/prep.php
@@ -2,8 +2,7 @@
 
 /**
  * @package php-font-lib
- * @link    https://github.com/PhenX/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/php-font-lib
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/TrueType/Collection.php b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/Collection.php
similarity index 97%
rename from vendor/phenx/php-font-lib/src/FontLib/TrueType/Collection.php
rename to vendor/dompdf/php-font-lib/src/FontLib/TrueType/Collection.php
index a6afa4f257..2c970304c1 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/TrueType/Collection.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/Collection.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/File.php
similarity index 99%
rename from vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php
rename to vendor/dompdf/php-font-lib/src/FontLib/TrueType/File.php
index b1c7cd87b4..ee3c84e8b5 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/File.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/TrueType/Header.php b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/Header.php
similarity index 92%
rename from vendor/phenx/php-font-lib/src/FontLib/TrueType/Header.php
rename to vendor/dompdf/php-font-lib/src/FontLib/TrueType/Header.php
index 652e66f267..7c04728f48 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/TrueType/Header.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/Header.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php
similarity index 92%
rename from vendor/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php
rename to vendor/dompdf/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php
index 9cf4489410..3ddd6d0f8b 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/TrueType/TableDirectoryEntry.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/WOFF/File.php b/vendor/dompdf/php-font-lib/src/FontLib/WOFF/File.php
similarity index 97%
rename from vendor/phenx/php-font-lib/src/FontLib/WOFF/File.php
rename to vendor/dompdf/php-font-lib/src/FontLib/WOFF/File.php
index 2c6dff4761..bbc40fb3c5 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/WOFF/File.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/WOFF/File.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/WOFF/Header.php b/vendor/dompdf/php-font-lib/src/FontLib/WOFF/Header.php
similarity index 93%
rename from vendor/phenx/php-font-lib/src/FontLib/WOFF/Header.php
rename to vendor/dompdf/php-font-lib/src/FontLib/WOFF/Header.php
index 9911c97fb0..e87a8d3024 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/WOFF/Header.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/WOFF/Header.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php b/vendor/dompdf/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php
similarity index 92%
rename from vendor/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php
rename to vendor/dompdf/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php
index 5f66311cd9..b57a650bfd 100644
--- a/vendor/phenx/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php
+++ b/vendor/dompdf/php-font-lib/src/FontLib/WOFF/TableDirectoryEntry.php
@@ -2,7 +2,6 @@
 /**
  * @package php-font-lib
  * @link    https://github.com/dompdf/php-font-lib
- * @author  Fabien Ménager <fabien.menager@gmail.com>
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
diff --git a/vendor/fileeye/pel/.github/workflows/tests.yml b/vendor/fileeye/pel/.github/workflows/tests.yml
index 214e89b0f8..cd8ecd23d7 100644
--- a/vendor/fileeye/pel/.github/workflows/tests.yml
+++ b/vendor/fileeye/pel/.github/workflows/tests.yml
@@ -17,14 +17,12 @@ jobs:
       fail-fast: false
       matrix:
         php-version:
-          - "7.1"
-          - "7.2"
-          - "7.3"
           - "7.4"
           - "8.0"
           - "8.1"
           - "8.2"
           - "8.3"
+          - "8.4"
 
     steps:
 
@@ -35,15 +33,24 @@ jobs:
           uses: "shivammathur/setup-php@v2"
           with:
             php-version: "${{ matrix.php-version }}"
-            coverage: "none"
+            coverage: "pcov"
             ini-values: "zend.assertions=1"
 
         - name: Install Composer dependencies
           run: composer install --no-progress --ansi
 
         - name: Run tests
-          run: ./vendor/bin/simple-phpunit --color=always ./test
+          run: ./vendor/bin/phpunit --color=always --coverage-clover=coverage.xml ./test
 
+        - name: Send code coverage report to Codecov.io
+          uses: codecov/codecov-action@v3
+          with:
+            files: coverage.xml
+            
         - name: Code style test
-          if: ${{ matrix.php-version == 7.4 }}
+          if: ${{ matrix.php-version == 8.2 }}
           run: ./vendor/bin/phpcs --runtime-set ignore_warnings_on_exit 1
+
+        - name: PHPStan code analysis
+          if: ${{ matrix.php-version == 8.2 }}
+          run: php vendor/bin/phpstan analyze
diff --git a/vendor/fileeye/pel/.scrutinizer.yml b/vendor/fileeye/pel/.scrutinizer.yml
deleted file mode 100644
index b9fda94d11..0000000000
--- a/vendor/fileeye/pel/.scrutinizer.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-build:
-  environment:
-    php: '7.2'
-
-  tests:
-    override:
-      -
-        command: SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1 ./vendor/bin/simple-phpunit --coverage-clover build/logs/clover.xml ./test
-        coverage:
-          file: build/logs/clover.xml
-          format: clover
-
-checks:
-    php:
-        code_rating: true
-        duplication: true
diff --git a/vendor/fileeye/pel/CHANGELOG.md b/vendor/fileeye/pel/CHANGELOG.md
index f81aaadf39..dc1e19216e 100644
--- a/vendor/fileeye/pel/CHANGELOG.md
+++ b/vendor/fileeye/pel/CHANGELOG.md
@@ -1,5 +1,10 @@
 # CHANGELOG
 
+## 0.9.21 - 2024-xx-xx
+
+* [CI] Run PHPStan at rule level 0
+* Removed support for PHP lower than 7.4
+
 ## 0.9.20 - 2023-06-20
 
 * Move package on Packagist to [fileeye/pel](https://packagist.org/packages/fileeye/pel)
diff --git a/vendor/fileeye/pel/README.markdown b/vendor/fileeye/pel/README.markdown
index 743ca2b779..463e64e70a 100644
--- a/vendor/fileeye/pel/README.markdown
+++ b/vendor/fileeye/pel/README.markdown
@@ -2,7 +2,13 @@ This is a fork of the [pel/pel](https://github.com/pel/pel) repository.
 
 # PEL: PHP Exif Library
 
-[![Tests](https://github.com/FileEye/pel/actions/workflows/tests.yml/badge.svg)](https://github.com/FileEye/pel/actions/workflows/tests.yml) [![Latest Stable Version](https://poser.pugx.org/fileeye/pel/v/stable)](https://packagist.org/packages/fileeye/pel) [![Total Downloads](https://poser.pugx.org/fileeye/pel/downloads)](https://packagist.org/packages/fileeye/pel) [![License](https://poser.pugx.org/fileeye/pel/license)](https://packagist.org/packages/fileeye/pel)
+[![PHP Version Require](http://poser.pugx.org/fileeye/pel/require/php)](https://packagist.org/packages/fileeye/pel)
+[![Tests](https://github.com/FileEye/pel/actions/workflows/tests.yml/badge.svg)](https://github.com/FileEye/pel/actions/workflows/tests.yml)
+[![PHPStan level](https://img.shields.io/badge/PHPStan%20level-5-brightgreen.svg?style=flat)](https://github.com/FileEye/pel/actions/workflows/code-quality.yml)
+[![codecov](https://codecov.io/gh/FileEye/pel/graph/badge.svg?token=XlF4fOHAl1)](https://codecov.io/gh/FileEye/pel)
+[![Latest Stable Version](https://poser.pugx.org/fileeye/pel/v/stable)](https://packagist.org/packages/fileeye/pel)
+[![Total Downloads](https://poser.pugx.org/fileeye/pel/downloads)](https://packagist.org/packages/fileeye/pel)
+[![License](https://poser.pugx.org/fileeye/pel/license)](https://packagist.org/packages/fileeye/pel)
 
 README file for PEL: PHP Exif Library.  A library with support for
 reading and writing Exif headers in JPEG and TIFF images using PHP.
diff --git a/vendor/fileeye/pel/composer.json b/vendor/fileeye/pel/composer.json
index 206bfd0884..3a85e55b84 100644
--- a/vendor/fileeye/pel/composer.json
+++ b/vendor/fileeye/pel/composer.json
@@ -21,16 +21,23 @@
 	],
 	"license" : "GPL-2.0",
 	"require" : {
-		"php" : ">=7.1.0"
+		"php" : ">=7.4"
 	},
 	"require-dev" : {
 		"ext-gd" : "*",
 		"ext-exif" : "*",
-		"squizlabs/php_codesniffer" : ">3.5",
-		"php-coveralls/php-coveralls" : ">2.4",
-		"symfony/phpunit-bridge" : "^4 || ^5 || ^6",
-		"phpstan/phpstan": "^1.4"
+		"squizlabs/php_codesniffer" : ">=3.8",
+		"php-coveralls/php-coveralls" : ">=2.7",
+		"phpunit/phpunit" : "^8 || ^9",
+		"phpstan/extension-installer": "^1.1",
+		"phpstan/phpstan": "^1.10",
+		"phpstan/phpstan-phpunit": "^1.3.11"
 	},
+    "config": {
+        "allow-plugins": {
+            "phpstan/extension-installer": true
+        }
+    },
 	"autoload" : {
 		"psr-4" : {
 			"lsolesen\\pel\\" : "src/"
diff --git a/vendor/fileeye/pel/phpstan.neon.dist b/vendor/fileeye/pel/phpstan.neon.dist
new file mode 100644
index 0000000000..7688297ecc
--- /dev/null
+++ b/vendor/fileeye/pel/phpstan.neon.dist
@@ -0,0 +1,13 @@
+parameters:
+
+  level: 5
+
+  paths:
+    - src
+    - test
+
+  ignoreErrors:
+    -
+       message: "#^Unreachable statement - code above always terminates.$#"
+       count: 2
+       path: test/ConvertTest.php
diff --git a/vendor/fileeye/pel/src/PelCanonMakerNotes.php b/vendor/fileeye/pel/src/PelCanonMakerNotes.php
index a73f575a25..490e5e0258 100644
--- a/vendor/fileeye/pel/src/PelCanonMakerNotes.php
+++ b/vendor/fileeye/pel/src/PelCanonMakerNotes.php
@@ -130,31 +130,6 @@ class PelCanonMakerNotes extends PelMakerNotes
         0x0004
     ];
 
-    private $undefinedPicInfoTags = [
-        0x0001,
-        0x0006,
-        0x0007,
-        0x0008,
-        0x0009,
-        0x000a,
-        0x000b,
-        0x000c,
-        0x000d,
-        0x000e,
-        0x000f,
-        0x0010,
-        0x0011,
-        0x0012,
-        0x0013,
-        0x0014,
-        0x0015,
-        0x0017,
-        0x0018,
-        0x0019,
-        0x001b,
-        0x001c
-    ];
-
     private $undefinedFileInfoTags = [
         0x0002,
         0x000a,
@@ -204,10 +179,6 @@ public function load()
                 case PelTag::CANON_PANORAMA:
                     $this->parsePanorama($mkNotesIfd, $this->data, $data, $components);
                     break;
-                case PelTag::CANON_PICTURE_INFO:
-                    // TODO: Does not work at the moment
-                    // $this->parsePictureInfo($mkNotesIfd, $this->data, $data, $components);
-                    break;
                 case PelTag::CANON_FILE_INFO:
                     $this->parseFileInfo($mkNotesIfd, $this->data, $data, $components);
                     break;
@@ -287,32 +258,6 @@ private function parsePanorama($parent, $data, $offset, $components)
         $parent->addSubIfd($panoramaIfd);
     }
 
-    /**
-     * This method does not work properly
-     */
-    private function parsePictureInfo($parent, $data, $offset, $components)
-    {
-        $type = PelIfd::CANON_PICTURE_INFO;
-        Pel::debug('Found Canon Picture Info sub IFD at offset %d', $offset);
-        $size = $data->getShort($offset);
-        $offset += 2;
-        $elemSize = PelFormat::getSize(PelFormat::SHORT);
-        if ($size / $components !== $elemSize) {
-            throw new PelMakerNotesMalformedException('Size of Canon Picture Info does not match the number of entries. ' . $size . '/' . $components . ' = ' . $elemSize);
-        }
-        $picIfd = new PelIfd($type);
-
-        for ($i = 0; $i < $components; $i ++) {
-            // check if tag is defined
-            printf("Current Tag: %d\n", ($i + 1));
-            if (in_array($i + 1, $this->undefinedPicInfoTags)) {
-                continue;
-            }
-            $picIfd->loadSingleMakerNotesValue($type, $data, $offset, $size, $i, PelFormat::SHORT);
-        }
-        $parent->addSubIfd($picIfd);
-    }
-
     private function parseFileInfo($parent, $data, $offset, $components)
     {
         $type = PelIfd::CANON_FILE_INFO;
diff --git a/vendor/fileeye/pel/src/PelConvert.php b/vendor/fileeye/pel/src/PelConvert.php
index e3dec46df1..312db156a1 100644
--- a/vendor/fileeye/pel/src/PelConvert.php
+++ b/vendor/fileeye/pel/src/PelConvert.php
@@ -140,7 +140,7 @@ public static function longToBytes($value, $endian)
          * largest signed integer known to PHP. But luckily base_convert
          * handles such big numbers.
          */
-        $hex = str_pad(base_convert($value, 10, 16), 8, '0', STR_PAD_LEFT);
+        $hex = str_pad(base_convert((string) $value, 10, 16), 8, '0', STR_PAD_LEFT);
         if ($endian == self::LITTLE_ENDIAN) {
             return chr((int) hexdec($hex[6] . $hex[7])) . chr((int) hexdec($hex[4] . $hex[5])) . chr((int) hexdec($hex[2] . $hex[3])) . chr((int) hexdec($hex[0] . $hex[1]));
         } else {
diff --git a/vendor/fileeye/pel/src/PelDataWindow.php b/vendor/fileeye/pel/src/PelDataWindow.php
index c8e97ae130..4159111b65 100644
--- a/vendor/fileeye/pel/src/PelDataWindow.php
+++ b/vendor/fileeye/pel/src/PelDataWindow.php
@@ -202,6 +202,7 @@ public function setWindowSize($size)
      * @return PelDataWindow a new window that operates on the same data
      *         as this window, but (optionally) with a smaller window size.
      * @throws PelDataWindowWindowException
+     * @throws PelDataWindowOffsetException
      */
     public function getClone($start = null, $size = null)
     {
diff --git a/vendor/fileeye/pel/src/PelEntryNumber.php b/vendor/fileeye/pel/src/PelEntryNumber.php
index 7b9bc54e37..84213d13de 100644
--- a/vendor/fileeye/pel/src/PelEntryNumber.php
+++ b/vendor/fileeye/pel/src/PelEntryNumber.php
@@ -161,7 +161,7 @@ public function getValue()
     public function validateNumber($n)
     {
         if ($this->dimension == 1 || is_scalar($n)) {
-            if ($n < $this->min || $n > $this->max) {
+            if (is_int($n) && ($n < $this->min || $n > $this->max)) {
                 Pel::maybeThrow(new PelOverflowException((int) $n, $this->min, $this->max));
             }
         } else {
@@ -241,7 +241,7 @@ public function getBytes($o)
      * sophisticated behavior than the default, which is to just return
      * the number as is.
      *
-     * @param int $number
+     * @param int|array $number
      *            the number which will be formatted.
      * @param boolean $brief
      *            it could be that there is both a verbose and a
@@ -251,7 +251,7 @@ public function getBytes($o)
      */
     public function formatNumber($number, $brief = false)
     {
-        return $number;
+        return is_int($number) ? (string) $number : implode(', ', $number);
     }
 
     /**
diff --git a/vendor/fileeye/pel/src/PelEntryRational.php b/vendor/fileeye/pel/src/PelEntryRational.php
index 3b6d0ccfc6..af64575796 100644
--- a/vendor/fileeye/pel/src/PelEntryRational.php
+++ b/vendor/fileeye/pel/src/PelEntryRational.php
@@ -158,7 +158,7 @@ public function getText($brief = false)
                 } else {
                     return Pel::fmt('%d sec.', $v[0] / $v[1]);
                 }
-                break;
+
             case PelTag::GPS_LATITUDE:
             case PelTag::GPS_LONGITUDE:
                 $degrees = $v[0] / $v[1];
diff --git a/vendor/fileeye/pel/src/PelEntryShort.php b/vendor/fileeye/pel/src/PelEntryShort.php
index 1860e3fdc7..4ded7cdcf4 100644
--- a/vendor/fileeye/pel/src/PelEntryShort.php
+++ b/vendor/fileeye/pel/src/PelEntryShort.php
@@ -365,7 +365,7 @@ public function numberToBytes($number, $order)
      * PelTag::METERING_MODE} tag, 'Center-Weighted Average' is
      * returned.
      *
-     * @param boolean $brief
+     * @param bool $brief
      *            some values can be returned in a long or more
      *            brief form, and this parameter controls that.
      * @return string the value as text.
@@ -374,6 +374,9 @@ public function getText($brief = false)
     {
         if (array_key_exists($this->ifd_type, self::IFD_TYPE_TRANSLATIONS)) {
             if (array_key_exists($this->value[0], self::IFD_TYPE_TRANSLATIONS[$this->ifd_type])) {
+                // @todo this is buggy and not working - it's not passing a string
+                // but an array of strings.
+                // @phpstan-ignore-next-line
                 return Pel::tra(self::IFD_TYPE_TRANSLATIONS[$this->ifd_type][$this->value[0]]);
             } else {
                 return $this->value[0];
diff --git a/vendor/fileeye/pel/src/PelEntryTime.php b/vendor/fileeye/pel/src/PelEntryTime.php
index 84be4bb701..efa6f0b5a0 100644
--- a/vendor/fileeye/pel/src/PelEntryTime.php
+++ b/vendor/fileeye/pel/src/PelEntryTime.php
@@ -153,7 +153,6 @@ public function getValue($type = self::UNIX_TIMESTAMP)
                 } else {
                     return $seconds + $this->seconds;
                 }
-                break;
             case self::EXIF_STRING:
                 list ($year, $month, $day) = $this->convertJdToGregorian($this->day_count);
                 $hours = (int) ($this->seconds / 3600);
@@ -189,7 +188,7 @@ public function setValue($timestamp, $type = self::UNIX_TIMESTAMP)
     {
         if ($type === self::UNIX_TIMESTAMP) {
             if (is_int($timestamp) || is_float($timestamp)) {
-                $this->day_count = $this->convertUnixToJd($timestamp);
+                $this->day_count = (int) $this->convertUnixToJd($timestamp);
                 $this->seconds = $timestamp % 86400;
             } else {
                 throw new PelInvalidArgumentException('Expected integer value for $type, got %s', gettype($timestamp));
@@ -248,7 +247,7 @@ public function convertGregorianToJd($year, $month, $day)
         }
 
         $m1412 = ($month <= 2) ? - 1 : 0;
-        return floor((1461 * ($year + 4800 + $m1412)) / 4) + floor((367 * ($month - 2 - 12 * $m1412)) / 12) - floor((3 * floor(($year + 4900 + $m1412) / 100)) / 4) + $day - 32075;
+        return (int) (floor((1461 * ($year + 4800 + $m1412)) / 4) + floor((367 * ($month - 2 - 12 * $m1412)) / 12) - floor((3 * floor(($year + 4900 + $m1412) / 100)) / 4) + $day - 32075);
     }
 
     /**
diff --git a/vendor/fileeye/pel/src/PelEntryUndefined.php b/vendor/fileeye/pel/src/PelEntryUndefined.php
index 8da9030cfb..5ed5a67b92 100644
--- a/vendor/fileeye/pel/src/PelEntryUndefined.php
+++ b/vendor/fileeye/pel/src/PelEntryUndefined.php
@@ -115,7 +115,6 @@ public function getText($brief = false)
                     default:
                         return sprintf('0x%02X', ord($this->bytes[0]));
                 }
-                break;
             case PelTag::SCENE_TYPE:
                 // CC (e->components, 1, v);
                 switch (ord($this->bytes[0])) {
@@ -124,7 +123,6 @@ public function getText($brief = false)
                     default:
                         return sprintf('0x%02X', ord($this->bytes[0]));
                 }
-                break;
             case PelTag::COMPONENTS_CONFIGURATION:
                 // CC (e->components, 4, v);
                 $v = '';
diff --git a/vendor/fileeye/pel/src/PelEntryVersion.php b/vendor/fileeye/pel/src/PelEntryVersion.php
index 81e4ec6b17..1989feec85 100644
--- a/vendor/fileeye/pel/src/PelEntryVersion.php
+++ b/vendor/fileeye/pel/src/PelEntryVersion.php
@@ -140,21 +140,18 @@ public function getText($brief = false)
                 } else {
                     return Pel::fmt('Exif Version %s', $v);
                 }
-                break;
             case PelTag::FLASH_PIX_VERSION:
                 if ($brief) {
                     return Pel::fmt('FlashPix %s', $v);
                 } else {
                     return Pel::fmt('FlashPix Version %s', $v);
                 }
-                break;
             case PelTag::INTEROPERABILITY_VERSION:
                 if ($brief) {
                     return Pel::fmt('Interoperability %s', $v);
                 } else {
                     return Pel::fmt('Interoperability Version %s', $v);
                 }
-                break;
         }
 
         if ($brief) {
diff --git a/vendor/fileeye/pel/src/PelExif.php b/vendor/fileeye/pel/src/PelExif.php
index 8e6d7a7b0a..593e2d61b6 100644
--- a/vendor/fileeye/pel/src/PelExif.php
+++ b/vendor/fileeye/pel/src/PelExif.php
@@ -121,7 +121,7 @@ public function setTiff(PelTiff $tiff)
      * The actual Exif data is stored in a {@link PelTiff} object, and
      * this method provides access to it.
      *
-     * @return PelTiff the TIFF object with the Exif data.
+     * @return PelTiff|null the TIFF object with the Exif data.
      */
     public function getTiff()
     {
diff --git a/vendor/fileeye/pel/src/PelIfd.php b/vendor/fileeye/pel/src/PelIfd.php
index d57d7ddf86..f10a20a55f 100644
--- a/vendor/fileeye/pel/src/PelIfd.php
+++ b/vendor/fileeye/pel/src/PelIfd.php
@@ -1205,9 +1205,9 @@ public function addEntry(PelEntry $e)
      * // ... do something with the F-number.
      * </code>
      *
-     * @param integer $tag
+     * @param mixed $tag
      *            the offset to check.
-     * @return boolean whether the tag exists.
+     * @return bool whether the tag exists.
      */
     public function offsetExists($tag): bool
     {
@@ -1225,7 +1225,7 @@ public function offsetExists($tag): bool
      * $entry = $ifd[PelTag::FNUMBER];
      * </code>
      *
-     * @param integer $tag
+     * @param mixed $tag
      *            the tag to return. It is an error to ask for a tag
      *            which is not in the IFD, just like asking for a non-existant
      *            array entry.
@@ -1250,7 +1250,7 @@ public function offsetGet($tag): PelEntry
      * Note that the actual array index passed is ignored! Instead the
      * {@link PelTag} from the entry is used.
      *
-     * @param integer $tag
+     * @param mixed $tag
      *            unused parameter
      * @param PelEntry $e
      *            the new value to be set
@@ -1258,12 +1258,11 @@ public function offsetGet($tag): PelEntry
      */
     public function offsetSet($tag, $e): void
     {
-        if ($e instanceof PelEntry) {
-            $newTag = $e->getTag();
-            $this->entries[$newTag] = $e;
-        } else {
+        if (!$e instanceof PelEntry) {
             throw new PelInvalidArgumentException('Argument "%s" must be a PelEntry.', $e);
         }
+        $newTag = $e->getTag();
+        $this->entries[$newTag] = $e;
     }
 
     /**
@@ -1277,10 +1276,9 @@ public function offsetSet($tag, $e): void
      * unset($ifd[PelTag::EXPOSURE_BIAS_VALUE])
      * </code>
      *
-     * @param integer $offset
+     * @param mixed $offset
      *            the offset to delete.
      */
-    # [\ReturnTypeWillChange]
     public function offsetUnset($offset): void
     {
         unset($this->entries[$offset]);
@@ -1291,7 +1289,7 @@ public function offsetUnset($offset): void
      *
      * @param integer $tag
      *            the tag identifying the entry.
-     * @return PelEntry the entry associated with the tag, or null if no
+     * @return PelEntry|null the entry associated with the tag, or null if no
      *         such entry exists.
      */
     public function getEntry($tag)
@@ -1369,7 +1367,7 @@ public function setNextIfd(PelIfd $i)
     /**
      * Return the IFD pointed to by this directory.
      *
-     * @return PelIfd the next IFD, following this IFD. If this is the
+     * @return PelIfd|null the next IFD, following this IFD. If this is the
      *         last IFD, null is returned.
      */
     public function getNextIfd()
@@ -1410,7 +1408,7 @@ public function addSubIfd(PelIfd $sub)
      *            the type of the sub IFD. This must be one of {@link
      *            PelIfd::EXIF}, {@link PelIfd::GPS}, or {@link
      *            PelIfd::INTEROPERABILITY}.
-     * @return PelIfd the IFD associated with the type, or null if that
+     * @return PelIfd|null the IFD associated with the type, or null if that
      *         sub IFD does not exist.
      */
     public function getSubIfd($type)
diff --git a/vendor/fileeye/pel/src/PelJpeg.php b/vendor/fileeye/pel/src/PelJpeg.php
index 8ca05fe3c1..556b676a41 100644
--- a/vendor/fileeye/pel/src/PelJpeg.php
+++ b/vendor/fileeye/pel/src/PelJpeg.php
@@ -496,7 +496,7 @@ public function insertSection($marker, PelJpegContent $content, $offset)
      * @param integer $skip
      *            the number of sections to be skipped. This must be a
      *            non-negative integer.
-     * @return PelJpegContent|\lsolesen\pel\PelExif the content found, or null if there is no
+     * @return PelJpegContent|PelExif|null the content found, or null if there is no
      *         content available.
      */
     public function getSection($marker, $skip = 0)
diff --git a/vendor/fileeye/pel/src/PelTiff.php b/vendor/fileeye/pel/src/PelTiff.php
index a95eb6495a..e85397c3d9 100644
--- a/vendor/fileeye/pel/src/PelTiff.php
+++ b/vendor/fileeye/pel/src/PelTiff.php
@@ -189,7 +189,7 @@ public function setIfd(PelIfd $ifd)
     /**
      * Return the first IFD.
      *
-     * @return PelIfd the first IFD contained in the TIFF data, if any.
+     * @return PelIfd|null the first IFD contained in the TIFF data, if any.
      *         If there is no IFD null will be returned.
      */
     public function getIfd()
diff --git a/vendor/fileeye/pel/test/Bug3017880Test.php b/vendor/fileeye/pel/test/Bug3017880Test.php
index b4ea9e04cb..132c37ed67 100644
--- a/vendor/fileeye/pel/test/Bug3017880Test.php
+++ b/vendor/fileeye/pel/test/Bug3017880Test.php
@@ -72,7 +72,7 @@ public function testThisDoesNotWorkAsExpected()
                 $resave_file = 1;
             }
 
-            if ($resave_file == 1 && ! file_put_contents($filename, $jpeg->getBytes())) {
+            if (! file_put_contents($filename, $jpeg->getBytes())) {
                 // if it was okay to resave the file, but it did not save correctly
             }
         } catch (Exception $e) {
diff --git a/vendor/fileeye/pel/test/Gh16Test.php b/vendor/fileeye/pel/test/Gh16Test.php
index 924a45bdfc..34a069750e 100644
--- a/vendor/fileeye/pel/test/Gh16Test.php
+++ b/vendor/fileeye/pel/test/Gh16Test.php
@@ -57,35 +57,33 @@ public function testThisDoesNotWorkAsExpected()
 
         $this->assertTrue(PelJpeg::isValid($data));
 
-        if (PelJpeg::isValid($data)) {
-            $jpeg = new PelJpeg();
-            $jpeg->load($data);
-            $exif = $jpeg->getExif();
+        $jpeg = new PelJpeg();
+        $jpeg->load($data);
+        $exif = $jpeg->getExif();
 
-            if (null === $exif) {
-                $exif = new PelExif();
-                $jpeg->setExif($exif);
-                $tiff = new PelTiff();
-                $exif->setTiff($tiff);
-            }
+        if (null === $exif) {
+            $exif = new PelExif();
+            $jpeg->setExif($exif);
+            $tiff = new PelTiff();
+            $exif->setTiff($tiff);
+        }
 
-            $tiff = $exif->getTiff();
+        $tiff = $exif->getTiff();
 
-            $ifd0 = $tiff->getIfd();
-            if (null === $ifd0) {
-                $ifd0 = new PelIfd(PelIfd::IFD0);
-                $tiff->setIfd($ifd0);
-            }
-            $ifd0->addEntry(new PelEntryWindowsString(PelTag::XP_SUBJECT, $subject));
+        $ifd0 = $tiff->getIfd();
+        if (null === $ifd0) {
+            $ifd0 = new PelIfd(PelIfd::IFD0);
+            $tiff->setIfd($ifd0);
+        }
+        $ifd0->addEntry(new PelEntryWindowsString(PelTag::XP_SUBJECT, $subject));
 
-            file_put_contents($this->file, $jpeg->getBytes());
+        file_put_contents($this->file, $jpeg->getBytes());
 
-            $jpeg = new PelJpeg($this->file);
-            $exif = $jpeg->getExif();
-            $tiff = $exif->getTiff();
-            $ifd0 = $tiff->getIfd();
-            $written_subject = $ifd0->getEntry(PelTag::XP_SUBJECT);
-            $this->assertEquals($subject, $written_subject->getValue());
-        }
+        $jpeg = new PelJpeg($this->file);
+        $exif = $jpeg->getExif();
+        $tiff = $exif->getTiff();
+        $ifd0 = $tiff->getIfd();
+        $written_subject = $ifd0->getEntry(PelTag::XP_SUBJECT);
+        $this->assertEquals($subject, $written_subject->getValue());
     }
 }
diff --git a/vendor/fileeye/pel/test/MisplacedExifTest.php b/vendor/fileeye/pel/test/MisplacedExifTest.php
index ed580df615..d2c7e29b0f 100644
--- a/vendor/fileeye/pel/test/MisplacedExifTest.php
+++ b/vendor/fileeye/pel/test/MisplacedExifTest.php
@@ -77,6 +77,6 @@ public function testRead()
             $this->assertSame($sections2[$s2idx][0], $sections3[$idx][0]);
             $this->assertSame($sections2[$s2idx][1], $sections3[$idx][1]);
         }
-        $this->assertNotInstanceOf('\lsolesen\pel\PelExif', $jpeg->getExif());
+        $this->assertNull($jpeg->getExif());
     }
 }
diff --git a/vendor/fileeye/pel/test/NumberTestCase.php b/vendor/fileeye/pel/test/NumberTestCase.php
index d8aa263496..4701c877c4 100644
--- a/vendor/fileeye/pel/test/NumberTestCase.php
+++ b/vendor/fileeye/pel/test/NumberTestCase.php
@@ -101,14 +101,14 @@ public function testReturnValues()
 
         $this->num->setValue(1);
         $this->assertSame(1, $this->num->getValue());
-        $this->assertSame(1, $this->num->getText());
+        $this->assertSame('1', $this->num->getText());
 
         $this->num->setValue($this->max);
         $this->assertSame($this->max, $this->num->getValue());
-        $this->assertSame($this->max, $this->num->getText());
+        $this->assertSame((string) $this->max, $this->num->getText());
 
         $this->num->setValue($this->min);
         $this->assertSame($this->min, $this->num->getValue());
-        $this->assertSame($this->min, $this->num->getText());
+        $this->assertSame((string) $this->min, $this->num->getText());
     }
 }
diff --git a/vendor/fileeye/pel/test/PelTagTest.php b/vendor/fileeye/pel/test/PelTagTest.php
index a1e46a9b56..9af4e6c2cd 100644
--- a/vendor/fileeye/pel/test/PelTagTest.php
+++ b/vendor/fileeye/pel/test/PelTagTest.php
@@ -48,8 +48,8 @@ class PelTagTest extends TestCase
 
     public function testReverseLookup()
     {
-        $this->assertSame(false, PelTag::getExifTagByName(self::NONEXISTENT_TAG_NAME), 'Non-existent EXIF tag name');
-        $this->assertSame(false, PelTag::getGpsTagByName(self::NONEXISTENT_TAG_NAME), 'Non-existent GPS tag name');
+        $this->assertFalse(PelTag::getExifTagByName(self::NONEXISTENT_TAG_NAME), 'Non-existent EXIF tag name');
+        $this->assertFalse(PelTag::getGpsTagByName(self::NONEXISTENT_TAG_NAME), 'Non-existent GPS tag name');
         $this->assertStringStartsWith('Unknown: ', PelTag::getName(PelIfd::IFD0, self::NONEXISTENT_EXIF_TAG), 'Non-existent EXIF tag');
         $this->assertStringStartsWith('Unknown: ', PelTag::getName(PelIfd::GPS, self::NONEXISTENT_GPS_TAG), 'Non-existent GPS tag');
 
diff --git a/vendor/fileeye/pel/test/ReadWriteTest.php b/vendor/fileeye/pel/test/ReadWriteTest.php
index 4250117248..ca0770fca2 100644
--- a/vendor/fileeye/pel/test/ReadWriteTest.php
+++ b/vendor/fileeye/pel/test/ReadWriteTest.php
@@ -229,6 +229,7 @@ public function testTiffLoadSave()
         $this->assertEquals(1, $orientation->getValue());
         $photometric_interpretation = $ifd->getEntry(PelTag::PHOTOMETRIC_INTERPRETATION);
         $this->assertEquals(2, $photometric_interpretation->getValue());
+        /** @var \lsolesen\pel\PelEntryShort $bits_per_sample */
         $bits_per_sample = $ifd->getEntry(PelTag::BITS_PER_SAMPLE);
         $this->assertEquals([
             8,
diff --git a/vendor/fileeye/pel/test/imagetests/CanonEos650dTest.php b/vendor/fileeye/pel/test/imagetests/CanonEos650dTest.php
index 0be3d38234..ec0bb186bc 100644
--- a/vendor/fileeye/pel/test/imagetests/CanonEos650dTest.php
+++ b/vendor/fileeye/pel/test/imagetests/CanonEos650dTest.php
@@ -212,7 +212,7 @@ public function testRead()
 
         $entry = $ifd0_0->getEntry(41990); // SceneCaptureType
         $this->assertInstanceOf('lsolesen\pel\PelEntryShort', $entry);
-        $this->assertEquals(0, $entry->getValue(), 0);
+        $this->assertEquals(0, $entry->getValue());
         $this->assertEquals('Standard', $entry->getText());
 
         /* Sub IFDs of $ifd0_0. */
diff --git a/vendor/psr/log/src/LoggerAwareInterface.php b/vendor/psr/log/src/LoggerAwareInterface.php
index cc46a95147..062187057d 100644
--- a/vendor/psr/log/src/LoggerAwareInterface.php
+++ b/vendor/psr/log/src/LoggerAwareInterface.php
@@ -9,10 +9,6 @@ interface LoggerAwareInterface
 {
     /**
      * Sets a logger instance on the object.
-     *
-     * @param LoggerInterface $logger
-     *
-     * @return void
      */
     public function setLogger(LoggerInterface $logger): void;
 }
diff --git a/vendor/psr/log/src/LoggerAwareTrait.php b/vendor/psr/log/src/LoggerAwareTrait.php
index 4fb57a2922..85104dbc19 100644
--- a/vendor/psr/log/src/LoggerAwareTrait.php
+++ b/vendor/psr/log/src/LoggerAwareTrait.php
@@ -9,15 +9,11 @@ trait LoggerAwareTrait
 {
     /**
      * The logger instance.
-     *
-     * @var LoggerInterface|null
      */
     protected ?LoggerInterface $logger = null;
 
     /**
      * Sets a logger.
-     *
-     * @param LoggerInterface $logger
      */
     public function setLogger(LoggerInterface $logger): void
     {
diff --git a/vendor/psr/log/src/LoggerInterface.php b/vendor/psr/log/src/LoggerInterface.php
index b3a24b5f7e..8afabc90c8 100644
--- a/vendor/psr/log/src/LoggerInterface.php
+++ b/vendor/psr/log/src/LoggerInterface.php
@@ -22,10 +22,7 @@ interface LoggerInterface
     /**
      * System is unusable.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function emergency(string|\Stringable $message, array $context = []): void;
 
@@ -35,10 +32,7 @@ public function emergency(string|\Stringable $message, array $context = []): voi
      * Example: Entire website down, database unavailable, etc. This should
      * trigger the SMS alerts and wake you up.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function alert(string|\Stringable $message, array $context = []): void;
 
@@ -47,10 +41,7 @@ public function alert(string|\Stringable $message, array $context = []): void;
      *
      * Example: Application component unavailable, unexpected exception.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function critical(string|\Stringable $message, array $context = []): void;
 
@@ -58,10 +49,7 @@ public function critical(string|\Stringable $message, array $context = []): void
      * Runtime errors that do not require immediate action but should typically
      * be logged and monitored.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function error(string|\Stringable $message, array $context = []): void;
 
@@ -71,20 +59,14 @@ public function error(string|\Stringable $message, array $context = []): void;
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * that are not necessarily wrong.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function warning(string|\Stringable $message, array $context = []): void;
 
     /**
      * Normal but significant events.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function notice(string|\Stringable $message, array $context = []): void;
 
@@ -93,32 +75,22 @@ public function notice(string|\Stringable $message, array $context = []): void;
      *
      * Example: User logs in, SQL logs.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function info(string|\Stringable $message, array $context = []): void;
 
     /**
      * Detailed debug information.
      *
-     * @param string|\Stringable $message
      * @param mixed[] $context
-     *
-     * @return void
      */
     public function debug(string|\Stringable $message, array $context = []): void;
 
     /**
      * Logs with an arbitrary level.
      *
-     * @param mixed   $level
-     * @param string|\Stringable $message
      * @param mixed[] $context
      *
-     * @return void
-     *
      * @throws \Psr\Log\InvalidArgumentException
      */
     public function log($level, string|\Stringable $message, array $context = []): void;
diff --git a/vendor/psr/log/src/LoggerTrait.php b/vendor/psr/log/src/LoggerTrait.php
index 9c8733f957..a5d9980b6f 100644
--- a/vendor/psr/log/src/LoggerTrait.php
+++ b/vendor/psr/log/src/LoggerTrait.php
@@ -14,11 +14,6 @@ trait LoggerTrait
 {
     /**
      * System is unusable.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function emergency(string|\Stringable $message, array $context = []): void
     {
@@ -30,11 +25,6 @@ public function emergency(string|\Stringable $message, array $context = []): voi
      *
      * Example: Entire website down, database unavailable, etc. This should
      * trigger the SMS alerts and wake you up.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function alert(string|\Stringable $message, array $context = []): void
     {
@@ -45,11 +35,6 @@ public function alert(string|\Stringable $message, array $context = []): void
      * Critical conditions.
      *
      * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function critical(string|\Stringable $message, array $context = []): void
     {
@@ -59,11 +44,6 @@ public function critical(string|\Stringable $message, array $context = []): void
     /**
      * Runtime errors that do not require immediate action but should typically
      * be logged and monitored.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function error(string|\Stringable $message, array $context = []): void
     {
@@ -75,11 +55,6 @@ public function error(string|\Stringable $message, array $context = []): void
      *
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * that are not necessarily wrong.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function warning(string|\Stringable $message, array $context = []): void
     {
@@ -88,11 +63,6 @@ public function warning(string|\Stringable $message, array $context = []): void
 
     /**
      * Normal but significant events.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function notice(string|\Stringable $message, array $context = []): void
     {
@@ -103,11 +73,6 @@ public function notice(string|\Stringable $message, array $context = []): void
      * Interesting events.
      *
      * Example: User logs in, SQL logs.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function info(string|\Stringable $message, array $context = []): void
     {
@@ -116,11 +81,6 @@ public function info(string|\Stringable $message, array $context = []): void
 
     /**
      * Detailed debug information.
-     *
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
      */
     public function debug(string|\Stringable $message, array $context = []): void
     {
@@ -130,11 +90,7 @@ public function debug(string|\Stringable $message, array $context = []): void
     /**
      * Logs with an arbitrary level.
      *
-     * @param mixed  $level
-     * @param string|\Stringable $message
-     * @param array  $context
-     *
-     * @return void
+     * @param mixed $level
      *
      * @throws \Psr\Log\InvalidArgumentException
      */
diff --git a/vendor/psr/log/src/NullLogger.php b/vendor/psr/log/src/NullLogger.php
index c1cc3c0692..de0561e2ae 100644
--- a/vendor/psr/log/src/NullLogger.php
+++ b/vendor/psr/log/src/NullLogger.php
@@ -15,11 +15,7 @@ class NullLogger extends AbstractLogger
     /**
      * Logs with an arbitrary level.
      *
-     * @param mixed  $level
-     * @param string|\Stringable $message
-     * @param array $context
-     *
-     * @return void
+     * @param mixed[] $context
      *
      * @throws \Psr\Log\InvalidArgumentException
      */
diff --git a/web/modules/file_mdm/.gitlab-ci.yml b/web/modules/file_mdm/.gitlab-ci.yml
new file mode 100644
index 0000000000..3f30e91f3a
--- /dev/null
+++ b/web/modules/file_mdm/.gitlab-ci.yml
@@ -0,0 +1,108 @@
+################
+# DrupalCI GitLabCI template
+#
+# Gitlab-ci.yml to replicate DrupalCI testing for Contrib
+#
+# With thanks to:
+#   * The GitLab Acceleration Initiative participants
+#   * DrupalSpoons
+################
+
+################
+# Guidelines
+#
+# This template is designed to give any Contrib maintainer everything they need to test, without requiring modification. It is also designed to keep up to date with Core Development automatically through the use of include files that can be centrally maintained.
+#
+# However, you can modify this template if you have additional needs for your project.
+################
+
+################
+# Includes
+#
+# Additional configuration can be provided through includes.
+# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include.
+#
+# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml
+# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values
+################
+
+include:
+  ################
+  # DrupalCI includes:
+  # As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
+  # View these include files at https://git.drupalcode.org/project/gitlab_templates/
+  ################
+  - project: $_GITLAB_TEMPLATES_REPO
+    ref: $_GITLAB_TEMPLATES_REF
+    file:
+      - '/includes/include.drupalci.main.yml'
+      # EXPERIMENTAL: For Drupal 7, remove the above line and uncomment the below.
+      # - '/includes/include.drupalci.main-d7.yml'
+      - '/includes/include.drupalci.variables.yml'
+      - '/includes/include.drupalci.workflows.yml'
+
+################
+# Pipeline configuration variables
+#
+# These are the variables provided to the Run Pipeline form that a user may want to override.
+#
+# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/1.0.x/includes/include.drupalci.variables.yml
+################
+variables:
+  _PHPUNIT_CONCURRENT: '1'
+#  _PHPUNIT_EXTRA: '-c $CI_PROJECT_DIR/$_WEB_ROOT/core --testdox --colors=always'
+  OPT_IN_TEST_PREVIOUS_MINOR: '0'
+  OPT_IN_TEST_NEXT_MINOR: '1'
+  OPT_IN_TEST_NEXT_MAJOR: '1'
+
+phpunit:
+  extends: .phpunit-base
+  variables:
+    SYMFONY_DEPRECATIONS_HELPER: "ignoreFile=$CI_PROJECT_DIR/$_WEB_ROOT/core/.deprecation-ignore.txt"
+
+
+###################################################################################
+#
+#                                        *
+#                                       /(
+#                                      ((((,
+#                                    /(((((((
+#                                   ((((((((((*
+#                                ,(((((((((((((((
+#                              ,(((((((((((((((((((
+#                            ((((((((((((((((((((((((*
+#                         *(((((((((((((((((((((((((((((
+#                       ((((((((((((((((((((((((((((((((((*
+#                    *((((((((((((((((((  .((((((((((((((((((
+#                  ((((((((((((((((((.       /(((((((((((((((((*
+#                /(((((((((((((((((            .(((((((((((((((((,
+#             ,((((((((((((((((((                 ((((((((((((((((((
+#           .((((((((((((((((((((                   .(((((((((((((((((
+#          (((((((((((((((((((((((                     ((((((((((((((((/
+#        (((((((((((((((((((((((((((/                    ,(((((((((((((((*
+#      .((((((((((((((/  /(((((((((((((.                   ,(((((((((((((((
+#     *((((((((((((((      ,(((((((((((((/                   *((((((((((((((.
+#    ((((((((((((((,          /(((((((((((((.                  ((((((((((((((,
+#   (((((((((((((/              ,(((((((((((((*                 ,(((((((((((((,
+#  *(((((((((((((                .(((((((((((((((                ,(((((((((((((
+#  ((((((((((((/                /((((((((((((((((((.              ,((((((((((((/
+# (((((((((((((              *(((((((((((((((((((((((*             *((((((((((((
+# (((((((((((((            ,(((((((((((((..(((((((((((((           *((((((((((((
+# ((((((((((((,          /((((((((((((*      /((((((((((((/         ((((((((((((
+# (((((((((((((        /((((((((((((/          (((((((((((((*       ((((((((((((
+# (((((((((((((/     /((((((((((((               ,((((((((((((,    *((((((((((((
+#  ((((((((((((((  *(((((((((((/                   *((((((((((((.  ((((((((((((/
+#  *((((((((((((((((((((((((((,                      /(((((((((((((((((((((((((
+#   (((((((((((((((((((((((((                         ((((((((((((((((((((((((,
+#   .(((((((((((((((((((((((/                         ,(((((((((((((((((((((((
+#     ((((((((((((((((((((((/                         ,(((((((((((((((((((((/
+#      *(((((((((((((((((((((                         (((((((((((((((((((((,
+#       ,(((((((((((((((((((((,                      ((((((((((((((((((((/
+#         ,(((((((((((((((((((((*                  /((((((((((((((((((((
+#            ((((((((((((((((((((((,           ,/((((((((((((((((((((,
+#              ,(((((((((((((((((((((((((((((((((((((((((((((((((((
+#                 .(((((((((((((((((((((((((((((((((((((((((((((
+#                     .((((((((((((((((((((((((((((((((((((,.
+#                          .,(((((((((((((((((((((((((.
+#
+###################################################################################
diff --git a/web/modules/file_mdm/README.md b/web/modules/file_mdm/README.md
index ba471728b8..74cfdc8751 100644
--- a/web/modules/file_mdm/README.md
+++ b/web/modules/file_mdm/README.md
@@ -11,8 +11,8 @@ The following plugins are provided by the module:
 
 Plugin        | Read | Write | Description                                                  |
 --------------|:----:|:-----:|--------------------------------------------------------------|
-exif          | X    | X     | Uses the [PHP Exif Library](https://github.com/lsolesen/pel) to read/write EXIF information to image files, bypassing the limitations of the standard PHP Exif extensions which only provides read capabilities. Enable the _file_mdm_exif_ submodule to enable this plugin.        |
-font          | X    |       | Uses the [PHP Font Lib](https://github.com/PhenX/php-font-lib) to read font information from TTF/OTF/WOFF font files. Enable the _file_mdm_exif_ submodule to enable this plugin.         |
+exif          | X    | X     | Uses the [PHP Exif Library](https://github.com/FileEye/pel) to read/write EXIF information to image files, bypassing the limitations of the standard PHP Exif extensions which only provides read capabilities. Enable the _file_mdm_exif_ submodule to enable this plugin.        |
+font          | X    |       | Uses the [PHP Font Lib](https://github.com/dompdf/php-font-lib) to read font information from TTF/OTF/WOFF font files. Enable the _file_mdm_exif_ submodule to enable this plugin.         |
 getimagesize  | X    |       | Caches calls to the PHP ```getimagesize()``` function.        |
 
 The module is inspired by discussions at [#2630242 Provide methods to retrieve EXIF image information via the Image object](https://www.drupal.org/node/2630242).
@@ -32,15 +32,6 @@ The module is inspired by discussions at [#2630242 Provide methods to retrieve E
    access the file locally.
 
 
-## Requirements
-
-* The module **must** be downloaded or updated using Composer, see [Download contributed modules and themes using Composer](https://www.drupal.org/node/2718229#adding-modules).
-This ensures that all dependencies get downloaded as well, with the appropriate
-release level.
-
-* Drupal 10.1.x and higher
-
-
 ## Installing
 
 The module requires [using Composer to manage Drupal site dependencies](https://www.drupal.org/node/2718229).
diff --git a/web/modules/file_mdm/composer.json b/web/modules/file_mdm/composer.json
index cbe3acf47c..6e69b0d149 100644
--- a/web/modules/file_mdm/composer.json
+++ b/web/modules/file_mdm/composer.json
@@ -3,12 +3,12 @@
     "type": "drupal-module",
     "description": "Provides a service to manage file metadata.",
     "require": {
-        "drupal/core": "^10.1",
-        "phenx/php-font-lib": "^0.5.4",
-        "fileeye/pel": "^0.9.20"
+        "drupal/core": "^10.3 | ^11",
+        "dompdf/php-font-lib": "^1",
+        "fileeye/pel": "^0.10.0"
     },
     "require-dev": {
-        "drupal/vendor_stream_wrapper": "^2.0.2",
+        "drupal/vendor_stream_wrapper": "^2.0.4",
         "fileeye/linuxlibertine-fonts": "^5.3"
     }
 }
diff --git a/web/modules/file_mdm/drupalci.yml b/web/modules/file_mdm/drupalci.yml
deleted file mode 100644
index 6d27402c46..0000000000
--- a/web/modules/file_mdm/drupalci.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-build:
-  assessment:
-    validate_codebase:
-      phplint:
-      csslint:
-        halt-on-fail: false
-      eslint:
-        halt-on-fail: false
-      phpcs:
-        sniff-all-files: false
-        halt-on-fail: false
-      phpstan:
-        halt-on-fail: false
-    testing:
-      run_tests.kernel:
-        types: 'PHPUnit-Kernel'
-        testgroups: '--all'
-        suppress-deprecations: false
-        halt-on-fail: false
-      run_tests.functional:
-        types: 'PHPUnit-Functional'
-        testgroups: '--all'
-        suppress-deprecations: false
-        halt-on-fail: false
diff --git a/web/modules/file_mdm/file_mdm.info.yml b/web/modules/file_mdm/file_mdm.info.yml
index a945fe91cb..6f786e57e8 100644
--- a/web/modules/file_mdm/file_mdm.info.yml
+++ b/web/modules/file_mdm/file_mdm.info.yml
@@ -1,11 +1,11 @@
 type: module
-core_version_requirement: ^10.1
+core_version_requirement: ^10.3 | ^11
 name: 'File metadata manager'
 description: 'Provides a service to manage file metadata.'
 package: File metadata
 configure: file_mdm.settings
 
-# Information added by Drupal.org packaging script on 2023-08-07
-version: '3.0.0'
+# Information added by Drupal.org packaging script on 2024-06-11
+version: '3.1.0'
 project: 'file_mdm'
-datestamp: 1691421185
+datestamp: 1718086270
diff --git a/web/modules/file_mdm/file_mdm.services.yml b/web/modules/file_mdm/file_mdm.services.yml
index 69e7b030fa..28d541f675 100644
--- a/web/modules/file_mdm/file_mdm.services.yml
+++ b/web/modules/file_mdm/file_mdm.services.yml
@@ -10,16 +10,17 @@ services:
   logger.channel.file_mdm:
     parent: logger.channel_base
     arguments: ['file_mdm']
-  Drupal\file_mdm\FileMetadataManager:
-    arguments:
-      $logger: '@logger.channel.file_mdm'
-      $cache: '@cache.file_mdm'
-  Drupal\file_mdm\FileMetadataManagerInterface: '@Drupal\file_mdm\FileMetadataManager'
+  Drupal\file_mdm\FileMetadataManagerInterface:
+    class: Drupal\file_mdm\FileMetadataManager
+  Drupal\file_mdm\Plugin\FileMetadataPluginManagerInterface:
+    class: Drupal\file_mdm\Plugin\FileMetadataPluginManager
+
   file_metadata_manager:
     alias: Drupal\file_mdm\FileMetadataManagerInterface
     deprecated: 'The "%alias_id%" service alias is deprecated. Use "Drupal\file_mdm\FileMetadataManagerInterface" service id instead.'
+  Drupal\file_mdm\FileMetadataManager:
+    alias: Drupal\file_mdm\FileMetadataManagerInterface
+    deprecated: 'The "%alias_id%" service alias is deprecated. Use "Drupal\file_mdm\FileMetadataManagerInterface" service id instead.'
   Drupal\file_mdm\Plugin\FileMetadataPluginManager:
-    arguments:
-      $namespaces: '@container.namespaces'
-      $cache: '@cache.discovery'
-  Drupal\file_mdm\Plugin\FileMetadataPluginManagerInterface: '@Drupal\file_mdm\Plugin\FileMetadataPluginManager'
+    alias: Drupal\file_mdm\Plugin\FileMetadataPluginManagerInterface
+    deprecated: 'The "%alias_id%" service alias is deprecated. Use "Drupal\file_mdm\FileMetadataPluginManagerInterface" service id instead.'
diff --git a/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.info.yml b/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.info.yml
index 1ef3a2c7f2..e021e77a6a 100644
--- a/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.info.yml
+++ b/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.info.yml
@@ -1,5 +1,5 @@
 type: module
-core_version_requirement: ^10.1
+core_version_requirement: ^10.3 | ^11
 name: File metadata - EXIF
 description: 'Provides a file metadata plugin for EXIF image information.'
 package: File metadata
@@ -7,7 +7,7 @@ configure: file_mdm.settings
 dependencies:
   - file_mdm:file_mdm
 
-# Information added by Drupal.org packaging script on 2023-08-07
-version: '3.0.0'
+# Information added by Drupal.org packaging script on 2024-06-11
+version: '3.1.0'
 project: 'file_mdm'
-datestamp: 1691421185
+datestamp: 1718086270
diff --git a/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.services.yml b/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.services.yml
index 9b6e6fd817..8c2ea9943d 100644
--- a/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.services.yml
+++ b/web/modules/file_mdm/file_mdm_exif/file_mdm_exif.services.yml
@@ -1,8 +1,9 @@
 services:
   _defaults:
     autowire: true
+  Drupal\file_mdm_exif\ExifTagMapperInterface:
+    class: Drupal\file_mdm_exif\ExifTagMapper
+
   Drupal\file_mdm_exif\ExifTagMapper:
-    arguments:
-      $logger: '@logger.channel.file_mdm'
-      $cache: '@cache.file_mdm'
-  Drupal\file_mdm_exif\ExifTagMapperInterface: '@Drupal\file_mdm_exif\ExifTagMapper'
\ No newline at end of file
+    alias: Drupal\file_mdm_exif\ExifTagMapperInterface
+    deprecated: 'The "%alias_id%" service alias is deprecated. Use "Drupal\file_mdm_exif\ExifTagMapperInterface" service id instead.'
diff --git a/web/modules/file_mdm/file_mdm_exif/src/ExifTagMapper.php b/web/modules/file_mdm/file_mdm_exif/src/ExifTagMapper.php
index f67a1db1aa..d30c917e0a 100644
--- a/web/modules/file_mdm/file_mdm_exif/src/ExifTagMapper.php
+++ b/web/modules/file_mdm/file_mdm_exif/src/ExifTagMapper.php
@@ -8,9 +8,10 @@
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\file_mdm\FileMetadataException;
-use Psr\Log\LoggerInterface;
 use lsolesen\pel\PelIfd;
 use lsolesen\pel\PelTag;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autowire;
 
 /**
  * Provides a mapping service for EXIF ifds and tags.
@@ -57,9 +58,11 @@ class ExifTagMapper implements ExifTagMapperInterface {
    *   The cache service.
    */
   public function __construct(
+    #[Autowire(service: 'logger.channel.file_mdm')]
     protected readonly LoggerInterface $logger,
     protected readonly ConfigFactoryInterface $configFactory,
-    protected readonly CacheBackendInterface $cache
+    #[Autowire(service: 'cache.file_mdm')]
+    protected readonly CacheBackendInterface $cache,
   ) {}
 
   public function resolveKeyToIfdAndTag(string|array $key): array {
diff --git a/web/modules/file_mdm/file_mdm_exif/src/Plugin/FileMetadata/Exif.php b/web/modules/file_mdm/file_mdm_exif/src/Plugin/FileMetadata/Exif.php
index 16fe62cc92..a98e0482da 100644
--- a/web/modules/file_mdm/file_mdm_exif/src/Plugin/FileMetadata/Exif.php
+++ b/web/modules/file_mdm/file_mdm_exif/src/Plugin/FileMetadata/Exif.php
@@ -4,6 +4,8 @@
 
 namespace Drupal\file_mdm_exif\Plugin\FileMetadata;
 
+use Drupal\Core\StringTranslation\TranslatableMarkup;
+use Drupal\file_mdm\Plugin\Attribute\FileMetadata;
 use Drupal\file_mdm\Plugin\FileMetadata\FileMetadataPluginBase;
 use Drupal\file_mdm_exif\ExifTagMapperInterface;
 use lsolesen\pel\PelEntry;
@@ -17,13 +19,12 @@
 
 /**
  * FileMetadata plugin for EXIF.
- *
- * @FileMetadata(
- *   id = "exif",
- *   title = @Translation("EXIF"),
- *   help = @Translation("File metadata plugin for EXIF image information, using the PHP Exif Library (PEL)."),
- * )
  */
+#[FileMetadata(
+  id: 'exif',
+  title: new TranslatableMarkup('EXIF'),
+  help: new TranslatableMarkup('File metadata plugin for EXIF image information, using the PHP Exif Library (PEL).')
+)]
 class Exif extends FileMetadataPluginBase {
 
   /**
@@ -95,11 +96,8 @@ protected function doGetMetadataFromFile(): mixed {
         return [];
       }
     }
-    elseif ($file instanceof PelTiff) {
-      $tiff = $file;
-    }
     else {
-      return [];
+      $tiff = $file;
     }
 
     // Scans metadata for entries of supported tags.
@@ -197,11 +195,8 @@ protected function doSaveMetadataToFile(): bool {
         $exif->setTiff($tiff);
       }
     }
-    elseif ($file instanceof PelTiff) {
-      $tiff = $file;
-    }
     else {
-      return FALSE;
+      $tiff = $file;
     }
 
     // Get IFD0 if existing, or create it if not.
diff --git a/web/modules/file_mdm/file_mdm_exif/tests/src/Kernel/FileMetadataExifTest.php b/web/modules/file_mdm/file_mdm_exif/tests/src/Kernel/FileMetadataExifTest.php
index 1646c955c6..4dfd64b100 100644
--- a/web/modules/file_mdm/file_mdm_exif/tests/src/Kernel/FileMetadataExifTest.php
+++ b/web/modules/file_mdm/file_mdm_exif/tests/src/Kernel/FileMetadataExifTest.php
@@ -4,7 +4,7 @@
 
 namespace Drupal\Tests\file_mdm_exif\Kernel;
 
-use Drupal\Core\File\FileSystemInterface;
+use Drupal\Core\File\FileExists;
 use Drupal\file_mdm\FileMetadataInterface;
 use Drupal\file_mdm\FileMetadataManagerInterface;
 use Drupal\file_mdm_exif\ExifTagMapperInterface;
@@ -38,10 +38,10 @@ public function setUp(): void {
    */
   public function testExifPlugin(): void {
     // Prepare a copy of test files.
-    $this->fileSystem->copy('core/tests/fixtures/files/image-test.jpg', 'public://', FileSystemInterface::EXISTS_REPLACE);
-    $this->fileSystem->copy('core/tests/fixtures/files/image-test.png', 'public://', FileSystemInterface::EXISTS_REPLACE);
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'public://', FileSystemInterface::EXISTS_REPLACE);
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'temporary://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy('core/tests/fixtures/files/image-test.jpg', 'public://', FileExists::Replace);
+    $this->fileSystem->copy('core/tests/fixtures/files/image-test.png', 'public://', FileExists::Replace);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'public://', FileExists::Replace);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'temporary://', FileExists::Replace);
     // The image files that will be tested.
     $image_files = [
       [
@@ -165,7 +165,7 @@ public function testJpegExifSaveToFile(): void {
     $fmdm = $this->container->get(FileMetadataManagerInterface::class);
 
     // Copy test file to public://.
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/portrait-painting.jpg', 'public://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/portrait-painting.jpg', 'public://', FileExists::Replace);
     $file_uri = 'public://portrait-painting.jpg';
     $file_metadata = $fmdm->uri($file_uri);
 
@@ -207,7 +207,10 @@ public function testJpegExifSaveToFile(): void {
     $desc = new PelEntryAscii($desc_tag['tag'], $data['THUMBNAIL']['ImageDescription']);
     $file_metadata->setMetadata('exif', [1, 'imagedescription'], $desc);
     $this->assertNotNull($file_metadata->getMetadata('exif', [1, 'imagedescription']));
-    $this->assertEquals($data['THUMBNAIL']['ImageDescription'], $file_metadata->getMetadata('exif', [1, 'imagedescription'])['value']);
+    $this->assertEquals($data['THUMBNAIL']['ImageDescription'], $file_metadata->getMetadata('exif', [
+      1,
+      'imagedescription',
+    ])['value']);
     $this->assertEquals(48, $this->countMetadataKeys($file_metadata, 'exif'));
     // Remove the Compression tag from IFD1.
     unset($data['THUMBNAIL']['Compression']);
@@ -219,7 +222,10 @@ public function testJpegExifSaveToFile(): void {
     // Add the BrightnessValue tag to EXIF.
     $data['BrightnessValue'] = '12/4';
     $this->assertNull($file_metadata->getMetadata('exif', ['exif', 'brightnessvalue']));
-    $brightness_tag = $this->container->get(ExifTagMapperInterface::class)->resolveKeyToIfdAndTag(['exif', 'brightnessvalue']);
+    $brightness_tag = $this->container->get(ExifTagMapperInterface::class)->resolveKeyToIfdAndTag([
+      'exif',
+      'brightnessvalue',
+    ]);
     $brightness = new PelEntrySRational($brightness_tag['tag'], [12, 4]);
     $file_metadata->setMetadata('exif', ['exif', 'brightnessvalue'], $brightness);
     $this->assertNotNull($file_metadata->getMetadata('exif', ['exif', 'brightnessvalue']));
@@ -235,11 +241,17 @@ public function testJpegExifSaveToFile(): void {
     // Add the RelatedImageFileFormat tag to INTEROP.
     $data['RelatedFileFormat'] = 'qux';
     $this->assertNull($file_metadata->getMetadata('exif', ['interop', 'RelatedImageFileFormat']));
-    $ff_tag = $this->container->get(ExifTagMapperInterface::class)->resolveKeyToIfdAndTag(['interop', 'RelatedImageFileFormat']);
+    $ff_tag = $this->container->get(ExifTagMapperInterface::class)->resolveKeyToIfdAndTag([
+      'interop',
+      'RelatedImageFileFormat',
+    ]);
     $ff = new PelEntryAscii($ff_tag['tag'], $data['RelatedFileFormat']);
     $file_metadata->setMetadata('exif', ['interop', 'RelatedImageFileFormat'], $ff);
     $this->assertNotNull($file_metadata->getMetadata('exif', ['interop', 'RelatedImageFileFormat']));
-    $this->assertEquals($data['RelatedFileFormat'], $file_metadata->getMetadata('exif', ['interop', 'RelatedImageFileFormat'])['text']);
+    $this->assertEquals(
+      $data['RelatedFileFormat'],
+      $file_metadata->getMetadata('exif', ['interop', 'RelatedImageFileFormat'])['text']
+    );
     $this->assertEquals(48, $this->countMetadataKeys($file_metadata, 'exif'));
     // Remove the InteroperabilityIndex tag from INTEROP.
     unset($data['InterOperabilityIndex']);
@@ -300,7 +312,7 @@ public function testJpegExifSaveToFile(): void {
     $this->assertEquals($data['GPSLongitude'], $data_reloaded['GPSLongitude']);
 
     // Test writing metadata to a file that has no EXIF info.
-    $this->fileSystem->copy('core/tests/fixtures/files/image-2.jpg', 'public://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy('core/tests/fixtures/files/image-2.jpg', 'public://', FileExists::Replace);
     $test_2 = $fmdm->uri('public://image-2.jpg');
     $this->assertEquals(0, $this->countMetadataKeys($test_2, 'exif'));
     // Load EXIF metadata from previous file processed.
@@ -343,7 +355,7 @@ public function testTiffExifSaveToFile(): void {
     $fmdm = $this->container->get(FileMetadataManagerInterface::class);
 
     // Copy test file to public://.
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/sample-1.tiff', 'public://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/sample-1.tiff', 'public://', FileExists::Replace);
     $file_uri = 'public://sample-1.tiff';
     $file_metadata = $fmdm->uri($file_uri);
 
diff --git a/web/modules/file_mdm/file_mdm_font/README.md b/web/modules/file_mdm/file_mdm_font/README.md
index 6b829140cf..0e9454c4ff 100644
--- a/web/modules/file_mdm/file_mdm_font/README.md
+++ b/web/modules/file_mdm/file_mdm_font/README.md
@@ -6,7 +6,7 @@ font files.
 
 ## Features:
 
-Uses the [PHP Font Lib](https://github.com/PhenX/php-font-lib) to read font
+Uses the [PHP Font Lib](https://github.com/dompdf/php-font-lib) to read font
 information from TTF/OTF/WOFF font files.
 
 
diff --git a/web/modules/file_mdm/file_mdm_font/file_mdm_font.info.yml b/web/modules/file_mdm/file_mdm_font/file_mdm_font.info.yml
index 635976f0c9..ed09ffbf07 100644
--- a/web/modules/file_mdm/file_mdm_font/file_mdm_font.info.yml
+++ b/web/modules/file_mdm/file_mdm_font/file_mdm_font.info.yml
@@ -1,5 +1,5 @@
 type: module
-core_version_requirement: ^10.1
+core_version_requirement: ^10.3 | ^11
 name: File metadata - Font
 description: 'Provides a file metadata plugin for TTF/OTF/WOFF font information.'
 package: File metadata
@@ -7,7 +7,7 @@ configure: file_mdm.settings
 dependencies:
   - file_mdm:file_mdm
 
-# Information added by Drupal.org packaging script on 2023-08-07
-version: '3.0.0'
+# Information added by Drupal.org packaging script on 2024-06-11
+version: '3.1.0'
 project: 'file_mdm'
-datestamp: 1691421185
+datestamp: 1718086270
diff --git a/web/modules/file_mdm/file_mdm_font/src/Plugin/FileMetadata/Font.php b/web/modules/file_mdm/file_mdm_font/src/Plugin/FileMetadata/Font.php
index 056dc5762e..50ca70259c 100644
--- a/web/modules/file_mdm/file_mdm_font/src/Plugin/FileMetadata/Font.php
+++ b/web/modules/file_mdm/file_mdm_font/src/Plugin/FileMetadata/Font.php
@@ -4,7 +4,9 @@
 
 namespace Drupal\file_mdm_font\Plugin\FileMetadata;
 
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\file_mdm\FileMetadataException;
+use Drupal\file_mdm\Plugin\Attribute\FileMetadata;
 use Drupal\file_mdm\Plugin\FileMetadata\FileMetadataPluginBase;
 use FontLib\Font as LibFont;
 use FontLib\Table\Type\name;
@@ -12,14 +14,13 @@
 /**
  * FileMetadata plugin for TTF/OTF/WOFF font information.
  *
- * Uses the 'PHP Font Lib' library (PhenX/php-font-lib).
- *
- * @FileMetadata(
- *   id = "font",
- *   title = @Translation("Font"),
- *   help = @Translation("File metadata plugin for TTF/OTF/WOFF font information, using the PHP Font Lib."),
- * )
+ * Uses the 'PHP Font Lib' library (dompdf/php-font-lib).
  */
+#[FileMetadata(
+  id: 'font',
+  title: new TranslatableMarkup('Font'),
+  help: new TranslatableMarkup('File metadata plugin for TTF/OTF/WOFF font information, using the PHP Font Lib.')
+)]
 class Font extends FileMetadataPluginBase {
 
   public function getSupportedKeys(array $options = NULL): array {
@@ -28,8 +29,8 @@ public function getSupportedKeys(array $options = NULL): array {
 
   protected function doGetMetadataFromFile(): mixed {
     $font = LibFont::load($this->getLocalTempPath());
-    // @todo ::parse raises 'Undefined offset' notices in phenx/php-font-lib
-    // 0.5, suppress errors while upstream is fixed.
+    // @todo The ::parse() method raises 'Undefined offset' notices in
+    //   phenx/php-font-lib 0.5, suppress errors while upstream is fixed.
     @$font->parse();
     $keys = $this->getSupportedKeys();
     $metadata = [];
diff --git a/web/modules/file_mdm/phpcs.xml.dist b/web/modules/file_mdm/phpcs.xml.dist
index 35c37681ef..043d4e591b 100644
--- a/web/modules/file_mdm/phpcs.xml.dist
+++ b/web/modules/file_mdm/phpcs.xml.dist
@@ -8,10 +8,10 @@
   <exclude-pattern>./README.md</exclude-pattern>
 
   <!--Use Drupal code rule.-->
-  <rule ref="../../../vendor/drupal/coder/coder_sniffer/Drupal"></rule>
+  <rule ref="vendor/drupal/coder/coder_sniffer/Drupal"></rule>
 
   <!--Use DrupalPractice code rule.-->
-  <rule ref="../../../vendor/drupal/coder/coder_sniffer/DrupalPractice"></rule>
+  <rule ref="vendor/drupal/coder/coder_sniffer/DrupalPractice"></rule>
 
   <rule ref="Drupal.Commenting.DocComment">
     <exclude name="Drupal.Commenting.DocComment.LongFullStop"/>
diff --git a/web/modules/file_mdm/phpstan-baseline.neon b/web/modules/file_mdm/phpstan-baseline.neon
index e288d27491..f7df7afc29 100644
--- a/web/modules/file_mdm/phpstan-baseline.neon
+++ b/web/modules/file_mdm/phpstan-baseline.neon
@@ -1,20 +1,5 @@
 parameters:
 	ignoreErrors:
-		-
-			message: "#^If condition is always true\\.$#"
-			count: 1
-			path: file_mdm_exif/src/Plugin/FileMetadata/Exif.php
-
-		-
-			message: "#^Strict comparison using \\=\\=\\= between lsolesen\\\\pel\\\\PelIfd and null will always evaluate to false\\.$#"
-			count: 11
-			path: file_mdm_exif/src/Plugin/FileMetadata/Exif.php
-
-		-
-			message: "#^Strict comparison using \\=\\=\\= between lsolesen\\\\pel\\\\PelTiff and null will always evaluate to false\\.$#"
-			count: 2
-			path: file_mdm_exif/src/Plugin/FileMetadata/Exif.php
-
 		-
 			message: "#^Parameter \\#2 \\$value of class lsolesen\\\\pel\\\\PelEntryShort constructor expects int\\|null, array\\<int, int\\> given\\.$#"
 			count: 1
diff --git a/web/modules/file_mdm/phpstan.neon.dist b/web/modules/file_mdm/phpstan.neon
similarity index 100%
rename from web/modules/file_mdm/phpstan.neon.dist
rename to web/modules/file_mdm/phpstan.neon
diff --git a/web/modules/file_mdm/src/Element/FileMetadataCaching.php b/web/modules/file_mdm/src/Element/FileMetadataCaching.php
index dd08d730c4..a99382e806 100644
--- a/web/modules/file_mdm/src/Element/FileMetadataCaching.php
+++ b/web/modules/file_mdm/src/Element/FileMetadataCaching.php
@@ -5,14 +5,14 @@
 namespace Drupal\file_mdm\Element;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Render\Element\FormElement;
+use Drupal\Core\Render\Attribute\RenderElement;
+use Drupal\Core\Render\Element\FormElementBase;
 
 /**
  * Implements a form element to enable capturing cache information for file_mdm.
- *
- * @FormElement("file_mdm_caching")
  */
-class FileMetadataCaching extends FormElement {
+#[RenderElement('file_mdm_caching')]
+class FileMetadataCaching extends FormElementBase {
 
   public function getInfo() {
     $class = get_class($this);
diff --git a/web/modules/file_mdm/src/FileMetadata.php b/web/modules/file_mdm/src/FileMetadata.php
index cc316f7ca1..4ea6c03bde 100644
--- a/web/modules/file_mdm/src/FileMetadata.php
+++ b/web/modules/file_mdm/src/FileMetadata.php
@@ -7,6 +7,7 @@
 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\File\Exception\FileNotExistsException;
+use Drupal\Core\File\FileExists;
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\file_mdm\Plugin\FileMetadataPluginInterface;
 use Drupal\file_mdm\Plugin\FileMetadataPluginManagerInterface;
@@ -70,7 +71,7 @@ public function copyUriToTemp(?string $tempUri = NULL): bool {
       $this->fileSystem->unlink($tempUri);
       $tempUri .= '.' . pathinfo($this->getUri(), PATHINFO_EXTENSION);
     }
-    if ($tempPath = $this->fileSystem->copy($this->getUri(), $this->fileSystem->realpath($tempUri), FileSystemInterface::EXISTS_REPLACE)) {
+    if ($tempPath = $this->fileSystem->copy($this->getUri(), $this->fileSystem->realpath($tempUri), FileExists::Replace)) {
       $this->setLocalTempPath($tempPath);
     }
     return (bool) $tempPath;
@@ -80,7 +81,7 @@ public function copyTempToUri(): bool {
     if (($tempPath = $this->getLocalTempPath()) === NULL) {
       return FALSE;
     }
-    return (bool) $this->fileSystem->copy($tempPath, $this->getUri(), FileSystemInterface::EXISTS_REPLACE);
+    return (bool) $this->fileSystem->copy($tempPath, $this->getUri(), FileExists::Replace);
   }
 
   public function getFileMetadataPlugin(string $metadataId): ?FileMetadataPluginInterface {
diff --git a/web/modules/file_mdm/src/FileMetadataManager.php b/web/modules/file_mdm/src/FileMetadataManager.php
index a163f9eb50..2b4f804ec5 100644
--- a/web/modules/file_mdm/src/FileMetadataManager.php
+++ b/web/modules/file_mdm/src/FileMetadataManager.php
@@ -11,6 +11,7 @@
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\file_mdm\Plugin\FileMetadataPluginManagerInterface;
 use Psr\Log\LoggerInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autowire;
 
 /**
  * A service class to provide file metadata.
@@ -28,9 +29,11 @@ class FileMetadataManager implements FileMetadataManagerInterface {
 
   public function __construct(
     protected readonly FileMetadataPluginManagerInterface $pluginManager,
+    #[Autowire(service: 'logger.channel.file_mdm')]
     protected readonly LoggerInterface $logger,
     protected readonly ConfigFactoryInterface $configFactory,
     protected readonly FileSystemInterface $fileSystem,
+    #[Autowire(service: 'cache.file_mdm')]
     protected readonly CacheBackendInterface $cache,
     protected readonly StreamWrapperManagerInterface $streamWrapperManager,
   ) {}
diff --git a/web/modules/file_mdm/src/Plugin/Attribute/FileMetadata.php b/web/modules/file_mdm/src/Plugin/Attribute/FileMetadata.php
new file mode 100644
index 0000000000..ca8a58a683
--- /dev/null
+++ b/web/modules/file_mdm/src/Plugin/Attribute/FileMetadata.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\file_mdm\Plugin\Attribute;
+
+use Drupal\Component\Plugin\Attribute\Plugin;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
+
+/**
+ * The FileMetadata attribute.
+ */
+#[\Attribute(\Attribute::TARGET_CLASS)]
+class FileMetadata extends Plugin {
+
+  /**
+   * @param string $id
+   *   The plugin ID.
+   * @param \Drupal\Core\StringTranslation\TranslatableMarkup $title
+   *   The title of the plugin.
+   * @param \Drupal\Core\StringTranslation\TranslatableMarkup $help
+   *   An informative description of the plugin.
+   */
+  public function __construct(
+    public readonly string $id,
+    public readonly TranslatableMarkup $title,
+    public readonly TranslatableMarkup $help,
+  ) {}
+
+}
diff --git a/web/modules/file_mdm/src/Plugin/FileMetadata/FileMetadataPluginBase.php b/web/modules/file_mdm/src/Plugin/FileMetadata/FileMetadataPluginBase.php
index e996a45ac8..abbd6da86b 100644
--- a/web/modules/file_mdm/src/Plugin/FileMetadata/FileMetadataPluginBase.php
+++ b/web/modules/file_mdm/src/Plugin/FileMetadata/FileMetadataPluginBase.php
@@ -96,7 +96,7 @@ public static function create(ContainerInterface $container, array $configuratio
       $plugin_definition,
       $container->get('cache.file_mdm'),
       $container->get(ConfigFactoryInterface::class),
-      $container->get(StreamWrapperManagerInterface::class)
+      $container->get(StreamWrapperManagerInterface::class),
     );
   }
 
@@ -424,7 +424,7 @@ public function saveMetadataToCache(array $tags = []): bool {
     if (($cache_settings = $this->isUriFileMetadataCacheable()) === FALSE) {
       return FALSE;
     }
-    if ($this->isMetadataLoaded !== FileMetadataInterface::LOADED_FROM_CACHE || ($this->isMetadataLoaded === FileMetadataInterface::LOADED_FROM_CACHE && $this->hasMetadataChangedFromCacheVersion)) {
+    if ($this->isMetadataLoaded !== FileMetadataInterface::LOADED_FROM_CACHE || $this->hasMetadataChangedFromCacheVersion) {
       $tags = Cache::mergeTags($tags, $this->getConfigObject()->getCacheTags());
       $tags = Cache::mergeTags($tags, $this->configFactory->get('file_mdm.settings')->getCacheTags());
       $expire = $cache_settings['expiration'] === -1 ? Cache::PERMANENT : time() + $cache_settings['expiration'];
diff --git a/web/modules/file_mdm/src/Plugin/FileMetadata/GetImageSize.php b/web/modules/file_mdm/src/Plugin/FileMetadata/GetImageSize.php
index 396f44149b..fd6caddca8 100644
--- a/web/modules/file_mdm/src/Plugin/FileMetadata/GetImageSize.php
+++ b/web/modules/file_mdm/src/Plugin/FileMetadata/GetImageSize.php
@@ -4,17 +4,18 @@
 
 namespace Drupal\file_mdm\Plugin\FileMetadata;
 
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\file_mdm\FileMetadataException;
+use Drupal\file_mdm\Plugin\Attribute\FileMetadata;
 
 /**
  * FileMetadata plugin for getimagesize.
- *
- * @FileMetadata(
- *   id = "getimagesize",
- *   title = @Translation("Getimagesize"),
- *   help = @Translation("File metadata plugin for PHP getimagesize()."),
- * )
  */
+#[FileMetadata(
+  id: 'getimagesize',
+  title: new TranslatableMarkup('Getimagesize'),
+  help: new TranslatableMarkup('File metadata plugin for PHP getimagesize().')
+)]
 class GetImageSize extends FileMetadataPluginBase {
 
   public function getSupportedKeys(array $options = NULL): array {
@@ -41,7 +42,7 @@ protected function doGetMetadataFromFile(): mixed {
    */
   protected function validateKey(mixed $key, string $method): bool {
     if (!in_array($key, $this->getSupportedKeys(), TRUE)) {
-      throw new FileMetadataException("Invalid metadata key '{$key}' specified", $this->getPluginId(), $method);
+      throw new FileMetadataException(sprintf("Invalid metadata key '%s' specified", var_export($key, TRUE)), $this->getPluginId(), $method);
     }
     return TRUE;
   }
diff --git a/web/modules/file_mdm/src/Plugin/FileMetadataPluginManager.php b/web/modules/file_mdm/src/Plugin/FileMetadataPluginManager.php
index 2de6c7f738..ccf66d1ce0 100644
--- a/web/modules/file_mdm/src/Plugin/FileMetadataPluginManager.php
+++ b/web/modules/file_mdm/src/Plugin/FileMetadataPluginManager.php
@@ -10,6 +10,8 @@
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Plugin\DefaultPluginManager;
 use Drupal\file_mdm\Plugin\Annotation\FileMetadata as FileMetadataAnnotation;
+use Drupal\file_mdm\Plugin\Attribute\FileMetadata as FileMetadataAttribute;
+use Symfony\Component\DependencyInjection\Attribute\Autowire;
 
 /**
  * Plugin manager for FileMetadata plugins.
@@ -17,12 +19,21 @@
 class FileMetadataPluginManager extends DefaultPluginManager implements FileMetadataPluginManagerInterface {
 
   public function __construct(
+    #[Autowire(service: 'container.namespaces')]
     \Traversable $namespaces,
+    #[Autowire(service: 'cache.discovery')]
     CacheBackendInterface $cache,
     ModuleHandlerInterface $module_handler,
     protected readonly ConfigFactoryInterface $configFactory,
   ) {
-    parent::__construct('Plugin/FileMetadata', $namespaces, $module_handler, FileMetadataPluginInterface::class, FileMetadataAnnotation::class);
+    parent::__construct(
+      'Plugin/FileMetadata',
+      $namespaces,
+      $module_handler,
+      FileMetadataPluginInterface::class,
+      FileMetadataAttribute::class,
+      FileMetadataAnnotation::class,
+    );
     $this->alterInfo('file_metadata_plugin_info');
     $this->setCacheBackend($cache, 'file_metadata_plugins');
   }
diff --git a/web/modules/file_mdm/tests/src/Functional/SettingsFormTest.php b/web/modules/file_mdm/tests/src/Functional/SettingsFormTest.php
index b02cc022c8..ea69595b91 100644
--- a/web/modules/file_mdm/tests/src/Functional/SettingsFormTest.php
+++ b/web/modules/file_mdm/tests/src/Functional/SettingsFormTest.php
@@ -44,7 +44,7 @@ public function testMissingFileLogging(): void {
     $this->assertSession()->statusCodeEquals(200);
 
     // Verify that by default the log level is ERROR.
-    $this->assertSession()->fieldValueEquals('missing_file_log_level', RfcLogLevel::ERROR);
+    $this->assertSession()->fieldValueEquals('missing_file_log_level', (string) RfcLogLevel::ERROR);
     $this->assertEquals(RfcLogLevel::ERROR, $this->config('file_mdm.settings')->get('missing_file_log_level'));
 
     // Try loading metadata for a non-existing file. We should get an entry in
diff --git a/web/modules/file_mdm/tests/src/Kernel/FileMetadataManagerTest.php b/web/modules/file_mdm/tests/src/Kernel/FileMetadataManagerTest.php
index 90cd9898a0..976a22dfa8 100644
--- a/web/modules/file_mdm/tests/src/Kernel/FileMetadataManagerTest.php
+++ b/web/modules/file_mdm/tests/src/Kernel/FileMetadataManagerTest.php
@@ -4,6 +4,7 @@
 
 namespace Drupal\Tests\file_mdm\Kernel;
 
+use Drupal\Core\File\FileExists;
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\file_mdm\FileMetadataInterface;
 use Drupal\file_mdm\FileMetadataManagerInterface;
@@ -22,8 +23,8 @@ class FileMetadataManagerTest extends FileMetadataManagerTestBase {
    */
   public function testFileMetadata(): void {
     // Prepare a copy of test files.
-    $this->fileSystem->copy('core/tests/fixtures/files/image-test.png', 'public://', FileSystemInterface::EXISTS_REPLACE);
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'public://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy('core/tests/fixtures/files/image-test.png', 'public://', FileExists::Replace);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'public://', FileExists::Replace);
     // The image files that will be tested.
     $image_files = [
       [
@@ -169,9 +170,9 @@ public function testFileMetadata(): void {
    */
   public function testFileMetadataCaching(): void {
     // Prepare a copy of test files.
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'public://', FileSystemInterface::EXISTS_REPLACE);
-    $this->fileSystem->copy('core/tests/fixtures/files/image-test.gif', 'public://', FileSystemInterface::EXISTS_REPLACE);
-    $this->fileSystem->copy('core/tests/fixtures/files/image-test.png', 'public://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'public://', FileExists::Replace);
+    $this->fileSystem->copy('core/tests/fixtures/files/image-test.gif', 'public://', FileExists::Replace);
+    $this->fileSystem->copy('core/tests/fixtures/files/image-test.png', 'public://', FileExists::Replace);
 
     // The image files that will be tested.
     $image_files = [
@@ -272,7 +273,7 @@ public function testFileMetadataCaching(): void {
         // Release URI.
         $file_metadata = NULL;
         $this->assertTrue($fmdm->release($image_file['uri']));
-        $this->assertSame(0, $fmdm->count());
+        $this->assertCount(0, $fmdm);
 
         // Read from cache.
         $file_metadata = $fmdm->uri($image_file['uri']);
@@ -283,7 +284,7 @@ public function testFileMetadataCaching(): void {
 
       $file_metadata = NULL;
       $this->assertTrue($fmdm->release($image_file['uri']));
-      $this->assertEquals(0, $fmdm->count());
+      $this->assertCount(0, $fmdm);
     }
   }
 
@@ -313,7 +314,7 @@ public function testRemoteFileSetLocalPath(): void {
     $fmdm = $this->container->get(FileMetadataManagerInterface::class);
 
     // Copy the test file to a temp location.
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'temporary://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'temporary://', FileExists::Replace);
 
     // Test setting local temp path explicitly. The files should be parsed
     // even if not available on the URI.
@@ -369,7 +370,7 @@ public function testRemoteFileCopy(): void {
     $file_system = $this->container->get('file_system');
 
     // Copy the test file to dummy-remote wrapper.
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'dummy-remote://', FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', 'dummy-remote://', FileExists::Replace);
 
     foreach ($image_files as $image_file) {
       $file_metadata = $fmdm->uri($image_file['uri']);
@@ -405,7 +406,7 @@ public function testSanitizedUri(): void {
     // Copy a test file to test directory.
     $test_directory = 'public://test-images/';
     $this->fileSystem->prepareDirectory($test_directory, FileSystemInterface::CREATE_DIRECTORY);
-    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', $test_directory, FileSystemInterface::EXISTS_REPLACE);
+    $this->fileSystem->copy($this->moduleList->getPath('file_mdm') . '/tests/files/test-exif.jpeg', $test_directory, FileExists::Replace);
 
     // Get file metadata object.
     $file_metadata = $fmdm->uri('public://test-images/test-exif.jpeg');
-- 
GitLab