configure.ac                                                         |    2 
 desktop/source/lib/init.cxx                                          |  183 
 download.lst                                                         |   16 
 external/curl/configurable-z-option.patch.0                          |    2 
 external/curl/curl-msvc-disable-protocols.patch.1                    |    6 
 external/curl/curl-msvc.patch.1                                      |   18 
 external/curl/zlib.patch.0                                           |   40 
 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu |    8 
 sd/qa/unit/data/tdf162455.svg                                        | 2115 
++++++++++
 sd/qa/unit/uiimpress.cxx                                             |   37 
 sfx2/source/control/dispatch.cxx                                     |    1 
 sfx2/source/control/unoctitm.cxx                                     |    2 
 svx/source/svdraw/svdfmtf.cxx                                        |   87 
 svx/source/svdraw/svdfmtf.hxx                                        |    9 
 sw/inc/AnnotationWin.hxx                                             |    3 
 sw/inc/PostItMgr.hxx                                                 |    2 
 sw/inc/cmdid.h                                                       |    1 
 sw/sdi/_annotsh.sdi                                                  |    6 
 sw/sdi/_textsh.sdi                                                   |    5 
 sw/sdi/swriter.sdi                                                   |   17 
 sw/source/uibase/docvw/AnnotationMenuButton.cxx                      |    4 
 sw/source/uibase/docvw/AnnotationWin.cxx                             |   18 
 sw/source/uibase/docvw/AnnotationWin2.cxx                            |   12 
 sw/source/uibase/docvw/PostItMgr.cxx                                 |   56 
 sw/source/uibase/shells/annotsh.cxx                                  |   10 
 sw/source/uibase/shells/textfld.cxx                                  |   21 
 sw/source/uibase/uno/unotxdoc.cxx                                    |    8 
 sw/uiconfig/sglobal/menubar/menubar.xml                              |    1 
 sw/uiconfig/sglobal/popupmenu/annotation.xml                         |    1 
 sw/uiconfig/swriter/menubar/menubar.xml                              |    1 
 sw/uiconfig/swriter/popupmenu/annotation.xml                         |    1 
 sw/uiconfig/swriter/ui/annotation.ui                                 |    8 
 sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui                |    7 
 33 files changed, 2524 insertions(+), 184 deletions(-)

New commits:
commit 1c7056cf82f461e4fd4ef6ff00db733af4d99ca6
Author:     Pranam Lashkari <[email protected]>
AuthorDate: Mon Sep 16 21:02:22 2024 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    LOK: send state of EditDoc for write protection status
    
    Change-Id: I58eb4ab04b4063e382bc6550b5cf08d7806a6c6a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173470
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index a0a8e4092d6d..9a8b644a8191 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -4124,6 +4124,7 @@ static void doc_iniUnoCommands ()
         u".uno:DistributeVertTop"_ustr,
         u".uno:AnimationEffects"_ustr,
         u".uno:ExecuteAnimationEffect"_ustr,
+        u".uno:EditDoc"_ustr,
     };
 
     util::URL aCommandURL;
diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index 720062c8b3cb..e898f565f8ff 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -1152,6 +1152,7 @@ constexpr auto handlers = 
frozen::make_unordered_map<std::u16string_view, Payloa
     { u"NormalMultiPaneGUI", IsActivePayload },
     { u"NotesMode", IsActivePayload },
     { u"SlideMasterPage", IsActivePayload },
+    { u"EditDoc", IsActivePayload },
 
     { u"CharFontName", FontNamePayload },
 
commit bde2f80f29c6d88dd6cd58859fc08f9d711911cc
Author:     Caolán McNamara <[email protected]>
AuthorDate: Mon Sep 16 17:33:44 2024 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    This should iterate over the thesaurus languages, not the spelling ones
    
    Change-Id: I94410274f7afbc0a6bc33fe43beb9810a905dfe4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173467
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 0dde1e3ed4c3..a0a8e4092d6d 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -7967,7 +7967,7 @@ static void preloadData()
 
     // preload all available thesauri
     css::uno::Reference<linguistic2::XThesaurus> 
xThesaurus(xLngSvcMgr->getThesaurus());
-    css::uno::Reference<linguistic2::XSupportedLocales> 
xThesLocales(xSpellChecker, css::uno::UNO_QUERY_THROW);
+    css::uno::Reference<linguistic2::XSupportedLocales> 
xThesLocales(xThesaurus, css::uno::UNO_QUERY_THROW);
     aLocales = xThesLocales->getLocales();
     std::cerr << "Preloading local thesauri: ";
     for (auto &it : std::as_const(aLocales))
commit 507e57dea66a5772d7c8666d885e853b51a3675b
Author:     Caolán McNamara <[email protected]>
AuthorDate: Mon Sep 16 12:55:33 2024 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    Output what languages are handled by LanguageTool
    
    to explain the absence of languages that are listed by 'Preloading'
    because the languages handled by a remote LanguageTool are removed
    from the languages handled with local data.
    
    Change-Id: I203657f68a7b9399e39ebf9ab9447c7ae56efe68
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173448
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index ae1dd3c8abae..0dde1e3ed4c3 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1029,8 +1029,10 @@ void hideSidebar()
         SetLastExceptionMsg(u"No view shell or sidebar"_ustr);
 }
 
-void setLanguageToolConfig()
+css::uno::Sequence<css::lang::Locale> setLanguageToolConfig()
 {
+    css::uno::Sequence<css::lang::Locale> aLTLocales;
+
     const char* pEnabled = ::getenv("LANGUAGETOOL_ENABLED");
     const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL");
 
@@ -1043,7 +1045,7 @@ void setLanguageToolConfig()
 
         OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8);
         if (aEnabled != "true")
-            return;
+            return aLTLocales;
         OUString aBaseUrl = OStringToOUString(pBaseUrlString, 
RTL_TEXTENCODING_UTF8);
         try
         {
@@ -1071,6 +1073,11 @@ void setLanguageToolConfig()
             }
             batch->commit();
 
+            uno::Reference<linguistic2::XProofreader> xGC(
+                
xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr,
 xContext),
+                uno::UNO_QUERY_THROW);
+            uno::Reference<linguistic2::XSupportedLocales> xSuppLoc(xGC, 
uno::UNO_QUERY_THROW);
+
             css::uno::Reference<css::linguistic2::XLinguServiceManager2> 
xLangSrv =
                 css::linguistic2::LinguServiceManager::create(xContext);
             if (xLangSrv.is())
@@ -1081,11 +1088,6 @@ void setLanguageToolConfig()
                     Sequence<OUString> aEmpty;
                     Sequence<css::lang::Locale> aLocales = 
xSpell->getLocales();
 
-                    uno::Reference<linguistic2::XProofreader> xGC(
-                        
xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr,
 xContext),
-                        uno::UNO_QUERY_THROW);
-                    uno::Reference<linguistic2::XSupportedLocales> 
xSuppLoc(xGC, uno::UNO_QUERY_THROW);
-
                     for (int itLocale = 0; itLocale < aLocales.getLength(); 
itLocale++)
                     {
                         // turn off spell checker if LanguageTool supports the 
locale already
@@ -1095,12 +1097,16 @@ void setLanguageToolConfig()
                     }
                 }
             }
+
+            aLTLocales = xSuppLoc->getLocales();
         }
         catch(uno::Exception const& rException)
         {
             SAL_WARN("lok", "Failed to set LanguageTool API settings: " << 
rException.Message);
         }
     }
+
+    return aLTLocales;
 }
 
 }  // end anonymous namespace
@@ -7925,7 +7931,14 @@ static void preloadData()
     std::cerr << "
";
 
     // setup LanguageTool config before spell checking init
-    setLanguageToolConfig();
+    css::uno::Sequence<css::lang::Locale> aLTLocales = setLanguageToolConfig();
+    if (aLTLocales.getLength())
+    {
+        std::cerr << "Remote linguistic service languages: ";
+        for (auto &it : std::as_const(aLTLocales))
+            std::cerr << LanguageTag::convertToBcp47(it) << " ";
+        std::cerr << "
";
+    }
 
     // preload all available dictionaries
     
linguistic2::DictionaryList::create(comphelper::getProcessComponentContext());
@@ -7933,7 +7946,7 @@ static void preloadData()
         
css::linguistic2::LinguServiceManager::create(comphelper::getProcessComponentContext());
     css::uno::Reference<linguistic2::XSpellChecker> 
xSpellChecker(xLngSvcMgr->getSpellChecker());
 
-    std::cerr << "Preloading dictionaries: ";
+    std::cerr << "Preloading local dictionaries: ";
     css::uno::Reference<linguistic2::XSupportedLocales> 
xSpellLocales(xSpellChecker, css::uno::UNO_QUERY_THROW);
     uno::Sequence< css::lang::Locale > aLocales = xSpellLocales->getLocales();
     for (auto &it : std::as_const(aLocales))
@@ -7956,7 +7969,7 @@ static void preloadData()
     css::uno::Reference<linguistic2::XThesaurus> 
xThesaurus(xLngSvcMgr->getThesaurus());
     css::uno::Reference<linguistic2::XSupportedLocales> 
xThesLocales(xSpellChecker, css::uno::UNO_QUERY_THROW);
     aLocales = xThesLocales->getLocales();
-    std::cerr << "Preloading thesauri: ";
+    std::cerr << "Preloading local thesauri: ";
     for (auto &it : std::as_const(aLocales))
     {
         std::cerr << LanguageTag::convertToBcp47(it) << " ";
commit 6abba8996ed9c126c2f6db4efa82baca5b26f74b
Author:     Caolán McNamara <[email protected]>
AuthorDate: Mon Sep 16 13:20:28 2024 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    move setLanguageToolConfig out of extern "C" zone
    
    no logic change here
    
    Change-Id: I29153a11e1b841fa078d29a6431cd5af1179672e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173450
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 9ae5d7a93035..ae1dd3c8abae 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -811,6 +811,11 @@ static int lcl_getViewId(std::string_view payload)
     return 0;
 }
 
+// Wonder global state ...
+static uno::Reference<css::uno::XComponentContext> xContext;
+static uno::Reference<css::lang::XMultiServiceFactory> xSFactory;
+static uno::Reference<css::lang::XMultiComponentFactory> xFactory;
+
 namespace {
 
 std::string extractCertificate(const std::string & certificate)
@@ -1024,6 +1029,80 @@ void hideSidebar()
         SetLastExceptionMsg(u"No view shell or sidebar"_ustr);
 }
 
+void setLanguageToolConfig()
+{
+    const char* pEnabled = ::getenv("LANGUAGETOOL_ENABLED");
+    const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL");
+
+    if (pEnabled && pBaseUrlString)
+    {
+        const char* pUsername = ::getenv("LANGUAGETOOL_USERNAME");
+        const char* pApikey = ::getenv("LANGUAGETOOL_APIKEY");
+        const char* pSSLVerification = 
::getenv("LANGUAGETOOL_SSL_VERIFICATION");
+        const char* pRestProtocol = ::getenv("LANGUAGETOOL_RESTPROTOCOL");
+
+        OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8);
+        if (aEnabled != "true")
+            return;
+        OUString aBaseUrl = OStringToOUString(pBaseUrlString, 
RTL_TEXTENCODING_UTF8);
+        try
+        {
+            using LanguageToolCfg = 
officecfg::Office::Linguistic::GrammarChecking::LanguageTool;
+            auto batch(comphelper::ConfigurationChanges::create());
+
+            LanguageToolCfg::BaseURL::set(aBaseUrl, batch);
+            LanguageToolCfg::IsEnabled::set(true, batch);
+            if (pSSLVerification)
+            {
+                OUString aSSLVerification = 
OStringToOUString(pSSLVerification, RTL_TEXTENCODING_UTF8);
+                LanguageToolCfg::SSLCertVerify::set(aSSLVerification == 
"true", batch);
+            }
+            if (pRestProtocol)
+            {
+                OUString aRestProtocol = OStringToOUString(pRestProtocol, 
RTL_TEXTENCODING_UTF8);
+                LanguageToolCfg::RestProtocol::set(aRestProtocol, batch);
+            }
+            if (pUsername && pApikey)
+            {
+                OUString aUsername = OStringToOUString(pUsername, 
RTL_TEXTENCODING_UTF8);
+                OUString aApiKey = OStringToOUString(pApikey, 
RTL_TEXTENCODING_UTF8);
+                LanguageToolCfg::Username::set(aUsername, batch);
+                LanguageToolCfg::ApiKey::set(aApiKey, batch);
+            }
+            batch->commit();
+
+            css::uno::Reference<css::linguistic2::XLinguServiceManager2> 
xLangSrv =
+                css::linguistic2::LinguServiceManager::create(xContext);
+            if (xLangSrv.is())
+            {
+                css::uno::Reference<css::linguistic2::XSpellChecker> xSpell = 
xLangSrv->getSpellChecker();
+                if (xSpell.is())
+                {
+                    Sequence<OUString> aEmpty;
+                    Sequence<css::lang::Locale> aLocales = 
xSpell->getLocales();
+
+                    uno::Reference<linguistic2::XProofreader> xGC(
+                        
xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr,
 xContext),
+                        uno::UNO_QUERY_THROW);
+                    uno::Reference<linguistic2::XSupportedLocales> 
xSuppLoc(xGC, uno::UNO_QUERY_THROW);
+
+                    for (int itLocale = 0; itLocale < aLocales.getLength(); 
itLocale++)
+                    {
+                        // turn off spell checker if LanguageTool supports the 
locale already
+                        if (xSuppLoc->hasLocale(aLocales[itLocale]))
+                            xLangSrv->setConfiguredServices(
+                                SN_SPELLCHECKER, aLocales[itLocale], aEmpty);
+                    }
+                }
+            }
+        }
+        catch(uno::Exception const& rException)
+        {
+            SAL_WARN("lok", "Failed to set LanguageTool API settings: " << 
rException.Message);
+        }
+    }
+}
+
 }  // end anonymous namespace
 
 // Could be anonymous in principle, but for the unit testing purposes, we
@@ -2713,11 +2792,6 @@ void setFormatSpecificFilterData(std::u16string_view 
sFormat, comphelper::Sequen
 
 } // anonymous namespace
 
-// Wonder global state ...
-static uno::Reference<css::uno::XComponentContext> xContext;
-static uno::Reference<css::lang::XMultiServiceFactory> xSFactory;
-static uno::Reference<css::lang::XMultiComponentFactory> xFactory;
-
 static LibreOfficeKitDocument* lo_documentLoad(LibreOfficeKit* pThis, const 
char* pURL)
 {
     return lo_documentLoadWithOptions(pThis, pURL, nullptr);
@@ -7823,8 +7897,6 @@ static void preLoadShortCutAccelerators()
     batch->commit();
 }
 
-void setLanguageToolConfig();
-
 /// Used only by LibreOfficeKit when used by Online to pre-initialize
 static void preloadData()
 {
@@ -8086,80 +8158,6 @@ void setDeeplConfig()
     }
 }
 
-void setLanguageToolConfig()
-{
-    const char* pEnabled = ::getenv("LANGUAGETOOL_ENABLED");
-    const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL");
-
-    if (pEnabled && pBaseUrlString)
-    {
-        const char* pUsername = ::getenv("LANGUAGETOOL_USERNAME");
-        const char* pApikey = ::getenv("LANGUAGETOOL_APIKEY");
-        const char* pSSLVerification = 
::getenv("LANGUAGETOOL_SSL_VERIFICATION");
-        const char* pRestProtocol = ::getenv("LANGUAGETOOL_RESTPROTOCOL");
-
-        OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8);
-        if (aEnabled != "true")
-            return;
-        OUString aBaseUrl = OStringToOUString(pBaseUrlString, 
RTL_TEXTENCODING_UTF8);
-        try
-        {
-            using LanguageToolCfg = 
officecfg::Office::Linguistic::GrammarChecking::LanguageTool;
-            auto batch(comphelper::ConfigurationChanges::create());
-
-            LanguageToolCfg::BaseURL::set(aBaseUrl, batch);
-            LanguageToolCfg::IsEnabled::set(true, batch);
-            if (pSSLVerification)
-            {
-                OUString aSSLVerification = 
OStringToOUString(pSSLVerification, RTL_TEXTENCODING_UTF8);
-                LanguageToolCfg::SSLCertVerify::set(aSSLVerification == 
"true", batch);
-            }
-            if (pRestProtocol)
-            {
-                OUString aRestProtocol = OStringToOUString(pRestProtocol, 
RTL_TEXTENCODING_UTF8);
-                LanguageToolCfg::RestProtocol::set(aRestProtocol, batch);
-            }
-            if (pUsername && pApikey)
-            {
-                OUString aUsername = OStringToOUString(pUsername, 
RTL_TEXTENCODING_UTF8);
-                OUString aApiKey = OStringToOUString(pApikey, 
RTL_TEXTENCODING_UTF8);
-                LanguageToolCfg::Username::set(aUsername, batch);
-                LanguageToolCfg::ApiKey::set(aApiKey, batch);
-            }
-            batch->commit();
-
-            css::uno::Reference<css::linguistic2::XLinguServiceManager2> 
xLangSrv =
-                css::linguistic2::LinguServiceManager::create(xContext);
-            if (xLangSrv.is())
-            {
-                css::uno::Reference<css::linguistic2::XSpellChecker> xSpell = 
xLangSrv->getSpellChecker();
-                if (xSpell.is())
-                {
-                    Sequence<OUString> aEmpty;
-                    Sequence<css::lang::Locale> aLocales = 
xSpell->getLocales();
-
-                    uno::Reference<linguistic2::XProofreader> xGC(
-                        
xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr,
 xContext),
-                        uno::UNO_QUERY_THROW);
-                    uno::Reference<linguistic2::XSupportedLocales> 
xSuppLoc(xGC, uno::UNO_QUERY_THROW);
-
-                    for (int itLocale = 0; itLocale < aLocales.getLength(); 
itLocale++)
-                    {
-                        // turn off spell checker if LanguageTool supports the 
locale already
-                        if (xSuppLoc->hasLocale(aLocales[itLocale]))
-                            xLangSrv->setConfiguredServices(
-                                SN_SPELLCHECKER, aLocales[itLocale], aEmpty);
-                    }
-                }
-            }
-        }
-        catch(uno::Exception const& rException)
-        {
-            SAL_WARN("lok", "Failed to set LanguageTool API settings: " << 
rException.Message);
-        }
-    }
-}
-
 }
 
 static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const 
char* pUserProfileUrl)
commit 346bf6029c0c6870d35d5b70a9c6c01becd2b2ad
Author:     Jaume Pujantell <[email protected]>
AuthorDate: Sun Sep 8 20:52:28 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    sw: add new command to make a response comment root
    
    Adds the option to convert a reply comment into a new top comment
    while preserving the parent-child realtions of the other comments
    in the thread.
    
    Change-Id: I3cd5e5466fadc2226651d7c244b5139ec2d1f949
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173051
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 37d9596839fe..9ae5d7a93035 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3860,6 +3860,7 @@ static void doc_iniUnoCommands ()
         u".uno:ReplyComment"_ustr,
         u".uno:ResolveComment"_ustr,
         u".uno:ResolveCommentThread"_ustr,
+        u".uno:PromoteComment"_ustr,
         u".uno:InsertRowsBefore"_ustr,
         u".uno:InsertRowsAfter"_ustr,
         u".uno:InsertColumnsBefore"_ustr,
diff --git 
a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu 
b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 6567f42c538e..30896cc0cdbc 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -6541,6 +6541,14 @@ bit 3 (0x8): #define 
UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8
           <value>1</value>
         </prop>
       </node>
+      <node oor:name=".uno:PromoteComment" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Promote Comment To Root</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
       <node oor:name=".uno:CellVertTop" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">Top</value>
diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx
index 958f493f01a3..d08e02e2f452 100644
--- a/sfx2/source/control/dispatch.cxx
+++ b/sfx2/source/control/dispatch.cxx
@@ -1532,6 +1532,7 @@ bool SfxDispatcher::IsCommandAllowedInLokReadOnlyViewMode 
(OUString commandName)
         u".uno:DeleteComment"_ustr,
         u".uno:DeleteAnnotation"_ustr,
         u".uno:EditAnnotation"_ustr,
+        u".uno:PromoteComment"_ustr,
     };
 
     if (std::find(std::begin(allowedList), std::end(allowedList), commandName) 
!= std::end(allowedList))
diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index 5e48967fc6b8..720062c8b3cb 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -1179,6 +1179,7 @@ constexpr auto handlers = 
frozen::make_unordered_map<std::u16string_view, Payloa
     { u"DeleteAnnotation", EnabledPayload },
     { u"ResolveAnnotation", EnabledPayload },
     { u"ResolveAnnotationThread", EnabledPayload },
+    { u"PromoteComment", EnabledPayload },
     { u"InsertRowsBefore", EnabledPayload },
     { u"InsertRowsAfter", EnabledPayload },
     { u"InsertColumnsBefore", EnabledPayload },
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
index cbeaf7ceca44..aee382e51a82 100644
--- a/sw/inc/AnnotationWin.hxx
+++ b/sw/inc/AnnotationWin.hxx
@@ -206,6 +206,9 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public 
InterimItemWindow
 
         virtual FactoryFunction GetUITestFactory() const override;
 
+        bool IsRootNote() const;
+        void SetAsRoot();
+
     private:
 
         virtual void    LoseFocus() override;
diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx
index 5a877a6c8afe..535ae5f05165 100644
--- a/sw/inc/PostItMgr.hxx
+++ b/sw/inc/PostItMgr.hxx
@@ -207,6 +207,8 @@ class SAL_DLLPUBLIC_RTTI SwPostItMgr final : public 
SfxListener
         void DeleteCommentThread(sal_uInt32 nPostItId);
         void ToggleResolved(sal_uInt32 nPostItId);
         void ToggleResolvedForThread(sal_uInt32 nPostItId);
+        void PromoteToRoot(sal_uInt32 nPostItId);
+        void MoveSubthreadToRoot(const sw::annotation::SwAnnotationWin* 
pNewRoot);
 
         void ExecuteFormatAllDialog(SwView& rView);
         void FormatAll(const SfxItemSet &rNewAttr);
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index acc812fb4dd3..e9796f028f6f 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -804,6 +804,7 @@ class SwUINumRuleItem;
 #define FN_RESOLVE_NOTE             (FN_NOTES+9)
 #define FN_RESOLVE_NOTE_THREAD      (FN_NOTES+10)
 #define FN_DELETE_COMMENT_THREAD    (FN_NOTES+11)
+#define FN_PROMOTE_COMMENT          (FN_NOTES+12)
 
 // Region: Parameter
 #define FN_PARAM_MOVE_COUNT         TypedWhichId<SfxInt32Item>(FN_PARAM+2)
diff --git a/sw/sdi/_annotsh.sdi b/sw/sdi/_annotsh.sdi
index 919dd0513aa5..0c26a55dd6d0 100644
--- a/sw/sdi/_annotsh.sdi
+++ b/sw/sdi/_annotsh.sdi
@@ -78,6 +78,12 @@ interface _Annotation
         StateMethod = GetNoteState ;
     ]
 
+    FN_PROMOTE_COMMENT
+    [
+        ExecMethod = NoteExec ;
+        StateMethod = GetNoteState ;
+    ]
+
     FN_POSTIT
         [
                 ExecMethod = NoteExec ;
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index a562847648d2..8c9aef9be2a1 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -1110,6 +1110,11 @@ interface BaseText
         ExecMethod = ExecField ;
         StateMethod = StateField;
     ]
+    FN_PROMOTE_COMMENT
+    [
+        ExecMethod = ExecField ;
+        StateMethod = StateField;
+    ]
     FN_REDLINE_COMMENT // status(play)
     [
         ExecMethod = ExecField ;
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index 8679f7cb129d..77ef4f2e3332 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -7869,6 +7869,23 @@ SfxStringItem HideAuthor FN_HIDE_NOTE_AUTHOR ( 
SfxStringItem Author FN_HIDE_NOTE
     GroupId = SfxGroupId::Edit;
 ]
 
+SfxVoidItem PromoteComment FN_PROMOTE_COMMENT
+(SvxPostItIdItem Id SID_ATTR_POSTIT_ID)
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Edit;
+]
+
 SvxViewLayoutItem ViewLayout SID_ATTR_VIEWLAYOUT
 [
         AutoUpdate = FALSE,
diff --git a/sw/source/uibase/docvw/AnnotationMenuButton.cxx 
b/sw/source/uibase/docvw/AnnotationMenuButton.cxx
index 5e42d15c879e..ac8dd0c8e031 100644
--- a/sw/source/uibase/docvw/AnnotationMenuButton.cxx
+++ b/sw/source/uibase/docvw/AnnotationMenuButton.cxx
@@ -55,6 +55,8 @@ IMPL_LINK(SwAnnotationWin, SelectHdl, const OUString&, 
rIdent, void)
         ExecuteCommand(FN_DELETE_ALL_NOTES);
     else if (rIdent == "formatall")
         ExecuteCommand(FN_FORMAT_ALL_NOTES);
+    else if (rIdent == "promote")
+        ExecuteCommand(FN_PROMOTE_COMMENT);
 
     if (bSwitchedFocus)
         UnsetActiveSidebarWin();
@@ -76,6 +78,7 @@ IMPL_LINK_NOARG(SwAnnotationWin, ToggleHdl, 
weld::Toggleable&, void)
         mxMenuButton->set_item_visible("resolvethread", false);
         mxMenuButton->set_item_visible("unresolvethread", false);
         mxMenuButton->set_item_visible("delete", false );
+        mxMenuButton->set_item_visible("promote", false);
     }
     else
     {
@@ -86,6 +89,7 @@ IMPL_LINK_NOARG(SwAnnotationWin, ToggleHdl, 
weld::Toggleable&, void)
         mxMenuButton->set_item_visible("resolvethread", !IsThreadResolved());
         mxMenuButton->set_item_visible("unresolvethread", IsThreadResolved());
         mxMenuButton->set_item_visible("delete", !IsReadOnlyOrProtected());
+        mxMenuButton->set_item_visible("promote", !IsReadOnlyOrProtected() && 
!IsRootNote());
     }
 
     mxMenuButton->set_item_visible("deletethread", !bReadOnly);
diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx 
b/sw/source/uibase/docvw/AnnotationWin.cxx
index 426c097e9e58..75569fcd5cf3 100644
--- a/sw/source/uibase/docvw/AnnotationWin.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin.cxx
@@ -307,6 +307,24 @@ bool SwAnnotationWin::IsThreadResolved()
     }
 }
 
+bool SwAnnotationWin::IsRootNote() const
+{
+    return 
static_cast<SwPostItField*>(mpFormatField->GetField())->GetParentPostItId() == 
0;
+}
+
+void SwAnnotationWin::SetAsRoot()
+{
+    if (!IsRootNote())
+    {
+        SwPostItField* pPostIt = 
static_cast<SwPostItField*>(mpFormatField->GetField());
+        pPostIt->SetParentId(0);
+        pPostIt->SetParentPostItId(0);
+        pPostIt->SetParentName("");
+        mrMgr.MoveSubthreadToRoot(this);
+        mpFormatField->Broadcast(SwFormatFieldHint(nullptr, 
SwFormatFieldHintWhich::CHANGED));
+    }
+}
+
 void SwAnnotationWin::UpdateData()
 {
     if ( mpOutliner->IsModified() || mbResolvedStateUpdated )
diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx 
b/sw/source/uibase/docvw/AnnotationWin2.cxx
index 73c035abdaf7..e1feb6bda484 100644
--- a/sw/source/uibase/docvw/AnnotationWin2.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin2.cxx
@@ -1072,10 +1072,10 @@ void SwAnnotationWin::ExecuteCommand(sal_uInt16 nSlot)
             {
                 // Get newly created SwPostItField and set its paraIdParent
                 auto pPostItField = mrMgr.GetLatestPostItField();
-                pPostItField->SetParentId(GetTopReplyNote()->GetParaId());
-                
pPostItField->SetParentPostItId(GetTopReplyNote()->GetPostItField()->GetPostItId());
+                pPostItField->SetParentId(GetParaId());
+                
pPostItField->SetParentPostItId(GetPostItField()->GetPostItId());
                 this->GeneratePostItName();
-                
pPostItField->SetParentName(GetTopReplyNote()->GetPostItField()->GetName());
+                pPostItField->SetParentName(GetPostItField()->GetName());
 
                 // In this case, force generating the associated window
                 // synchronously so we can bundle its use of the registered
@@ -1126,6 +1126,12 @@ void SwAnnotationWin::ExecuteCommand(sal_uInt16 nSlot)
             mrView.GetViewFrame().GetBindings().Execute( nSlot, aItems, 
SfxCallMode::ASYNCHRON );
         }
             break;
+        case FN_PROMOTE_COMMENT:
+            SetAsRoot();
+            DoResize();
+            Invalidate();
+            mrMgr.LayoutPostIts();
+            break;
         default:
             mrView.GetViewFrame().GetBindings().Execute( nSlot );
             break;
diff --git a/sw/source/uibase/docvw/PostItMgr.cxx 
b/sw/source/uibase/docvw/PostItMgr.cxx
index f712188bcba2..bc4df5ecb409 100644
--- a/sw/source/uibase/docvw/PostItMgr.cxx
+++ b/sw/source/uibase/docvw/PostItMgr.cxx
@@ -1713,6 +1713,62 @@ void SwPostItMgr::Delete()
     LayoutPostIts();
 }
 
+void SwPostItMgr::PromoteToRoot(sal_uInt32 nPostItId)
+{
+    mpWrtShell->StartAllAction();
+
+    SwRewriter aRewriter;
+    aRewriter.AddRule(UndoArg1, SwResId(STR_CONTENT_TYPE_SINGLE_POSTIT));
+
+    // We have no undo ID at the moment.
+
+    IsPostitFieldWithPostitId aFilter(nPostItId);
+    FieldDocWatchingStack aStack(mvPostItFields, *mpView->GetDocShell(), 
aFilter);
+    const SwFormatField* pField = aStack.pop();
+    // pField now contains our AnnotationWin object
+    if (pField)
+    {
+        SwAnnotationWin* pWin = GetSidebarWin(pField);
+        pWin->SetAsRoot();
+    }
+    PrepareView();
+    mpWrtShell->EndAllAction();
+    mbLayout = true;
+    CalcRects();
+    LayoutPostIts();
+}
+
+void SwPostItMgr::MoveSubthreadToRoot(const sw::annotation::SwAnnotationWin* 
pNewRoot)
+{
+    std::vector<std::unique_ptr<SwSidebarItem>>::iterator first, middle, last;
+    first = std::find_if(mvPostItFields.begin(), mvPostItFields.end(),
+                         [&pNewRoot](const std::unique_ptr<SwSidebarItem>& 
pField) {
+                             return pField->mpPostIt == pNewRoot;
+                         });
+    if (first == mvPostItFields.end())
+        return;
+    std::set<int> aPostItIds;
+    aPostItIds.insert(pNewRoot->GetPostItField()->GetPostItId());
+    middle = first + 1;
+    while (middle != mvPostItFields.end()
+           && 
aPostItIds.contains((*middle)->mpPostIt->GetPostItField()->GetParentPostItId()))
+    {
+        
aPostItIds.insert((*middle)->mpPostIt->GetPostItField()->GetPostItId());
+        ++middle;
+    }
+    if (middle == mvPostItFields.end())
+        return;
+    last = middle;
+    while (last != mvPostItFields.end()
+           && (*last)->mpPostIt->GetPostItField()->GetParentPostItId() != 0)
+        ++last;
+    if (last == middle)
+        return;
+    std::rotate(first, middle, last);
+    CalcRects();
+    LayoutPostIts();
+}
+
 void SwPostItMgr::ExecuteFormatAllDialog(SwView& rView)
 {
     if (mvPostItFields.empty())
diff --git a/sw/source/uibase/shells/annotsh.cxx 
b/sw/source/uibase/shells/annotsh.cxx
index 5c9ed82b4114..4d87aacd451e 100644
--- a/sw/source/uibase/shells/annotsh.cxx
+++ b/sw/source/uibase/shells/annotsh.cxx
@@ -1114,6 +1114,7 @@ void SwAnnotationShell::NoteExec(SfxRequest const &rReq)
         case FN_DELETE_COMMENT_THREAD:
         case FN_RESOLVE_NOTE:
         case FN_RESOLVE_NOTE_THREAD:
+        case FN_PROMOTE_COMMENT:
             if ( pPostItMgr->HasActiveSidebarWin() )
                 pPostItMgr->GetActiveSidebarWin()->ExecuteCommand(nSlot);
             break;
@@ -1240,6 +1241,15 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
                 }
                 break;
             }
+        case FN_PROMOTE_COMMENT:
+            {
+                if (!pPostItMgr || !pPostItMgr->HasActiveAnnotationWin()
+                    || pPostItMgr->GetActiveSidebarWin()->IsRootNote())
+                {
+                    rSet.DisableItem(nWhich);
+                }
+                break;
+            }
             default:
                 rSet.InvalidateItem( nWhich );
                 break;
diff --git a/sw/source/uibase/shells/textfld.cxx 
b/sw/source/uibase/shells/textfld.cxx
index 20f21bb92355..10f6f278f4dc 100644
--- a/sw/source/uibase/shells/textfld.cxx
+++ b/sw/source/uibase/shells/textfld.cxx
@@ -506,18 +506,6 @@ void SwTextShell::ExecField(SfxRequest &rReq)
                             sText = pTextItem->GetValue();
                         pMgr->RegisterAnswerText(sText);
                         pWin->ExecuteCommand(nSlot);
-
-                        SwPostItField* pLatestPostItField = 
pMgr->GetLatestPostItField();
-                        if (pLatestPostItField)
-                        {
-                            // Set the parent postit id of the reply.
-                            
pLatestPostItField->SetParentPostItId(pIdItem->GetValue().toUInt32());
-
-                            // If name of the replied comment is empty, we 
need to set a name in order to connect them in the xml file.
-                            pWin->GeneratePostItName(); // Generates a name if 
the current name is empty.
-
-                            
pLatestPostItField->SetParentName(pWin->GetPostItField()->GetName());
-                        }
                     }
                 }
             }
@@ -549,6 +537,15 @@ void SwTextShell::ExecField(SfxRequest &rReq)
             }
         }
         break;
+        case FN_PROMOTE_COMMENT:
+        {
+            const SvxPostItIdItem* pIdItem = 
rReq.GetArg<SvxPostItIdItem>(SID_ATTR_POSTIT_ID);
+            if (pIdItem && !pIdItem->GetValue().isEmpty() && 
GetView().GetPostItMgr())
+            {
+                
GetView().GetPostItMgr()->PromoteToRoot(pIdItem->GetValue().toUInt32());
+            }
+            break;
+        }
         case FN_REDLINE_COMMENT:
         {
             /*  this code can be used once we want redline comments in the 
margin, all other stuff can
diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml 
b/sw/uiconfig/sglobal/menubar/menubar.xml
index d0b9a1c4c1b0..b9968638edd1 100644
--- a/sw/uiconfig/sglobal/menubar/menubar.xml
+++ b/sw/uiconfig/sglobal/menubar/menubar.xml
@@ -146,6 +146,7 @@
           <menu:menuitem menu:id=".uno:ReplyComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:ResolveComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:ResolveCommentThread" 
menu:style="text"/>
+          <menu:menuitem menu:id=".uno:PromoteComment" menu:syle="text"/>
           <menu:menuitem menu:id=".uno:DeleteComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:DeleteCommentThread" menu:style="text"/>
           <menu:menuitem menu:id=".uno:DeleteAuthor" menu:style="text"/>
diff --git a/sw/uiconfig/sglobal/popupmenu/annotation.xml 
b/sw/uiconfig/sglobal/popupmenu/annotation.xml
index 42c89cd7c8bc..91da8b30cbfc 100644
--- a/sw/uiconfig/sglobal/popupmenu/annotation.xml
+++ b/sw/uiconfig/sglobal/popupmenu/annotation.xml
@@ -21,6 +21,7 @@
   <menu:menuitem menu:id=".uno:ReplyComment"/>
   <menu:menuitem menu:id=".uno:ResolveComment"/>
   <menu:menuitem menu:id=".uno:ResolveCommentThread"/>
+  <menu:menuitem menu:id=".uno:PromoteComment"/>
   <menu:menuseparator/>
   <menu:menuitem menu:id=".uno:DeleteComment"/>
   <menu:menuitem menu:id=".uno:DeleteCommentThread"/>
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml 
b/sw/uiconfig/swriter/menubar/menubar.xml
index 281b77afe16e..a61844f3699a 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -151,6 +151,7 @@
           <menu:menuitem menu:id=".uno:ReplyComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:ResolveComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:ResolveCommentThread" 
menu:style="text"/>
+          <menu:menuitem menu:id=".uno:PromoteComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:DeleteComment" menu:style="text"/>
           <menu:menuitem menu:id=".uno:DeleteCommentThread" menu:style="text"/>
           <menu:menuitem menu:id=".uno:DeleteAuthor" menu:style="text"/>
diff --git a/sw/uiconfig/swriter/popupmenu/annotation.xml 
b/sw/uiconfig/swriter/popupmenu/annotation.xml
index acdc6551ea97..bda8f346e374 100644
--- a/sw/uiconfig/swriter/popupmenu/annotation.xml
+++ b/sw/uiconfig/swriter/popupmenu/annotation.xml
@@ -22,6 +22,7 @@
   <menu:menuseparator/>
   <menu:menuitem menu:id=".uno:ResolveComment"/>
   <menu:menuitem menu:id=".uno:ResolveCommentThread"/>
+  <menu:menuitem menu:id=".uno:PromoteComment"/>
   <menu:menuitem menu:id=".uno:DeleteComment"/>
   <menu:menuitem menu:id=".uno:DeleteCommentThread"/>
   <menu:menuitem menu:id=".uno:DeleteAuthor"/>
diff --git a/sw/uiconfig/swriter/ui/annotation.ui 
b/sw/uiconfig/swriter/ui/annotation.ui
index fc0e4c39a1a2..31b3c90b8aed 100644
--- a/sw/uiconfig/swriter/ui/annotation.ui
+++ b/sw/uiconfig/swriter/ui/annotation.ui
@@ -57,6 +57,14 @@
         <property name="use-underline">True</property>
       </object>
     </child>
+    <child>
+      <object class="GtkMenuItem" id="promote">
+        <property name="visible">True</property>
+        <property name="can-focus">False</property>
+        <property name="label" translatable="yes" 
context="annotationmenu|promote">Promote Comment</property>
+        <property name="use-underline">True</property>
+      </object>
+    </child>
     <child>
       <object class="GtkMenuItem" id="delete">
         <property name="visible">True</property>
diff --git a/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui 
b/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui
index 430b016a4e5a..b642cccf6b71 100644
--- a/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui
+++ b/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui
@@ -343,6 +343,13 @@
         <property name="action_name">.uno:ResolveCommentThread</property>
       </object>
     </child>
+    <child>
+      <object class="GtkMenuItem" id="MenuComments-PromoteComment">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="action_name">.uno:PromoteComment</property>
+      </object>
+    </child>
     <child>
       <object class="GtkMenuItem" id="MenuComments-DeleteAuthor">
         <property name="visible">True</property>
commit c7cbd945c7f3f6faae8cd7ed5bdc07c077160a81
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Sep 11 11:04:56 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    curl: upgrade to 8.10.0
    
    Downloaded from https://curl.se/download/curl-8.10.0.tar.xz
    
    Change-Id: I1eb9506a73162ce2e2adf1fe1e02267c34bc78ac
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173194
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit c95229bf8e3bd643b8529046f0754e2de4c6625b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173173
    Reviewed-by: Taichi Haradaguchi <[email protected]>

diff --git a/download.lst b/download.lst
index 9e7034b5eb25..c21eaa4bd7ee 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 := 
f292f6cc051d5bbabf725ef85d432dfeacc8711dd717ea97612ae590643801e5
-CURL_TARBALL := curl-8.9.1.tar.xz
+CURL_SHA256SUM := 
e6b142f0e85e954759d37e26a3627e2278137595be80e3a860c4353e4335e5a0
+CURL_TARBALL := curl-8.10.0.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/curl/zlib.patch.0 b/external/curl/zlib.patch.0
index ff3ed07b4465..83993fe8a56f 100644
--- a/external/curl/zlib.patch.0
+++ b/external/curl/zlib.patch.0
@@ -8,18 +8,18 @@
  
  # Check whether --with-zlib was given.
  if test ${with_zlib+y}
-@@ -23045,6 +23044,7 @@
+@@ -23609,12 +23609,28 @@
  
  
- if test "$OPT_ZLIB" = "no" ; then
-+    ZLIB_LIBS=""
-     { printf "%s
" "$as_me:${as_lineno-$LINENO}: WARNING: zlib disabled" >&5
+ if test "$OPT_ZLIB" = "no"; then
++  ZLIB_LIBS=""
+   { printf "%s
" "$as_me:${as_lineno-$LINENO}: WARNING: zlib disabled" >&5
  printf "%s
" "$as_me: WARNING: zlib disabled" >&2;}
  else
-@@ -23052,6 +23052,21 @@
+   if test "$OPT_ZLIB" = "yes"; then
      OPT_ZLIB=""
    fi
- 
++  
 + if test -n "$ZLIB_CFLAGS$ZLIB_LIBS"; then
 +  CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS"
 +  LIBS="$ZLIB_LIBS $LIBS"
@@ -34,10 +34,9 @@
 +  AMFIXLIB="1"
 + else
 +  ZLIB_LIBS=""
-+
-   if test -z "$OPT_ZLIB" ; then
  
-     if test -n "$PKG_CONFIG"; then
+   if test -z "$OPT_ZLIB"; then
+
 @@ -23903,6 +23903,7 @@
      LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib"
      curl_zlib_msg="enabled"
@@ -48,21 +47,22 @@
   if test x"$AMFIXLIB" = x1; then
 --- configure.ac
 +++ configure.ac
-@@ -1243,19 +1243,30 @@
+@@ -1302,19 +1302,31 @@
  clean_CPPFLAGS=$CPPFLAGS
  clean_LDFLAGS=$LDFLAGS
  clean_LIBS=$LIBS
 -ZLIB_LIBS=""
++
  AC_ARG_WITH(zlib,
  AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
  AS_HELP_STRING([--without-zlib],[disable use of zlib]),
-                [OPT_ZLIB="$withval"])
+   [OPT_ZLIB="$withval"])
  
- if test "$OPT_ZLIB" = "no" ; then
-+    ZLIB_LIBS=""
-     AC_MSG_WARN([zlib disabled])
+ if test "$OPT_ZLIB" = "no"; then
++  ZLIB_LIBS=""
+   AC_MSG_WARN([zlib disabled])
  else
-   if test "$OPT_ZLIB" = "yes" ; then
+   if test "$OPT_ZLIB" = "yes"; then
      OPT_ZLIB=""
    fi
  
@@ -77,7 +77,7 @@
 + else
 +  ZLIB_LIBS=""
 +
-   if test -z "$OPT_ZLIB" ; then
+   if test -z "$OPT_ZLIB"; then
      CURL_CHECK_PKGCONFIG(zlib)
  
 @@ -1395,6 +1395,7 @@
commit 3a1496fac58394ee541022addcc005c4f0b6d200
Author:     Michael Stahl <[email protected]>
AuthorDate: Tue Sep 10 10:30:00 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    expat: upgrade to release 2.6.3
    
    Fixes CVE-2024-45490 CVE-2024-45491 CVE-2024-45492
    
    Change-Id: I17f7d9a5c540e7d2005515f1f4fd79e0a5c631ca
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173097
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/download.lst b/download.lst
index bc8b90317137..9e7034b5eb25 100644
--- a/download.lst
+++ b/download.lst
@@ -111,8 +111,8 @@ ETONYEK_TARBALL := 
libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-EXPAT_SHA256SUM := 
ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364
-EXPAT_TARBALL := expat-2.6.2.tar.xz
+EXPAT_SHA256SUM := 
274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc
+EXPAT_TARBALL := expat-2.6.3.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 6a03dd097ea4918a9da8d28a3981ef4d47f4d5d4
Author:     Xisco Fauli <[email protected]>
AuthorDate: Sat Sep 7 00:42:57 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:08 2024 +0200

    Python: upgrade to 3.8.20
    
    Downloaded from 
https://www.python.org/ftp/python/3.8.20/Python-3.8.20.tar.xz
    
    Change-Id: I142d52236bcd4011359889ce6e64898ca08999c7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172983
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins

diff --git a/configure.ac b/configure.ac
index d9a1f2335b40..ad8163a248a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10115,7 +10115,7 @@ if test \( "$cross_compiling" = yes -a -z 
"$PYTHON_FOR_BUILD" \) -o "$enable_pyt
     SYSTEM_PYTHON=
     PYTHON_VERSION_MAJOR=3
     PYTHON_VERSION_MINOR=8
-    PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19
+    PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.20
     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in 
download.lst])
     fi
diff --git a/download.lst b/download.lst
index d75bb3bc6308..bc8b90317137 100644
--- a/download.lst
+++ b/download.lst
@@ -658,8 +658,8 @@ POSTGRESQL_TARBALL := postgresql-13.16.tar.bz2
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-PYTHON_SHA256SUM := 
d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076
-PYTHON_TARBALL := Python-3.8.19.tar.xz
+PYTHON_SHA256SUM := 
6fb89a7124201c61125c0ab4cf7f6894df339a40c02833bfd28ab4d7691fafb4
+PYTHON_TARBALL := Python-3.8.20.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 331a49901686541921faaf441ecb77403428a8f5
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Jul 31 11:44:49 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:07 2024 +0200

    curl: upgrade to 8.9.1
    
    Downloaded from https://curl.se/download/curl-8.9.1.tar.xz
    
    Change-Id: I7a8ddd798c41ee6c9163b771b6c57f100fdc8af0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171292
    Tested-by: Jenkins
    Reviewed-by: Taichi Haradaguchi <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172834
    Reviewed-by: Christian Lohmaier <[email protected]>
    Tested-by: Christian Lohmaier <[email protected]>

diff --git a/download.lst b/download.lst
index eb959b808bdf..d75bb3bc6308 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 := 
ff09b2791ca56d25fd5c3f3a4927dce7c8a9dc4182200c487ca889fba1fdd412
-CURL_TARBALL := curl-8.9.0.tar.xz
+CURL_SHA256SUM := 
f292f6cc051d5bbabf725ef85d432dfeacc8711dd717ea97612ae590643801e5
+CURL_TARBALL := curl-8.9.1.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 249db0db2a7ecf96976ddfccd1bcfb4de38d58b9
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Jul 24 12:43:09 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:07 2024 +0200

    curl: upgrade to 8.9.0
    
    Downloaded from https://curl.se/download/curl-8.9.0.tar.xz
    
    Change-Id: Id8198dcc73e1679e8f672459b19d84606ae3e762
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170934
    Reviewed-by: Xisco Fauli <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 282da64a8fbcc71b59479bf13820a0b93c5f5889)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170945
    Reviewed-by: Christian Lohmaier <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172833
    Tested-by: Christian Lohmaier <[email protected]>

diff --git a/download.lst b/download.lst
index d81f0966a02b..eb959b808bdf 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 := 
0f58bb95fc330c8a46eeb3df5701b0d90c9d9bfcc42bd1cd08791d12551d4400
-CURL_TARBALL := curl-8.8.0.tar.xz
+CURL_SHA256SUM := 
ff09b2791ca56d25fd5c3f3a4927dce7c8a9dc4182200c487ca889fba1fdd412
+CURL_TARBALL := curl-8.9.0.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/curl/configurable-z-option.patch.0 
b/external/curl/configurable-z-option.patch.0
index 84516ad21917..5be2445e28c1 100644
--- a/external/curl/configurable-z-option.patch.0
+++ b/external/curl/configurable-z-option.patch.0
@@ -6,7 +6,7 @@
  CC_NODEBUG  = $(CC) /O2 /DNDEBUG
 -CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
 +CC_DEBUG    = $(CC) /Od /Gm $(DEBUG_FLAGS_VALUE) /D_DEBUG /GZ
- CFLAGS      = /I. /I../lib /I../include /nologo /W4 /GX /DWIN32 /YX /FD /c 
/DBUILDING_LIBCURL
+ CFLAGS      = /I. /I../lib /I../include /nologo /W4 /GX /YX /FD /c 
/DBUILDING_LIBCURL
  !ELSE
  CC_NODEBUG  = $(CC) /O2 /DNDEBUG
 @@ -64,7 +64,7 @@
diff --git a/external/curl/curl-msvc.patch.1 b/external/curl/curl-msvc.patch.1
index 54ad026ec8c7..2295b1b53ecf 100644
--- a/external/curl/curl-msvc.patch.1
+++ b/external/curl/curl-msvc.patch.1
@@ -6,22 +6,22 @@ MSVC: using SOLARINC
  !ELSE
  CC_NODEBUG  = $(CC) /O2 /DNDEBUG
  CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
--CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c 
/DBUILDING_LIBCURL
-+CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c 
/DBUILDING_LIBCURL $(SOLARINC)
+-CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c 
/DBUILDING_LIBCURL
++CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c 
/DBUILDING_LIBCURL $(SOLARINC)
  !ENDIF
  
  LFLAGS     = /nologo /machine:$(MACHINE)
-@@ -426,11 +426,11 @@
+@@ -428,11 +428,11 @@
  # CURL_XX macros are for the curl.exe command
  
  !IF "$(DEBUG)"=="yes"
--RC_FLAGS = /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
-+RC_FLAGS = $(SOLARINC) /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
+-RC_FLAGS = /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
++RC_FLAGS = $(SOLARINC) /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
  CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)
- CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /dDEBUGBUILD=1 /Fo $@ 
$(CURL_SRC_DIR)+ CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /d_DEBUG /Fo $@ 
$(CURL_SRC_DIR)  !ELSE
--RC_FLAGS = /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
-+RC_FLAGS = $(SOLARINC) /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
+-RC_FLAGS = /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
++RC_FLAGS = $(SOLARINC) /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
  CURL_CC       = $(CC_NODEBUG) $(RTLIB)
- CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /dDEBUGBUILD=0 /Fo $@ 
$(CURL_SRC_DIR)+ CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /Fo $@ 
$(CURL_SRC_DIR)  !ENDIF
diff --git a/external/curl/zlib.patch.0 b/external/curl/zlib.patch.0
index b4442ba262d1..ff3ed07b4465 100644
--- a/external/curl/zlib.patch.0
+++ b/external/curl/zlib.patch.0
@@ -38,8 +38,8 @@
    if test -z "$OPT_ZLIB" ; then
  
      if test -n "$PKG_CONFIG"; then
-@@ -23344,6 +23359,7 @@
- printf "%s
" "$as_me: found both libz and libz.h header" >&6;}
+@@ -23903,6 +23903,7 @@
+     LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib"
      curl_zlib_msg="enabled"
    fi
 + fi
@@ -80,8 +80,8 @@
    if test -z "$OPT_ZLIB" ; then
      CURL_CHECK_PKGCONFIG(zlib)
  
-@@ -1336,6 +1347,7 @@
-     AC_MSG_NOTICE([found both libz and libz.h header])
+@@ -1395,6 +1395,7 @@
+     LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib"
      curl_zlib_msg="enabled"
    fi
 + fi
commit 8988891b35eba68bf1dd3ab7ef7d2481a724bc3c
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Sep 3 17:01:28 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:07 2024 +0200

    openssl: upgrade to 3.0.15
    
    Downloaded from 
https://github.com/openssl/openssl/releases/download/openssl-3.0.15/openssl-3.0.15.tar.gz
    
    Change-Id: Ic1598fe8fafe610c7a3b409c5811bcc52658b130
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172830
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit e21e07f24bfdbe802e3ed8e611a135ab2ad2fe4c)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172811
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 1f01152a4ba8..d81f0966a02b 100644
--- a/download.lst
+++ b/download.lst
@@ -611,8 +611,8 @@ OPENLDAP_TARBALL := openldap-2.6.7.tgz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-OPENSSL_SHA256SUM := 
eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca
-OPENSSL_TARBALL := openssl-3.0.14.tar.gz
+OPENSSL_SHA256SUM := 
23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533
+OPENSSL_TARBALL := openssl-3.0.15.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 99e9c1e8532a4670ce5d92730e5e12e05f983a28
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed May 22 11:46:17 2024 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:07 2024 +0200

    curl: Upgrade to 8.8.0
    
    Downloaded from https://curl.se/download/curl-8.8.0.tar.xz
    
    Change-Id: Ib6ecbdb774f4d2643d8e848d8826704a51884eac
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167929
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172832
    Reviewed-by: Taichi Haradaguchi <[email protected]>

diff --git a/download.lst b/download.lst
index fa9a7419cdf2..1f01152a4ba8 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 := 
6fea2aac6a4610fbd0400afb0bcddbe7258a64c63f1f68e5855ebc0c659710cd
-CURL_TARBALL := curl-8.7.1.tar.xz
+CURL_SHA256SUM := 
0f58bb95fc330c8a46eeb3df5701b0d90c9d9bfcc42bd1cd08791d12551d4400
+CURL_TARBALL := curl-8.8.0.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/curl/curl-msvc-disable-protocols.patch.1 
b/external/curl/curl-msvc-disable-protocols.patch.1
index 905a2d6a7ac3..1c74fa63381b 100644
--- a/external/curl/curl-msvc-disable-protocols.patch.1
+++ b/external/curl/curl-msvc-disable-protocols.patch.1
@@ -2,9 +2,9 @@ disable protocols nobody needs in MSVC build
 
 --- curl/lib/config-win32.h.orig       2017-08-09 16:43:29.464000000 +0200
 +++ curl/lib/config-win32.h    2017-08-09 16:47:38.549200000 +0200
-@@ -654,4 +654,20 @@
- #  define ENABLE_IPV6 1
- #endif
+@@ -509,4 +509,20 @@
+ /* If you want to build curl with the built-in manual */
+ #define USE_MANUAL 1
  
 +#define CURL_DISABLE_DICT 1
 +#define CURL_DISABLE_FILE 1
commit 6aef7b85ac0594ff83f3dd0c6b4e8eedbdd9d04b
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue Sep 10 09:31:43 2024 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 17 15:29:06 2024 +0200

    Resolves: tdf#162455 svg->curve causes text in objects to disappear
    
    Rather than assuming there is a uniform unchanging MapMode scaling,
    follow the same pattern as SVGWriter and map positions/sizes back
    relative to the original MapMode.
    
    Examples of #i119125#, tdf#162455 and tdf#160625 work
    
    Change-Id: I8229cebee6173fa4905828afb3b973c80ede3315
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173318
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/sd/qa/unit/data/tdf162455.svg b/sd/qa/unit/data/tdf162455.svg
new file mode 100644
index 000000000000..ba50863864d0
--- /dev/null
+++ b/sd/qa/unit/data/tdf162455.svg
@@ -0,0 +1,2115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+Génération automatique de graphiques SVG interactifs
+(c) Insee 2012, 2016     = BH  : [email protected] 
+fonds de carte, concepts = CY  : [email protected] 
+            cartographie = ADS : [email protected]
+[4G 23/11/2016]
+       onload="evt => {console.log('onload', evt) init('{$graph_id}',evt)}"
+               -->
+
+<svg
+   id="G_G0000101001"
+   aria-label=""
+   role="img"
+   viewBox="0 0 630 550"
+   width="100%"
+   onload="console.log('dfjdsvldvlnvds')"
+   xml:space="default"
+   preserveAspectRatio="xMinYMin meet"
+   version="1.1"
+   sodipodi:docname="teste03.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:svg="http://www.w3.org/2000/svg";>
+  <sodipodi:namedview
+     id="namedview319"
+     pagecolor="#505050"
+     bordercolor="#eeeeee"
+     borderopacity="1"
+     inkscape:showpageshadow="0"
+     inkscape:pageopacity="0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#505050"
+     showgrid="false"
+     inkscape:zoom="2.4273047"
+     inkscape:cx="363.77798"
+     inkscape:cy="309.80865"
+     inkscape:window-width="1920"
+     inkscape:window-height="2123"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="G_G0000101001_graphique" />
+  <script
+     type="text/javascript"
+     id="script2">
+{
+                               
+                                        
+var G_G0000101001_graph_l = 630 ;
+var G_G0000101001_help_nblig=3;
+var G_G0000101001_help_fontsize=12;
+var G_G0000101001_help_last=0;
+var G_G0000101001_keep_title=1;
+var G_G0000101001_prefixegeo=&quot;france_regions&quot;;
+var G_G0000101001_lib_colonne_brut=[&quot;&quot;,&quot;Emploi salarié total - 
Pays de la Loire&quot;,&quot;Emploi salarié total - France hors 
Mayotte&quot;,&quot;Emploi salarié privé - Pays de la Loire&quot;,&quot;Emploi 
salarié privé - France hors Mayotte&quot;]
+var G_G0000101001_graph_data=[ [&quot;&quot;,&quot;Emploi salarié total - Pays 
de la Loire&quot;,&quot;Emploi salarié total - France hors 
Mayotte&quot;,&quot;Emploi salarié privé - Pays de la Loire&quot;,&quot;Emploi 
salarié privé - France hors Mayotte&quot;],[&quot;4ᵉ trim. 
2017&quot;,&quot;100,0&quot;,&quot;100,0&quot;,&quot;100,0&quot;,&quot;100,0&quot;],[&quot;1ᵉ
 trim. 
2018&quot;,&quot;100,3&quot;,&quot;100,2&quot;,&quot;100,3&quot;,&quot;100,3&quot;],[&quot;2ᵉ
 trim. 
2018&quot;,&quot;100,4&quot;,&quot;100,2&quot;,&quot;100,6&quot;,&quot;100,4&quot;],[&quot;3ᵉ
 trim. 
2018&quot;,&quot;100,6&quot;,&quot;100,3&quot;,&quot;100,9&quot;,&quot;100,6&quot;],[&quot;4ᵉ
 trim. 
2018&quot;,&quot;101,0&quot;,&quot;100,6&quot;,&quot;101,3&quot;,&quot;100,9&quot;],
+[&quot;1ᵉ trim. 
2019&quot;,&quot;101,7&quot;,&quot;101,3&quot;,&quot;102,1&quot;,&quot;101,7&quot;],[&quot;2ᵉ
 trim. 
2019&quot;,&quot;101,9&quot;,&quot;101,4&quot;,&quot;102,2&quot;,&quot;101,9&quot;],[&quot;3ᵉ
 trim. 
2019&quot;,&quot;102,1&quot;,&quot;101,6&quot;,&quot;102,5&quot;,&quot;102,2&quot;],[&quot;4ᵉ
 trim. 
2019&quot;,&quot;102,7&quot;,&quot;102,0&quot;,&quot;103,2&quot;,&quot;102,6&quot;],[&quot;1ᵉ
 trim. 
2020&quot;,&quot;100,7&quot;,&quot;100,3&quot;,&quot;100,6&quot;,&quot;100,3&quot;],
+[&quot;2ᵉ trim. 
2020&quot;,&quot;100,6&quot;,&quot;99,7&quot;,&quot;100,7&quot;,&quot;99,9&quot;],[&quot;3ᵉ
 trim. 
2020&quot;,&quot;102,6&quot;,&quot;101,7&quot;,&quot;102,9&quot;,&quot;102,1&quot;],[&quot;4ᵉ
 trim. 
2020&quot;,&quot;102,9&quot;,&quot;101,8&quot;,&quot;103,3&quot;,&quot;102,1&quot;],[&quot;1ᵉ
 trim. 
2021&quot;,&quot;103,8&quot;,&quot;102,6&quot;,&quot;104,5&quot;,&quot;103,2&quot;],[&quot;2ᵉ
 trim. 
2021&quot;,&quot;104,9&quot;,&quot;103,6&quot;,&quot;105,7&quot;,&quot;104,5&quot;],
+[&quot;3ᵉ trim. 
2021&quot;,&quot;105,7&quot;,&quot;104,5&quot;,&quot;106,7&quot;,&quot;105,4&quot;],[&quot;4ᵉ
 trim. 
2021&quot;,&quot;106,5&quot;,&quot;105,0&quot;,&quot;107,6&quot;,&quot;106,2&quot;],[&quot;1ᵉ
 trim. 
2022&quot;,&quot;106,9&quot;,&quot;105,3&quot;,&quot;108,1&quot;,&quot;106,6&quot;],[&quot;2ᵉ
 trim. 
2022&quot;,&quot;107,3&quot;,&quot;105,8&quot;,&quot;108,5&quot;,&quot;107,2&quot;],[&quot;3ᵉ
 trim. 
2022&quot;,&quot;107,7&quot;,&quot;106,2&quot;,&quot;109,1&quot;,&quot;107,7&quot;],
+[&quot;4ᵉ trim. 
2022&quot;,&quot;108,2&quot;,&quot;106,5&quot;,&quot;109,6&quot;,&quot;108,2&quot;],[&quot;1ᵉ
 trim. 
2023&quot;,&quot;108,6&quot;,&quot;106,7&quot;,&quot;109,9&quot;,&quot;108,3&quot;],[&quot;2ᵉ
 trim. 
2023&quot;,&quot;108,9&quot;,&quot;106,9&quot;,&quot;110,2&quot;,&quot;108,5&quot;],[&quot;3ᵉ
 trim. 
2023&quot;,&quot;109,0&quot;,&quot;107,1&quot;,&quot;110,4&quot;,&quot;108,7&quot;],[&quot;4ᵉ
 trim. 
2023&quot;,&quot;109,2&quot;,&quot;107,1&quot;,&quot;110,4&quot;,&quot;108,6&quot;],
+[&quot;1ᵉ trim. 
2024&quot;,&quot;109,5&quot;,&quot;107,4&quot;,&quot;110,7&quot;,&quot;109,0&quot;]
+];
+}
+                       </script>
+  <defs
+     id="defs7">
+    <clipPath
+       id="G_G0000101001_clipRectGraph">
+      <rect
+         x="10"
+         y="95"
+         width="610"
+         height="445"
+         id="rect4" />
+    </clipPath>
+  </defs>
+  <style
+     type="text/css"
+     id="style9">
+       /* Styles statiques par défaut extraits d'un fichier XML */
+                                       
+svg {max-width: 656px;}
+text {stroke:none}
+.G_G0000101001_sens-line {stroke:gray;stroke-width:5;opacity:0}
+.G_G0000101001_gridline { stroke:gray; stroke-width :0.5; }
+.G_G0000101001_gridlinelog { stroke:silver; stroke-width :0.5; }
+#G_G0000101001_axes { stroke:navy; stroke-width:1 }
+#G_G0000101001_axes-titres {fill:black}
+#G_G0000101001_axex-titre2 {text-anchor:start}
+#G_G0000101001_axex-titre {text-anchor:end}
+#G_G0000101001_axey-titre-pyramide {text-anchor:middle}
+#G_G0000101001_sources {font-style:italic}
+#G_G0000101001_extra_elements {pointer-events:none}
+#G_G0000101001_help-lib1b {text-anchor:end}
+#G_G0000101001_help-lib2b {text-anchor:end}
+@media print 
{use[class*=&quot;marque&quot;],path[class*=&quot;surface&quot;],rect[class*=&quot;surface&quot;]
 {opacity:1 !important}}
+@media print {path[class*=&quot;pie-slice&quot;] 
{stroke:white;stroke-width:1.5}}
+
+       /* Styles multiples pour les lignes, surfaces, marques à partir des 
paramètres (couleurs, traits, largeurs, tailles, marques ...) 
+               générés par la transformation */
+                                       
+.G_G0000101001_courbe1 { stroke-opacity:1; fill:none; stroke:#0AA4B0; 
stroke-width:2; stroke-dasharray: ; }
+.G_G0000101001_courbe2 { stroke-opacity:1; fill:none; stroke:#0F417A; 
stroke-width:2; stroke-dasharray: ; }
+.G_G0000101001_courbe3 { stroke-opacity:1; fill:none; stroke:#0AA4B0; 
stroke-width:2; stroke-dasharray:4 2; }
+.G_G0000101001_courbe4 { stroke-opacity:1; fill:none; stroke:#0F417A; 
stroke-width:2; stroke-dasharray:4 2; }
+
+#G_G0000101001_axes-titres { fill:black; font-size:13px; }
+#G_G0000101001_axey-titre1 { fill:black; text-anchor:start; }
+#G_G0000101001_ticks { font-size:10px; }
+#G_G0000101001_ticks-axe1 { fill:black; text-anchor:end; }
+.G_G0000101001_tick-label { text-anchor:end; font-size:10px; }
+.G_G0000101001_tick-bar { text-anchor:end; font-size:10px; }
+
+#G_G0000101001_graphique { font-family:&quot;Open Sans&quot;,Verdana, 
&quot;Bitstream Vera Sans&quot;, sans-serif; stroke-linejoin:round; 
stroke-linecap:butt; }
+#G_G0000101001_cadre { stroke-width:0.7; fill:none; stroke:white; }
+#G_G0000101001_titre { font-weight:bolder; font-size:12px; fill:black; 
text-anchor:start; }
+#G_G0000101001_soustitre { font-size:12px; text-anchor:start; }
+#G_G0000101001_legende { stroke-width:1; text-anchor:start; font-size:12px; }
+#G_G0000101001_unite { font-size:13px; text-anchor:start; }
+#G_G0000101001_notes-sources { text-anchor:start; fill:black; font-size:11px; }
+#G_G0000101001_help-bubble { fill:#FFE070; stroke:gray; stroke-width:0.5; 
stroke-opacity:0.8; fill-opacity:0.8; }
+#G_G0000101001_help { pointer-events:none; font-size:12px; }
+
+#G_G0000101001_legende&gt;g&gt;g:hover {cursor:pointer; 
font-weight:bold}</style>
+  <g
+     id="G_G0000101001_graphique"
+     aria-hidden="true">
+    <text
+       id="G_G0000101001_debug"
+       x="100"
+       y="590" />
+    <rect
+       id="G_G0000101001_cadre"
+       x="1"
+       y="1"
+       width="628"
+       height="548" />
+    <g
+       id="G_G0000101001_notes-sources"
+       transform="translate(15,549)">
+      <!--Notes-->
+      <g
+         id="G_G0000101001_notes" />
+      <!--Sources-->
+      <g
+         id="G_G0000101001_sources"
+         transform="translate(0,0)" />
+    </g>
+    <!--Ticks-->
+    <g
+       id="G_G0000101001_ticks">
+      <!--Axe principal-->
+      <g
+         id="G_G0000101001_ticks-axe1">
+        <!--ticks à partir de l'axe et au-dessus-->
+        <g
+           id="G_G0000101001_tick-axe1-1"
+           transform="translate(41,394)">
+          <line
+             id="G_G0000101001_tick-axe1-1-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-1-text"
+             x="-5"
+             y="3">100</text>
+        </g>
+        <g
+           id="G_G0000101001_tick-axe1-2"
+           transform="translate(41,349)">
+          <line
+             id="G_G0000101001_tick-axe1-2-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-2-text"
+             x="-5"
+             y="3">102</text>
+        </g>
+        <g
+           id="G_G0000101001_tick-axe1-3"
+           transform="translate(41,304)">
+          <line
+             id="G_G0000101001_tick-axe1-3-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-3-text"
+             x="-5"
+             y="3">104</text>
+        </g>
+        <g
+           id="G_G0000101001_tick-axe1-4"
+           transform="translate(41,260)">
+          <line
+             id="G_G0000101001_tick-axe1-4-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-4-text"
+             x="-5"
+             y="3">106</text>
+        </g>
+        <g
+           id="G_G0000101001_tick-axe1-5"
+           transform="translate(41,215)">
+          <line
+             id="G_G0000101001_tick-axe1-5-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-5-text"
+             x="-5"
+             y="3">108</text>
+        </g>
+        <g
+           id="G_G0000101001_tick-axe1-6"
+           transform="translate(41,170)">
+          <line
+             id="G_G0000101001_tick-axe1-6-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-6-text"
+             x="-5"
+             y="3">110</text>
+        </g>
+        <g
+           id="G_G0000101001_tick-axe1-7"
+           transform="translate(41,125)">
+          <line
+             id="G_G0000101001_tick-axe1-7-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-7-text"
+             x="-5"
+             y="3">112</text>
+        </g>
+        <!--ticks en-dessous de l'axe-->
+        <g
+           id="G_G0000101001_tick-axe1-8"
+           transform="translate(41,439)">
+          <line
+             id="G_G0000101001_tick-axe1-8-line"
+             x2="559"
+             class="G_G0000101001_gridline" />
+          <text
+             id="G_G0000101001_tick-axe1-8-text"
+             x="-5"
+             y="3">98</text>
+        </g>
+      </g>
+    </g>
+    <g
+       id="G_G0000101001_axes-titres">
+      <!--Titres axe vertical-->
+      <text
+         id="G_G0000101001_axey-titre1"
+         x="12"
+         y="111">Even more tests</text>
+    </g>
+    <!--Axes-->
+    <g
+       id="G_G0000101001_axes"
+       style=";stroke:navy;  stroke-width :1; ">
+      <line
+         id="G_G0000101001_axe-x"
+         x1="46"
+         y1="394"
+         x2="605"
+         y2="394" />
+      <line
+         id="G_G0000101001_axe-y1"
+         x1="46"
+         y1="439"
+         x2="46"
+         y2="115" />
+    </g>
+    <!--Séries-->
+    <g
+       id="G_G0000101001_graph">
+      <!--Repères axe X     periodex=4-->
+      <g
+         id="G_G0000101001_courbes-ticks"
+         class="G_G0000101001_tick-label">
+        <line
+           id="G_G0000101001_courbes-tick-1"
+           x1="46"
+           x2="46"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-1-text"
+           transform="translate(46,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-1-text-1">4ᵉ trim.0000</text>
+        </g>
+        <line
+           id="G_G0000101001_courbes-tick-5"
+           x1="135"
+           x2="135"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-5-text"
+           transform="translate(135,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-5-text-1">4ᵉ trim.0000</text>
+        </g>
+        <line
+           id="G_G0000101001_courbes-tick-9"
+           x1="223"
+           x2="223"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-9-text"
+           transform="translate(223,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-9-text-1">4ᵉ trim.0000</text>
+        </g>
+        <line
+           id="G_G0000101001_courbes-tick-13"
+           x1="312"
+           x2="312"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-13-text"
+           transform="translate(312,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-13-text-1">4ᵉ trim.0000</text>
+        </g>
+        <line
+           id="G_G0000101001_courbes-tick-17"
+           x1="401"
+           x2="401"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-17-text"
+           transform="translate(401,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-17-text-1">4ᵉ trim.0000</text>
+        </g>
+        <line
+           id="G_G0000101001_courbes-tick-21"
+           x1="489"
+           x2="489"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-21-text"
+           transform="translate(489,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-21-text-1">4ᵉ trim.0000</text>
+        </g>
+        <line
+           id="G_G0000101001_courbes-tick-26"
+           x1="600"
+           x2="600"
+           y1="444"
+           y2="120"
+           class="G_G0000101001_gridline" />
+        <g
+           id="G_G0000101001_courbes-tick-26-text"
+           transform="translate(600,454) rotate(-45)">
+          <text
+             id="G_G0000101001_courbes-tick-26-text-1">1ᵉ trim.0000</text>
+        </g>
+      </g>
+      <g
+         id="G_G0000101001_courbes">
+        <!--Courbe colonne numéro 1-->
+        <path
+           id="G_G0000101001_courbe-C1"
+           d="M 46,394 L 68,387 L 90,385 L 112,381 L 135,372 L 157,356 L 
179,352 L 201,347 L 223,334 L 245,378 L 268,381 L 290,336 L 312,329 L 334,309 L 
356,284 L 378,266 L 401,248 L 423,239 L 445,230 L 467,221 L 489,210 L 511,201 L 
534,195 L 556,192 L 578,188 L 600,181 "
+           class="G_G0000101001_courbe1" />
+        <!--Courbe colonne numéro 2-->
+        <path
+           id="G_G0000101001_courbe-C2"
+           d="M 46,394 L 68,390 L 90,390 L 112,387 L 135,381 L 157,365 L 
179,363 L 201,358 L 223,349 L 245,387 L 268,401 L 290,356 L 312,354 L 334,336 L 
356,313 L 378,293 L 401,282 L 423,275 L 445,264 L 467,255 L 489,248 L 511,244 L 
534,239 L 556,235 L 578,235 L 600,228 "
+           class="G_G0000101001_courbe2" />
+        <!--Courbe colonne numéro 3-->
+        <path
+           id="G_G0000101001_courbe-C3"
+           d="M 46,394 L 68,387 L 90,381 L 112,374 L 135,365 L 157,347 L 
179,345 L 201,338 L 223,322 L 245,381 L 268,378 L 290,329 L 312,320 L 334,293 L 
356,266 L 378,244 L 401,224 L 423,212 L 445,204 L 467,190 L 489,179 L 511,172 L 
534,165 L 556,161 L 578,161 L 600,154 "
+           class="G_G0000101001_courbe3" />
+        <!--Courbe colonne numéro 4-->
+        <path
+           id="G_G0000101001_courbe-C4"
+           d="M 46,394 L 68,387 L 90,385 L 112,381 L 135,374 L 157,356 L 
179,352 L 201,345 L 223,336 L 245,387 L 268,396 L 290,347 L 312,347 L 334,322 L 
356,293 L 378,273 L 401,255 L 423,246 L 445,233 L 467,221 L 489,210 L 511,208 L 
534,204 L 556,199 L 578,201 L 600,192 "
+           class="G_G0000101001_courbe4" />
+      </g>
+      <g
+         id="G_G0000101001_courbes-lignes"
+         class="G_G0000101001_sens-line">
+        <!--Segments colonne numéro 1-->
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L2"
+           x1="46"
+           y1="394"
+           x2="68"
+           y2="387"
+           onmouseout="hide_help_line('G_G0000101001',2,1)"
+           onmousemove="show_help_line('G_G0000101001',2,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L3"
+           x1="68"
+           y1="387"
+           x2="90"
+           y2="385"
+           onmouseout="hide_help_line('G_G0000101001',3,1)"
+           onmousemove="show_help_line('G_G0000101001',3,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L4"
+           x1="90"
+           y1="385"
+           x2="112"
+           y2="381"
+           onmouseout="hide_help_line('G_G0000101001',4,1)"
+           onmousemove="show_help_line('G_G0000101001',4,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L5"
+           x1="112"
+           y1="381"
+           x2="135"
+           y2="372"
+           onmouseout="hide_help_line('G_G0000101001',5,1)"
+           onmousemove="show_help_line('G_G0000101001',5,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L6"
+           x1="135"
+           y1="372"
+           x2="157"
+           y2="356"
+           onmouseout="hide_help_line('G_G0000101001',6,1)"
+           onmousemove="show_help_line('G_G0000101001',6,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L7"
+           x1="157"
+           y1="356"
+           x2="179"
+           y2="352"
+           onmouseout="hide_help_line('G_G0000101001',7,1)"
+           onmousemove="show_help_line('G_G0000101001',7,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L8"
+           x1="179"
+           y1="352"
+           x2="201"
+           y2="347"
+           onmouseout="hide_help_line('G_G0000101001',8,1)"
+           onmousemove="show_help_line('G_G0000101001',8,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L9"
+           x1="201"
+           y1="347"
+           x2="223"
+           y2="334"
+           onmouseout="hide_help_line('G_G0000101001',9,1)"
+           onmousemove="show_help_line('G_G0000101001',9,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L10"
+           x1="223"
+           y1="334"
+           x2="245"
+           y2="378"
+           onmouseout="hide_help_line('G_G0000101001',10,1)"
+           onmousemove="show_help_line('G_G0000101001',10,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L11"
+           x1="245"
+           y1="378"
+           x2="268"
+           y2="381"
+           onmouseout="hide_help_line('G_G0000101001',11,1)"
+           onmousemove="show_help_line('G_G0000101001',11,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L12"
+           x1="268"
+           y1="381"
+           x2="290"
+           y2="336"
+           onmouseout="hide_help_line('G_G0000101001',12,1)"
+           onmousemove="show_help_line('G_G0000101001',12,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L13"
+           x1="290"
+           y1="336"
+           x2="312"
+           y2="329"
+           onmouseout="hide_help_line('G_G0000101001',13,1)"
+           onmousemove="show_help_line('G_G0000101001',13,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L14"
+           x1="312"
+           y1="329"
+           x2="334"
+           y2="309"
+           onmouseout="hide_help_line('G_G0000101001',14,1)"
+           onmousemove="show_help_line('G_G0000101001',14,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L15"
+           x1="334"
+           y1="309"
+           x2="356"
+           y2="284"
+           onmouseout="hide_help_line('G_G0000101001',15,1)"
+           onmousemove="show_help_line('G_G0000101001',15,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L16"
+           x1="356"
+           y1="284"
+           x2="378"
+           y2="266"
+           onmouseout="hide_help_line('G_G0000101001',16,1)"
+           onmousemove="show_help_line('G_G0000101001',16,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L17"
+           x1="378"
+           y1="266"
+           x2="401"
+           y2="248"
+           onmouseout="hide_help_line('G_G0000101001',17,1)"
+           onmousemove="show_help_line('G_G0000101001',17,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L18"
+           x1="401"
+           y1="248"
+           x2="423"
+           y2="239"
+           onmouseout="hide_help_line('G_G0000101001',18,1)"
+           onmousemove="show_help_line('G_G0000101001',18,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L19"
+           x1="423"
+           y1="239"
+           x2="445"
+           y2="230"
+           onmouseout="hide_help_line('G_G0000101001',19,1)"
+           onmousemove="show_help_line('G_G0000101001',19,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L20"
+           x1="445"
+           y1="230"
+           x2="467"
+           y2="221"
+           onmouseout="hide_help_line('G_G0000101001',20,1)"
+           onmousemove="show_help_line('G_G0000101001',20,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L21"
+           x1="467"
+           y1="221"
+           x2="489"
+           y2="210"
+           onmouseout="hide_help_line('G_G0000101001',21,1)"
+           onmousemove="show_help_line('G_G0000101001',21,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L22"
+           x1="489"
+           y1="210"
+           x2="511"
+           y2="201"
+           onmouseout="hide_help_line('G_G0000101001',22,1)"
+           onmousemove="show_help_line('G_G0000101001',22,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L23"
+           x1="511"
+           y1="201"
+           x2="534"
+           y2="195"
+           onmouseout="hide_help_line('G_G0000101001',23,1)"
+           onmousemove="show_help_line('G_G0000101001',23,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L24"
+           x1="534"
+           y1="195"
+           x2="556"
+           y2="192"
+           onmouseout="hide_help_line('G_G0000101001',24,1)"
+           onmousemove="show_help_line('G_G0000101001',24,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L25"
+           x1="556"
+           y1="192"
+           x2="578"
+           y2="188"
+           onmouseout="hide_help_line('G_G0000101001',25,1)"
+           onmousemove="show_help_line('G_G0000101001',25,1)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C1-L26"
+           x1="578"
+           y1="188"
+           x2="600"
+           y2="181"
+           onmouseout="hide_help_line('G_G0000101001',26,1)"
+           onmousemove="show_help_line('G_G0000101001',26,1)" />
+        <!--Segments colonne numéro 2-->
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L2"
+           x1="46"
+           y1="394"
+           x2="68"
+           y2="390"
+           onmouseout="hide_help_line('G_G0000101001',2,2)"
+           onmousemove="show_help_line('G_G0000101001',2,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L3"
+           x1="68"
+           y1="390"
+           x2="90"
+           y2="390"
+           onmouseout="hide_help_line('G_G0000101001',3,2)"
+           onmousemove="show_help_line('G_G0000101001',3,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L4"
+           x1="90"
+           y1="390"
+           x2="112"
+           y2="387"
+           onmouseout="hide_help_line('G_G0000101001',4,2)"
+           onmousemove="show_help_line('G_G0000101001',4,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L5"
+           x1="112"
+           y1="387"
+           x2="135"
+           y2="381"
+           onmouseout="hide_help_line('G_G0000101001',5,2)"
+           onmousemove="show_help_line('G_G0000101001',5,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L6"
+           x1="135"
+           y1="381"
+           x2="157"
+           y2="365"
+           onmouseout="hide_help_line('G_G0000101001',6,2)"
+           onmousemove="show_help_line('G_G0000101001',6,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L7"
+           x1="157"
+           y1="365"
+           x2="179"
+           y2="363"
+           onmouseout="hide_help_line('G_G0000101001',7,2)"
+           onmousemove="show_help_line('G_G0000101001',7,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L8"
+           x1="179"
+           y1="363"
+           x2="201"
+           y2="358"
+           onmouseout="hide_help_line('G_G0000101001',8,2)"
+           onmousemove="show_help_line('G_G0000101001',8,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L9"
+           x1="201"
+           y1="358"
+           x2="223"
+           y2="349"
+           onmouseout="hide_help_line('G_G0000101001',9,2)"
+           onmousemove="show_help_line('G_G0000101001',9,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L10"
+           x1="223"
+           y1="349"
+           x2="245"
+           y2="387"
+           onmouseout="hide_help_line('G_G0000101001',10,2)"
+           onmousemove="show_help_line('G_G0000101001',10,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L11"
+           x1="245"
+           y1="387"
+           x2="268"
+           y2="401"
+           onmouseout="hide_help_line('G_G0000101001',11,2)"
+           onmousemove="show_help_line('G_G0000101001',11,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L12"
+           x1="268"
+           y1="401"
+           x2="290"
+           y2="356"
+           onmouseout="hide_help_line('G_G0000101001',12,2)"
+           onmousemove="show_help_line('G_G0000101001',12,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L13"
+           x1="290"
+           y1="356"
+           x2="312"
+           y2="354"
+           onmouseout="hide_help_line('G_G0000101001',13,2)"
+           onmousemove="show_help_line('G_G0000101001',13,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L14"
+           x1="312"
+           y1="354"
+           x2="334"
+           y2="336"
+           onmouseout="hide_help_line('G_G0000101001',14,2)"
+           onmousemove="show_help_line('G_G0000101001',14,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L15"
+           x1="334"
+           y1="336"
+           x2="356"
+           y2="313"
+           onmouseout="hide_help_line('G_G0000101001',15,2)"
+           onmousemove="show_help_line('G_G0000101001',15,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L16"
+           x1="356"
+           y1="313"
+           x2="378"
+           y2="293"
+           onmouseout="hide_help_line('G_G0000101001',16,2)"
+           onmousemove="show_help_line('G_G0000101001',16,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L17"
+           x1="378"
+           y1="293"
+           x2="401"
+           y2="282"
+           onmouseout="hide_help_line('G_G0000101001',17,2)"
+           onmousemove="show_help_line('G_G0000101001',17,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L18"
+           x1="401"
+           y1="282"
+           x2="423"
+           y2="275"
+           onmouseout="hide_help_line('G_G0000101001',18,2)"
+           onmousemove="show_help_line('G_G0000101001',18,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L19"
+           x1="423"
+           y1="275"
+           x2="445"
+           y2="264"
+           onmouseout="hide_help_line('G_G0000101001',19,2)"
+           onmousemove="show_help_line('G_G0000101001',19,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L20"
+           x1="445"
+           y1="264"
+           x2="467"
+           y2="255"
+           onmouseout="hide_help_line('G_G0000101001',20,2)"
+           onmousemove="show_help_line('G_G0000101001',20,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L21"
+           x1="467"
+           y1="255"
+           x2="489"
+           y2="248"
+           onmouseout="hide_help_line('G_G0000101001',21,2)"
+           onmousemove="show_help_line('G_G0000101001',21,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L22"
+           x1="489"
+           y1="248"
+           x2="511"
+           y2="244"
+           onmouseout="hide_help_line('G_G0000101001',22,2)"
+           onmousemove="show_help_line('G_G0000101001',22,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L23"
+           x1="511"
+           y1="244"
+           x2="534"
+           y2="239"
+           onmouseout="hide_help_line('G_G0000101001',23,2)"
+           onmousemove="show_help_line('G_G0000101001',23,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L24"
+           x1="534"
+           y1="239"
+           x2="556"
+           y2="235"
+           onmouseout="hide_help_line('G_G0000101001',24,2)"
+           onmousemove="show_help_line('G_G0000101001',24,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L25"
+           x1="556"
+           y1="235"
+           x2="578"
+           y2="235"
+           onmouseout="hide_help_line('G_G0000101001',25,2)"
+           onmousemove="show_help_line('G_G0000101001',25,2)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C2-L26"
+           x1="578"
+           y1="235"
+           x2="600"
+           y2="228"
+           onmouseout="hide_help_line('G_G0000101001',26,2)"
+           onmousemove="show_help_line('G_G0000101001',26,2)" />
+        <!--Segments colonne numéro 3-->
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L2"
+           x1="46"
+           y1="394"
+           x2="68"
+           y2="387"
+           onmouseout="hide_help_line('G_G0000101001',2,3)"
+           onmousemove="show_help_line('G_G0000101001',2,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L3"
+           x1="68"
+           y1="387"
+           x2="90"
+           y2="381"
+           onmouseout="hide_help_line('G_G0000101001',3,3)"
+           onmousemove="show_help_line('G_G0000101001',3,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L4"
+           x1="90"
+           y1="381"
+           x2="112"
+           y2="374"
+           onmouseout="hide_help_line('G_G0000101001',4,3)"
+           onmousemove="show_help_line('G_G0000101001',4,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L5"
+           x1="112"
+           y1="374"
+           x2="135"
+           y2="365"
+           onmouseout="hide_help_line('G_G0000101001',5,3)"
+           onmousemove="show_help_line('G_G0000101001',5,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L6"
+           x1="135"
+           y1="365"
+           x2="157"
+           y2="347"
+           onmouseout="hide_help_line('G_G0000101001',6,3)"
+           onmousemove="show_help_line('G_G0000101001',6,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L7"
+           x1="157"
+           y1="347"
+           x2="179"
+           y2="345"
+           onmouseout="hide_help_line('G_G0000101001',7,3)"
+           onmousemove="show_help_line('G_G0000101001',7,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L8"
+           x1="179"
+           y1="345"
+           x2="201"
+           y2="338"
+           onmouseout="hide_help_line('G_G0000101001',8,3)"
+           onmousemove="show_help_line('G_G0000101001',8,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L9"
+           x1="201"
+           y1="338"
+           x2="223"
+           y2="322"
+           onmouseout="hide_help_line('G_G0000101001',9,3)"
+           onmousemove="show_help_line('G_G0000101001',9,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L10"
+           x1="223"
+           y1="322"
+           x2="245"
+           y2="381"
+           onmouseout="hide_help_line('G_G0000101001',10,3)"
+           onmousemove="show_help_line('G_G0000101001',10,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L11"
+           x1="245"
+           y1="381"
+           x2="268"
+           y2="378"
+           onmouseout="hide_help_line('G_G0000101001',11,3)"
+           onmousemove="show_help_line('G_G0000101001',11,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L12"
+           x1="268"
+           y1="378"
+           x2="290"
+           y2="329"
+           onmouseout="hide_help_line('G_G0000101001',12,3)"
+           onmousemove="show_help_line('G_G0000101001',12,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L13"
+           x1="290"
+           y1="329"
+           x2="312"
+           y2="320"
+           onmouseout="hide_help_line('G_G0000101001',13,3)"
+           onmousemove="show_help_line('G_G0000101001',13,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L14"
+           x1="312"
+           y1="320"
+           x2="334"
+           y2="293"
+           onmouseout="hide_help_line('G_G0000101001',14,3)"
+           onmousemove="show_help_line('G_G0000101001',14,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L15"
+           x1="334"
+           y1="293"
+           x2="356"
+           y2="266"
+           onmouseout="hide_help_line('G_G0000101001',15,3)"
+           onmousemove="show_help_line('G_G0000101001',15,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L16"
+           x1="356"
+           y1="266"
+           x2="378"
+           y2="244"
+           onmouseout="hide_help_line('G_G0000101001',16,3)"
+           onmousemove="show_help_line('G_G0000101001',16,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L17"
+           x1="378"
+           y1="244"
+           x2="401"
+           y2="224"
+           onmouseout="hide_help_line('G_G0000101001',17,3)"
+           onmousemove="show_help_line('G_G0000101001',17,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L18"
+           x1="401"
+           y1="224"
+           x2="423"
+           y2="212"
+           onmouseout="hide_help_line('G_G0000101001',18,3)"
+           onmousemove="show_help_line('G_G0000101001',18,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L19"
+           x1="423"
+           y1="212"
+           x2="445"
+           y2="204"
+           onmouseout="hide_help_line('G_G0000101001',19,3)"
+           onmousemove="show_help_line('G_G0000101001',19,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L20"
+           x1="445"
+           y1="204"
+           x2="467"
+           y2="190"
+           onmouseout="hide_help_line('G_G0000101001',20,3)"
+           onmousemove="show_help_line('G_G0000101001',20,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L21"
+           x1="467"
+           y1="190"
+           x2="489"
+           y2="179"
+           onmouseout="hide_help_line('G_G0000101001',21,3)"
+           onmousemove="show_help_line('G_G0000101001',21,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L22"
+           x1="489"
+           y1="179"
+           x2="511"
+           y2="172"
+           onmouseout="hide_help_line('G_G0000101001',22,3)"
+           onmousemove="show_help_line('G_G0000101001',22,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L23"
+           x1="511"
+           y1="172"
+           x2="534"
+           y2="165"
+           onmouseout="hide_help_line('G_G0000101001',23,3)"
+           onmousemove="show_help_line('G_G0000101001',23,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L24"
+           x1="534"
+           y1="165"
+           x2="556"
+           y2="161"
+           onmouseout="hide_help_line('G_G0000101001',24,3)"
+           onmousemove="show_help_line('G_G0000101001',24,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L25"
+           x1="556"
+           y1="161"
+           x2="578"
+           y2="161"
+           onmouseout="hide_help_line('G_G0000101001',25,3)"
+           onmousemove="show_help_line('G_G0000101001',25,3)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C3-L26"
+           x1="578"
+           y1="161"
+           x2="600"
+           y2="154"
+           onmouseout="hide_help_line('G_G0000101001',26,3)"
+           onmousemove="show_help_line('G_G0000101001',26,3)" />
+        <!--Segments colonne numéro 4-->
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L2"
+           x1="46"
+           y1="394"
+           x2="68"
+           y2="387"
+           onmouseout="hide_help_line('G_G0000101001',2,4)"
+           onmousemove="show_help_line('G_G0000101001',2,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L3"
+           x1="68"
+           y1="387"
+           x2="90"
+           y2="385"
+           onmouseout="hide_help_line('G_G0000101001',3,4)"
+           onmousemove="show_help_line('G_G0000101001',3,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L4"
+           x1="90"
+           y1="385"
+           x2="112"
+           y2="381"
+           onmouseout="hide_help_line('G_G0000101001',4,4)"
+           onmousemove="show_help_line('G_G0000101001',4,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L5"
+           x1="112"
+           y1="381"
+           x2="135"
+           y2="374"
+           onmouseout="hide_help_line('G_G0000101001',5,4)"
+           onmousemove="show_help_line('G_G0000101001',5,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L6"
+           x1="135"
+           y1="374"
+           x2="157"
+           y2="356"
+           onmouseout="hide_help_line('G_G0000101001',6,4)"
+           onmousemove="show_help_line('G_G0000101001',6,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L7"
+           x1="157"
+           y1="356"
+           x2="179"
+           y2="352"
+           onmouseout="hide_help_line('G_G0000101001',7,4)"
+           onmousemove="show_help_line('G_G0000101001',7,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L8"
+           x1="179"
+           y1="352"
+           x2="201"
+           y2="345"
+           onmouseout="hide_help_line('G_G0000101001',8,4)"
+           onmousemove="show_help_line('G_G0000101001',8,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L9"
+           x1="201"
+           y1="345"
+           x2="223"
+           y2="336"
+           onmouseout="hide_help_line('G_G0000101001',9,4)"
+           onmousemove="show_help_line('G_G0000101001',9,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L10"
+           x1="223"
+           y1="336"
+           x2="245"
+           y2="387"
+           onmouseout="hide_help_line('G_G0000101001',10,4)"
+           onmousemove="show_help_line('G_G0000101001',10,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L11"
+           x1="245"
+           y1="387"
+           x2="268"
+           y2="396"
+           onmouseout="hide_help_line('G_G0000101001',11,4)"
+           onmousemove="show_help_line('G_G0000101001',11,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L12"
+           x1="268"
+           y1="396"
+           x2="290"
+           y2="347"
+           onmouseout="hide_help_line('G_G0000101001',12,4)"
+           onmousemove="show_help_line('G_G0000101001',12,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L13"
+           x1="290"
+           y1="347"
+           x2="312"
+           y2="347"
+           onmouseout="hide_help_line('G_G0000101001',13,4)"
+           onmousemove="show_help_line('G_G0000101001',13,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L14"
+           x1="312"
+           y1="347"
+           x2="334"
+           y2="322"
+           onmouseout="hide_help_line('G_G0000101001',14,4)"
+           onmousemove="show_help_line('G_G0000101001',14,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L15"
+           x1="334"
+           y1="322"
+           x2="356"
+           y2="293"
+           onmouseout="hide_help_line('G_G0000101001',15,4)"
+           onmousemove="show_help_line('G_G0000101001',15,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L16"
+           x1="356"
+           y1="293"
+           x2="378"
+           y2="273"
+           onmouseout="hide_help_line('G_G0000101001',16,4)"
+           onmousemove="show_help_line('G_G0000101001',16,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L17"
+           x1="378"
+           y1="273"
+           x2="401"
+           y2="255"
+           onmouseout="hide_help_line('G_G0000101001',17,4)"
+           onmousemove="show_help_line('G_G0000101001',17,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L18"
+           x1="401"
+           y1="255"
+           x2="423"
+           y2="246"
+           onmouseout="hide_help_line('G_G0000101001',18,4)"
+           onmousemove="show_help_line('G_G0000101001',18,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L19"
+           x1="423"
+           y1="246"
+           x2="445"
+           y2="233"
+           onmouseout="hide_help_line('G_G0000101001',19,4)"
+           onmousemove="show_help_line('G_G0000101001',19,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L20"
+           x1="445"
+           y1="233"
+           x2="467"
+           y2="221"
+           onmouseout="hide_help_line('G_G0000101001',20,4)"
+           onmousemove="show_help_line('G_G0000101001',20,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L21"
+           x1="467"
+           y1="221"
+           x2="489"
+           y2="210"
+           onmouseout="hide_help_line('G_G0000101001',21,4)"
+           onmousemove="show_help_line('G_G0000101001',21,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L22"
+           x1="489"
+           y1="210"
+           x2="511"
+           y2="208"
+           onmouseout="hide_help_line('G_G0000101001',22,4)"
+           onmousemove="show_help_line('G_G0000101001',22,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L23"
+           x1="511"
+           y1="208"
+           x2="534"
+           y2="204"
+           onmouseout="hide_help_line('G_G0000101001',23,4)"
+           onmousemove="show_help_line('G_G0000101001',23,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L24"
+           x1="534"
+           y1="204"
+           x2="556"
+           y2="199"
+           onmouseout="hide_help_line('G_G0000101001',24,4)"
+           onmousemove="show_help_line('G_G0000101001',24,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L25"
+           x1="556"
+           y1="199"
+           x2="578"
+           y2="201"
+           onmouseout="hide_help_line('G_G0000101001',25,4)"
+           onmousemove="show_help_line('G_G0000101001',25,4)" />
+        <line
+           id="G_G0000101001_courbes-ligne-C4-L26"
+           x1="578"
+           y1="201"
+           x2="600"
+           y2="192"
+           onmouseout="hide_help_line('G_G0000101001',26,4)"
+           onmousemove="show_help_line('G_G0000101001',26,4)" />
+      </g>
+      <g
-e 
... etc. - the rest is truncated

Reply via email to