download.lst                                                    |    8 
 package/inc/ZipFile.hxx                                         |   12 
 package/inc/ZipPackage.hxx                                      |   13 
 package/inc/ZipPackageStream.hxx                                |   25 
 package/source/zipapi/XUnbufferedStream.cxx                     |   17 
 package/source/zipapi/XUnbufferedStream.hxx                     |    4 
 package/source/zipapi/ZipFile.cxx                               |   49 
 package/source/zipapi/ZipOutputStream.cxx                       |    3 
 package/source/zippackage/ZipPackage.cxx                        |   48 
 package/source/zippackage/ZipPackageStream.cxx                  |  113 
 package/source/zippackage/zipfileaccess.cxx                     |    4 
 readlicense_oo/license/CREDITS.fodt                             | 3859 
+++++-----
 sc/source/ui/view/dbfunc.cxx                                    |    8 
 sc/source/ui/view/tabvwsha.cxx                                  |    3 
 sw/source/core/access/AccessibilityCheck.cxx                    |    6 
 xmlsecurity/CppunitTest_xmlsecurity_signing.mk                  |    1 
 xmlsecurity/qa/unit/signing/data/signature-forgery-cdh-lfh.docx |binary
 xmlsecurity/qa/unit/signing/signing.cxx                         |   27 
 18 files changed, 2180 insertions(+), 2020 deletions(-)

New commits:
commit 4c2642166b1d5b7fa88bc26f81515f1ee6cc47b5
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Sep 18 09:23:25 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:34 2024 +0200

    curl: upgrade to 8.10.1
    
    Downloaded from https://curl.se/download/curl-8.10.1.tar.xz
    
    Change-Id: If65882b06172e9caf93d941011baa49c84d4f054
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173630
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/download.lst b/download.lst
index c00c0e5b883d..01733eefb9f9 100644
--- a/download.lst
+++ b/download.lst
@@ -80,8 +80,8 @@ CPPUNIT_TARBALL := cppunit-1.15.1.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-CURL_SHA256SUM := 
e6b142f0e85e954759d37e26a3627e2278137595be80e3a860c4353e4335e5a0
-CURL_TARBALL := curl-8.10.0.tar.xz
+CURL_SHA256SUM := 
73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee
+CURL_TARBALL := curl-8.10.1.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit b246c10f124fd43522b3a761a69d8a37622db391
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Mon Sep 16 20:31:06 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    tdf#162866 package: fix loading AutoCorrect file with case-insensitive
    
    ... duplicates; the directory names of AutoCorrect entries are
    user-editable, so this needs to be supported.
    
    AutoCorrect uses an ODF package because the ODF document loading code
    requires the ODF document to be in an ODF storage with a MediaType
    property.
    
    AutoCorrect writes an empty mimetype file, and if such is present in an
    .odt file that is being loaded, existing checks will detect it as
    corrupted, so we can use this to check that the file is an AutoCorrect
    file and turn off the case-insensitive check.
    
    (regression from commit 4833f131243bdb409ddfaff8b4db87d4ed2af98f)
    
    Change-Id: I43887f7dad0c8cbb465b4c0f1c38bcc3244a7675
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173477
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    Tested-by: Jenkins
    (cherry picked from commit 9012355a60bd88db582078e38123863a4959b72f)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173493
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/package/inc/ZipFile.hxx b/package/inc/ZipFile.hxx
index 906f1fc5bd82..71f38cc3ebb4 100644
--- a/package/inc/ZipFile.hxx
+++ b/package/inc/ZipFile.hxx
@@ -54,7 +54,7 @@ class ZipEnumeration;
 class ZipFile
 {
 public:
-    enum class Checks { Default, CheckInsensitive };
+    enum class Checks { Default, CheckInsensitive, TryCheckInsensitive };
 
 private:
     rtl::Reference<comphelper::RefCountedMutex> m_aMutexHolder;
diff --git a/package/source/zipapi/ZipFile.cxx 
b/package/source/zipapi/ZipFile.cxx
index 01a8c16e2842..2e82433fb0da 100644
--- a/package/source/zipapi/ZipFile.cxx
+++ b/package/source/zipapi/ZipFile.cxx
@@ -1470,6 +1470,17 @@ sal_Int32 ZipFile::readCEN()
                 SAL_INFO("package", "Duplicate CEN entry: \"" << aEntry.sPath 
<< "\"");
                 throw ZipException(u"Duplicate CEN entry"_ustr);
             }
+            if (aEntries.empty() && m_Checks == Checks::TryCheckInsensitive)
+            {
+                if (aEntry.sPath == "mimetype" && aEntry.nSize == 0)
+                {   // tdf#162866 AutoCorrect uses ODF package, directories are
+                    m_Checks = Checks::Default; // user-defined => ignore!
+                }
+                else
+                {
+                    m_Checks = Checks::CheckInsensitive;
+                }
+            }
             // this is required for OOXML, but not for ODF
             auto const lowerPath(aEntry.sPath.toAsciiLowerCase());
             if (!m_EntriesInsensitive.insert(lowerPath).second && m_Checks == 
Checks::CheckInsensitive)
diff --git a/package/source/zippackage/ZipPackage.cxx 
b/package/source/zippackage/ZipPackage.cxx
index 7a133df16db6..91a82fe7fbdb 100644
--- a/package/source/zippackage/ZipPackage.cxx
+++ b/package/source/zippackage/ZipPackage.cxx
@@ -898,7 +898,11 @@ void SAL_CALL ZipPackage::initialize( const uno::Sequence< 
Any >& aArguments )
     {
         m_pZipFile.emplace(m_aMutexHolder, m_xContentStream, m_xContext, true,
             m_bForceRecovery,
-            m_nFormat == embed::StorageFormats::ZIP ? ZipFile::Checks::Default 
: ZipFile::Checks::CheckInsensitive);
+            m_nFormat == embed::StorageFormats::ZIP
+                ? ZipFile::Checks::Default
+                : m_nFormat == embed::StorageFormats::OFOPXML
+                    ? ZipFile::Checks::CheckInsensitive
+                    : ZipFile::Checks::TryCheckInsensitive);
         getZipFileContents();
     }
     catch ( IOException & e )
@@ -1273,7 +1277,11 @@ void ZipPackage::ConnectTo( const uno::Reference< 
io::XInputStream >& xInStream
     else
         m_pZipFile.emplace(m_aMutexHolder, m_xContentStream, m_xContext, false,
             false,
-            m_nFormat == embed::StorageFormats::ZIP ? ZipFile::Checks::Default 
: ZipFile::Checks::CheckInsensitive);
+            m_nFormat == embed::StorageFormats::ZIP
+                ? ZipFile::Checks::Default
+                : m_nFormat == embed::StorageFormats::OFOPXML
+                    ? ZipFile::Checks::CheckInsensitive
+                    : ZipFile::Checks::TryCheckInsensitive);
 }
 
 uno::Reference< io::XInputStream > ZipPackage::writeTempFile()
commit 1729a7fa059c52f12b342cd40ed55435e52bb5f2
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Jul 3 18:00:38 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    xmlsecurity: add unit test with docx that can only be opened with repair
    
    Change-Id: I4f705dd2124383a90b69d04d8b2de0e37f83a495
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170053
    Tested-by: Michael Stahl <michael.st...@allotropia.de>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 81e0b7e7c05d324fb77da7eda0d736fac5526b3e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173628
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Tested-by: Jenkins

diff --git a/xmlsecurity/CppunitTest_xmlsecurity_signing.mk 
b/xmlsecurity/CppunitTest_xmlsecurity_signing.mk
index 7339800107a7..37d1c2a7dea7 100644
--- a/xmlsecurity/CppunitTest_xmlsecurity_signing.mk
+++ b/xmlsecurity/CppunitTest_xmlsecurity_signing.mk
@@ -26,6 +26,7 @@ $(eval $(call 
gb_CppunitTest_use_libraries,xmlsecurity_signing, \
        subsequenttest \
        test \
        tl \
+       ucbhelper \
        unotest \
        utl \
        vcl \
diff --git a/xmlsecurity/qa/unit/signing/data/signature-forgery-cdh-lfh.docx 
b/xmlsecurity/qa/unit/signing/data/signature-forgery-cdh-lfh.docx
new file mode 100644
index 000000000000..532705ecf0b5
Binary files /dev/null and 
b/xmlsecurity/qa/unit/signing/data/signature-forgery-cdh-lfh.docx differ
diff --git a/xmlsecurity/qa/unit/signing/signing.cxx 
b/xmlsecurity/qa/unit/signing/signing.cxx
index a853de5e9367..a6cdef19b039 100644
--- a/xmlsecurity/qa/unit/signing/signing.cxx
+++ b/xmlsecurity/qa/unit/signing/signing.cxx
@@ -20,6 +20,7 @@
 #include <test/unoapixml_test.hxx>
 
 #include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/document/BrokenPackageRequest.hpp>
 #include <com/sun/star/embed/XStorage.hpp>
 #include <com/sun/star/embed/XTransactedObject.hpp>
 #include <com/sun/star/frame/XStorable.hpp>
@@ -47,6 +48,7 @@
 #include <biginteger.hxx>
 #include <certificate.hxx>
 #include <xsecctl.hxx>
+#include <ucbhelper/interceptedinteraction.hxx>
 #include <sfx2/docfile.hxx>
 #include <sfx2/docfilt.hxx>
 #include <officecfg/Office/Common.hxx>
@@ -1239,6 +1241,31 @@ CPPUNIT_TEST_FIXTURE(SigningTest, 
testODFUntrustedGoodGPG)
                                  SignatureState::NOTVALIDATED, nActual);
 }
 
+CPPUNIT_TEST_FIXTURE(SigningTest, testInvalidZIP)
+{
+    // set RepairPackage via interaction handler, same as soffice does
+    // - if it's passed to load the behavior is different, oddly enough.
+    std::vector<::ucbhelper::InterceptedInteraction::InterceptedRequest> 
interceptions{
+        { css::uno::Any(css::document::BrokenPackageRequest()),
+          cppu::UnoType<css::task::XInteractionApprove>::get(), 0 },
+    };
+    ::rtl::Reference<ucbhelper::InterceptedInteraction> pIH(new 
ucbhelper::InterceptedInteraction);
+    pIH->setInterceptions(std::move(interceptions));
+
+    uno::Sequence<beans::PropertyValue> args = { comphelper::makePropertyValue(
+        u"InteractionHandler"_ustr, 
uno::Reference<task::XInteractionHandler>(pIH)) };
+    loadWithParams(createFileURL(u"signature-forgery-cdh-lfh.docx"), args);
+    SfxBaseModel* pBaseModel = dynamic_cast<SfxBaseModel*>(mxComponent.get());
+    CPPUNIT_ASSERT(pBaseModel);
+    SfxObjectShell* pObjectShell = pBaseModel->GetObjectShell();
+    CPPUNIT_ASSERT(pObjectShell);
+    // the problem was that the document Zip structure is interpreted
+    // misleadingly in RepairPackage case, but signature was still returned
+    // as partially valid.
+    CPPUNIT_ASSERT_EQUAL(static_cast<int>(SignatureState::BROKEN),
+                         
static_cast<int>(pObjectShell->GetDocumentSignatureState()));
+}
+
 /// Test a typical broken ODF signature where one stream is corrupted.
 CPPUNIT_TEST_FIXTURE(SigningTest, testODFBrokenStreamGPG)
 {
commit 6d7c5d520b19d509a438d48d0483409084f7b604
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Tue Sep 17 11:47:05 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    package: tweak password fallback in ZipPackageStream::getDataStream()
    
    Fallbacks are only useful if an existing file is imported.
    
    It looks like it might have been possible to hit this case by storing a
    new document as ODF 1.1, and that sets m_bIsEncrypted but not
    m_oImportedAlgorithms (as Mike Kaganski pointed out), haven't tried it.
    
    Change-Id: Ia82c2e43372f50aa4e7ad9c2c62878986295c815
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173551
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit e22f1a2993d1c675ed8017090d1557d74d8b2917)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173504
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/package/source/zippackage/ZipPackageStream.cxx 
b/package/source/zippackage/ZipPackageStream.cxx
index 09f66fcd7c6c..ab57afb7c1bc 100644
--- a/package/source/zippackage/ZipPackageStream.cxx
+++ b/package/source/zippackage/ZipPackageStream.cxx
@@ -1029,7 +1029,8 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
             // note: due to SHA1 check this fallback is only done for
             // * ODF 1.2 files written by OOo < 3.4beta / LO < 3.5
             // * ODF 1.1/OOoXML files written by any version
-            if ( m_rZipPackage.GetStartKeyGenID() == 
xml::crypto::DigestID::SHA1 )
+            if (m_oImportedAlgorithms
+                && m_oImportedAlgorithms->nImportedStartKeyAlgorithm == 
xml::crypto::DigestID::SHA1)
             {
                 SAL_WARN("package", "ZipPackageStream::getDataStream(): SHA1 
mismatch, trying fallbacks...");
                 try
commit 4c425ea2752fff8905ede0be57c7a9e641aefadf
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Fri Sep 13 16:26:29 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    tdf#162841 package: fix loading AES-GCM encrypted macros from ODF
    
    The problem is that ZipPackageStream::GetEncryptionData() doesn't handle
    the checksum correctly; what is required here is *no checksum* but the
    check of m_oImportedChecksumAlgorithm results in calling
    m_rZipPackage.GetChecksumAlgID() instead, so it ends up in invalid
    situation and assert:
    
      package/source/zippackage/ZipPackageStream.cxx:656: virtual bool 
ZipPackageStream::saveChild(): Assertion `xEncData->m_nEncAlg != 
xml::crypto::CipherID::AES_GCM_W3C' failed.
    
    Refactor this so all the imported algorithm identifiers are in a struct
    in a std::optional member.
    
    (regression from commit 09f23a3dc5cd571df347cba9b003195de35f3ddd)
    
    Change-Id: I4b705520cd9bc800ce3c8611f8ad01a1e1008929
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173342
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    Tested-by: Jenkins
    (cherry picked from commit 6e76e8a210e51e7c79e0e845c7a4c0db9fb55abc)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173396
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/package/inc/ZipPackage.hxx b/package/inc/ZipPackage.hxx
index 9848396dcf11..293e0849a39e 100644
--- a/package/inc/ZipPackage.hxx
+++ b/package/inc/ZipPackage.hxx
@@ -58,6 +58,8 @@ enum InitialisationMode
     e_IMode_XStream
 };
 
+sal_Int32 GetDefaultDerivedKeySize(sal_Int32 nCipherID);
+
 class ZipPackage final : public cppu::WeakImplHelper
                     <
                        css::lang::XInitialization,
@@ -128,16 +130,7 @@ public:
     sal_Int32 GetEncAlgID() const { return m_nCommonEncryptionID; }
     ::std::optional<sal_Int32> GetChecksumAlgID() const { return 
m_oChecksumDigestID; }
     sal_Int32 GetDefaultDerivedKeySize() const {
-        switch (m_nCommonEncryptionID)
-        {
-            case css::xml::crypto::CipherID::BLOWFISH_CFB_8:
-                return 16;
-            case css::xml::crypto::CipherID::AES_CBC_W3C_PADDING:
-            case css::xml::crypto::CipherID::AES_GCM_W3C:
-                return 32;
-            default:
-                O3TL_UNREACHABLE;
-        }
+        return ::GetDefaultDerivedKeySize(m_nCommonEncryptionID);
     }
 
     rtl::Reference<comphelper::RefCountedMutex>& GetSharedMutexRef() { return 
m_aMutexHolder; }
diff --git a/package/inc/ZipPackageStream.hxx b/package/inc/ZipPackageStream.hxx
index a6f874b0d4d7..91b8374df009 100644
--- a/package/inc/ZipPackageStream.hxx
+++ b/package/inc/ZipPackageStream.hxx
@@ -36,6 +36,18 @@
 #define PACKAGE_STREAM_DATA             3
 #define PACKAGE_STREAM_RAW              4
 
+struct ImportedAlgorithms
+{
+    sal_Int32 nImportedStartKeyAlgorithm;
+    sal_Int32 nImportedEncryptionAlgorithm;
+    // optional because it is not used with AEAD
+    ::std::optional<sal_Int32> oImportedChecksumAlgorithm;
+    // GPG encrypted ODF does not have this in the file, but don't use optional
+    // here because it depends on the nImportedEncryptionAlgorithm of the same
+    // entry, so theoretically it could be different for different entries.
+    sal_Int32 nImportedDerivedKeySize;
+};
+
 class ZipPackage;
 struct ZipEntry;
 class ZipPackageStream final : public cppu::ImplInheritanceHelper
@@ -54,10 +66,7 @@ private:
     css::uno::Sequence< css::beans::NamedValue > m_aStorageEncryptionKeys;
     css::uno::Sequence< sal_Int8 > m_aEncryptionKey;
 
-    sal_Int32 m_nImportedStartKeyAlgorithm;
-    sal_Int32 m_nImportedEncryptionAlgorithm;
-    ::std::optional<sal_Int32> m_oImportedChecksumAlgorithm;
-    sal_Int32 m_nImportedDerivedKeySize;
+    ::std::optional<ImportedAlgorithms> m_oImportedAlgorithms;
 
     sal_uInt8   m_nStreamMode;
     sal_uInt32  m_nMagicalHackPos;
@@ -94,10 +103,10 @@ public:
 
     void SetToBeCompressed (bool bNewValue) { m_bToBeCompressed = bNewValue;}
     void SetIsEncrypted (bool bNewValue) { m_bIsEncrypted = bNewValue;}
-    void SetImportedStartKeyAlgorithm( sal_Int32 nAlgorithm ) { 
m_nImportedStartKeyAlgorithm = nAlgorithm; }
-    void SetImportedEncryptionAlgorithm( sal_Int32 nAlgorithm ) { 
m_nImportedEncryptionAlgorithm = nAlgorithm; }
-    void SetImportedChecksumAlgorithm(::std::optional<sal_Int32> const& 
roAlgorithm) { m_oImportedChecksumAlgorithm = roAlgorithm; }
-    void SetImportedDerivedKeySize( sal_Int32 nSize ) { 
m_nImportedDerivedKeySize = nSize; }
+    void SetImportedAlgorithms(ImportedAlgorithms const algorithms)
+    {
+        m_oImportedAlgorithms.emplace(algorithms);
+    }
     void SetToBeEncrypted (bool bNewValue)
     {
         m_bToBeEncrypted  = bNewValue;
diff --git a/package/source/zippackage/ZipPackage.cxx 
b/package/source/zippackage/ZipPackage.cxx
index 4d206962eae3..7a133df16db6 100644
--- a/package/source/zippackage/ZipPackage.cxx
+++ b/package/source/zippackage/ZipPackage.cxx
@@ -135,6 +135,20 @@ class DummyInputStream : public ::cppu::WeakImplHelper< 
XInputStream >
         {}
 };
 
+} // namespace
+
+sal_Int32 GetDefaultDerivedKeySize(sal_Int32 const nCipherID)
+{
+    switch (nCipherID)
+    {
+        case css::xml::crypto::CipherID::BLOWFISH_CFB_8:
+            return 16;
+        case css::xml::crypto::CipherID::AES_CBC_W3C_PADDING:
+        case css::xml::crypto::CipherID::AES_GCM_W3C:
+            return 32;
+        default:
+            O3TL_UNREACHABLE;
+    }
 }
 
 ZipPackage::ZipPackage ( uno::Reference < XComponentContext > xContext )
@@ -320,11 +334,9 @@ void ZipPackage::parseManifest()
 
                                         assert(pDigestAlg->has<sal_Int32>());
                                         
oDigestAlg.emplace(pDigestAlg->get<sal_Int32>());
-                                        
pStream->SetImportedChecksumAlgorithm(oDigestAlg);
                                     }
 
                                     *pEncryptionAlg >>= nEncryptionAlg;
-                                    pStream->SetImportedEncryptionAlgorithm( 
nEncryptionAlg );
 
                                     *pKeyInfo >>= m_aGpgProps;
 
@@ -338,7 +350,14 @@ void ZipPackage::parseManifest()
                                     // c.f. 
ZipPackageStream::GetEncryptionKey()
                                     // trying to get key value from properties
                                     const sal_Int32 nStartKeyAlg = 
xml::crypto::DigestID::SHA256;
-                                    pStream->SetImportedStartKeyAlgorithm( 
nStartKeyAlg );
+
+                                    pStream->SetImportedAlgorithms({
+                                        .nImportedStartKeyAlgorithm = 
nStartKeyAlg,
+                                        .nImportedEncryptionAlgorithm = 
nEncryptionAlg,
+                                        .oImportedChecksumAlgorithm = 
oDigestAlg,
+                                        // note m_nCommonEncryptionID is not 
inited yet here
+                                        .nImportedDerivedKeySize = 
::GetDefaultDerivedKeySize(nEncryptionAlg),
+                                        });
 
                                     if (!m_bHasEncryptedEntries
                                         && (pStream->getName() == "content.xml"
@@ -405,19 +424,22 @@ void ZipPackage::parseManifest()
 
                                         assert(pDigestAlg->has<sal_Int32>());
                                         
oDigestAlg.emplace(pDigestAlg->get<sal_Int32>());
-                                        
pStream->SetImportedChecksumAlgorithm(oDigestAlg);
                                     }
 
                                     *pEncryptionAlg >>= nEncryptionAlg;
-                                    pStream->SetImportedEncryptionAlgorithm( 
nEncryptionAlg );
 
                                     if ( pDerivedKeySize )
                                         *pDerivedKeySize >>= nDerivedKeySize;
-                                    pStream->SetImportedDerivedKeySize( 
nDerivedKeySize );
 
                                     if ( pStartKeyAlg )
                                         *pStartKeyAlg >>= nStartKeyAlg;
-                                    pStream->SetImportedStartKeyAlgorithm( 
nStartKeyAlg );
+
+                                    pStream->SetImportedAlgorithms({
+                                        .nImportedStartKeyAlgorithm = 
nStartKeyAlg,
+                                        .nImportedEncryptionAlgorithm = 
nEncryptionAlg,
+                                        .oImportedChecksumAlgorithm = 
oDigestAlg,
+                                        .nImportedDerivedKeySize = 
nDerivedKeySize,
+                                        });
 
                                     pStream->SetToBeCompressed ( true );
                                     pStream->SetToBeEncrypted ( true );
diff --git a/package/source/zippackage/ZipPackageStream.cxx 
b/package/source/zippackage/ZipPackageStream.cxx
index 84fae23d0f2a..09f66fcd7c6c 100644
--- a/package/source/zippackage/ZipPackageStream.cxx
+++ b/package/source/zippackage/ZipPackageStream.cxx
@@ -84,9 +84,6 @@ ZipPackageStream::ZipPackageStream ( ZipPackage & rNewPackage,
 , m_bToBeEncrypted ( false )
 , m_bHaveOwnKey ( false )
 , m_bIsEncrypted ( false )
-, m_nImportedStartKeyAlgorithm( 0 )
-, m_nImportedEncryptionAlgorithm( 0 )
-, m_nImportedDerivedKeySize( 0 )
 , m_nStreamMode( PACKAGE_STREAM_NOTSET )
 , m_nMagicalHackPos( 0 )
 , m_nMagicalHackSize( 0 )
@@ -186,7 +183,9 @@ uno::Reference< io::XInputStream > 
ZipPackageStream::GetRawEncrStreamNoHeaderCop
 
 sal_Int32 ZipPackageStream::GetEncryptionAlgorithm() const
 {
-    return m_nImportedEncryptionAlgorithm ? m_nImportedEncryptionAlgorithm : 
m_rZipPackage.GetEncAlgID();
+    return m_oImportedAlgorithms
+        ? m_oImportedAlgorithms->nImportedEncryptionAlgorithm
+        : m_rZipPackage.GetEncAlgID();
 }
 
 sal_Int32 ZipPackageStream::GetIVSize() const
@@ -212,8 +211,8 @@ sal_Int32 ZipPackageStream::GetIVSize() const
             *m_xBaseEncryptionData,
             GetEncryptionKey(bugs),
             GetEncryptionAlgorithm(),
-            m_oImportedChecksumAlgorithm ? m_oImportedChecksumAlgorithm : 
m_rZipPackage.GetChecksumAlgID(),
-            m_nImportedDerivedKeySize ? m_nImportedDerivedKeySize : 
m_rZipPackage.GetDefaultDerivedKeySize(),
+            m_oImportedAlgorithms ? 
m_oImportedAlgorithms->oImportedChecksumAlgorithm : 
m_rZipPackage.GetChecksumAlgID(),
+            m_oImportedAlgorithms ? 
m_oImportedAlgorithms->nImportedDerivedKeySize : 
m_rZipPackage.GetDefaultDerivedKeySize(),
             GetStartKeyGenID(),
             bugs != Bugs::None);
 
@@ -264,7 +263,9 @@ sal_Int32 ZipPackageStream::GetStartKeyGenID() const
 {
     // generally should all the streams use the same Start Key
     // but if raw copy without password takes place, we should preserve the 
imported algorithm
-    return m_nImportedStartKeyAlgorithm ? m_nImportedStartKeyAlgorithm : 
m_rZipPackage.GetStartKeyGenID();
+    return m_oImportedAlgorithms
+        ? m_oImportedAlgorithms->nImportedStartKeyAlgorithm
+        : m_rZipPackage.GetStartKeyGenID();
 }
 
 uno::Reference< io::XInputStream > 
ZipPackageStream::TryToGetRawFromDataStream( bool bAddHeaderForEncr )
@@ -401,17 +402,14 @@ bool ZipPackageStream::ParsePackageRawStream()
                                                         + 
xTempEncrData->m_aInitVector.getLength()
                                                         + 
xTempEncrData->m_aDigest.getLength()
                                                         + 
aMediaType.getLength() * sizeof( sal_Unicode );
-                    m_nImportedEncryptionAlgorithm = nEncAlgorithm;
-                    if (nChecksumAlgorithm == 0)
-                    {
-                        m_oImportedChecksumAlgorithm.reset();
-                    }
-                    else
-                    {
-                        
m_oImportedChecksumAlgorithm.emplace(nChecksumAlgorithm);
-                    }
-                    m_nImportedDerivedKeySize = nDerivedKeySize;
-                    m_nImportedStartKeyAlgorithm = nStartKeyGenID;
+                    m_oImportedAlgorithms.emplace(ImportedAlgorithms{
+                        .nImportedStartKeyAlgorithm = nStartKeyGenID,
+                        .nImportedEncryptionAlgorithm = nEncAlgorithm,
+                        .oImportedChecksumAlgorithm = nChecksumAlgorithm == 0
+                            ? ::std::optional<sal_Int32>{}
+                            : ::std::optional<sal_Int32>{nChecksumAlgorithm},
+                        .nImportedDerivedKeySize = nDerivedKeySize,
+                        });
                     m_nMagicalHackSize = nMagHackSize;
                     msMediaType = aMediaType;
 
@@ -928,7 +926,7 @@ void SAL_CALL ZipPackageStream::setInputStream( const 
uno::Reference< io::XInput
 {
     // if seekable access is required the wrapping will be done on demand
     m_xStream = aStream;
-    m_nImportedEncryptionAlgorithm = 0;
+    m_oImportedAlgorithms.reset();
     m_bHasSeekable = false;
     SetPackageMember ( false );
     aEntry.nTime = -1;
@@ -1054,7 +1052,7 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
                     // missing a specified startkey of SHA256
 
                     // force SHA256 and see if that works
-                    m_nImportedStartKeyAlgorithm = 
xml::crypto::DigestID::SHA256;
+                    m_oImportedAlgorithms->nImportedStartKeyAlgorithm = 
xml::crypto::DigestID::SHA256;
                     xResult = m_rZipPackage.getZipFile().getDataStream(aEntry,
                         GetEncryptionData(), oDecryptedSize,
                         m_rZipPackage.GetSharedMutexRef());
@@ -1064,7 +1062,7 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
                 {
                     // if that didn't work, restore to SHA1 and trundle 
through the *other* earlier
                     // bug fix
-                    m_nImportedStartKeyAlgorithm = xml::crypto::DigestID::SHA1;
+                    m_oImportedAlgorithms->nImportedStartKeyAlgorithm = 
xml::crypto::DigestID::SHA1;
                 }
 
                 // workaround for the encrypted documents generated with the 
old OOo1.x bug.
commit c8ff76bc5989515471bf560d234936d7225bac60
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Mon Sep 16 16:13:15 2024 +0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    tdf#162987: check return value of GetViewBindings
    
    Change-Id: Iaeec22ed07e18aa59f2ab87b2ea7d8a0c7ae1467
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173435
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    (cherry picked from commit 7cebd7df0cfcbf906848bfbbdee614fdbd90af8a)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173488
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx
index fe68d386195c..0f24677ab25c 100644
--- a/sc/source/ui/view/dbfunc.cxx
+++ b/sc/source/ui/view/dbfunc.cxx
@@ -407,9 +407,11 @@ void ScDBFunc::ModifiedAutoFilter(ScDocShell* pDocSh)
     ScDocShellModificator aModificator(*pDocSh);
     aModificator.SetDocumentModified();
 
-    SfxBindings* pBindings = pDocSh->GetViewBindings();
-    pBindings->Invalidate(SID_AUTO_FILTER);
-    pBindings->Invalidate(SID_AUTOFILTER_HIDE);
+    if (SfxBindings* pBindings = pDocSh->GetViewBindings())
+    {
+        pBindings->Invalidate(SID_AUTO_FILTER);
+        pBindings->Invalidate(SID_AUTOFILTER_HIDE);
+    }
 }
 
 //      just hide, no data change
commit 6283511a57a7d66f850744981bab3cab35d0d5ce
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Mon Sep 16 16:14:33 2024 +0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    Check return value of GetViewBindings
    
    ... as done in all other places where it's called
    
    Change-Id: Ic941cf433e96bb8bfa6ea81c52c044cc424100eb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173436
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    (cherry picked from commit 5eab23392c5c80ae9cf712c4e7fba21cfff02dae)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173490
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
index c332c9542a66..ead308730fd9 100644
--- a/sc/source/ui/view/tabvwsha.cxx
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -842,7 +842,8 @@ void ScTabViewShell::ExecuteSave( SfxRequest& rReq )
             // This will work only if .uno:ModifiedStatus message will be 
removed from
             // the mechanism that keeps in the message queue only last message 
of
             // a particular status even if the values are different.
-            
GetViewData().GetDocShell()->GetViewBindings()->Update(SID_DOC_MODIFIED);
+            if (SfxBindings* pBindings = 
GetViewData().GetDocShell()->GetViewBindings())
+                pBindings->Update(SID_DOC_MODIFIED);
         }
     }
 
commit 81768386841c625d0a1ce307ff1d64625431185d
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Thu Sep 12 18:24:27 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    tdf#162823 package: fix loss of ODF encrypted basic macros
    
    The problem is that there is a ZipEntry ZipPackageStream::aEntry which
    does not necessarily correspond to the values read from the Zip central
    directory, because of a call to ZipPackageStream::setSize() in
    ZipPackageStream::successfullyWritten() to override nSize and nMethod
    for encrypted entries.
    
    This triggers the consistency checks in readLOC(), where this aEntry is
    passed.
    
    Refactor things so that ZipPackageStream::aEntry and thus hopefully all
    ZipEntry instances correspond to the Zip file's central directory.
    
    For encrypted entries, store the decompressed size (which is read from
    manifest.xml) in m_nOwnStreamOrigSize and pass it as a separate
    parameter to the ZipFile functions that need it, and ultimately to
    XUnbufferedStream, resolving multiple TODO comments.
    
    (regression from commit efae4fc42d5fe3c0a69757226f38efc10d101194)
    
    Change-Id: Ib6ea32595c6027b98da9196a2e2bd0a99b62a983
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173273
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    Tested-by: Jenkins
    (cherry picked from commit 33d55465d9f81863b88d649a46353cc4d19cd253)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173297
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/package/inc/ZipFile.hxx b/package/inc/ZipFile.hxx
index d7a7d773b9b0..906f1fc5bd82 100644
--- a/package/inc/ZipFile.hxx
+++ b/package/inc/ZipFile.hxx
@@ -76,12 +76,13 @@ private:
             ZipEntry const & rEntry,
             const ::rtl::Reference < EncryptionData > &rData,
             sal_Int8 nStreamMode,
-            bool bDecrypt,
+            ::std::optional<sal_Int64> oDecryptedSize,
             const bool bUseBufferedStream = true,
             const OUString& aMediaType = OUString() );
 
     css::uno::Reference<css::io::XInputStream> checkValidPassword(
             ZipEntry const& rEntry, rtl::Reference<EncryptionData> const& 
rData,
+            sal_Int64 nDecryptedSize,
             rtl::Reference<comphelper::RefCountedMutex> const& rMutexHolder);
 
     bool checkSizeAndCRC( const ZipEntry& aEntry );
@@ -116,7 +117,7 @@ public:
     css::uno::Reference< css::io::XInputStream > getRawData(
             ZipEntry& rEntry,
             const ::rtl::Reference < EncryptionData > &rData,
-            bool bDecrypt,
+            ::std::optional<sal_Int64> oDecryptedSize,
             const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder,
             const bool bUseBufferedStream = true );
 
@@ -157,18 +158,19 @@ public:
     css::uno::Reference< css::io::XInputStream > getInputStream(
             ZipEntry& rEntry,
             const ::rtl::Reference < EncryptionData > &rData,
-            bool bDecrypt,
+            ::std::optional<sal_Int64> oDecryptedSize,
             const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder );
 
     css::uno::Reference< css::io::XInputStream > getDataStream(
             ZipEntry& rEntry,
             const ::rtl::Reference < EncryptionData > &rData,
-            bool bDecrypt,
+            ::std::optional<sal_Int64> oEncryptedSize,
             const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder );
 
     css::uno::Reference< css::io::XInputStream > getWrappedRawStream(
             ZipEntry& rEntry,
             const ::rtl::Reference < EncryptionData > &rData,
+            sal_Int64 nDecryptedSize,
             const OUString& aMediaType,
             const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder );
 
diff --git a/package/source/zipapi/XUnbufferedStream.cxx 
b/package/source/zipapi/XUnbufferedStream.cxx
index 8b628b14ddfe..4a65a54c7c08 100644
--- a/package/source/zipapi/XUnbufferedStream.cxx
+++ b/package/source/zipapi/XUnbufferedStream.cxx
@@ -47,7 +47,7 @@ XUnbufferedStream::XUnbufferedStream(
                       Reference < XInputStream > const & xNewZipStream,
                       const ::rtl::Reference< EncryptionData >& rData,
                       sal_Int8 nStreamMode,
-                      bool bIsEncrypted,
+                      ::std::optional<sal_Int64> const oDecryptedSize,
                       const OUString& aMediaType,
                       bool bRecoveryMode )
 : maMutexHolder(std::move( aMutexHolder ))
@@ -66,16 +66,17 @@ XUnbufferedStream::XUnbufferedStream(
 , mbCheckCRC(!bRecoveryMode)
 {
     mnZipCurrent = maEntry.nOffset;
-    sal_Int64 nSize;
+    sal_Int64 nSize; // data size in the zip file
+    assert(maEntry.nMethod != STORED || maEntry.nCompressedSize == 
maEntry.nSize);
     if ( mbRawStream )
     {
-        mnZipSize = maEntry.nMethod == DEFLATED ? maEntry.nCompressedSize : 
maEntry.nSize;
+        mnZipSize = maEntry.nCompressedSize;
         nSize = mnZipSize;
     }
     else
     {
-        mnZipSize = maEntry.nSize;
-        nSize = maEntry.nMethod == DEFLATED ? maEntry.nCompressedSize : 
maEntry.nSize;
+        mnZipSize = oDecryptedSize ? *oDecryptedSize : maEntry.nSize;
+        nSize = maEntry.nCompressedSize;
     }
 
     if (mnZipSize < 0)
@@ -88,7 +89,7 @@ XUnbufferedStream::XUnbufferedStream(
         ((rData->m_aSalt.hasElements() && (rData->m_oPBKDFIterationCount || 
rData->m_oArgon2Args))
          ||
          rData->m_aKey.hasElements());
-    bool bMustDecrypt = nStreamMode == UNBUFF_STREAM_DATA && bHaveEncryptData 
&& bIsEncrypted;
+    bool bMustDecrypt = nStreamMode == UNBUFF_STREAM_DATA && bHaveEncryptData 
&& oDecryptedSize;
 
     if ( bMustDecrypt )
     {
@@ -97,7 +98,7 @@ XUnbufferedStream::XUnbufferedStream(
         mnBlockSize = ( rData->m_nEncAlg == 
xml::crypto::CipherID::AES_CBC_W3C_PADDING ? 16 : 1 );
     }
 
-    if ( !(bHaveEncryptData && mbWrappedRaw && bIsEncrypted) )
+    if (!(bHaveEncryptData && mbWrappedRaw && oDecryptedSize))
         return;
 
     // if we have the data needed to decrypt it, but didn't want it decrypted 
(or
@@ -111,7 +112,7 @@ XUnbufferedStream::XUnbufferedStream(
                         rData->m_aDigest.getLength() +
                         aMediaType.getLength() * sizeof( sal_Unicode ) );
     sal_Int8 * pHeader = maHeader.getArray();
-    ZipFile::StaticFillHeader( rData, rEntry.nSize, aMediaType, pHeader );
+    ZipFile::StaticFillHeader(rData, *oDecryptedSize, aMediaType, pHeader);
     mnHeaderToRead = static_cast < sal_Int16 > ( maHeader.getLength() );
     mnZipSize += mnHeaderToRead;
 }
diff --git a/package/source/zipapi/XUnbufferedStream.hxx 
b/package/source/zipapi/XUnbufferedStream.hxx
index af57706386c3..f3efe0aaecce 100644
--- a/package/source/zipapi/XUnbufferedStream.hxx
+++ b/package/source/zipapi/XUnbufferedStream.hxx
@@ -19,6 +19,8 @@
 #ifndef INCLUDED_PACKAGE_SOURCE_ZIPAPI_XUNBUFFEREDSTREAM_HXX
 #define INCLUDED_PACKAGE_SOURCE_ZIPAPI_XUNBUFFEREDSTREAM_HXX
 
+#include <optional>
+
 #include <com/sun/star/io/XSeekable.hpp>
 #include <com/sun/star/io/XInputStream.hpp>
 #include <com/sun/star/xml/crypto/XCipherContext.hpp>
@@ -67,7 +69,7 @@ public:
                  css::uno::Reference < css::io::XInputStream > const & 
xNewZipStream,
                  const ::rtl::Reference< EncryptionData >& rData,
                  sal_Int8 nStreamMode,
-                 bool bIsEncrypted,
+                 ::std::optional<sal_Int64> oDecryptedSize,
                  const OUString& aMediaType,
                  bool bRecoveryMode );
 
diff --git a/package/source/zipapi/ZipFile.cxx 
b/package/source/zipapi/ZipFile.cxx
index 80cd051c3787..01a8c16e2842 100644
--- a/package/source/zipapi/ZipFile.cxx
+++ b/package/source/zipapi/ZipFile.cxx
@@ -541,6 +541,7 @@ bool ZipFile::StaticHasValidPassword( const uno::Reference< 
uno::XComponentConte
 
 uno::Reference<io::XInputStream> ZipFile::checkValidPassword(
     ZipEntry const& rEntry, ::rtl::Reference<EncryptionData> const& rData,
+    sal_Int64 const nDecryptedSize,
     rtl::Reference<comphelper::RefCountedMutex> const& rMutex)
 {
     if (rData.is() && rData->m_nEncAlg == xml::crypto::CipherID::AES_GCM_W3C)
@@ -548,7 +549,7 @@ uno::Reference<io::XInputStream> 
ZipFile::checkValidPassword(
         try // the only way to find out: decrypt the whole stream, which will
         {   // check the tag
             uno::Reference<io::XInputStream> const xRet =
-                createStreamForZipEntry(rMutex, rEntry, rData, 
UNBUFF_STREAM_DATA, true);
+                createStreamForZipEntry(rMutex, rEntry, rData, 
UNBUFF_STREAM_DATA, nDecryptedSize);
             // currently XBufferedStream reads the whole stream in its ctor (to
             // verify the tag) - in case this gets changed, explicitly seek 
here
             uno::Reference<io::XSeekable> const xSeek(xRet, 
uno::UNO_QUERY_THROW);
@@ -580,7 +581,7 @@ uno::Reference<io::XInputStream> 
ZipFile::checkValidPassword(
         if (StaticHasValidPassword(m_xContext, aReadBuffer, rData))
         {
             return createStreamForZipEntry(
-                    rMutex, rEntry, rData, UNBUFF_STREAM_DATA, true);
+                    rMutex, rEntry, rData, UNBUFF_STREAM_DATA, nDecryptedSize);
         }
     }
 
@@ -702,14 +703,14 @@ uno::Reference< XInputStream > 
ZipFile::createStreamForZipEntry(
             ZipEntry const & rEntry,
             const ::rtl::Reference< EncryptionData > &rData,
             sal_Int8 nStreamMode,
-            bool bIsEncrypted,
+            ::std::optional<sal_Int64> const oDecryptedSize,
             const bool bUseBufferedStream,
             const OUString& aMediaType )
 {
     ::osl::MutexGuard aGuard( m_aMutexHolder->GetMutex() );
 
     rtl::Reference< XUnbufferedStream > xSrcStream = new XUnbufferedStream(
-        m_xContext, aMutexHolder, rEntry, xStream, rData, nStreamMode, 
bIsEncrypted, aMediaType, bRecoveryMode);
+        m_xContext, aMutexHolder, rEntry, xStream, rData, nStreamMode, 
oDecryptedSize, aMediaType, bRecoveryMode);
 
     if (!bUseBufferedStream)
         return xSrcStream;
@@ -808,7 +809,7 @@ ZipEnumeration ZipFile::entries()
 
 uno::Reference< XInputStream > ZipFile::getInputStream( ZipEntry& rEntry,
         const ::rtl::Reference< EncryptionData > &rData,
-        bool bIsEncrypted,
+        ::std::optional<sal_Int64> const oDecryptedSize,
         const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder )
 {
     ::osl::MutexGuard aGuard( m_aMutexHolder->GetMutex() );
@@ -821,9 +822,11 @@ uno::Reference< XInputStream > ZipFile::getInputStream( 
ZipEntry& rEntry,
 
     bool bNeedRawStream = rEntry.nMethod == STORED;
 
-    if (bIsEncrypted && rData.is())
+    if (oDecryptedSize && rData.is())
     {
-        uno::Reference<XInputStream> const xRet(checkValidPassword(rEntry, 
rData, aMutexHolder));
+        assert(oDecryptedSize);
+        uno::Reference<XInputStream> const xRet(
+            checkValidPassword(rEntry, rData, *oDecryptedSize, aMutexHolder));
         if (xRet.is())
         {
             return xRet;
@@ -835,12 +838,12 @@ uno::Reference< XInputStream > ZipFile::getInputStream( 
ZipEntry& rEntry,
                                     rEntry,
                                     rData,
                                     bNeedRawStream ? UNBUFF_STREAM_RAW : 
UNBUFF_STREAM_DATA,
-                                    bIsEncrypted );
+                                    oDecryptedSize);
 }
 
 uno::Reference< XInputStream > ZipFile::getDataStream( ZipEntry& rEntry,
         const ::rtl::Reference< EncryptionData > &rData,
-        bool bIsEncrypted,
+        ::std::optional<sal_Int64> const oDecryptedSize,
         const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder )
 {
     ::osl::MutexGuard aGuard( m_aMutexHolder->GetMutex() );
@@ -851,7 +854,7 @@ uno::Reference< XInputStream > ZipFile::getDataStream( 
ZipEntry& rEntry,
     // An exception must be thrown in case stream is encrypted and
     // there is no key or the key is wrong
     bool bNeedRawStream = false;
-    if ( bIsEncrypted )
+    if (oDecryptedSize)
     {
         // in case no digest is provided there is no way
         // to detect password correctness
@@ -862,7 +865,7 @@ uno::Reference< XInputStream > ZipFile::getDataStream( 
ZipEntry& rEntry,
         // check if we can decrypt it or not
         SAL_WARN_IF(rData->m_nEncAlg != xml::crypto::CipherID::AES_GCM_W3C && 
!rData->m_aDigest.hasElements(),
             "package", "Can't detect password correctness without digest!");
-        uno::Reference<XInputStream> const xRet(checkValidPassword(rEntry, 
rData, aMutexHolder));
+        uno::Reference<XInputStream> const xRet(checkValidPassword(rEntry, 
rData, *oDecryptedSize, aMutexHolder));
         if (!xRet.is())
         {
             throw packages::WrongPasswordException(THROW_WHERE);
@@ -876,12 +879,12 @@ uno::Reference< XInputStream > ZipFile::getDataStream( 
ZipEntry& rEntry,
                                     rEntry,
                                     rData,
                                     bNeedRawStream ? UNBUFF_STREAM_RAW : 
UNBUFF_STREAM_DATA,
-                                    bIsEncrypted );
+                                    oDecryptedSize);
 }
 
 uno::Reference< XInputStream > ZipFile::getRawData( ZipEntry& rEntry,
         const ::rtl::Reference< EncryptionData >& rData,
-        bool bIsEncrypted,
+        ::std::optional<sal_Int64> const oDecryptedSize,
         const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder,
         const bool bUseBufferedStream )
 {
@@ -890,12 +893,14 @@ uno::Reference< XInputStream > ZipFile::getRawData( 
ZipEntry& rEntry,
     if ( rEntry.nOffset <= 0 )
         readLOC( rEntry );
 
-    return createStreamForZipEntry ( aMutexHolder, rEntry, rData, 
UNBUFF_STREAM_RAW, bIsEncrypted, bUseBufferedStream );
+    return createStreamForZipEntry(aMutexHolder, rEntry, rData,
+            UNBUFF_STREAM_RAW, oDecryptedSize, bUseBufferedStream);
 }
 
 uno::Reference< XInputStream > ZipFile::getWrappedRawStream(
         ZipEntry& rEntry,
         const ::rtl::Reference< EncryptionData >& rData,
+        sal_Int64 const nDecryptedSize,
         const OUString& aMediaType,
         const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder )
 {
@@ -907,7 +912,8 @@ uno::Reference< XInputStream > ZipFile::getWrappedRawStream(
     if ( rEntry.nOffset <= 0 )
         readLOC( rEntry );
 
-    return createStreamForZipEntry ( aMutexHolder, rEntry, rData, 
UNBUFF_STREAM_WRAPPEDRAW, true, true, aMediaType );
+    return createStreamForZipEntry(aMutexHolder, rEntry, rData,
+            UNBUFF_STREAM_WRAPPEDRAW, nDecryptedSize, true, aMediaType);
 }
 
 sal_uInt64 ZipFile::readLOC(ZipEntry &rEntry)
diff --git a/package/source/zipapi/ZipOutputStream.cxx 
b/package/source/zipapi/ZipOutputStream.cxx
index 402a2930c0e2..bc15c599833b 100644
--- a/package/source/zipapi/ZipOutputStream.cxx
+++ b/package/source/zipapi/ZipOutputStream.cxx
@@ -87,7 +87,10 @@ void ZipOutputStream::rawCloseEntry( bool bEncrypt )
         writeDataDescriptor(*m_pCurrentEntry);
 
     if (bEncrypt)
+    {
         m_pCurrentEntry->nMethod = STORED;
+        assert(m_pCurrentEntry->nSize == m_pCurrentEntry->nCompressedSize);
+    }
 
     m_pCurrentEntry = nullptr;
 }
diff --git a/package/source/zippackage/ZipPackageStream.cxx 
b/package/source/zippackage/ZipPackageStream.cxx
index 35863f96c81f..84fae23d0f2a 100644
--- a/package/source/zippackage/ZipPackageStream.cxx
+++ b/package/source/zippackage/ZipPackageStream.cxx
@@ -133,6 +133,10 @@ void ZipPackageStream::setZipEntryOnLoading( const 
ZipEntry &rInEntry )
 
     if ( aEntry.nMethod == STORED )
         m_bToBeCompressed = false;
+
+    // this is called first, parseManifest may overwrite it if it's encrypted
+    assert(m_nOwnStreamOrigSize == 0);
+    m_nOwnStreamOrigSize = aEntry.nSize;
 }
 
 uno::Reference< io::XInputStream > const & ZipPackageStream::GetOwnSeekStream()
@@ -538,14 +542,11 @@ bool ZipPackageStream::saveChild(
                     OSL_ENSURE( !m_bRawStream || !(bToBeCompressed || 
bToBeEncrypted), "The stream is already encrypted!" );
                     xSeek->seek ( m_bRawStream ? m_nMagicalHackPos : 0 );
                     ImplSetStoredData ( *pTempEntry, xStream );
-
-                    // TODO/LATER: Get rid of hacks related to switching of 
Flag Method and Size properties!
                 }
                 else if ( bToBeEncrypted )
                 {
                     // this is the correct original size
-                    pTempEntry->nSize = xSeek->getLength();
-                    m_nOwnStreamOrigSize = pTempEntry->nSize;
+                    m_nOwnStreamOrigSize = xSeek->getLength();
                 }
 
                 xSeek->seek ( 0 );
@@ -907,10 +908,6 @@ void ZipPackageStream::successfullyWritten( ZipEntry const 
*pEntry )
     // Then copy it back afterwards...
     aEntry = *pEntry;
 
-    // TODO/LATER: get rid of this hack ( the encrypted stream size property 
is changed during saving )
-    if ( m_bIsEncrypted )
-        setSize( m_nOwnStreamOrigSize );
-
     aEntry.nOffset *= -1;
 }
 
@@ -944,7 +941,13 @@ uno::Reference< io::XInputStream > 
ZipPackageStream::getRawData()
     {
         if ( IsPackageMember() )
         {
-            return m_rZipPackage.getZipFile().getRawData( aEntry, 
GetEncryptionData(), m_bIsEncrypted, m_rZipPackage.GetSharedMutexRef(), 
false/*bUseBufferedStream*/ );
+            ::std::optional<sal_Int64> oDecryptedSize;
+            if (m_bIsEncrypted)
+            {
+                oDecryptedSize.emplace(m_nOwnStreamOrigSize);
+            }
+            return m_rZipPackage.getZipFile().getRawData( aEntry, 
GetEncryptionData(),
+                oDecryptedSize, m_rZipPackage.GetSharedMutexRef(), 
false/*bUseBufferedStream*/ );
         }
         else if ( GetOwnSeekStream().is() )
         {
@@ -971,7 +974,13 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getInputStream()
     {
         if ( IsPackageMember() )
         {
-            return m_rZipPackage.getZipFile().getInputStream( aEntry, 
GetEncryptionData(), m_bIsEncrypted, m_rZipPackage.GetSharedMutexRef() );
+            ::std::optional<sal_Int64> oDecryptedSize;
+            if (m_bIsEncrypted)
+            {
+                oDecryptedSize.emplace(m_nOwnStreamOrigSize);
+            }
+            return m_rZipPackage.getZipFile().getInputStream(aEntry, 
GetEncryptionData(),
+                    oDecryptedSize, m_rZipPackage.GetSharedMutexRef());
         }
         else if ( GetOwnSeekStream().is() )
         {
@@ -1006,9 +1015,16 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
     if ( IsPackageMember() )
     {
         uno::Reference< io::XInputStream > xResult;
+        ::std::optional<sal_Int64> oDecryptedSize;
+        if (m_bIsEncrypted)
+        {
+            oDecryptedSize.emplace(m_nOwnStreamOrigSize);
+        }
         try
         {
-            xResult = m_rZipPackage.getZipFile().getDataStream( aEntry, 
GetEncryptionData(Bugs::None), m_bIsEncrypted, 
m_rZipPackage.GetSharedMutexRef() );
+            xResult = m_rZipPackage.getZipFile().getDataStream(aEntry,
+                GetEncryptionData(Bugs::None), oDecryptedSize,
+                m_rZipPackage.GetSharedMutexRef());
         }
         catch( const packages::WrongPasswordException& )
         {
@@ -1020,7 +1036,9 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
                 SAL_WARN("package", "ZipPackageStream::getDataStream(): SHA1 
mismatch, trying fallbacks...");
                 try
                 {   // tdf#114939 try with legacy StarOffice SHA1 bug
-                    xResult = m_rZipPackage.getZipFile().getDataStream( 
aEntry, GetEncryptionData(Bugs::WrongSHA1), m_bIsEncrypted, 
m_rZipPackage.GetSharedMutexRef() );
+                    xResult = m_rZipPackage.getZipFile().getDataStream(aEntry,
+                        GetEncryptionData(Bugs::WrongSHA1), oDecryptedSize,
+                        m_rZipPackage.GetSharedMutexRef());
                     return xResult;
                 }
                 catch (const packages::WrongPasswordException&)
@@ -1037,7 +1055,9 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
 
                     // force SHA256 and see if that works
                     m_nImportedStartKeyAlgorithm = 
xml::crypto::DigestID::SHA256;
-                    xResult = m_rZipPackage.getZipFile().getDataStream( 
aEntry, GetEncryptionData(), m_bIsEncrypted, m_rZipPackage.GetSharedMutexRef() 
);
+                    xResult = m_rZipPackage.getZipFile().getDataStream(aEntry,
+                        GetEncryptionData(), oDecryptedSize,
+                        m_rZipPackage.GetSharedMutexRef());
                     return xResult;
                 }
                 catch (const packages::WrongPasswordException&)
@@ -1050,7 +1070,9 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getDataStream()
                 // workaround for the encrypted documents generated with the 
old OOo1.x bug.
                 if ( !m_bUseWinEncoding )
                 {
-                    xResult = m_rZipPackage.getZipFile().getDataStream( 
aEntry, GetEncryptionData(Bugs::WinEncodingWrongSHA1), m_bIsEncrypted, 
m_rZipPackage.GetSharedMutexRef() );
+                    xResult = m_rZipPackage.getZipFile().getDataStream(aEntry,
+                        GetEncryptionData(Bugs::WinEncodingWrongSHA1),
+                        oDecryptedSize, m_rZipPackage.GetSharedMutexRef());
                     m_bUseWinEncoding = true;
                 }
                 else
@@ -1086,7 +1108,8 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getRawStream()
         if ( !m_bIsEncrypted || !GetEncryptionData().is() )
             throw packages::NoEncryptionException(THROW_WHERE );
 
-        return m_rZipPackage.getZipFile().getWrappedRawStream( aEntry, 
GetEncryptionData(), msMediaType, m_rZipPackage.GetSharedMutexRef() );
+        return m_rZipPackage.getZipFile().getWrappedRawStream(aEntry, 
GetEncryptionData(),
+            m_nOwnStreamOrigSize, msMediaType, 
m_rZipPackage.GetSharedMutexRef());
     }
     else if ( GetOwnSeekStream().is() )
     {
@@ -1141,7 +1164,13 @@ uno::Reference< io::XInputStream > SAL_CALL 
ZipPackageStream::getPlainRawStream(
 
     if ( IsPackageMember() )
     {
-        return m_rZipPackage.getZipFile().getRawData( aEntry, 
GetEncryptionData(), m_bIsEncrypted, m_rZipPackage.GetSharedMutexRef() );
+        ::std::optional<sal_Int64> oDecryptedSize;
+        if (m_bIsEncrypted)
+        {
+            oDecryptedSize.emplace(m_nOwnStreamOrigSize);
+        }
+        return m_rZipPackage.getZipFile().getRawData(aEntry, 
GetEncryptionData(),
+            oDecryptedSize, m_rZipPackage.GetSharedMutexRef());
     }
     else if ( GetOwnSeekStream().is() )
     {
@@ -1181,7 +1210,7 @@ void SAL_CALL ZipPackageStream::setPropertyValue( const 
OUString& aPropertyName,
     }
     else if ( aPropertyName == "Size" )
     {
-        if ( !( aValue >>= aEntry.nSize ) )
+        if (!(aValue >>= m_nOwnStreamOrigSize))
             throw IllegalArgumentException(THROW_WHERE "Wrong type for Size 
property!",
                                             uno::Reference< XInterface >(),
                                             2 );
@@ -1314,7 +1343,7 @@ Any SAL_CALL ZipPackageStream::getPropertyValue( const 
OUString& PropertyName )
     }
     else if ( PropertyName == "Size" )
     {
-        return Any(aEntry.nSize);
+        return Any(m_nOwnStreamOrigSize);
     }
     else if ( PropertyName == "Encrypted" )
     {
@@ -1342,10 +1371,9 @@ Any SAL_CALL ZipPackageStream::getPropertyValue( const 
OUString& PropertyName )
 
 void ZipPackageStream::setSize ( const sal_Int64 nNewSize )
 {
-    if ( aEntry.nCompressedSize != nNewSize )
-        aEntry.nMethod = DEFLATED;
-    aEntry.nSize = nNewSize;
+    m_nOwnStreamOrigSize = nNewSize;
 }
+
 OUString ZipPackageStream::getImplementationName()
 {
     return "ZipPackageStream";
diff --git a/package/source/zippackage/zipfileaccess.cxx 
b/package/source/zippackage/zipfileaccess.cxx
index bd7caaf279e6..f05503cc66bc 100644
--- a/package/source/zippackage/zipfileaccess.cxx
+++ b/package/source/zippackage/zipfileaccess.cxx
@@ -267,7 +267,7 @@ uno::Any SAL_CALL OZipFileAccess::getByName( const 
OUString& aName )
     {
         xEntryStream  = m_pZipFile->getDataStream((*aIter).second,
                                                   ::rtl::Reference< 
EncryptionData >(),
-                                                  false,
+                                                  {},
                                                   m_aMutexHolder);
     }
     catch (const container::NoSuchElementException&)
@@ -391,7 +391,7 @@ uno::Reference< io::XInputStream > SAL_CALL 
OZipFileAccess::getStreamByPattern(
     {
         uno::Reference< io::XInputStream > xEntryStream( 
m_pZipFile->getDataStream( (*aIter).second,
                                                                                
     ::rtl::Reference< EncryptionData >(),
-                                                                               
     false,
+                                                                               
     {},
                                                                                
     m_aMutexHolder ) );
 
         if ( !xEntryStream.is() )
commit 600540631686773880600ce60061f912f0083fb8
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Tue Aug 20 16:31:36 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    sw: 0.03928 -> 0.04045
    
    According to https://www.w3.org/TR/WCAG21/#dfn-relative-luminance:
    "Before May 2021 the value of 0.04045 in the definition was different
    (0.03928). It was taken from an older version of the specification and
    has been updated."
    
    Change-Id: I7cd7c0ee3e0d04795c7db9d93053e159e011fc62
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172146
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    (cherry picked from commit 02e2870c86a00380549266f944c9218187a002ec)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172187
    (cherry picked from commit f0ca7d889f2b0d149c9f7df0ee2ab236ee11ae12)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172192
    Reviewed-by: Bartosz Kosiorek <gan...@poczta.onet.pl>

diff --git a/sw/source/core/access/AccessibilityCheck.cxx 
b/sw/source/core/access/AccessibilityCheck.cxx
index dfa94c3ed9ab..2f534c97fe34 100644
--- a/sw/source/core/access/AccessibilityCheck.cxx
+++ b/sw/source/core/access/AccessibilityCheck.cxx
@@ -452,9 +452,9 @@ double calculateRelativeLuminance(Color const& rColor)
     double b = aBColor.getBlue();
 
     // Calculate the values according to the described algorithm
-    r = (r <= 0.03928) ? r / 12.92 : std::pow((r + 0.055) / 1.055, 2.4);
-    g = (g <= 0.03928) ? g / 12.92 : std::pow((g + 0.055) / 1.055, 2.4);
-    b = (b <= 0.03928) ? b / 12.92 : std::pow((b + 0.055) / 1.055, 2.4);
+    r = (r <= 0.04045) ? r / 12.92 : std::pow((r + 0.055) / 1.055, 2.4);
+    g = (g <= 0.04045) ? g / 12.92 : std::pow((g + 0.055) / 1.055, 2.4);
+    b = (b <= 0.04045) ? b / 12.92 : std::pow((b + 0.055) / 1.055, 2.4);
 
     return 0.2126 * r + 0.7152 * g + 0.0722 * b;
 }
commit 2624d88194957a4d0f90083be3e28e062f49dd76
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Wed Sep 11 12:06:21 2024 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:16:33 2024 +0200

    ofz: 22 byte .zip is min size
    
    at which point nPos is 0 on entering this test.
    
    If the buffer does not start with PK\x5\x6 then nPos is decremented
    before checking against 0, so nPos is -1 and doesn't throw as an
    unhandled .zip.
    
    Change-Id: I4a7fed6e863582324945a75bc077f6346ddd5c23
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173208
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit d22d47e940da3bea13fe20199b5ab410d9d6ac50)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173299

diff --git a/package/source/zipapi/ZipFile.cxx 
b/package/source/zipapi/ZipFile.cxx
index 12c625dab4d0..80cd051c3787 100644
--- a/package/source/zipapi/ZipFile.cxx
+++ b/package/source/zipapi/ZipFile.cxx
@@ -1143,11 +1143,11 @@ std::tuple<sal_Int64, sal_Int64, sal_Int64> 
ZipFile::findCentralDirectory()
                 nEndPos = nPos + nEnd;
                 break;
             }
-            nPos--;
             if (nPos == 0)
             {
                 throw ZipException(u"Zip END signature not found!"_ustr);
             }
+            nPos--;
         }
 
         aGrabber.seek(nEndPos + 4);
commit 9f3e378282db4152bb7fabb318f4fc2fd5ea6601
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri Sep 13 08:00:40 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:13:50 2024 +0200

    libpng: upgrade to 1.6.44
    
    Downloaded from 
https://unlimited.dl.sourceforge.net/project/libpng/libpng16/1.6.44/libpng-1.6.44.tar.xz
    
    Change-Id: I0132e6edb0078d1d4479bb79b7f740c23719d72b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173295
    Tested-by: Jenkins
    Reviewed-by: Taichi Haradaguchi <20001...@ymail.ne.jp>

diff --git a/download.lst b/download.lst
index c9b6c44b44fc..c00c0e5b883d 100644
--- a/download.lst
+++ b/download.lst
@@ -636,8 +636,8 @@ PIXMAN_TARBALL := pixman-0.42.2.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-LIBPNG_SHA256SUM := 
6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c
-LIBPNG_TARBALL := libpng-1.6.43.tar.xz
+LIBPNG_SHA256SUM := 
60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e
+LIBPNG_TARBALL := libpng-1.6.44.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit d39cc55b5db48d33397f0ec54478a01eaf6171e4
Author:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
AuthorDate: Mon Sep 9 12:16:46 2024 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Sep 19 10:10:25 2024 +0200

    update credits
    
    Change-Id: Ic881ef1c3575c8bd922db829aedcb7a22f9a6c72
    (cherry picked from commit dce8738344e8fb6d000c71feb6a02e570e4660ec)

diff --git a/readlicense_oo/license/CREDITS.fodt 
b/readlicense_oo/license/CREDITS.fodt
index cab9b1410536..39f8779981ac 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <office:document xmlns:css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xforms="http://www.w3.org/2002/xforms"; 
xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:c
 alcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:officeooo="http://openoffice.org/2009/office"; 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:
 meta:1.0" 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
- <office:meta><dc:title>Credits » 
LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits
 for the LibreOffice 
development/coding.</dc:description><meta:generator>LibreOffice/24.2.5.2$Linux_X86_64
 
LibreOffice_project/bffef4ea93e59bebbeaf7f431bb02b1a39ee8a59</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic
 meta:table-count="5" meta:image-count="1" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="4970" meta:word-count="18602" 
meta:character-count="134707" 
meta:non-whitespace-character-count="118170"/><meta:user-defined 
meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
+ <office:meta><dc:title>Credits » 
LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits
 for the LibreOffice 
development/coding.</dc:description><meta:generator>LibreOffice/24.2.5.2$Linux_X86_64
 
LibreOffice_project/bffef4ea93e59bebbeaf7f431bb02b1a39ee8a59</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic
 meta:table-count="5" meta:image-count="1" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="4972" meta:word-count="18611" 
meta:character-count="134769" 
meta:non-whitespace-character-count="118224"/><meta:user-defined 
meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
  <office:settings>
   <config:config-item-set config:name="ooo:view-settings">
-   <config:config-item config:name="ViewAreaTop" 
config:type="long">572</config:config-item>
+   <config:config-item config:name="ViewAreaTop" 
config:type="long">2662</config:config-item>
    <config:config-item config:name="ViewAreaLeft" 
config:type="long">501</config:config-item>
-   <config:config-item config:name="ViewAreaWidth" 
config:type="long">38366</config:config-item>
-   <config:config-item config:name="ViewAreaHeight" 
config:type="long">26143</config:config-item>
+   <config:config-item config:name="ViewAreaWidth" 
config:type="long">38393</config:config-item>
+   <config:config-item config:name="ViewAreaHeight" 
config:type="long">26169</config:config-item>
    <config:config-item config:name="ShowRedlineChanges" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="InBrowseMode" 
config:type="boolean">true</config:config-item>
    <config:config-item-map-indexed config:name="Views">
@@ -16,9 +16,9 @@
      <config:config-item config:name="ViewLeft" 
config:type="long">3623</config:config-item>
      <config:config-item config:name="ViewTop" 
config:type="long">3434</config:config-item>
      <config:config-item config:name="VisibleLeft" 
config:type="long">501</config:config-item>
-     <config:config-item config:name="VisibleTop" 
config:type="long">572</config:config-item>
-     <config:config-item config:name="VisibleRight" 
config:type="long">38866</config:config-item>
-     <config:config-item config:name="VisibleBottom" 
config:type="long">26712</config:config-item>
+     <config:config-item config:name="VisibleTop" 
config:type="long">2662</config:config-item>
+     <config:config-item config:name="VisibleRight" 
config:type="long">38892</config:config-item>
+     <config:config-item config:name="VisibleBottom" 
config:type="long">28829</config:config-item>
      <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutColumns" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutBookMode" 
config:type="boolean">false</config:config-item>
@@ -147,7 +147,7 @@
    <config:config-item config:name="UseOldPrinterMetrics" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="RedlineProtectionKey" 
config:type="base64Binary"/>
    <config:config-item config:name="TabsRelativeToIndent" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="Rsid" 
config:type="int">13795656</config:config-item>
+   <config:config-item config:name="Rsid" 
config:type="int">13858737</config:config-item>
    <config:config-item config:name="UpdateFromTemplate" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="ProtectForm" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="MsWordCompMinLineHeightByFly" 
config:type="boolean">false</config:config-item>
@@ -177,7 +177,7 @@
  <office:styles>
   <style:default-style style:family="graphic">
    <style:graphic-properties svg:stroke-color="#3465a4" 
draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" 
draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" 
draw:start-line-spacing-vertical="0.283cm" 
draw:end-line-spacing-horizontal="0.283cm" 
draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" 
style:flow-with-text="true"/>
-   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" loext:tab-stop-distance="0cm" 
style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" loext:tab-stop-distance="0cm" 
style:font-independent-line-spacing="false">
     <style:tab-stops/>
    </style:paragraph-properties>
    <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" 
fo:language="hu" fo:country="HU" style:letter-kerning="true" 
style:font-name-asian="SimSun" style:font-size-asian="12pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Mangal1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN"/>
@@ -388,7 +388,7 @@
   <style:style style:name="Tabelle1.A1" style:family="table-cell">
    <style:table-cell-properties style:vertical-align="middle" 
fo:padding="0.049cm" fo:border="none"/>
   </style:style>
-  <style:style style:name="Tabelle1.C464" style:family="table-cell">
+  <style:style style:name="Tabelle1.D464" style:family="table-cell">
    <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
   </style:style>
   <style:style style:name="Tabelle2" style:family="table">
@@ -469,7 +469,7 @@
   <style:style style:name="Tabelle5.A1" style:family="table-cell">
    <style:table-cell-properties style:vertical-align="middle" 
fo:padding="0.049cm" fo:border="none"/>
   </style:style>
-  <style:style style:name="Tabelle5.B733" style:family="table-cell">
+  <style:style style:name="Tabelle5.C733" style:family="table-cell">
    <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
   </style:style>
   <style:style style:name="P1" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
@@ -1167,7 +1167,7 @@
    </draw:frame>
    <text:section text:style-name="Sect1" text:name="BgContainer">
     <text:p text:style-name="P32">Credits</text:p>
-    <text:p text:style-name="Text_20_body">1984 individuals contributed to 
OpenOffice.org (and whose contributions were imported into LibreOffice) or 
LibreOffice until 2024-08-30 19:44:52.</text:p>
+    <text:p text:style-name="Text_20_body">1985 individuals contributed to 
OpenOffice.org (and whose contributions were imported into LibreOffice) or 
LibreOffice until 2024-07-17 14:41:40.</text:p>
     <text:p text:style-name="Text_20_body"><text:span 
text:style-name="T1">*</text:span> marks developers whose first contributions 
happened after 2010-09-28.</text:p>
     <text:h text:style-name="Heading_20_2" text:outline-level="2">Developers 
committing code since 2010-09-28</text:h>
     <table:table table:name="Tabelle1" table:style-name="Tabelle1">
@@ -1180,7 +1180,7 @@
        <text:p text:style-name="Table_20_Contents">Ruediger 
Timm<text:line-break/>Commits: 82464<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Caolán 
McNamara<text:line-break/>Commits: 35932<text:line-break/>Joined: 
2000-10-10</text:p>
+       <text:p text:style-name="Table_20_Contents">Caolán 
McNamara<text:line-break/>Commits: 35945<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Kurt 
Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined: 
2000-09-25</text:p>
@@ -1197,15 +1197,15 @@
        <text:p text:style-name="Table_20_Contents">Vladimir 
Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 
2000-12-04</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Stephan 
Bergmann<text:line-break/>Commits: 21305<text:line-break/>Joined: 
2000-10-04</text:p>
+       <text:p text:style-name="Table_20_Contents">Stephan 
Bergmann<text:line-break/>Commits: 21309<text:line-break/>Joined: 
2000-10-04</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 
19162<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-12-12</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 
19192<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-12-12</text:span></text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Miklos 
Vajna<text:line-break/>Commits: 10037<text:line-break/>Joined: 
2010-07-29</text:p>
+       <text:p text:style-name="Table_20_Contents">Miklos 
Vajna<text:line-break/>Commits: 10044<text:line-break/>Joined: 
2010-07-29</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Ivo 
Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 
2002-09-09</text:p>
@@ -1214,7 +1214,7 @@
        <text:p text:style-name="Table_20_Contents">Tor 
Lillqvist<text:line-break/>Commits: 9160<text:line-break/>Joined: 
2010-03-23</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Michael 
Stahl<text:line-break/>Commits: 8552<text:line-break/>Joined: 
2008-06-16</text:p>
+       <text:p text:style-name="Table_20_Contents">Michael 
Stahl<text:line-break/>Commits: 8560<text:line-break/>Joined: 
2008-06-16</text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
@@ -1222,7 +1222,7 @@
        <text:p text:style-name="Table_20_Contents">Kohei 
Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined: 
2009-06-19</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Eike 
Rathke<text:line-break/>Commits: 5375<text:line-break/>Joined: 
2000-10-11</text:p>
+       <text:p text:style-name="Table_20_Contents">Eike 
Rathke<text:line-break/>Commits: 5376<text:line-break/>Joined: 
2000-10-11</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 
5203<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-03-17</text:span></text:p>
@@ -1233,16 +1233,16 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 
4167<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-10-30</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 
4171<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-10-30</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 
3917<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-11-04</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 
3920<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-11-04</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">David 
Tardon<text:line-break/>Commits: 3648<text:line-break/>Joined: 
2009-11-12</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 
3595<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-04-26</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 
3615<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-04-26</text:span></text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
@@ -1253,7 +1253,7 @@
        <text:p text:style-name="Table_20_Contents">Luboš 
Luňák<text:line-break/>Commits: 3201<text:line-break/>Joined: 
2010-09-21</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 
3048<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-02-06</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 
3062<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-02-06</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Hans-Joachim 
Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 
2000-09-19</text:p>
@@ -1267,7 +1267,7 @@
        <text:p text:style-name="Table_20_Contents">Jan 
Holesovsky<text:line-break/>Commits: 2672<text:line-break/>Joined: 
2009-06-23</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Oliver 
Specht<text:line-break/>Commits: 2616<text:line-break/>Joined: 
2000-09-21</text:p>
+       <text:p text:style-name="Table_20_Contents">Oliver 
Specht<text:line-break/>Commits: 2619<text:line-break/>Joined: 
2000-09-21</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Mathias 
Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined: 
2000-09-20</text:p>
@@ -1275,13 +1275,13 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Michael 
Meeks<text:line-break/>Commits: 2525<text:line-break/>Joined: 
2004-08-05</text:p>
+       <text:p text:style-name="Table_20_Contents">Michael 
Meeks<text:line-break/>Commits: 2526<text:line-break/>Joined: 
2004-08-05</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Bjoern 
Michaelsen<text:line-break/>Commits: 2500<text:line-break/>Joined: 
2009-10-14</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 
2185<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-10-25</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 
2200<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-10-25</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits: 
2176<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-09-29</text:span></text:p>
@@ -1303,7 +1303,7 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Armin Le Grand 
(allotropia)<text:line-break/>Commits: 1738<text:line-break/>Joined: 
2000-09-25</text:p>
+       <text:p text:style-name="Table_20_Contents">Armin Le Grand 
(Collabora)<text:line-break/>Commits: 1739<text:line-break/>Joined: 
2000-09-25</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits: 
1712<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-04-06</text:span></text:p>
@@ -1340,7 +1340,7 @@
        <text:p text:style-name="Table_20_Contents">Niklas 
Nebel<text:line-break/>Commits: 1296<text:line-break/>Joined: 
2000-09-19</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Christian 
Lohmaier<text:line-break/>Commits: 1284<text:line-break/>Joined: 
2008-06-01</text:p>
+       <text:p text:style-name="Table_20_Contents">Christian 
Lohmaier<text:line-break/>Commits: 1288<text:line-break/>Joined: 
2008-06-01</text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
@@ -1376,7 +1376,7 @@
        <text:p text:style-name="Table_20_Contents">Petr 
Mladek<text:line-break/>Commits: 958<text:line-break/>Joined: 
2006-10-03</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>László Németh<text:line-break/>Commits: 
955<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-09-29</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>László Németh<text:line-break/>Commits: 
956<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-09-29</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Noel 
Power<text:line-break/>Commits: 950<text:line-break/>Joined: 2002-09-24</text:p>
@@ -1460,10 +1460,10 @@
        <text:p text:style-name="Table_20_Contents">Kai 
Sommerfeld<text:line-break/>Commits: 651<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Ingrid 
Halama<text:line-break/>Commits: 639<text:line-break/>Joined: 
2001-01-19</text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Jim Raykowski<text:line-break/>Commits: 
640<text:line-break/>Joined: <text:span 
text:style-name="T2">2017-04-16</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Jim Raykowski<text:line-break/>Commits: 
638<text:line-break/>Joined: <text:span 
text:style-name="T2">2017-04-16</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents">Ingrid 
Halama<text:line-break/>Commits: 639<text:line-break/>Joined: 
2001-01-19</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 
626<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-09-30</text:span></text:p>
@@ -1485,7 +1485,7 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Adolfo Jayme 
Barrientos<text:line-break/>Commits: 587<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-06-21</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Adolfo Jayme 
Barrientos<text:line-break/>Commits: 590<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-06-21</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Jochen Nitschke<text:line-break/>Commits: 
587<text:line-break/>Joined: <text:span 
text:style-name="T2">2016-02-02</text:span></text:p>
@@ -1499,7 +1499,7 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Heiko Tietze<text:line-break/>Commits: 
518<text:line-break/>Joined: <text:span 
text:style-name="T2">2016-10-06</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Heiko Tietze<text:line-break/>Commits: 
521<text:line-break/>Joined: <text:span 
text:style-name="T2">2016-10-06</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Jürgen 
Schmidt<text:line-break/>Commits: 512<text:line-break/>Joined: 
2000-10-09</text:p>
@@ -1519,21 +1519,21 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Ashod Nakashian<text:line-break/>Commits: 
400<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-01-07</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Dirk 
Voelzke<text:line-break/>Commits: 392<text:line-break/>Joined: 
2000-11-27</text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Jean-Pierre Ledure<text:line-break/>Commits: 
395<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-10-12</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Henry Castro<text:line-break/>Commits: 
391<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-01-09</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents">Dirk 
Voelzke<text:line-break/>Commits: 392<text:line-break/>Joined: 
2000-11-27</text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Jean-Pierre Ledure<text:line-break/>Commits: 
390<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-10-12</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Henry Castro<text:line-break/>Commits: 
391<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-01-09</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Laurent BP<text:line-break/>Commits: 
389<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-08-31</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Rafael Lima<text:line-break/>Commits: 
382<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-11-13</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Rafael Lima<text:line-break/>Commits: 
383<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-11-13</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Ivan Timofeev<text:line-break/>Commits: 
380<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-09-16</text:span></text:p>
@@ -1575,15 +1575,15 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Stanislav Horacek<text:line-break/>Commits: 
319<text:line-break/>Joined: <text:span 
text:style-name="T2">2012-12-09</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Radek 
Doulik<text:line-break/>Commits: 305<text:line-break/>Joined: 
2010-05-03</text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 
308<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-02-03</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Mark Hung<text:line-break/>Commits: 
305<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-11-04</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents">Radek 
Doulik<text:line-break/>Commits: 305<text:line-break/>Joined: 
2010-05-03</text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 
305<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-02-03</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Mark Hung<text:line-break/>Commits: 
305<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-11-04</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Chr. Rossmanith<text:line-break/>Commits: 
300<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-01-03</text:span></text:p>
@@ -1625,10 +1625,10 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Ilmari Lauhakangas<text:line-break/>Commits: 
224<text:line-break/>Joined: <text:span 
text:style-name="T2">2017-04-15</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Ilmari Lauhakangas<text:line-break/>Commits: 
228<text:line-break/>Joined: <text:span 
text:style-name="T2">2017-04-15</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Balazs Varga<text:line-break/>Commits: 
218<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-06-29</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Balazs Varga<text:line-break/>Commits: 
219<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-06-29</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Winfried Donkers<text:line-break/>Commits: 
217<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-11-11</text:span></text:p>
@@ -1676,7 +1676,7 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Philipp Riemer<text:line-break/>Commits: 
171<text:line-break/>Joined: <text:span 
text:style-name="T2">2012-05-25</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Gülşah Köse<text:line-break/>Commits: 
170<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-03-14</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Gülşah Köse<text:line-break/>Commits: 
171<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-03-14</text:span></text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
@@ -1690,7 +1690,7 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Hossein<text:line-break/>Commits: 
156<text:line-break/>Joined: <text:span 
text:style-name="T2">2021-06-29</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Bogdan Buzea<text:line-break/>Commits: 
153<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-11-01</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Bogdan Buzea<text:line-break/>Commits: 
156<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-11-01</text:span></text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
@@ -1709,7 +1709,7 @@
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Tibor Nagy<text:line-break/>Commits: 
149<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-04-01</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Tibor Nagy<text:line-break/>Commits: 
150<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-04-01</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Gregor 
Hartmann&lt;gh<text:line-break/>Commits: 141<text:line-break/>Joined: 
2000-10-12</text:p>
@@ -1757,18 +1757,18 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Pranam Lashkari<text:line-break/>Commits: 
128<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-04-03</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Helge Delfs 
[hde]<text:line-break/>Commits: 126<text:line-break/>Joined: 2009-07-28</text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Taichi Haradaguchi<text:line-break/>Commits: 
128<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-09-06</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Ariel 
Constenla-Haile<text:line-break/>Commits: 126<text:line-break/>Joined: 
<text:span text:style-name="T2">2012-01-16</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents">Helge Delfs 
[hde]<text:line-break/>Commits: 126<text:line-break/>Joined: 2009-07-28</text:p>
       </table:table-cell>
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>haochen<text:line-break/>Commits: 
126<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-10-10</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Ariel 
Constenla-Haile<text:line-break/>Commits: 126<text:line-break/>Joined: 
<text:span text:style-name="T2">2012-01-16</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Taichi Haradaguchi<text:line-break/>Commits: 
126<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-09-06</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>haochen<text:line-break/>Commits: 
126<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-10-10</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Alain Romedenne<text:line-break/>Commits: 
123<text:line-break/>Joined: <text:span 
text:style-name="T2">2021-02-17</text:span></text:p>
@@ -1834,6 +1834,9 @@
       </table:table-cell>
      </table:table-row>
      <table:table-row>
+      <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Laurent Balland<text:line-break/>Commits: 
92<text:line-break/>Joined: <text:span 
text:style-name="T2">2022-06-19</text:span></text:p>
+      </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Stefan Knorr<text:line-break/>Commits: 
91<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-07-04</text:span></text:p>
       </table:table-cell>
@@ -1843,16 +1846,13 @@
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Krisztian Pinter<text:line-break/>Commits: 
90<text:line-break/>Joined: <text:span 
text:style-name="T2">2013-02-18</text:span></text:p>
       </table:table-cell>
-      <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Philipp Hofer<text:line-break/>Commits: 
90<text:line-break/>Joined: <text:span 
text:style-name="T2">2020-11-06</text:span></text:p>
-      </table:table-cell>
      </table:table-row>
      <table:table-row>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Albert Thuswaldner<text:line-break/>Commits: 
89<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-01-26</text:span></text:p>
-e 
... etc. - the rest is truncated

Reply via email to