Error when opening a document without error message in collabora only Async shutdown requested

I can’t open documents in collabora. I didn’t have a problem until now, but without identifying the changes it no longer works. I carried out the updates via portainer and docker compose and I realized that the coolwsd.xml file had changed. I reset the important settings then restarted the container. I can connect to the collabora server but I cannot open the files. and I have no errors in the collabora logs or in nextcloud.
In the collaboration logs we see the start of the file opening and then a shutdown of the connection.
I can’t find why, thanks for any help you can give me.

I cannot upload the log file. I will therefore put the beginning of the log in this message and the rest in a following message.

wsd-00001-00061 2024-04-15 12:32:50.668319 +0200 [ websrv_poll ] INF  #31: Client HTTP Request: POST /browser/baa6eef/cool.html?WOPISrc=https%3A%2F%2Fcloud.??????.fr%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F155277_oceogw7ct9b3&title=%2FPartage%2Fplanning%20prod%20simulations%20CILA_??????.xlsx&lang=fr&closebutton=1&revisionhistory=1 HTTP/1.0 Host: collabora.??????.duckdns.org / Connection: close / Content-Length: 4280 / cache-control: max-age=0 / sec-ch-ua: "Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123" / sec-ch-ua-mobile: ?0 / sec-ch-ua-platform: "Windows" / origin: null / dnt: 1 / upgrade-insecure-requests: 1 / content-type: application/x-www-form-urlencoded / user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 / accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 / sec-fetch-site: cross-site / sec-fetch-mode: navigate / sec-fetch-user: ?1 / sec-fetch-dest: iframe / accept-encoding: gzip, deflate, br, zstd / accept-language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7| net/Socket.cpp:1173
wsd-00001-00061 2024-04-15 12:32:50.668357 +0200 [ websrv_poll ] DBG  #31: Handling request: /browser/baa6eef/cool.html?WOPISrc=https%3A%2F%2Fcloud.??????.fr%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F155277_oceogw7ct9b3&title=%2FPartage%2Fplanning%20prod%20simulations%20CILA_??????.xlsx&lang=fr&closebutton=1&revisionhistory=1| wsd/COOLWSD.cpp:4262
wsd-00001-00061 2024-04-15 12:32:50.668410 +0200 [ websrv_poll ] TRC  Decoding param [WOPISrc] = [https://cloud.??????.fr/index.php/apps/richdocuments/wopi/files/155277_oceogw7ct9b3] -> [WOPISrc] = [https://cloud.??????.fr/index.php/apps/richdocuments/wopi/files/155277_oceogw7ct9b3]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668435 +0200 [ websrv_poll ] TRC  Decoding param [title] = [/Partage/planning prod simulations CILA_??????.xlsx] -> [title] = [/Partage/planning prod simulations CILA_??????.xlsx]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668442 +0200 [ websrv_poll ] TRC  Decoding param [lang] = [fr] -> [lang] = [fr]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668448 +0200 [ websrv_poll ] TRC  Decoding param [closebutton] = [1] -> [closebutton] = [1]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668463 +0200 [ websrv_poll ] TRC  Decoding param [revisionhistory] = [1] -> [revisionhistory] = [1]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668492 +0200 [ websrv_poll ] TRC  Decoding param [WOPISrc] = [https://cloud.??????.fr/index.php/apps/richdocuments/wopi/files/155277_oceogw7ct9b3] -> [WOPISrc] = [https://cloud.??????.fr/index.php/apps/richdocuments/wopi/files/155277_oceogw7ct9b3]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668497 +0200 [ websrv_poll ] TRC  Decoding param [title] = [/Partage/planning prod simulations CILA_??????.xlsx] -> [title] = [/Partage/planning prod simulations CILA_??????.xlsx]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668518 +0200 [ websrv_poll ] TRC  Decoding param [lang] = [fr] -> [lang] = [fr]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668524 +0200 [ websrv_poll ] TRC  Decoding param [closebutton] = [1] -> [closebutton] = [1]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668528 +0200 [ websrv_poll ] TRC  Decoding param [revisionhistory] = [1] -> [revisionhistory] = [1]| wsd/RequestDetails.cpp:45
wsd-00001-00061 2024-04-15 12:32:50.668578 +0200 [ websrv_poll ] TRC  Fileserver request: /browser/baa6eef/cool.html?WOPISrc=https%3A%2F%2Fcloud.??????.fr%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F155277_oceogw7ct9b3&title=%2FPartage%2Fplanning%20prod%20simulations%20CILA_??????.xlsx&lang=fr&closebutton=1&revisionhistory=1| wsd/FileServer.cpp:522
wsd-00001-00061 2024-04-15 12:32:50.668729 +0200 [ websrv_poll ] DBG  Preprocessing file: /browser/dist/cool.html| wsd/FileServer.cpp:1016
wsd-00001-00061 2024-04-15 12:32:50.669007 +0200 [ websrv_poll ] TRC  access_token=sJxAaRrvHR2Zj3JlK1R0n2tsZ7HYHlpa, access_token_ttl=| wsd/FileServer.cpp:1025
wsd-00001-00061 2024-04-15 12:32:50.669015 +0200 [ websrv_poll ] TRC  access_header=| wsd/FileServer.cpp:1027
wsd-00001-00061 2024-04-15 12:32:50.669021 +0200 [ websrv_poll ] TRC  ui_defaults=TextRuler=false;TextSidebar=false;TextStatusbar=false;PresentationSidebar=false;PresentationStatusbar=false;SpreadsheetSidebar=false;SpreadsheetStatusbar=false;UIMode=notebookbar;UITheme=light;SaveAsMode=group;| wsd/FileServer.cpp:1029
wsd-00001-00061 2024-04-15 12:32:50.669040 +0200 [ websrv_poll ] TRC  css_variables=--co-primary-text=#ffffff;--co-primary-element=#C92F00;--co-text-accent=#C92F00;--co-primary-light=#f9eae5;--co-primary-element-light=#f9eae5;--co-color-error=#DB0606;--co-color-warning=#A37200;--co-color-success=#2d7b41;--co-border-radius=3px;--co-border-radius-large=10px;--co-loading-light=#cccccc;--co-loading-dark=#444444;--co-box-shadow=rgba(77,77,77, 0.5);--co-border=#ededed;--co-border-dark=#dbdbdb;--co-border-radius-pill=100px;--nc-light-color-main-background=#ffffff;--nc-dark-color-main-background=#171717;--nc-light-color-main-background-rgb=255,255,255;--nc-dark-color-main-background-rgb=23,23,23;--nc-light-color-main-background-translucent=rgba(255,255,255, .97);--nc-dark-color-main-background-translucent=rgba(23,23,23, .97);--nc-light-color-main-background-blur=rgba(255,255,255, .8);--nc-dark-color-main-background-blur=rgba(23,23,23, .85);--nc-light-color-main-text=#222222;--nc-dark-color-main-text=#EBEBEB;--nc-light-color-text-maxcontrast=#6b6b6b;--nc-dark-color-text-maxcontrast=#999999;--nc-light-color-box-shadow=rgba(77,77,77, 0.5);--nc-dark-color-box-shadow=#000000;--nc-light-color-box-shadow-rgb=77,77,77;--nc-dark-color-box-shadow-rgb=0,0,0;--nc-light-default-font-size=15px;--nc-dark-default-font-size=15px;--nc-light-border-radius=3px;--nc-dark-border-radius=3px;--nc-light-border-radius-large=10px;--nc-dark-border-radius-large=10px;--nc-light-border-radius-rounded=28px;--nc-dark-border-radius-rounded=28px;--nc-light-border-radius-pill=100px;--nc-dark-border-radius-pill=100px;--nc-light-default-clickable-area=44px;--nc-dark-default-clickable-area=44px;--nc-light-default-line-height=24px;--nc-dark-default-line-height=24px;--nc-light-default-grid-baseline=4px;--nc-dark-default-grid-baseline=4px;--nc-light-color-primary=#C92F00;--nc-dark-color-primary=#C92F00;--nc-light-color-primary-default=#C92F00;--nc-dark-color-primary-default=#C92F00;--nc-light-color-primary-text=#ffffff;--nc-dark-color-primary-text=#ffffff;--nc-light-color-primary-hover=#d35832;--nc-dark-color-primary-hover=#a52a04;--nc-light-color-primary-light=#f9eae5;--nc-dark-color-primary-light=#2e1c17;--nc-light-color-primary-light-text=#501200;--nc-dark-color-primary-light-text=#e9ab99;--nc-light-color-primary-light-hover=#eedfdb;--nc-dark-color-primary-light-hover=#372621;--nc-light-color-primary-element=#C92F00;--nc-dark-color-primary-element=#ff4d1e;--nc-light-color-primary-element-hover=#b52a00;--nc-dark-color-primary-element-hover=#ff5d32;--nc-light-color-primary-element-text=#ffffff;--nc-dark-color-primary-element-text=#000000;--nc-light-color-primary-element-light=#f9eae5;--nc-dark-color-primary-element-light=#2e1c17;--nc-light-color-primary-element-light-hover=#eedfdb;--nc-dark-color-primary-element-light-hover=#372621;--nc-light-color-primary-element-light-text=#501200;--nc-dark-color-primary-element-light-text=#ffb7a5;--nc-light-color-primary-element-text-dark=#f5f5f5;--nc-dark-color-primary-element-text-dark=#0a0a0a;--nc-light-primary-invert-if-bright=no;--nc-dark-primary-invert-if-bright=invert(100%);--nc-light-primary-invert-if-dark=invert(1);--nc-dark-primary-invert-if-dark=invert(1);--nc-light-background-invert-if-bright=invert(100%);--nc-dark-background-invert-if-bright=no;--nc-light-background-invert-if-dark=no;--nc-dark-background-invert-if-dark=invert(100%);;--nc-custom-logo=f4e1e62c| wsd/FileServer.cpp:1031
wsd-00001-00061 2024-04-15 12:32:50.669054 +0200 [ websrv_poll ] TRC  buy_product=https://nextcloud.com/pricing| wsd/FileServer.cpp:1039
wsd-00001-00061 2024-04-15 12:32:50.669061 +0200 [ websrv_poll ] TRC  postmessage_origin| wsd/FileServer.cpp:1041
wsd-00001-00061 2024-04-15 12:32:50.669066 +0200 [ websrv_poll ] TRC  theme=nextcloud| wsd/FileServer.cpp:1043
wsd-00001-00061 2024-04-15 12:32:50.669072 +0200 [ websrv_poll ] TRC  checkfileinfo_override=| wsd/FileServer.cpp:1045
wsd-00001-00061 2024-04-15 12:32:50.669078 +0200 [ websrv_poll ] INF  WOPI host did not pass optional access_token_ttl| wsd/FileServer.cpp:1070
wsd-00001-00061 2024-04-15 12:32:50.670264 +0200 [ websrv_poll ] TRC  Appending CSP directive [default-src] = ['none']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670279 +0200 [ websrv_poll ] TRC  Appending CSP directive [frame-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670285 +0200 [ websrv_poll ] TRC  Appending CSP directive [frame-src] = [https://rating.collaboraonline.com/Welcome/welcome.html]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670291 +0200 [ websrv_poll ] TRC  Appending CSP directive [frame-src] = [https://rating.collaboraonline.com/Rate/feedback.html]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670318 +0200 [ websrv_poll ] TRC  Appending CSP directive [frame-src] = [https://nextcloud.com/pricing]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670324 +0200 [ websrv_poll ] TRC  Appending CSP directive [frame-src] = [blob:]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670329 +0200 [ websrv_poll ] TRC  Appending CSP directive [connect-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670333 +0200 [ websrv_poll ] TRC  Appending CSP directive [connect-src] = [https://www.zotero.org]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670349 +0200 [ websrv_poll ] TRC  Appending CSP directive [connect-src] = [https://api.zotero.org]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670355 +0200 [ websrv_poll ] TRC  Appending CSP directive [connect-src] = [wss://collabora.??????.duckdns.org]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670360 +0200 [ websrv_poll ] TRC  Appending CSP directive [connect-src] = [https://collabora.??????.duckdns.org]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670425 +0200 [ websrv_poll ] TRC  Appending CSP directive [script-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670432 +0200 [ websrv_poll ] TRC  Appending CSP directive [script-src] = ['unsafe-inline']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670437 +0200 [ websrv_poll ] TRC  Appending CSP directive [style-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670442 +0200 [ websrv_poll ] TRC  Appending CSP directive [style-src] = ['unsafe-inline']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670457 +0200 [ websrv_poll ] TRC  Appending CSP directive [font-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670462 +0200 [ websrv_poll ] TRC  Appending CSP directive [font-src] = [data:]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670466 +0200 [ websrv_poll ] TRC  Appending CSP directive [object-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670471 +0200 [ websrv_poll ] TRC  Appending CSP directive [object-src] = [blob:]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670478 +0200 [ websrv_poll ] TRC  Appending CSP directive [media-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670483 +0200 [ websrv_poll ] TRC  Appending CSP directive [media-src] = [https://collabora.??????.duckdns.org]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670488 +0200 [ websrv_poll ] TRC  Appending CSP directive [img-src] = ['self']| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670493 +0200 [ websrv_poll ] TRC  Appending CSP directive [img-src] = [data:]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670504 +0200 [ websrv_poll ] TRC  Appending CSP directive [img-src] = [https://www.collaboraoffice.com/]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670527 +0200 [ websrv_poll ] TRC  Picking frame ancestor from WOPISrc: cloud.??????.fr| wsd/FileServer.cpp:1286
wsd-00001-00061 2024-04-15 12:32:50.670533 +0200 [ websrv_poll ] TRC  Allowed frame ancestors:  collabora.??????.duckdns.org:* cloud.??????.fr:*| wsd/FileServer.cpp:1294
wsd-00001-00061 2024-04-15 12:32:50.670538 +0200 [ websrv_poll ] TRC  Appending CSP directive [img-src] = [collabora.??????.duckdns.org:* cloud.??????.fr:*]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670547 +0200 [ websrv_poll ] TRC  Appending CSP directive [frame-ancestors] = [collabora.??????.duckdns.org:* cloud.??????.fr:*]| wsd/ContentSecurityPolicy.hpp:62
wsd-00001-00061 2024-04-15 12:32:50.670580 +0200 [ websrv_poll ] TRC  Merging CSP directives []| wsd/ContentSecurityPolicy.hpp:36
wsd-00001-00061 2024-04-15 12:32:50.670836 +0200 [ websrv_poll ] TRC  #31: Wrote 16384 bytes of 40595 buffered data| net/Socket.hpp:1459
wsd-00001-00061 2024-04-15 12:32:50.670899 +0200 [ websrv_poll ] TRC  #31: Wrote 16384 bytes of 24211 buffered data| net/Socket.hpp:1459
wsd-00001-00061 2024-04-15 12:32:50.670950 +0200 [ websrv_poll ] TRC  #31: Wrote 7827 bytes of 7827 buffered data| net/Socket.hpp:1459
wsd-00001-00061 2024-04-15 12:32:50.670959 +0200 [ websrv_poll ] TRC  Sent file: /browser/dist/cool.html: 
<!DOCTYPE html>
<!-- saved from url=(0054)http://leafletjs.com/examples/quick-start-example.html -->
<html  style="height:100%"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Online Editor</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0 minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

<script>





// FIXME: This is temporary and not what we actually eventually want.

// What we really want is not a separate HTML file (produced with M4 conditionals on the below
// ) for a "WASM app". What we want is that the same cool.html page adapts on demand to
// instead run locally using WASM, if the connection to the COOL server breaks. (And then
// re-connects to the COOL server when possible.)



window.welcomeUrl = 'https://rating.collaboraonline.com/Welcome/welcome.html';
  window.feedbackUrl = 'https://rating.collaboraonline.com/Rate/feedback.html';
  window.buyProductUrl = 'https://nextcloud.com/pricing';

  // Start listening for Host_PostmessageReady message and save the
  // result for future
  window.WOPIpostMessageReady = false;
  var PostMessageReadyListener = function(e) {
    if (!(e && e.data))
        return;

    try {
        var msg = JSON.parse(e.data);
    } catch (err) {
        return;
    }

    if (msg.MessageId === 'Host_PostmessageReady') {
      window.WOPIPostmessageReady = true;
      window.removeEventListener('message', PostMessageReadyListener, false);
      console.log('Received Host_PostmessageReady.');
    }
  };
  window.addEventListener('message', PostMessageReadyListener, false);


   window.ThisIsAMobileApp = false;

   window.ThisIsTheiOSApp = false;

   window.ThisIsTheGtkApp = false;

   window.ThisIsTheAndroidApp = false;

   window.ThisIsTheEmscriptenApp = false;


  window.bundlejsLoaded = false;
  window.fullyLoadedAndReady = false;
  window.addEventListener('load', function() {
    window.fullyLoadedAndReady = true;
  }, false);

</script>



<!-- Dynamically load the bundle.css -->
<script>
var link = document.createElement('link');
link.setAttribute("rel", "stylesheet");
link.setAttribute("type", "text/css");
link.setAttribute("href", '/browser/baa6eef/bundle.css');
document.getElementsByTagName("head")[0].appendChild(link);
</script>

<link rel="stylesheet" href="/browser/baa6eef/nextcloud/branding.css"> <!-- add your logo here -->




<link rel="localizations" href="/browser/baa6eef/l10n/uno-localizations-override.json" type="application/vnd.oftn.l10n+json"/>
   <link rel="localizations" href="/browser/baa6eef/l10n/localizations.json" type="application/vnd.oftn.l10n+json"/>
   <link rel="localizations" href="/browser/baa6eef/l10n/locore-localizations.json" type="application/vnd.oftn.l10n+json"/>
   <link rel="localizations" href="/browser/baa6eef/l10n/help-localizations.json" type="application/vnd.oftn.l10n+json"/>
   <link rel="localizations" href="/browser/baa6eef/l10n/uno-localizations.json" type="application/vnd.oftn.l10n+json"/>
</head>

  <body style="user-select: none;height:100%;display:flex;flex-direction:column">
    <!--The "controls" div holds map controls such as the Zoom button and
        it's separated from the map in order to have the controls on the top
        of the page all the time.

        The "document-container" div is the actual display of the document, is
        what the user sees and it should be no larger than the screen size.

        The "map" div is the actual document and it has the document's size
        and width, this being inside the smaller "document-container" will
        cause the content to overflow, creating scrollbars -->

    <nav class="main-nav" role="navigation">
      <!-- Mobile menu toggle button (hamburger/x icon) -->
      <input id="main-menu-state" type="checkbox" style="display: none"/>
      <ul id="main-menu" class="sm sm-simple lo-menu readonly"></ul>
      <div id="document-titlebar">
        <div class="document-title">
          <!-- visuallyhidden: hide it visually but keep it available to screen reader and other assistive technology -->
          <label class="visuallyhidden" for="document-name-input" aria-hidden="false">Document name</label>
          <input id="document-name-input" type="text" spellcheck="false" disabled="true" style="display: none"/>
          <div id="document-name-input-loading-bar"></div>
        </div>
      </div>

      <div id="userListHeader">
        <button id="userListSummary"></button>
        <div id="userListPopover"></div>
      </div>

      <div id="closebuttonwrapper">
        <div class="closebuttonimage" id="closebutton"></div>
      </div>
     </nav>

     <table id="toolbar-wrapper">
     <tr>
       <td id="toolbar-logo"></td>
       <td id="toolbar-mobile-back" class="editmode-off"></td>
       <td id="toolbar-up"></td>
       <td id="toolbar-hamburger">
         <label class="main-menu-btn" for="main-menu-state">
           <span class="main-menu-btn-icon" id="main-menu-btn-icon"></span>
         </label>
       </td>
     </tr>
     <tr>
       <td colspan="4" id="formulabar" style="display: none"></td>
     </tr>
    </table>

    <input id="insertgraphic" aria-labelledby="menu-insertgraphic" type="file" accept="image/*" style="position: fixed; top: -100em">
    <input id="selectbackground" aria-labelledby="menu-selectbackground" type="file" accept="image/*" style="position: fixed; top: -100em">

    <div id="main-document-content" style="display:flex; flex-direction: row; flex: 1; margin: 0; padding: 0; min-height: 0">
      <div id="presentation-controls-wrapper" class="readonly">
        <div id="slide-sorter"></div>
        <div id="presentation-toolbar" style="display: none"></div>
      </div>
      <div id="document-container" class="readonly" dir="ltr">
        <div id="map"></div>
      </div>
      <div id="sidebar-dock-wrapper" style="display: none;">
        <div id="sidebar-panel"></div>
      </div>
    </div>

    <div id="spreadsheet-toolbar" style="display: none"></div>

    <div id="mobile-edit-button" style="display: none">
      <div id="mobile-edit-button-image"></div>
    </div>

    <div id="toolbar-down" style="display: none"></div>
    <div id="toolbar-search" style="display: none"></div>
    <div id="mobile-wizard" style="display: none">
      <div id="mobile-wizard-tabs"></div>
      <table id="mobile-wizard-titlebar" class="mobile-wizard-titlebar" width="100%">
        <tr>
          <td id="mobile-wizard-back" class="mobile-wizard-back"></td>
          <td id="mobile-wizard-title" class="mobile-wizard-title ui-widget"></td>
        </tr>
      </table>
      <div id="mobile-wizard-content"></div>
    </div>

    <!-- Remove if you don't want the About dialog -->
    <div id="about-dialog" style="display:none; user-select: text" tabIndex="0">
      <div id="about-dialog-header">
        <fig id="integrator-logo"></fig>
        <h1 id="product-name">Collabora Online</h1>
      </div>
      <hr/>
      <div id="about-dialog-container">
        <div id="about-dialog-logos">
          <fig id="product-logo"></fig>
          <fig id="lokit-logo"></fig>
        </div>
        <div id="about-dialog-info-container">
          <div id="about-dialog-info">
            <div id="coolwsd-version-label"></div>
            <div style="margin-inline-end: auto;"><div id="coolwsd-version" dir="ltr"></div></div>
            <div class="spacer"></div>
            <div id="lokit-version-label"></div>
            <div style="margin-inline-end: auto;"><div id="lokit-version" dir="ltr"></div></div>
            <div id="served-by"><span id="served-by-label"></span>&nbsp;<span id="os-info"></span>&nbsp;<wbr><span id="coolwsd-id"></span></div>
            <div id="slow-proxy"></div>
            
            <div id="routeToken"></div>
            <p style="margin-inline-end: auto;"><span dir="ltr">Copyright © 2024, Collabora Productivity Limited.</span></p>
          </div>
        </div>
      </div>
    </div>

    <script>
window.host = 'wss://collabora.??????.duckdns.org';
      window.serviceRoot = '';
      window.hexifyUrl = false;
      window.versionPath = 'baa6eef';
      window.accessToken = 'sJxAaRrvHR2Zj3JlK1R0n2tsZ7HYHlpa';
      window.accessTokenTTL = '0';
      window.accessHeader = '';
      window.postMessageOriginExt = '';
      window.coolLogging = '';
      window.coolwsdVersion = '23.05.10.1';
      window.enableWelcomeMessage = true;
      window.autoShowWelcome = true;
      window.autoShowFeedback = true;
      window.userInterfaceMode = 'notebookbar';
      window.useIntegrationTheme = 'true';
      window.enableMacrosExecution = 'false';
      window.enableAccessibility = 'false' === 'true';
      window.outOfFocusTimeoutSecs = 300;
      window.idleTimeoutSecs = 900;
      window.protocolDebug = false;
      window.frameAncestors = decodeURIComponent('%20collabora.??????.duckdns.org:%2A%20cloud.??????.fr:%2A');
      window.socketProxy = false;
      window.tileSize = 256;
      window.groupDownloadAsForNb = true;
      window.uiDefaults = {"darkTheme":false,"presentation":{"ShowSidebar":false,"ShowStatusbar":false},"saveAsMode":"group","spreadsheet":{"ShowSidebar":false,"ShowStatusbar":false},"text":{"ShowRuler":false,"ShowSidebar":false,"ShowStatusbar":false},"uiMode":"notebookbar"};
      window.checkFileInfoOverride = {};
      window.deeplEnabled = false;
      window.zoteroEnabled = true;
      window.savedUIState = true;
      window.wasmEnabled = false;
      window.indirectionUrl='';
// This is ./dist/global.js:
window.app={socket:null,console:{}};(function(global){global.logServer=function(log){if(global.ThisIsAMobileApp){global.postMobileError(log)}else if(global.socket&&global.socket instanceof WebSocket&&global.socket.readyState===1){global.socket.send(log)}else if(global.socket&&global.L&&global.app.definitions.Socket&&global.socket instanceof global.app.definitions.Socket&&global.socket.connected()){global.socket.sendMessage(log)}else{fetch(global.location.pathname.match(/.*\//)+"logging.html",{method:"POST",headers:{"Content-Type":"application/json"},body:global.coolLogging+" "+log})}};global.setLogging=function(doLogging){var loggingMethods=["error","warn","info","debug","trace","log","assert","time","timeEnd","group","groupEnd"];if(!doLogging){var noop=function(){};for(var i=0;i<loggingMethods.length;i++){global.app.console[loggingMethods[i]]=noop}}else{for(var i=0;i<loggingMethods.length;i++){if(!Object.prototype.hasOwnProperty.call(global.console,loggingMethods[i])){continue}(function(method){global.app.console[method]=function logWithCool(){var args=Array.prototype.slice.call(arguments);if(method==="error"){var log="jserror ";for(var arg=0;arg<arguments.length;arg++){if(typeof arguments[arg]==="string")log+=arguments[arg]+"\n"}global.logServer(log)}return global.console[method].apply(console,args)}})(loggingMethods[i])}global.onerror=function(msg,src,row,col,err){var data={userAgent:navigator.userAgent.toLowerCase(),vendor:navigator.vendor.toLowerCase(),message:msg,source:src,line:row,column:col};var desc=err?err.message||"(no message)":"(no err)",stack=err?err.stack||"(no stack)":"(no err)";var log="jserror "+JSON.stringify(data,null,2)+"\n"+desc+"\n"+stack+"\n";global.logServer(log);return false}}};global.setLogging(global.coolLogging!="");var gls=global.location.search;var coolParams={p:new URLSearchParams(gls.slice(gls.lastIndexOf("?")+1))};coolParams.get=function(name){var value=this.p.get(name);return value===null?"":value}.bind(coolParams);coolParams.set=function(name){this.p.set(name)}.bind(coolParams);global.coolParams=coolParams;var ua=navigator.userAgent.toLowerCase(),uv=navigator.vendor.toLowerCase(),doc=document.documentElement,ie="ActiveXObject"in global,cypressTest=ua.indexOf("cypress")!==-1,webkit=ua.indexOf("webkit")!==-1,phantomjs=ua.indexOf("phantom")!==-1,android23=ua.search("android [23]")!==-1,chrome=ua.indexOf("chrome")!==-1,gecko=(ua.indexOf("gecko")!==-1||cypressTest&&"MozUserFocus"in doc.style)&&!webkit&&!global.opera&&!ie,safari=!chrome&&(ua.indexOf("safari")!==-1||uv.indexOf("apple")==0),win=navigator.platform.indexOf("Win")===0,mobile=typeof orientation!=="undefined"||ua.indexOf("mobile")!==-1,msPointer=!global.PointerEvent&&global.MSPointerEvent,pointer=global.PointerEvent&&navigator.pointerEnabled&&navigator.maxTouchPoints||msPointer,ie3d=ie&&"transition"in doc.style,webkit3d="WebKitCSSMatrix"in global&&"m11"in new global.WebKitCSSMatrix&&!android23,gecko3d="MozPerspective"in doc.style,opera12="OTransition"in doc.style;var mac=navigator.appVersion.indexOf("Mac")!=-1||navigator.userAgent.indexOf("Mac")!=-1;var chromebook=global.ThisIsTheAndroidApp&&global.COOLMessageHandler.isChromeOS();var isInternetExplorer=navigator.userAgent.toLowerCase().indexOf("msie")!=-1||navigator.userAgent.toLowerCase().indexOf("trident")!=-1;var navigatorLang=navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage;function getFirefoxVersion(){var version="";var userAgent=navigator.userAgent.toLowerCase();if(userAgent.indexOf("firefox")!==-1){var matches=userAgent.match(/firefox\/([0-9]+\.*[0-9]*)/);if(matches){version=matches[1]}}return version}global.L={};global.L.Params={closeButtonEnabled:global.coolParams.get("closebutton"),revHistoryEnabled:global.coolParams.get("revisionhistory")};global.L.Browser={ie:ie,ielt9:ie&&!document.addEventListener,edge:"msLaunchUri"in navigator&&!("documentMode"in document),webkit:webkit,gecko:gecko,geckoVersion:getFirefoxVersion(),android:ua.indexOf("android")!==-1,android23:android23,chrome:chrome,safari:safari,win:win,mac:mac,ie3d:ie3d,isInternetExplorer:isInternetExplorer,webkit3d:webkit3d,gecko3d:gecko3d,opera12:opera12,any3d:!global.L_DISABLE_3D&&(ie3d||webkit3d||gecko3d)&&!opera12&&!phantomjs,mobile:mobile,mobileWebkit:mobile&&webkit,mobileWebkit3d:mobile&&webkit3d,mobileOpera:mobile&&global.opera,mobileGecko:mobile&&gecko,cypressTest:cypressTest,msPointer:!!msPointer,pointer:!!pointer,retina:(global.devicePixelRatio||global.screen.deviceXDPI/global.screen.logicalXDPI)>1,lang:navigatorLang,docs:["presentation","spreadsheet","text","drawing"],getTheme:function(){var docTheme;var themes=[];if(global.isLocalStorageAllowed){for(var theme in global.L.Browser.docs){docTheme=global.localStorage.getItem("UIDefaults_"+global.L.Browser.docs[theme]+"_darkTheme");if(docTheme){themes.push(global.L.Browser.docs[theme]+":"+(docTheme==="true"?"Dark":"Light"))}}}return themes.join(";")}};global.keyboard={onscreenKeyboardHint:global.uiDefaults["onscreenKeyboardHint"],guessOnscreenKeyboard:function(){if(global.keyboard.onscreenKeyboardHint!=undefined)return global.keyboard.onscreenKeyboardHint;return global.ThisIsAMobileApp&&!global.ThisIsTheEmscriptenApp||global.mode.isMobile()||global.mode.isTablet()},hintOnscreenKeyboard:function(hint){if(global.app&&global.L.Map&&global.L.Map.THIS._docLayer.isCalc()&&hint!==undefined){var command={Enable:{type:"boolean",value:hint}};global.L.Map.THIS.sendUnoCommand(".uno:MoveKeepInsertMode",command)}global.keyboard.onscreenKeyboardHint=hint}};global.memo={_lastId:0,_getId:function(obj){if(obj===null||obj===undefined){return""+obj}if(!("_coolMemoId"in obj)){obj["_coolMemoId"]=++global.memo._lastId}return obj._coolMemoId},_decoratorMemo:{},decorator:function(decorator,context){var decoratorId=global.memo._getId(decorator);var contextId=global.memo._getId(context);return function(f){var functionId=global.memo._getId(f);if(global.memo._decoratorMemo[decoratorId+" "+contextId+" "+functionId]===undefined){global.memo._decoratorMemo[decoratorId+" "+contextId+" "+functionId]=decorator.apply(this,arguments);if(context!==null&&context!==undefined){global.memo._decoratorMemo[decoratorId+" "+contextId+" "+functionId]=global.memo._decoratorMemo[decoratorId+" "+contextId+" "+functionId].bind(context)}}return global.memo._decoratorMemo[decoratorId+" "+contextId+" "+functionId]}},_bindMemo:{},bind:function(f,context){var functionId=global.memo._getId(f);var contextId=global.memo._getId(context);if(global.memo._bindMemo[functionId+" "+contextId]===undefined){global.memo._bindMemo[functionId+" "+contextId]=f.bind(context)}return global.memo._bindMemo[functionId+" "+contextId]}};global.touch={isTouchEvent:function(e){if(e.originalEvent){e=e.originalEvent}if(L.Browser.cypressTest&&global.L.Browser.mobile){return true}if(e.pointerType){return e.pointerType==="touch"||e.pointerType==="kinect"}if(e.isMouseEvent!==undefined){return!e.isMouseEvent}return!(e instanceof MouseEvent)},touchOnly:global.memo.decorator(function(f){return function(e){if(!global.touch.isTouchEvent(e))return;return f.apply(this,arguments)}}),mouseOnly:global.memo.decorator(function(f){return function(e){if(global.touch.isTouchEvent(e))return;return f.apply(this,arguments)}}),hasPrimaryTouchscreen:function(){return global.matchMedia("(pointer: coarse)").matches},hasAnyTouchscreen:function(){return global.matchMedia("(any-pointer: coarse)").matches}};global.mode={isChromebook:function(){return chromebook},isMobile:function(){if(global.mode.isChromebook())return false;if(global.L.Browser.mobile&&global.L.Browser.cypressTest){return true}return global.L.Browser.mobile&&(screen.width<768||screen.height<768)},isTablet:function(){if(global.mode.isChromebook())return false;return global.L.Browser.mobile&&!global.mode.isMobile()},isDesktop:function(){if(global.mode.isChromebook())return true;return!global.L.Browser.mobile},getDeviceFormFactor:function(){if(global.mode.isMobile())return"mobile";else if(global.mode.isTablet())return"tablet";else if(global.mode.isDesktop())return"desktop";else return null}};global.isLocalStorageAllowed=function(){var str="localstorage_test";try{global.localStorage.setItem(str,str);global.localStorage.removeItem(str);return true}catch(e){return false}}();global.deviceFormFactor=global.mode.getDeviceFormFactor();if(global.ThisIsTheiOSApp){global.addEventListener("keydown",function(e){if(e.metaKey){e.preventDefault()}if(global.MagicKeyDownHandler)global.MagicKeyDownHandler(e)});global.addEventListener("keyup",function(e){if(e.metaKey){e.preventDefault()}if(global.MagicKeyUpHandler)global.MagicKeyUpHandler(e)})}document.addEventListener("contextmenu",function(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}},false);global.fakeWebSocketCounter=0;global.FakeWebSocket=function(){this.binaryType="arraybuffer";this.bufferedAmount=0;this.extensions="";this.protocol="";this.readyState=1;this.id=global.fakeWebSocketCounter++;this.onclose=function(){};this.onerror=function(){};this.onmessage=function(){};this.onopen=function(){};this.close=function(){}};global.FakeWebSocket.prototype.send=function(data){global.postMobileMessage(data)};global.proxySocketCounter=0;global.ProxySocket=function(uri){var that=this;this.uri=uri;this.binaryType="arraybuffer";this.bufferedAmount=0;this.extensions="";this.unloading=false;this.protocol="";this.connected=true;this.readyState=0;this.sessionId="open";this.id=global.proxySocketCounter++;this.msgInflight=0;this.openInflight=0;this.inSerial=0;this.outSerial=0;this.minPollMs=25;this.maxPollMs=500;this.curPollMs=this.minPollMs;this.minIdlePollsToThrottle=3;this.throttleFactor=1.15;this.lastDataTimestamp=performance.now();this.onclose=function(){};this.onerror=function(){};this.onmessage=function(){};this.decoder=new TextDecoder;this.doSlice=function(bytes,start,end){return bytes.slice(start,end)};this.decode=function(bytes,start,end){return this.decoder.decode(this.doSlice(bytes,start,end))};this.parseIncomingArray=function(arr){for(var i=0;i<arr.length;++i){var left=arr.length-i;if(left<4){break}var type=String.fromCharCode(arr[i+0]);if(type!="T"&&type!="B"){global.app.console.debug("wrong data type: "+type);break}i++;if(arr[i]!==48&&arr[i+1]!==120){global.app.console.debug("missing hex preamble");break}i+=2;var numStr="";var start=i;while(arr[i]!=10)i++;numStr=this.decode(arr,start,i);var serial=parseInt(numStr,16);i++;if(arr[i]!==48&&arr[i+1]!==120){global.app.console.debug("missing hex preamble");break}i+=2;start=i;while(arr[i]!=10)i++;numStr=this.decode(arr,start,i);var size=parseInt(numStr,16);i++;var data;if(type=="T")data=this.decode(arr,i,i+size);else data=this.doSlice(arr,i,i+size);if(serial!==that.inSerial+1){global.app.console.debug("Error: serial mismatch "+serial+" vs. "+(that.inSerial+1))}that.inSerial=serial;this.onmessage({data:data});i+=size}};this.sendQueue="";this._signalErrorClose=function(){clearInterval(this.pollInterval);clearTimeout(this.delaySession);this.pollInterval=undefined;this.delaySession=undefined;if(that.readyState<3){this.onerror();this.onclose()}this.sessionId="open";this.inSerial=0;this.outSerial=0;this.msgInflight=0;this.openInflight=0;this.readyState=3};this._setPollInterval=function(intervalMs){clearInterval(this.pollInterval);if(this.readyState===1)this.pollInterval=setInterval(this.doSend,intervalMs)},this.doSend=function(){if(that.sessionId==="open"){if(that.readyState===3)global.app.console.debug("Error: sending on closed socket");return}if(that.msgInflight>=4){if(that.curPollMs<that.maxPollMs){that.curPollMs=Math.min(that.maxPollMs,that.curPollMs*that.throttleFactor)|0;global.app.console.debug("High latency connection - too much in-flight, throttling to "+that.curPollMs+" ms.");that._setPollInterval(that.curPollMs)}else if(performance.now()-that.lastDataTimestamp>30*1e3){global.app.console.debug("Close connection after no response for 30secs");that._signalErrorClose()}else global.app.console.debug("High latency connection - too much in-flight, pausing.");return}that._setPollInterval(that.maxPollMs);var req=new XMLHttpRequest;req.open("POST",that.getEndPoint("write"));req.responseType="arraybuffer";req.addEventListener("load",function(){if(this.status==200){var data=new Uint8Array(this.response);if(data.length){that.curPollMs=that.minPollMs;that._setPollInterval(that.curPollMs);that.lastDataTimestamp=performance.now();that.parseIncomingArray(data);return}}else{global.app.console.debug("proxy: error on incoming response "+this.status);that._signalErrorClose()}if(that.curPollMs<that.maxPollMs){var timeSinceLastDataMs=performance.now()-that.lastDataTimestamp|0;if(timeSinceLastDataMs>=that.minIdlePollsToThrottle*that.curPollMs){that.curPollMs=Math.min(that.maxPollMs,that.curPollMs*that.throttleFactor)|0}}that._setPollInterval(that.curPollMs)});req.addEventListener("loadend",function(){that.msgInflight--});req.send(that.sendQueue);that.sendQueue="";that.msgInflight++};this.getSessionId=function(){if(this.openInflight>0){global.app.console.debug("Waiting for session open");return}if(this.delaySession)return;if(global.lastCreatedProxySocket){var msSince=performance.now()-global.lastCreatedProxySocket;if(msSince<250){var delay=250-msSince;global.app.console.debug("Wait to re-try session creation for "+delay+"ms");this.curPollMs=delay;this.delaySession=setTimeout(function(){that.delaySession=undefined;that.getSessionId()},delay);return}}global.lastCreatedProxySocket=performance.now();var req=new XMLHttpRequest;req.open("POST",that.getEndPoint("open"));req.responseType="text";req.addEventListener("load",function(){global.app.console.debug("got session: "+this.responseText);if(this.status!==200||!this.responseText||this.responseText.indexOf("\n")>=0){global.app.console.debug("Error: failed to fetch session id! error: "+this.status);that._signalErrorClose()}else{that.sessionId=this.responseText;that.readyState=1;that.onopen();that._setPollInterval(that.curPollMs)}});req.addEventListener("loadend",function(){global.app.console.debug("Open completed state: "+that.readyState);that.openInflight--});req.send("");this.openInflight++};this.send=function(msg){var hadData=this.sendQueue.length>0;this.sendQueue=this.sendQueue.concat("B0x"+this.outSerial.toString(16)+"\n"+"0x"+(new TextEncoder).encode(msg).length.toString(16)+"\n"+msg+"\n");this.outSerial++;if(that.curPollMs>that.minPollMs||!hadData){if(that.msgInflight<=3){that.curPollMs=that.minPollMs;that._setPollInterval(that.curPollMs)}}};this.sendCloseMsg=function(beacon){var url=that.getEndPoint("close");if(!beacon){var req=new XMLHttpRequest;req.open("POST",url);req.send("")}else navigator.sendBeacon(url,"")};this.close=function(){var oldState=this.readyState;global.app.console.debug("proxy: close socket");this.readyState=3;this.onclose();clearInterval(this.pollInterval);clearTimeout(this.delaySession);this.pollInterval=undefined;if(oldState===1)this.sendCloseMsg(this.unloading);this.sessionId="open"};this.setUnloading=function(){this.unloading=true};this.getEndPoint=function(command){var base=this.uri;return base+"/"+this.sessionId+"/"+command+"/"+this.outSerial};global.app.console.debug("proxy: new socket "+this.id+" "+this.uri);this.getSessionId()};if(global.socketProxy){global.addEventListener("load",function(){var replaceUrls=function(rules,replaceBase){if(!rules)return;for(var r=0;r<rules.length;++r){if(rules[r]&&rules[r].type!=1){replaceUrls(rules[r].cssRules||rules[r].rules,replaceBase);continue}if(!rules[r]||!rules[r].style)continue;var img=rules[r].style.backgroundImage;if(img===""||img===undefined)continue;if(img.startsWith('url("images/')){rules[r].style.backgroundImage=img.replace('url("images/',replaceBase+"/images/")}if(img.startsWith('url("remote/')){rules[r].style.backgroundImage=img.replace('url("remote/',replaceBase+"/remote/")}}};var sheets=document.styleSheets;for(var i=0;i<sheets.length;++i){var relBases;try{relBases=sheets[i].href.split("/")}catch(err){global.app.console.log("Missing href from CSS number "+i);continue}relBases.pop();var replaceBase='url("'+relBases.join("/");var rules;try{rules=sheets[i].cssRules||sheets[i].rules}catch(err){global.app.console.log("Missing CSS from "+sheets[i].href);continue}replaceUrls(rules,replaceBase)}},false)}global.IndirectSocket=function(uri){var that=this;this.uri=uri;this.binaryType="";this.unloading=false;this.readyState=0;this.innerSocket=undefined;this.onclose=function(){};this.onerror=function(){};this.onmessage=function(){};this.onopen=function(){};this.close=function(){this.innerSocket.close()};this.send=function(msg){this.innerSocket.send(msg)};this.setUnloading=function(){this.unloading=true};this.sendPostMsg=function(errorCode){var errorMsg;if(errorCode===0){errorMsg=_("Cluster is scaling, retrying...")}else if(errorCode===1){errorMsg=_("Document is migrating to new server, retrying...")}else{errorMsg=_("Failed to get RouteToken from controller")}var msg={MessageId:"Action_Load_Resp",SendTime:Date.now(),Values:{success:false,errorMsg:errorMsg,errorType:"clusterscaling"}};global.parent.postMessage(JSON.stringify(msg),"*")};var http=new XMLHttpRequest;http.open("GET",global.indirectionUrl+"?Uri="+encodeURIComponent(that.uri),true);http.responseType="json";http.addEventListener("load",function(){if(this.status===200){var uriWithRouteToken=http.response.uri;global.expectedServerId=http.response.serverId;var params=new URL(uriWithRouteToken).searchParams;global.routeToken=params.get("RouteToken");global.app.console.log("updated routeToken: "+global.routeToken);that.innerSocket=new WebSocket(uriWithRouteToken);that.innerSocket.binaryType=that.binaryType;that.innerSocket.onerror=function(){that.readyState=that.innerSocket.readyState;that.onerror()};that.innerSocket.onclose=function(){that.readyState=3;that.onclose();that.innerSocket.onerror=function(){};that.innerSocket.onclose=function(){};that.innerSocket.onmessage=function(){}};that.innerSocket.onopen=function(){that.readyState=1;that.onopen()};that.innerSocket.onmessage=function(e){that.readyState=that.innerSocket.readyState;that.onmessage(e)}}else if(this.status===202){if(!(window.app&&window.app.socket&&window.app.socket._reconnecting)){that.sendPostMsg(http.response.errorCode)}var timeoutFn=function(indirectionUrl,uri){console.warn("Requesting again for routeToken");this.open("GET",indirectionUrl+"?Uri="+encodeURIComponent(uri),true);this.send()}.bind(this);setTimeout(timeoutFn,3e3,global.indirectionUrl,that.uri)}else{global.app.console.error("Indirection url: error on incoming response "+this.status);that.sendPostMsg(-1)}});http.send()};global.createWebSocket=function(uri){if("processCoolUrl"in global){uri=global.processCoolUrl({url:uri,type:"ws"})}if(global.socketProxy){global.socketProxy=true;return new global.ProxySocket(uri)}else if(global.indirectionUrl!=""&&!global.migrating){global.indirectSocket=true;return new global.IndirectSocket(uri)}else{return new WebSocket(uri)}};global._=function(string){if(global.ThisIsAMobileApp){if(global.LOCALIZATIONS&&Object.prototype.hasOwnProperty.call(global.LOCALIZATIONS,string)){var result=global.LOCALIZATIONS[string];if(global.LANG==="de-CH"){result=result.replace(/ß/g,"ss")}return result}else{return string}}else{return string.toLocaleString()}};if(global.webserver===undefined){var protocol=global.location.protocol==="file:"?"https:":global.location.protocol;global.webserver=global.host.replace(/^(ws|wss):/i,protocol);global.webserver=global.webserver.replace(/\/*$/,"")}var docParams,wopiParams;var filePath=global.coolParams.get("file_path");global.wopiSrc=global.coolParams.get("WOPISrc");if(global.wopiSrc!=""){global.docURL=decodeURIComponent(global.wopiSrc);if(global.accessToken!==""){wopiParams={access_token:global.accessToken,access_token_ttl:global.accessTokenTTL}}else if(global.accessHeader!==""){wopiParams={access_header:global.accessHeader}}if(wopiParams){docParams=Object.keys(wopiParams).map(function(key){return encodeURIComponent(key)+"="+encodeURIComponent(wopiParams[key])}).join("&")}}else if(global.ThisIsTheEmscriptenApp){global.docURL="file:///sample.docx"}else{global.docURL=filePath}global.makeWsUrl=function(path){global.app.console.assert(global.host.startsWith("ws"),"host is not ws: "+global.host);return global.host+global.serviceRoot+path};global.routeToken="";global.makeDocAndWopiSrcUrl=function(root,docUrlParams,suffix,wopiSrcParam){var wopiSrc="";if(global.wopiSrc!=""){wopiSrc="?WOPISrc="+encodeURIComponent(global.wopiSrc);if(global.routeToken!="")wopiSrc+="&RouteToken="+global.routeToken;wopiSrc+="&compat=";if(wopiSrcParam&&wopiSrcParam.length>0)wopiSrc+="&"+wopiSrcParam}else if(wopiSrcParam&&wopiSrcParam.length>0){wopiSrc="?"+wopiSrcParam}suffix=suffix||"/ws";var encodedDocUrl=encodeURIComponent(docUrlParams)+suffix+wopiSrc;if(global.hexifyUrl)encodedDocUrl=global.hexEncode(encodedDocUrl);return root+encodedDocUrl+"/ws"};global.makeWsUrlWopiSrc=function(path,docUrlParams,suffix,wopiSrcParam){var websocketURI=global.makeWsUrl(path);return global.makeDocAndWopiSrcUrl(websocketURI,docUrlParams,suffix,wopiSrcParam)};global.makeHttpUrl=function(path){global.app.console.assert(global.webserver.startsWith("http"),"webserver is not http: "+global.webserver);return global.webserver+global.serviceRoot+path};global.makeHttpUrlWopiSrc=function(path,docUrlParams,suffix,wopiSrcParam){var httpURI=global.makeHttpUrl(path);return global.makeDocAndWopiSrcUrl(httpURI,docUrlParams,suffix,wopiSrcParam)};global.hexEncode=function(string){var bytes=(new TextEncoder).encode(string);var hex="0x";for(var i=0;i<bytes.length;++i){hex+=bytes[i].toString(16)}return hex};global.hexDecode=function(hex){if(hex.startsWith("0x"))hex=hex.substr(2);var bytes=new Uint8Array(hex.length/2);for(var i=0;i<bytes.length;i++){bytes[i]=parseInt(hex.substr(i*2,2),16)}return(new TextDecoder).decode(bytes)};if(global.ThisIsAMobileApp){global.socket=new global.FakeWebSocket;global.TheFakeWebSocket=global.socket}else{var docParamsPart=docParams?(global.docURL.includes("?")?"&":"?")+docParams:"";var websocketURI=global.makeWsUrlWopiSrc("/cool/",global.docURL+docParamsPart);try{global.socket=global.createWebSocket(websocketURI)}catch(err){global.app.console.log(err)}}var isRandomUser=global.coolParams.get("randomUser");if(isRandomUser){var randomUserLangs=["ar","bg","ca","cs","da","de","el","en-US","en-GB","eo","es","eu","fi","fr","gl","he","hr","hu","id","is","it","ja","ko","lo","nb","nl","oc","pl","pt","pt-BR","sq","ru","sk","sl","sv","tr","uk","vi","zh-CN","zh-TW"];var randomUserLang=randomUserLangs[Math.floor(Math.random()*randomUserLangs.length)];window.app.console.log("Randomize Settings: Set language to: ",randomUserLang);global.coolParams.set("lang",randomUserLang);global.coolParams.set("debug",true)}var lang=global.coolParams.get("lang");if(lang)global.langParam=encodeURIComponent(lang);else global.langParam="en-US";global.langParamLocale=new Intl.Locale(global.langParam);global.queueMsg=[];if(global.ThisIsTheEmscriptenApp)global.LANG="en-US";else if(global.ThisIsAMobileApp)global.LANG=lang;if(global.socket&&global.socket.readyState!==3){global.socket.onopen=function(){if(global.socket.readyState===1){var ProtocolVersionNumber="0.1";var timestamp=encodeURIComponent(global.coolParams.get("timestamp"));var msg="load url="+encodeURIComponent(global.docURL);var now0=Date.now();var now1=performance.now();var now2=Date.now();global.socket.send("coolclient "+ProtocolVersionNumber+" "+(now0+now2)/2+" "+now1);var isCalcTest=global.docURL.includes("data/desktop/calc/")||global.docURL.includes("data/mobile/calc/")||global.docURL.includes("data/idle/calc/")||global.docURL.includes("data/multiuser/calc/");if(L.Browser.cypressTest&&isCalcTest)global.enableAccessibility=false;var accessibilityState=global.localStorage.getItem("accessibilityState")==="true";accessibilityState=accessibilityState||L.Browser.cypressTest&&!isCalcTest;msg+=" accessibilityState="+accessibilityState;if(global.ThisIsAMobileApp){msg+=" lang="+global.LANG}else{if(timestamp){msg+=" timestamp="+timestamp}if(lang){msg+=" lang="+lang}}if(global.deviceFormFactor){msg+=" deviceFormFactor="+global.deviceFormFactor}if(global.isLocalStorageAllowed){var spellOnline=global.localStorage.getItem("SpellOnline");if(spellOnline){msg+=" spellOnline="+spellOnline}}var docTheme=global.L.Browser.getTheme();if(docTheme)msg+=" theme="+docTheme;msg+=" timezone="+Intl.DateTimeFormat().resolvedOptions().timeZone;global.socket.send(msg)}};global.socket.onerror=function(event){global.app.console.log(event)};global.socket.onclose=function(event){global.app.console.log(event)};global.socket.onmessage=function(event){if(typeof global.socket._onMessage==="function"){global.socket._emptyQueue();global.socket._onMessage(event)}else{global.queueMsg.push(event.data)}};global.socket.binaryType="arraybuffer";if(global.ThisIsAMobileApp&&!global.ThisIsTheEmscriptenApp){global.postMobileMessage("HULLO");this.socket.onopen()}}})(window);
// Related to issue #5841: the iOS app sets the base text direction via the
// "dir" parameter










// Dynamically load the appropriate *-mobile.css, *-tablet.css or *-desktop.css
var link = document.createElement('link');
link.setAttribute("rel", "stylesheet");
link.setAttribute("type", "text/css");
var brandingLink = document.createElement('link');
brandingLink.setAttribute("rel", "stylesheet");
brandingLink.setAttribute("type", "text/css");

var theme_name = 'nextcloud';
var theme_prefix = '';
if(window.useIntegrationTheme === 'true' && theme_name !== '') {
    theme_prefix = theme_name + '/';
}

if (window.mode.isMobile()) {
    link.setAttribute("href", '/browser/baa6eef/device-mobile.css');
    brandingLink.setAttribute("href", '/browser/baa6eef/' + theme_prefix + 'branding-mobile.css');
} else if (window.mode.isTablet()) {
    link.setAttribute("href", '/browser/baa6eef/device-tablet.css');
    brandingLink.setAttribute("href", '/browser/baa6eef/' + theme_prefix + 'branding-tablet.css');
} else {
    link.setAttribute("href", '/browser/baa6eef/device-desktop.css');
    brandingLink.setAttribute("href", '/browser/baa6eef/' + theme_prefix + 'branding-desktop.css');
}
document.getElementsByTagName("head")[0].appendChild(link);
document.getElementsByTagName("head")[0].appendChild(brandingLink);
</script>


       <!-- Using bundled JS files -->
       <script src="/browser/baa6eef/bundle.js" defer></script>
  

    <script src="/browser/baa6eef/nextcloud/branding.js"></script> <!-- logo onclick handler -->
    <style>:root {--co-primary-text:#ffffff;--co-primary-element:#C92F00;--co-text-accent:#C92F00;--co-primary-light:#f9eae5;--co-primary-element-light:#f9eae5;--co-color-error:#DB0606;--co-color-warning:#A37200;--co-color-success:#2d7b41;--co-border-radius:3px;--co-border-radius-large:10px;--co-loading-light:#cccccc;--co-loading-dark:#444444;--co-box-shadow:rgba(77,77,77, 0.5);--co-border:#ededed;--co-border-dark:#dbdbdb;--co-border-radius-pill:100px;--nc-light-color-main-background:#ffffff;--nc-dark-color-main-background:#171717;--nc-light-color-main-background-rgb:255,255,255;--nc-dark-color-main-background-rgb:23,23,23;--nc-light-color-main-background-translucent:rgba(255,255,255, .97);--nc-dark-color-main-background-translucent:rgba(23,23,23, .97);--nc-light-color-main-background-blur:rgba(255,255,255, .8);--nc-dark-color-main-background-blur:rgba(23,23,23, .85);--nc-light-color-main-text:#222222;--nc-dark-color-main-text:#EBEBEB;--nc-light-color-text-maxcontrast:#6b6b6b;--nc-dark-color-text-maxcontrast:#999999;--nc-light-color-box-shadow:rgba(77,77,77, 0.5);--nc-dark-color-box-shadow:#000000;--nc-light-color-box-shadow-rgb:77,77,77;--nc-dark-color-box-shadow-rgb:0,0,0;--nc-light-default-font-size:15px;--nc-dark-default-font-size:15px;--nc-light-border-radius:3px;--nc-dark-border-radius:3px;--nc-light-border-radius-large:10px;--nc-dark-border-radius-large:10px;--nc-light-border-radius-rounded:28px;--nc-dark-border-radius-rounded:28px;--nc-light-border-radius-pill:100px;--nc-dark-border-radius-pill:100px;--nc-light-default-clickable-area:44px;--nc-dark-default-clickable-area:44px;--nc-light-default-line-height:24px;--nc-dark-default-line-height:24px;--nc-light-default-grid-baseline:4px;--nc-dark-default-grid-baseline:4px;--nc-light-color-primary:#C92F00;--nc-dark-color-primary:#C92F00;--nc-light-color-primary-default:#C92F00;--nc-dark-color-primary-default:#C92F00;--nc-light-color-primary-text:#ffffff;--nc-dark-color-primary-text:#ffffff;--nc-light-color-primary-hover:#d35832;--nc-dark-color-primary-hover:#a52a04;--nc-light-color-primary-light:#f9eae5;--nc-dark-color-primary-light:#2e1c17;--nc-light-color-primary-light-text:#501200;--nc-dark-color-primary-light-text:#e9ab99;--nc-light-color-primary-light-hover:#eedfdb;--nc-dark-color-primary-light-hover:#372621;--nc-light-color-primary-element:#C92F00;--nc-dark-color-primary-element:#ff4d1e;--nc-light-color-primary-element-hover:#b52a00;--nc-dark-color-primary-element-hover:#ff5d32;--nc-light-color-primary-element-text:#ffffff;--nc-dark-color-primary-element-text:#000000;--nc-light-color-primary-element-light:#f9eae5;--nc-dark-color-primary-element-light:#2e1c17;--nc-light-color-primary-element-light-hover:#eedfdb;--nc-dark-color-primary-element-light-hover:#372621;--nc-light-color-primary-element-light-text:#501200;--nc-dark-color-primary-element-light-text:#ffb7a5;--nc-light-color-primary-element-text-dark:#f5f5f5;--nc-dark-color-primary-element-text-dark:#0a0a0a;--nc-light-primary-invert-if-bright:no;--nc-dark-primary-invert-if-bright:invert(100%);--nc-light-primary-invert-if-dark:invert(1);--nc-dark-primary-invert-if-dark:invert(1);--nc-light-background-invert-if-bright:invert(100%);--nc-dark-background-invert-if-bright:no;--nc-light-background-invert-if-dark:no;--nc-dark-background-invert-if-dark:invert(100%);--nc-custom-logo:f4e1e62c;}</style>
</body></html>
| wsd/FileServer.cpp:1411
wsd-00001-00061 2024-04-15 12:32:50.671154 +0200 [ websrv_poll ] TRC  #31: Async shutdown requested.| net/Socket.hpp:984
wsd-00001-00061 2024-04-15 12:32:50.671178 +0200 [ websrv_poll ] TRC  #31: Client doesn't have enough data for the header yet.| net/Socket.cpp:1158
wsd-00001-00061 2024-04-15 12:32:50.671186 +0200 [ websrv_poll ] TRC  #31: Shutdown Signaled. Close Connection.| net/Socket.hpp:1386
wsd-00001-00061 2024-04-15 12:32:50.671192 +0200 [ websrv_poll ] TRC  #31: Socket shutdown RDWR.| net/Socket.hpp:180

Hello, is there a good soul who can help me configure my installation correctly please?

Hey @nonofr911, thanks for the post.

(This was accidentally in the “Uncategorized” section, so I moved it to the “Installation & Configuration” for better visibility.)


Can you give a little more info on your setup?

  • What OS are you using?
  • What version Collabora + Nextcloud + richdocuments are you using?

If you are still having trouble, maybe we could start the Collabora Docker install from scratch again… Maybe you accidentally skipped a step when you were transferring your old info to the new coolwsd.xml.

Side Note: Another fantastic page to help debug Collabora<->Nextcloud issues is this Wiki page on Nextcloud’s forums:

Hello, Here is the rest of my investigations:
I identified in my browser console that my problem came from the CSP Content Security Policy. However, I have difficulty understanding or defining them. In the coolwsd.xml or in the ssl.conf of nextcloud? I don’t know if it should be put in coolwsd.xml <content_security_policy desc=“Customize the CSP header by specifying one or more policy-directive, separated by semicolons. See Content Security Policy Level 2”>default-src https:// collabora.xxxx.duckdns.org</content_security_policy>
or in the ssl.conf (/path/nextcloud/config/nginx/ssl.conf) add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors ‘self’ https://collabora.xxxxx.duckdns.org ";

I didn’t see anything in the CODE SDK doc about CSP synthase.
If you wanted to help me I will be forever grateful.

1 Like

Hello, so I found the place to solve my problem. In the nextcloud ssl.conf file I commented out the add hearder CSP line and that fixed my problem. But it’s not the safest option. If anyone can point me to good practice, I would appreciate it in advance.

1 Like